Einführung
Definieren wir eine ternäre Funktion als eine Funktion aus der Dreielementmenge S = {0,1,2}
zu sich selbst: Sie wird jedem Element eines S
anderen Elements von zugeordnet S
. Ein Beispiel für eine ternäre Funktion f
ist
f(0) = 0; f(1) = 2; f(2) = 0
Es gibt genau 27 verschiedene ternäre Funktionen, und wir stellen sie mit ganzen Zahlen von 0 bis 26 dar: Eine Funktion f
wird als codiert f(0) + 3*f(1) + 9*f(2)
. Die obige Beispielfunktion ist als Nummer 6 codiert.
Wir können zwei ternären Funktionen anwenden f
und g
in der Folge, und wenn f(g(k)) == g(f(k))
für alle hält k
in S
, dann die Funktionen pendeln . Ihre Aufgabe ist es zu überprüfen, ob dies der Fall ist.
Eingang
Ihre Eingaben sind zwei ganze Zahlen im Bereich von 0 bis 26. Sie repräsentieren zwei ternäre Funktionen f
und g
. Die Eingabe muss im Dezimal-, Binär- oder Unärformat (Zeichenfolge von 1
s) erfolgen.
Ausgabe
Ihre Ausgabe ist ein wahrer Wert, wenn f
und g
pendeln, und ein falscher Wert, wenn sie nicht. Sie können nicht davon ausgehen, dass die Eingänge geordnet sind.
Beispiele
Betrachten Sie die Eingänge 5 und 16. Sie codieren die ternären Funktionen
f(0) = 2; f(1) = 1; f(2) = 0
g(0) = 1; g(1) = 2; g(2) = 1
Wir haben f(g(1)) == f(2) == 0
und g(f(1)) == g(1) == 2
, so f
und g
nicht pendeln und die korrekte Ausgabe ist Falsey.
Andererseits codieren die Eingänge 3 und 10 die ternären Funktionen
f(0) = 0; f(1) = 1; f(2) = 0
g(0) = 1; g(1) = 0; g(2) = 1
und es kann überprüft werden , dass f(g(k)) == g(f(k))
für alle hält k
in S
. Dann ist die richtige Ausgabe wahr.
Hier ist die 27 × 27-Tabelle aller möglichen Eingaben, wobei +
eine wahrheitsgemäße Ausgabe und -
eine falsche Ausgabe markiert sind:
+ - - + - - + - - + - - + - - + - - + - - + - - + - -
- + - - - - - - - - - - + - - - - - - - - + - - - - -
- - + - - - - - - - - - - - - - - - - - - + - - + - -
+ - - + - - - - - - + - - + - - - - + - - + - - - - -
- - - - + - - - - - - - - + - - - - - - - + - - - - -
- - - - - + - - - - - - - + - - - - - - - + - - - - -
+ - - - - - + - - - - - - - - - - - - - - + - - - - -
- - - - - - - + - - - + - - - - - - - - - + - - - - -
- - - - - - - - + - - - - - - - - - + - - + - - - - -
+ - - - - - - - - + - - - - - - - - - - - + - - - - -
- - - + - - - - - - + - - - - - - - - - - + - - - - -
- - - - - - - + - - - + - - - - - - - - - + - - - - -
+ + - - - - - - - - - - + + - - - - - - - + + - - - -
- - - + + + - - - - - - + + + - - - - - - + + + - - -
- - - - - - - - - - - - - + + - - - - - - + - - - - -
+ - - - - - - - - - - - - - - + - - - - - + - - - - -
- - - - - - - - - - - - - - - - + - - - - + - + - - -
- - - - - - - - - - - - - - - - - + - - - + + - - - -
+ - - + - - - - + - - - - - - - - - + - - + - - - - +
- - - - - - - - - - - - - - - - - - - + - + - - - - +
- - - - - - - - - - - - - - - - - - - - + + - - - - +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
- - - - - - - - - - - - + + - - - + - - - + + - - - +
- - - - - - - - - - - - - + - - + - - - - + - + + - +
+ - + - - - - - - - - - - - - - - - - - - + - + + - +
- - - - - - - - - - - - - - - - - - - - - + - - - + +
- - - - - - - - - - - - - - - - - - + + + + + + + + +
Regeln und Wertung
Sie können ein vollständiges Programm oder eine Funktion schreiben. Die niedrigste Byteanzahl gewinnt, und Standardlücken sind nicht zulässig.
Antworten:
Jelly,
171413 BytesProbieren Sie es online! oder überprüfen Sie alle 27 × 27 Fälle .
Wie es funktioniert
quelle
MATL ,
1918 BytesWahrheit ist ein Array mit allen. Falsy ist ein Array, das mindestens eine Null enthält.
Probieren Sie es online! oder überprüfen Sie alle Fälle (dauert einige Sekunden).
quelle
Python 2, 61 Bytes
Bei einer gegebenen Eingabe
i
können wir die durch dargestellte Funktion implementieren,n
indem wirn/3**i%3
diei
dritte Ziffer von extrahierenn
. Die Funktion prüft, ob bei jeder0,1,2
Anwendung der Funktionen in beliebiger Reihenfolge dasselbe Ergebnis erzielt wird. Da der erste Schritt darin besteht3**
, wird[1,3,9]
stattdessen mit getestet .Die Wiederverwendung von Code sieht verschwenderisch aus, aber ich habe keinen besseren Weg gefunden. Vergleichen Sie:
quelle
JavaScript (ES7), 68 Byte
Leider war die Konvertierung der Basis 3 zu teuer:
quelle
Mathematica, 77 Bytes
Die einseitige Indexierung von Mathematica schlägt wieder zu!
quelle
{1,1,1}
zu einer Variablen und Verwendung dieser.