introduzione
Definiamo una funzione ternaria come una funzione dal set S = {0,1,2}
di tre elementi a se stesso: si associa a ciascun elemento di S
un altro elemento di S
. Un esempio di una funzione ternaria f
è
f(0) = 0; f(1) = 2; f(2) = 0
Esistono esattamente 27 diverse funzioni ternarie e le rappresentiamo con numeri interi da 0 a 26: una funzione f
è codificata come f(0) + 3*f(1) + 9*f(2)
. La funzione di esempio sopra è codificata come il numero 6.
Possiamo applicare due funzioni ternarie f
e g
in sequenza, e se f(g(k)) == g(f(k))
vale per all k
in S
, allora le funzioni commutano . Il tuo compito è verificare se questo è il caso.
Ingresso
I tuoi input sono due numeri interi compresi tra 0 e 26. Rappresentano due funzioni ternarie f
e g
. L'input deve essere preso in formato decimale, binario o unario (stringa di 1
s).
Produzione
Il tuo output è un valore vero se f
e g
permuta, e un valore falso se non lo fanno. Non si può presumere che gli ingressi siano ordinati.
Esempi
Considera gli ingressi 5 e 16. Codificano le funzioni ternarie
f(0) = 2; f(1) = 1; f(2) = 0
g(0) = 1; g(1) = 2; g(2) = 1
Abbiamo f(g(1)) == f(2) == 0
e g(f(1)) == g(1) == 2
, quindi f
e g
non commutano e l'uscita corretta è Falsey.
D'altra parte, gli ingressi 3 e 10 codificano le funzioni ternarie
f(0) = 0; f(1) = 1; f(2) = 0
g(0) = 1; g(1) = 0; g(2) = 1
e può essere verificato che f(g(k)) == g(f(k))
vale per tutti k
in S
. Quindi l'output corretto è veritiero.
Ecco la tabella 27 × 27 di tutti gli input possibili, con +
un output true e -
un output false:
+ - - + - - + - - + - - + - - + - - + - - + - - + - -
- + - - - - - - - - - - + - - - - - - - - + - - - - -
- - + - - - - - - - - - - - - - - - - - - + - - + - -
+ - - + - - - - - - + - - + - - - - + - - + - - - - -
- - - - + - - - - - - - - + - - - - - - - + - - - - -
- - - - - + - - - - - - - + - - - - - - - + - - - - -
+ - - - - - + - - - - - - - - - - - - - - + - - - - -
- - - - - - - + - - - + - - - - - - - - - + - - - - -
- - - - - - - - + - - - - - - - - - + - - + - - - - -
+ - - - - - - - - + - - - - - - - - - - - + - - - - -
- - - + - - - - - - + - - - - - - - - - - + - - - - -
- - - - - - - + - - - + - - - - - - - - - + - - - - -
+ + - - - - - - - - - - + + - - - - - - - + + - - - -
- - - + + + - - - - - - + + + - - - - - - + + + - - -
- - - - - - - - - - - - - + + - - - - - - + - - - - -
+ - - - - - - - - - - - - - - + - - - - - + - - - - -
- - - - - - - - - - - - - - - - + - - - - + - + - - -
- - - - - - - - - - - - - - - - - + - - - + + - - - -
+ - - + - - - - + - - - - - - - - - + - - + - - - - +
- - - - - - - - - - - - - - - - - - - + - + - - - - +
- - - - - - - - - - - - - - - - - - - - + + - - - - +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
- - - - - - - - - - - - + + - - - + - - - + + - - - +
- - - - - - - - - - - - - + - - + - - - - + - + + - +
+ - + - - - - - - - - - - - - - - - - - - + - + + - +
- - - - - - - - - - - - - - - - - - - - - + - - - + +
- - - - - - - - - - - - - - - - - - + + + + + + + + +
Regole e punteggio
È possibile scrivere un programma completo o una funzione. Vince il conteggio di byte più basso e non sono consentite scappatoie standard .