Nous avons de nombreux défis basés sur la base 10, la base 2, la base 36 ou même la base -10 , mais qu'en est-il de toutes les autres bases rationnelles?
Tâche
Étant donné un entier dans la base 10 et une base rationnelle, renvoyez l'entier dans cette base (sous forme de tableau, de chaîne, etc.).
Processus
Il est difficile d'imaginer une base rationnelle, alors visualisons-la en utilisant Exploding Dots :
Considérez cette animation, exprimant 17 en base 3:
Chaque point représente une unité et les cases représentent des chiffres: la case la plus à droite est la place du un, la case du milieu est la place 3 ^ 1 et la case la plus à gauche est la place 3 ^ 2.
On peut commencer avec 17 points chez soi. Cependant, c'est la base 3, donc la place doit être inférieure à 3. Par conséquent, nous "explosons" 3 points et créons un point sur la boîte à gauche. Nous répétons cela jusqu'à ce que nous nous retrouvions avec une position stable sans points explosibles (c'est-à-dire 3 points dans la même case).
Donc 17 en base 10 est 122 en base 3.
Une base fractionnaire est analogue à l'explosion d'un certain nombre de points en plusieurs points. La base 3/2 exploserait 3 points pour en créer 2.
Exprimant 17 en base 3/2:
Donc 17 en base 10 est 21012 en base 3/2.
Les bases négatives fonctionnent de la même manière, mais nous devons garder une trace des signes (en utilisant des soi-disant anti-points, égaux à -1; représentés par un cercle ouvert).
Exprimant 17 en base -3:
Remarque, il y a des explosions supplémentaires pour rendre le signe de toutes les cases identique (en ignorant les zéros).
Ainsi, 17 en base 10 est 212 en base -3.
Les bases rationnelles négatives fonctionnent de manière similaire, dans une combinaison des deux cas ci-dessus.
Règles
- Pas de failles standard.
- Le signe de chaque "chiffre" dans la sortie doit être le même (ou zéro).
- La valeur absolue de tous les chiffres doit être inférieure à la valeur absolue du numérateur de la base.
- Vous pouvez supposer que la valeur absolue de la base est supérieure à 1.
- Vous pouvez supposer qu'une base rationnelle est dans sa forme réduite la plus basse.
- Vous pouvez prendre le numérateur et le dénominateur de la base séparément dans l'entrée.
- Si un nombre a plusieurs représentations, vous pouvez sortir n'importe laquelle d'entre elles. (par exemple 12 en base 10 peuvent être
{-2, -8}
et{1, 9, 2}
en base -10)
Cas de test:
Format: {in, base} -> result
{7, 4/3} -> {3, 3}
{-42, -2} -> {1, 0, 1, 0, 1, 0}
{-112, -7/3} -> {-6, -5, 0, -1, 0}
{1234, 9/2} -> {2, 3, 6, 4, 1}
{60043, -37/3} -> {-33, -14, -22, -8}
Étant donné que certaines entrées peuvent avoir plusieurs représentations, je recommande de tester la sortie à l'aide de cet extrait Mathematica sur TIO.
Il s'agit de code-golf , donc les soumissions avec le plus petit nombre d'octets dans chaque langue gagnent!
Pour plus d'informations sur l'explosion des points, visitez le site Web du projet mathématique mondial ! Ils ont plein de trucs sympas de maths!
la source
Réponses:
Python 2 ,
4239 octetsEssayez-le en ligne!
Merci à @xnor d'avoir trouvé le formulaire le plus court.
Version obsolète (42 octets):
Essayez-le en ligne!
Paramètres: entrée, numérateur (avec signe) et dénominateur.
Renvoie un tableau, le chiffre le plus bas en premier.
Cela fonctionne simplement parce que la division et le modulo en Python suivent le signe du dénominateur, nous n'avons donc pas à nous soucier explicitement des mêmes signes.
Sortie du scénario de test:
la source
Aheui (ésotope) , 91 octets
Essayez-le en ligne!
Prend
integer
,numerator of base
etdenominator of base
.En raison de la limitation de l'interpréteur TIO, chaque entrée doit se terminer par une nouvelle ligne.
Implémentation de la réponse @ Bubbler Python 2 . Heureusement, cet interpréteur Aheui est écrit en Python, nous pouvons donc utiliser la même astuce.
la source
05AB1E ,
1110 octetsEssayez-le en ligne!
Prend
integer
,numerator of base
etdenominator of base
comme toutes les réponses. Comme l'interpréteur 05AB1E est écrit en Python (?), L'astuce de réponse Python 2 de Bubbler peut également être utilisée dans 05AB1E.Explication
Le programme fonctionne donc à peu près de la même manière que ce code Python:
11> 10 Merci Neil
la source
_
place d'0Q
ici.