Jeder, der ein wenig mit Codeoptimierung auf niedriger Ebene beschäftigt ist, kennt die Gefahren der Verzweigung, sei es als if-Anweisungen, Schleifen oder select-Anweisungen implementiert.
Einfache Probleme können mit einfacher Arithmetik viel besser gelöst werden.
Für die folgenden Probleme sind alle Variablen vorzeichenlose 32-Bit-Ganzzahlen, und der einzige zulässige Code sind einfache Mengenanweisungen, die nur die folgenden Operatoren betreffen:
+ 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
=
Jede Zeile muss aus einer Variablenkennung, gefolgt von einem Mengenoperator und einem Ausdruck bestehen.
Ein Ausdruck darf keine zusätzlichen Mengenoperatoren enthalten, kann jedoch Variablenbezeichner, Literalzahlen und Klammern enthalten.
Die Golfwertung zählt nur die Anzahl der Fahrer.
Beispiel:
myvar = ( ( ( foo + 5 ) * bar ) % 7 ) == 3
Hat eine Punktzahl von 5 Operatoren.
Eine Lösung kann so viele Variablen enthalten, wie der Autor für richtig hält.
Nicht gesetzte Variablen haben Wert 0
.
Über- und Unterlauf ist erlaubt, alle negativen Zahlen unterlaufen , so 3 - 5
sind 4294967294
auch als Teil einer größeren Erklärung.
Schritt 1: max
Zwei Werte, A
und B
bestehen im Rahmen machen die RESULT
Variable enthalten die größte dieser Werte , wenn das Programm beendet wird .
Schritt 2: Median
Drei Werte, A
, B
und C
bestehen im Rahmen machen die RESULT
Variable den Median dieser Werte enthalten , wenn das Programm beendet wird .
Schritt 3: Quadratwurzel
Ein Wert, der A
im Gültigkeitsbereich vorhanden ist, bewirkt, dass die RESULT
Variable die Quadratwurzel von enthält A
, abgerundet, wenn das Programm beendet wird.
Es ist in Ordnung, nur eine oder zwei der Fragen zu beantworten. Für einige von Ihnen wird es eine Herausforderung sein, nur gültige Lösungen zu finden.
0xFFFF_FFFF_FFFF_FFFF ^ x
und 0 - x
. Wie hätte ich das vergessen können?
!
auch ziemlich trivial ist: x == 0
.
Boole[a-b]
?
-
aber ich~
könnte nett sein (auch wenn ich nicht weiß, wofür).