저수준 코드 최적화에 적당히 종사하는 사람은 분기의 위험에 대해 알고 있습니다. if 문, 루프 또는 선택문으로 분기 오류가 발생할 가능성은 끔찍한 시계 낭비입니다.
간단한 산술로 간단한 문제를 훨씬 더 잘 해결할 수 있으므로 그렇게하겠습니다.
다음 문제의 경우 모든 변수는 부호없는 32 비트 정수이며 유일하게 허용되는 코드는 다음 연산자 만 포함하는 일반 집합 명령문입니다.
+ addition
- subtraction
* multiplication
/ integer division, rounds down, division by 0 not allowed
% modulo
& binary and
| binary or
^ binary exclusive or
>> bitshift right
<< bitshift left
Logic operators, return 1 if the expression is true and 0 if it is false.
== equal
!= not equal
< less than
<= less than or equal
> greater than
>= greater than or equal
Set operator
=
모든 줄은 변수 식별자, 집합 연산자, 식으로 구성되어야합니다.
식에는 추가 집합 연산자가 포함되지 않지만 변수 식별자, 리터럴 숫자 및 괄호가 포함될 수 있습니다.
골프 점수는 운영자 수만 계산합니다.
예:
myvar = ( ( ( foo + 5 ) * bar ) % 7 ) == 3
5 명의 운영자가 있습니다.
솔루션에는 작성자가 알 수있는만큼 많은 변수가 포함될 수 있습니다.
설정되지 않은 변수는 value 0
입니다.
오버 플로우와 언더 플로우 때문에, 모든 부정적인 번호는 언더, 허용 3 - 5
된다 4294967294
하더라도 큰 문의 일환으로.
작업 1 : 최대
두 값, A
및 B
, 상기 영역에 존재하게 RESULT
변수 값 때 그 프로그램이 종료의 최대 함유한다.
작업 2 : 중앙값
세 값은, A
, B
및 C
, 상기 영역에 존재하게 RESULT
변수 값 때 그 프로그램이 종료의 중앙값을 포함한다.
작업 3 : 제곱근
A
범위에 존재하는 하나의 값 은 프로그램이 종료 될 때 RESULT
변수에 제곱근을 A
내림하고 내림합니다.
하나 또는 두 개의 질문에 대한 답변 만 게시해도됩니다. 유효한 솔루션을 찾는 것이 어려울 수 있습니다.
0xFFFF_FFFF_FFFF_FFFF ^ x
하고 0 - x
. 어떻게 잊어 버렸습니까?
!
가 너무 간단 하지 않기 때문에 가장 짧은 설명을 만들었습니다 x == 0
.
Boole[a-b]
.
-
않지만~
멋질 수 있습니다 (무엇을 모르더라도).