Ausgewogene ternäre Logik
Ternary ist normalerweise ein anderer Name für Basis 3, das heißt, jede Ziffer ist 0
, 1
oder 2
, und jeder Ort ist im Wert von 3 - mal so viel wie der nächsten Ort.
Balanced ternäre ist eine Modifikation der ternären , die verwendeten Ziffern -1
, 0
und 1
. Dies hat den Vorteil, dass kein Schild benötigt wird. Jeder Ort ist immer noch dreimal so viel wert wie der nächste Ort. Die ersten paar positive ganze Zahlen sind daher [1]
, [1, -1]
, [1, 0]
, [1, 1]
, [1, -1, -1]
während die ersten paar negative ganze Zahlen sind [-1]
, [-1, 1]
, [-1, 0]
, [-1, -1]
, [-1, 1, 1]
.
Sie haben drei Eingänge x, y, z
. z
entweder -1
, 0
oder 1
, während x
und y
aus sein kann , -3812798742493
um 3812798742493
inklusive.
Der erste Schritt ist die Konvertierung x
und y
von dezimal nach ausgeglichen ternär. Dies sollte Ihnen 27 Triten (TeRnary-Ziffern) geben. Sie müssen dann die Triten von x
und y
paarweise mit einer ternären Operation kombinieren und das Ergebnis dann wieder in eine Dezimalzahl konvertieren.
Sie können auswählen, welche Werte der z
Karte jeweils einer dieser drei ternären Operationen zugeordnet werden sollen:
A
: Bei zwei Triten ist das Ergebnis Null, wenn entweder Null ist, andernfalls ist das Ergebnis -1, wenn sie unterschiedlich sind, oder 1, wenn sie gleich sind.B
: Bei zwei Triten ist, wenn einer von beiden Null ist, das Ergebnis der andere Trit, andernfalls ist das Ergebnis Null, wenn sie unterschiedlich sind, oder die Negation, wenn sie gleich sind.C
: Bei zwei Triten ist das Ergebnis Null, wenn sie unterschiedlich sind, oder ihr Wert, wenn sie gleich sind.
Beispiel. Angenommen, x
ist 29
und y
ist 15
. Im ausgeglichenen ternären Zustand werden diese [1, 0, 1, -1]
und [1, -1, -1, 0]
. (Die verbleibenden 23 Nulltrits wurden der Kürze halber weggelassen.) Nach jeder der jeweiligen Operationen werden sie A
: [1, 0, -1, 0]
, B
: [-1, -1, 0, -1]
, C
: [1, 0, 0, 0]
. Konvertieren zurück in Dezimalzahlen die Ergebnisse sind 24
, -37
und 27
jeweils. Versuchen Sie die folgende Referenzimplementierung für weitere Beispiele:
Die Referenzimplementierung folgt den oben angegebenen Schritten, aber Sie können natürlich jeden Algorithmus verwenden, der dieselben Ergebnisse liefert.
Dies ist Code-Golf , also gewinnt das kürzeste Programm oder die kürzeste Funktion, die keine Standardlücken verletzt!
z
einer von -1,0,1
drei konsistenten und unterschiedlichen Werten sein oder können wir diese auswählen? Ich habe 1,2,3
in meiner Antwort ausgewählt, und es gibt einige Verwirrung darüber.