低レベルのコード最適化にある程度慣れている人は、if-statements、loops、またはselect-statementsとして実装されても、分岐の予測ミスの可能性はひどいクロックを浪費するものです。
単純な問題は単純な算術ではるかによく解決できるので、そうしましょう。
次の問題では、すべての変数は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:最大
2つの値、A
およびB
がスコープ内に存在しRESULT
、プログラムの終了時に変数に最大値が含まれるようにします。
タスク2:中央値
3つの値が、A
、B
およびC
、作る、スコープ内に存在しますRESULT
ときに、プログラムが終了変数は、それらの値の中央値が含まれています。
タスク3:平方根
1つの値A
がスコープに存在し、RESULT
変数に次の平方根が含まれるようにしますA
、プログラムの終了時に切り捨てられます。
質問の1つまたは2つだけに答えを投稿しても構いません。有効な解決策を見つけるだけの人もいるでしょう。
0xFFFF_FFFF_FFFF_FFFF ^ x
そして0 - x
。どうして忘れたの?
!
はかなり簡単ではないためです:x == 0
。
Boole[a-b]
ですか?
-
けど~
(私は何のためかわからない場合でも)いいかもしれません。