Es gibt eine inoffizielle Belohnung für 500 Wiederholungen, um die aktuell beste Antwort zu schlagen .
Tor
Ihr Ziel ist es, zwei Zahlen mit nur einem sehr begrenzten Satz von Rechenoperationen und Variablenzuweisungen zu multiplizieren.
- Zusatz
x,y -> x+y
- Reziproke
x -> 1/x
( nicht Divisionx,y -> x/y
) - Negation
x -> -x
( keine Subtraktionx,y -> x-y
, obwohl Sie es als zwei Operationen tun könnenx + (-y)
) - Die Konstante
1
(keine anderen Konstanten erlaubt, außer wie durch Operationen von erzeugt1
) - Variablenzuordnung
[variable] = [expression]
Wertung: Die Werte beginnen in Variablen a
und b
. Ihr Ziel ist es, das Produkt mit so wenig Operationen wie möglich a*b
in der Variablen zu speichern c
. Jede Operation und Aufgabe +, -, /, =
kostet einen Punkt (entsprechend jede Verwendung von (1), (2), (3) oder (4)). Konstanten 1
sind frei. Die Lösung mit den wenigsten Punkten gewinnt. Tiebreak ist der früheste Beitrag.
Erlaubnis: Ihr Ausdruck muss für "zufällige" Reals a
und arithmetisch korrekt sein b
. Es kann auf einer Teilmenge von R 2 mit dem Maß Null fehlschlagen , dh auf einer Menge, die keine Fläche hat, wenn sie in der a
- b
kartesischen Ebene geplottet wird . (Dies ist wahrscheinlich erforderlich, da sich Ausdrücke möglicherweise 0
wie folgt umkehren 1/a
.)
Grammatik:
Dies ist ein Atomic-Code-Golf . Andere Operationen dürfen nicht verwendet werden. Dies bedeutet insbesondere, dass keine Funktionen, Bedingungen, Schleifen oder nicht numerischen Datentypen vorhanden sind. Hier ist eine Grammatik für die erlaubten Operationen (Möglichkeiten sind durch getrennt |
). Ein Programm ist eine Folge von <statement>
s, wobei a <statement>
wie folgt angegeben ist.
<statement>: <variable> = <expr>
<variable>: a | b | c | [string of letters of your choice]
<expr>: <arith_expr> | <variable> | <constant>
<arith_expr>: <addition_expr> | <reciprocal_expr> | <negation_expr>
<addition_expr>: <expr> + <expr>
<reciprocal_expr>: 1/(<expr>)
<negation_expr>: -<expr>
<constant>: 1
Sie müssen tatsächlich keine Postleitzahl in dieser genauen Grammatik eingeben, solange klar ist, was Sie tun und Ihre Anzahl der Vorgänge richtig ist. Sie können beispielsweise a-b
für a+(-b)
zwei Operationen schreiben und diese zählen oder Makros definieren, um sie zu verkürzen.
(Es gab eine frühere Frage Multiplizieren ohne Multiplizieren , aber sie erlaubte eine viel lockerere Reihe von Operationen.)