introduction
Définissons une fonction ternaire comme une fonction de l'ensemble de trois éléments S = {0,1,2}
à elle-même: elle s'associe à chaque élément d' S
un autre élément de S
. Un exemple de fonction ternaire f
est
f(0) = 0; f(1) = 2; f(2) = 0
Il existe exactement 27 fonctions ternaires différentes, et nous les représentons avec des entiers de 0 à 26: une fonction f
est codée comme f(0) + 3*f(1) + 9*f(2)
. L'exemple de fonction ci-dessus est codé comme le numéro 6.
Nous pouvons appliquer deux fonctions ternaires f
et g
dans l' ordre, et si f(g(k)) == g(f(k))
valable pour tous k
dans S
, les fonctions commuer . Votre tâche consiste à vérifier si tel est le cas.
Contribution
Vos entrées sont deux entiers compris entre 0 et 26. Ils représentent deux fonctions ternaires f
et g
. L'entrée doit être prise au 1
format décimal, binaire ou unaire (chaîne de s).
Sortie
Votre sortie est une valeur véridique si f
et faites lag
navette, et une valeur falsey si ce n'est pas le cas. Vous ne pouvez pas supposer que les entrées sont ordonnées.
Exemples
Considérez les entrées 5 et 16. Elles codent les fonctions ternaires
f(0) = 2; f(1) = 1; f(2) = 0
g(0) = 1; g(1) = 2; g(2) = 1
Nous avons f(g(1)) == f(2) == 0
et g(f(1)) == g(1) == 2
, donc f
et g
ne pas faire la navette et la sortie correcte est falsey.
En revanche, les entrées 3 et 10 codent les fonctions ternaires
f(0) = 0; f(1) = 1; f(2) = 0
g(0) = 1; g(1) = 0; g(2) = 1
et il peut être vérifié que f(g(k)) == g(f(k))
détient pour tous k
dans S
. Ensuite, la sortie correcte est véridique.
Voici le tableau 27 × 27 de toutes les entrées possibles, avec +
marquage d'une sortie véridique et d' -
une sortie falsey:
+ - - + - - + - - + - - + - - + - - + - - + - - + - -
- + - - - - - - - - - - + - - - - - - - - + - - - - -
- - + - - - - - - - - - - - - - - - - - - + - - + - -
+ - - + - - - - - - + - - + - - - - + - - + - - - - -
- - - - + - - - - - - - - + - - - - - - - + - - - - -
- - - - - + - - - - - - - + - - - - - - - + - - - - -
+ - - - - - + - - - - - - - - - - - - - - + - - - - -
- - - - - - - + - - - + - - - - - - - - - + - - - - -
- - - - - - - - + - - - - - - - - - + - - + - - - - -
+ - - - - - - - - + - - - - - - - - - - - + - - - - -
- - - + - - - - - - + - - - - - - - - - - + - - - - -
- - - - - - - + - - - + - - - - - - - - - + - - - - -
+ + - - - - - - - - - - + + - - - - - - - + + - - - -
- - - + + + - - - - - - + + + - - - - - - + + + - - -
- - - - - - - - - - - - - + + - - - - - - + - - - - -
+ - - - - - - - - - - - - - - + - - - - - + - - - - -
- - - - - - - - - - - - - - - - + - - - - + - + - - -
- - - - - - - - - - - - - - - - - + - - - + + - - - -
+ - - + - - - - + - - - - - - - - - + - - + - - - - +
- - - - - - - - - - - - - - - - - - - + - + - - - - +
- - - - - - - - - - - - - - - - - - - - + + - - - - +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
- - - - - - - - - - - - + + - - - + - - - + + - - - +
- - - - - - - - - - - - - + - - + - - - - + - + + - +
+ - + - - - - - - - - - - - - - - - - - - + - + + - +
- - - - - - - - - - - - - - - - - - - - - + - - - + +
- - - - - - - - - - - - - - - - - - + + + + + + + + +
Règles et notation
Vous pouvez écrire un programme complet ou une fonction. Le nombre d'octets le plus bas l'emporte et les failles standard sont interdites.
Réponses:
Gelée,
171413 octetsEssayez-le en ligne! ou vérifiez tous les 27 × 27 cas .
Comment ça marche
la source
MATL ,
1918 octetsTruthy est un tableau avec tous ceux. Falsy est un tableau contenant au moins un zéro.
Essayez-le en ligne! ou vérifiez tous les cas (prend quelques secondes).
la source
Python 2, 61 octets
Étant donné une entrée
i
, nous pouvons implémenter la fonction représentée parn
en faisantn/3**i%3
pour extraire lei
ième chiffre ternaire den
. La fonction vérifie que le même résultat est obtenu pour chacun0,1,2
lors de l'application des fonctions dans l'un ou l'autre ordre. En fait, puisque la première étape est en cours3**
, cela teste avec à la[1,3,9]
place.La réutilisation du code semble gaspilleuse, mais je n'ai pas vu de meilleure façon. Comparer:
la source
JavaScript (ES7), 68 octets
Malheureusement, la conversion en base 3 était trop chère:
la source
Mathematica, 77 octets
L'indexation One-based de Mathematica frappe à nouveau!
la source
{1,1,1}
à une variable et à l'utiliser.