Etant donné un entier n ≥ 0, sortez-le dans une notation base-3 non positionnelle, en utilisant des chiffres 139ABCDE…
et un séparateur à 1 caractère. Chaque chiffre est une puissance consécutive de 3 et les chiffres sur le côté gauche du séparateur sont annulés, par exemple A931 | B → 81− (1 + 3 + 9 + 27) → 41 . Un chiffre ne peut apparaître qu'une seule fois.
Rigoureusement, que la valeur d'un chiffre soit:
- sa valeur si le chiffre est 1, 3 ou 9
- 27 si le chiffre est
A
- 3 fois la valeur du chiffre juste avant pour
B
..Z
Votre sortie doit satisfaire somme (valeur des chiffres à droite de |
) - somme (valeur des chiffres à gauche de |
) == entrée .
Exemples
input output
----------------
0 |
1 |1
7 3|91
730 |D1
9999 FEDC|GA9
Vous pouvez utiliser un caractère non espace différent comme séparateur. Vous êtes également autorisé à ne pas avoir de séparateur, auquel cas le plus grand chiffre commence la séquence positive. Vous n'avez pas besoin de gérer quelque chose de plus grand que 2 32 −1 ( PMIGDCBA9|RQNLH3
).
Vous pouvez écrire un programme ou une fonction complète, et l'entrée et la sortie peuvent être fournies sur l'un des canaux habituels.
Il s'agit de code-golf , donc plus votre réponse est courte, mieux c'est!
la source
|
et les positifs à droite de celui-ci.Réponses:
Java 10,
120113112109107102 octets-3 octets en utilisant une partie de l'astuce de la réponse JavaScript (ES6) de @Arnauld , en
changeant
i=0
eti++<1?49:i<3?51:i<4?57:i+61
versi=4
et++i>9?i+55:i>8?57:++i+43
.-6 octets grâce à @Arnauld directement, en se débarrassant de
i
.Ordre de sortie: du plus haut au plus bas,
|
-délimiteur, du plus bas au plus haut.Explication:
Essayez-le en ligne.
la source
r
le corps de la boucle. Merci!i
et quand vous le réutilisezc
)?p=1
et ne pas inclure*1
dans le code si c'est le cas - même si cela ne conduit pas à une meilleure formule dans ce cas.)Python 3 ,
1039991 octets4 octets grâce à Lynn.
8 octets grâce aux ovs.
Essayez-le en ligne!
Crédits à xnor pour la logique.
la source
JavaScript (ES6),
828079 octetsSorties en minuscules, ce qui devrait être très bien.
Essayez-le en ligne!
Similaire à la réponse de Leaky "Ninja Master" Nun et également basée sur la réponse de xnor .
Conversion de chiffres
Nous commençons par k = 4 . Alors que k est inférieur à 9 , nous l'incrémentons deux fois à chaque itération et soustrayons 5 . Après cela, nous l'incrémentons une seule fois et le convertissons en base-36.
la source
Gelée , 26 octets
Essayez-le en ligne!
Utilisez une nouvelle ligne comme séparateur.
la source
Perl 6 , 80 octets
Essayez-le en ligne!
Pas de séparateur. Basé sur la réponse de xnor .
la source
Stax ,
3029 octetsExécuter et déboguer
Port de ma réponse Stax dans convertisseur ternaire équilibré .
Explication
Utilise la version décompressée pour expliquer.
la source
C # .NET, 103 octets
Port de ma réponse Java 10 . Si un port direct (à l'exception de
n->
ton=>
) avait été possible, j'aurais édité ma réponse Java avec ce polyglotte. Malheureusement cependant,c+=
sur les caractères ou avoirc=49
n'est pas possible en C #, d'où cette réponse lâche portée.Essayez-le en ligne.
la source
Perl 5
-p
,7169 octetsn'utilise aucun séparateur. Les parties négatives et positives sont dans "l'ordre romain" (le plus grand chiffre en premier)
Essayez-le en ligne!
la source
Rubis ,
878482 octetsEnregistré 2 octets grâce à @ benj2240.
Essayez-le en ligne!
la source
redo
astuce: Essayez-le en ligne!J , 129 octets
Essayez-le en ligne!
Trop long, surtout pour un programme J ...
Explication:
la source
C,
int
:138123 octets,long
:152131 octetsJ'ai créé deux versions de cela, car la limite des défis d'une entrée max de travail de
0x100000000
semblait un peu étrange. Une version fonctionne avec des entiers 32 bits (qui ne respecte pas la limite pour des raisons évidentes), l'autre version fonctionne avec 64 bits (qui va bien au-delà de la limite donnée, au prix de148 octets supplémentaires).Version 32 bits:
Version 64 bits:
Ceci est identique sauf qu'il déclare que la variable entière est
long
(qui est 64 bits sur linux).La
long
version non golfée :Comme vous pouvez le voir, cela fonctionne par décent récursif: si le reste est 1, le caractère respectif est ajouté à la chaîne de sortie après l'appel récursif. Si le reste est 2, la sortie est effectuée avant la récurrence. Dans ce cas, j'incrémente également la valeur de un pour gérer correctement le chiffre négatif. Cela a l'avantage supplémentaire de changer le reste à zéro, ce qui me permet d'utiliser
value%3
comme condition pour la post-récursion if.Le résultat de la conversion est placé dans le tampon global. L'
g()
encapsuleur a pour tâche de mettre à zéro la chaîne résultante correctement et de réinitialiser leresult
pointeur à son début (ce qui est également la façon dontg()
"renvoie" le résultat).Testez la
long
version avec ce code:Golf possible mais destructeur:
-4 octets: faites de la fonction un coup en supprimant la réinitialisation du pointeur dans
g()
.-5 octets: force l'appelant à effectuer la terminaison de chaîne, en renvoyant la chaîne sans terminaison
buffer
et la fin de la chaîneresult
.la source
Fusain , 36 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Saisissez la valeur.
Poussez trois listes vides vers la liste vide prédéfinie.
Parcourez les caractères
139
et l'alphabet majuscule.Indexez cycliquement la liste des listes avec la valeur et poussez-y le caractère courant.
Divisez la valeur par 3 mais arrondissez-la en ajoutant 1 en premier.
Boucle deux fois. La deuxième fois, imprimez a
|
.Chaque boucle nous pop la dernière entrée de la liste; la première fois, cela nous donne les entrées qui avaient un reste de
2
(ce qui correspond à un chiffre ternaire équilibré de-1
), tandis que la deuxième fois cela nous donne les entrées correspondant à un chiffre ternaire équilibré de1
. La matrice résultante s'imprime normalement verticalement, mais la rotation du sens d'impression vers le haut l'annule.la source
J ,
69 6458 octetsEssayez-le en ligne!
la source
Perl 5 ,
9289 octetsInspiré par les réponses java et python.
Essayez-le en ligne!
Avec un espace blanc:
la source
PHP, 73 octets
port de la réponse de xnor , 53 octets
Exécuter en tant que pipe avec
-nr
ou essayer en ligne .la source