Introducción
Definamos una función ternaria como una función del conjunto de tres elementos S = {0,1,2}
en sí misma: se asocia a cada elemento de S
otro elemento de S
. Un ejemplo de una función ternaria f
es
f(0) = 0; f(1) = 2; f(2) = 0
Hay exactamente 27 funciones ternarias diferentes, y las representamos con números enteros del 0 al 26: una función f
se codifica como f(0) + 3*f(1) + 9*f(2)
. La función de ejemplo anterior está codificada como el número 6.
Podemos aplicar dos funciones ternarias f
y g
en secuencia, y si se f(g(k)) == g(f(k))
mantiene para todo k
adentro S
, entonces las funciones conmutan . Su tarea es verificar si este es el caso.
Entrada
Sus entradas son dos enteros en el rango inclusivo de 0 a 26. Representan dos funciones ternarias f
y g
. La entrada debe tomarse en 1
formato decimal, binario o unario (cadena de s).
Salida
Su salida es un valor verdadero si f
yg
conmuta, y un valor falso si no lo hacen. No puede suponer que las entradas están ordenadas.
Ejemplos
Considere las entradas 5 y 16. Codifican las funciones ternarias
f(0) = 2; f(1) = 1; f(2) = 0
g(0) = 1; g(1) = 2; g(2) = 1
Tenemos f(g(1)) == f(2) == 0
y g(f(1)) == g(1) == 2
, así, f
y g
no conmutamos y la salida correcta es falsey.
Por otro lado, las entradas 3 y 10 codifican las funciones ternarias.
f(0) = 0; f(1) = 1; f(2) = 0
g(0) = 1; g(1) = 0; g(2) = 1
y se puede verificar que f(g(k)) == g(f(k))
se cumple para todos k
en S
. Entonces el resultado correcto es verdadero.
Aquí está la tabla 27 × 27 de todas las entradas posibles, con +
una salida verdadera y -
una salida falsey:
+ - - + - - + - - + - - + - - + - - + - - + - - + - -
- + - - - - - - - - - - + - - - - - - - - + - - - - -
- - + - - - - - - - - - - - - - - - - - - + - - + - -
+ - - + - - - - - - + - - + - - - - + - - + - - - - -
- - - - + - - - - - - - - + - - - - - - - + - - - - -
- - - - - + - - - - - - - + - - - - - - - + - - - - -
+ - - - - - + - - - - - - - - - - - - - - + - - - - -
- - - - - - - + - - - + - - - - - - - - - + - - - - -
- - - - - - - - + - - - - - - - - - + - - + - - - - -
+ - - - - - - - - + - - - - - - - - - - - + - - - - -
- - - + - - - - - - + - - - - - - - - - - + - - - - -
- - - - - - - + - - - + - - - - - - - - - + - - - - -
+ + - - - - - - - - - - + + - - - - - - - + + - - - -
- - - + + + - - - - - - + + + - - - - - - + + + - - -
- - - - - - - - - - - - - + + - - - - - - + - - - - -
+ - - - - - - - - - - - - - - + - - - - - + - - - - -
- - - - - - - - - - - - - - - - + - - - - + - + - - -
- - - - - - - - - - - - - - - - - + - - - + + - - - -
+ - - + - - - - + - - - - - - - - - + - - + - - - - +
- - - - - - - - - - - - - - - - - - - + - + - - - - +
- - - - - - - - - - - - - - - - - - - - + + - - - - +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
- - - - - - - - - - - - + + - - - + - - - + + - - - +
- - - - - - - - - - - - - + - - + - - - - + - + + - +
+ - + - - - - - - - - - - - - - - - - - - + - + + - +
- - - - - - - - - - - - - - - - - - - - - + - - - + +
- - - - - - - - - - - - - - - - - - + + + + + + + + +
Reglas y puntaje
Puede escribir un programa completo o una función. El conteo de bytes más bajo gana, y las lagunas estándar no se permiten.
Respuestas:
Jalea,
171413 bytesPruébalo en línea! o verificar todos los casos 27 × 27 .
Cómo funciona
fuente
MATL ,
1918 bytesLa verdad es una matriz con todos los unos. Falsy es una matriz que contiene al menos un cero.
Pruébalo en línea! o verificar todos los casos (toma unos segundos).
fuente
Python 2, 61 bytes
Dada una entrada
i
, podemos implementar la función representada porn
haciendon/3**i%3
para extraer eli
ésima ternaria den
. La función verifica que se obtenga el mismo resultado para cada una de ellas0,1,2
al aplicar las funciones en cualquier orden. En realidad, dado que el primer paso es hacerlo3**
, esto prueba con en su[1,3,9]
lugar.La reutilización del código parece un desperdicio, pero no vi una mejor manera. Comparar:
fuente
JavaScript (ES7), 68 bytes
Lamentablemente, la conversión de base 3 era demasiado cara:
fuente
Mathematica, 77 bytes
¡La indexación basada en One de Mathematica ataca de nuevo!
fuente
{1,1,1}
a una variable y usar eso.