Logique ternaire équilibrée
Ternaires est normalement un autre nom pour la base 3, c'est - à - dire, chaque chiffre est 0, 1ou 2, et chaque endroit vaut 3 fois plus que l'endroit suivant.
Ternaire équilibrée est une modification de ternaire qui utilise les chiffres de -1, 0et 1. Cela a l'avantage de ne pas avoir besoin d'un signe. Chaque place vaut encore 3 fois plus que la place suivante. Les premiers entiers positifs sont donc [1], [1, -1], [1, 0], [1, 1], [1, -1, -1]alors que les premiers entiers négatifs sont [-1], [-1, 1], [-1, 0], [-1, -1], [-1, 1, 1].
Vous avez trois entrées x, y, z. zest soit -1, 0ou 1, tout xet ypeut être de -3812798742493la 3812798742493inclus.
La première étape consiste à convertir xet yde décimal en ternaire équilibré. Cela devrait vous donner 27 trits (chiffres TeRnary). Vous devez ensuite combiner les trits de xet ypar paires à l'aide d'une opération ternaire, puis reconvertir le résultat en décimal.
Vous pouvez choisir les valeurs de zmappage pour chacune de ces trois opérations ternaires:
A: Étant donné deux trits, si l'un est nul, le résultat est nul, sinon le résultat est -1 s'ils sont différents ou 1 s'ils sont identiques.B: Étant donné deux trits, si l'un est zéro, alors le résultat est l'autre trit, sinon le résultat est zéro s'ils sont différents ou la négation s'ils sont les mêmes.C: Étant donné deux trits, le résultat est nul s'ils sont différents ou leur valeur s'ils sont identiques.
Exemple. Supposons xest 29et yest 15. En ternaire équilibré, ceux-ci deviennent [1, 0, 1, -1]et [1, -1, -1, 0]. (Les 23 zéros restants ont été omis par souci de concision.) Après chacune des opérations respectives, ils deviennent A: [1, 0, -1, 0], B: [-1, -1, 0, -1], C: [1, 0, 0, 0]. Convertis en décimal, les résultats sont 24, -37et 27respectivement. Essayez l'implémentation de référence suivante pour plus d'exemples:
L'implémentation de référence suit les étapes ci-dessus, mais vous êtes bien sûr libre d'utiliser n'importe quel algorithme qui produit les mêmes résultats.
C'est le golf de code , donc le programme ou la fonction la plus courte qui ne viole aucune échappatoire standard gagne!
zque ce soit une -1,0,1ou pouvons-nous choisir trois valeurs cohérentes et distinctes? J'ai sélectionné 1,2,3dans ma réponse, et il y a une certaine confusion à ce sujet.