Introdução
Vamos definir uma função ternária como uma função do conjunto de três elementos S = {0,1,2}
: ela se associa a cada elemento de S
outro elemento de S
. Um exemplo de função ternária f
é
f(0) = 0; f(1) = 2; f(2) = 0
Existem exatamente 27 funções ternárias diferentes, e as representamos com números inteiros de 0 a 26: uma função f
é codificada como f(0) + 3*f(1) + 9*f(2)
. A função de exemplo acima é codificada como o número 6.
Podemos aplicar duas funções ternários f
e g
em seqüência, e se f(g(k)) == g(f(k))
detém para todos k
em S
, em seguida, as funções comutar . Sua tarefa é verificar se esse é o caso.
Entrada
Suas entradas são dois números inteiros no intervalo inclusivo de 0 a 26. Eles representam duas funções ternárias f
e g
. A entrada deve ser feita no formato decimal, binário ou unário (sequência de 1
s).
Saída
Sua saída é um valor verdadeiro se f
e g
comutar, e um valor falsey se não o fizerem. Você não pode assumir que as entradas estão ordenadas.
Exemplos
Considere as entradas 5 e 16. Eles codificam as funções ternárias
f(0) = 2; f(1) = 1; f(2) = 0
g(0) = 1; g(1) = 2; g(2) = 1
Nós temos f(g(1)) == f(2) == 0
e g(f(1)) == g(1) == 2
, por isso, f
e g
não comutar e a saída correta é Falsey.
Por outro lado, as entradas 3 e 10 codificam as funções ternárias
f(0) = 0; f(1) = 1; f(2) = 0
g(0) = 1; g(1) = 0; g(2) = 1
e pode-se verificar que f(g(k)) == g(f(k))
vale para todo k
em S
. Então a saída correta é verdadeira.
Aqui está a tabela 27 × 27 de todas as entradas possíveis, com a +
marcação de uma saída -
verdadeira e uma saída falsey:
+ - - + - - + - - + - - + - - + - - + - - + - - + - -
- + - - - - - - - - - - + - - - - - - - - + - - - - -
- - + - - - - - - - - - - - - - - - - - - + - - + - -
+ - - + - - - - - - + - - + - - - - + - - + - - - - -
- - - - + - - - - - - - - + - - - - - - - + - - - - -
- - - - - + - - - - - - - + - - - - - - - + - - - - -
+ - - - - - + - - - - - - - - - - - - - - + - - - - -
- - - - - - - + - - - + - - - - - - - - - + - - - - -
- - - - - - - - + - - - - - - - - - + - - + - - - - -
+ - - - - - - - - + - - - - - - - - - - - + - - - - -
- - - + - - - - - - + - - - - - - - - - - + - - - - -
- - - - - - - + - - - + - - - - - - - - - + - - - - -
+ + - - - - - - - - - - + + - - - - - - - + + - - - -
- - - + + + - - - - - - + + + - - - - - - + + + - - -
- - - - - - - - - - - - - + + - - - - - - + - - - - -
+ - - - - - - - - - - - - - - + - - - - - + - - - - -
- - - - - - - - - - - - - - - - + - - - - + - + - - -
- - - - - - - - - - - - - - - - - + - - - + + - - - -
+ - - + - - - - + - - - - - - - - - + - - + - - - - +
- - - - - - - - - - - - - - - - - - - + - + - - - - +
- - - - - - - - - - - - - - - - - - - - + + - - - - +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
- - - - - - - - - - - - + + - - - + - - - + + - - - +
- - - - - - - - - - - - - + - - + - - - - + - + + - +
+ - + - - - - - - - - - - - - - - - - - - + - + + - +
- - - - - - - - - - - - - - - - - - - - - + - - - + +
- - - - - - - - - - - - - - - - - - + + + + + + + + +
Regras e pontuação
Você pode escrever um programa completo ou uma função. A contagem de bytes mais baixa vence e as brechas padrão não são permitidas.
fonte
Respostas:
Geléia,
171413 bytesExperimente online! ou verifique todos os casos 27 × 27 .
Como funciona
fonte
MATL ,
1918 bytesVerdade é uma matriz com todos os. Falsy é uma matriz que contém pelo menos um zero.
Experimente online! ou verifique todos os casos (leva alguns segundos).
fonte
Python 2, 61 bytes
Dada uma entrada
i
, podemos implementar a função representadan
fazendon/3**i%3
para extrair oi
dígito ternário den
. A função verifica se o mesmo resultado é obtido para cada um0,1,2
ao aplicar as funções em qualquer ordem. Na verdade, desde que o primeiro passo está sendo realizado3**
, ele é testado em[1,3,9]
vez disso.A reutilização do código parece um desperdício, mas não vi uma maneira melhor. Comparar:
fonte
JavaScript (ES7), 68 bytes
Infelizmente, a conversão da base 3 foi muito cara:
fonte
Mathematica, 77 bytes
A indexação baseada no One do Mathematica ataca novamente!
fonte
{1,1,1}
a uma variável e usá-la.