Dans ce défi il y a 2 ans, nous avons trouvé la période d'une fraction unitaire ( 1/n where n is a natural number
).
Maintenant, votre tâche consiste à écrire un programme / une fonction pour trouver la répétition d'une fraction d'unité.
La répétition est la partie de l'expansion décimale qui se répète à l'infini, comme:
- La représentation décimale de
1/6
est0.16666...
, puis la répétition est6
. - La représentation décimale de
1/11
est0.090909...
, puis la répétition est09
. - La représentation décimale de
1/28
est0.0357142857142857142857...
, puis la répétition est571428
.
Spécifications
- Entrez dans n'importe quel format raisonnable.
- Sortez le repetend en décimal, chaîne ou liste .
- Pour
1/7
(0.142857142857...
), vous devez produire à la142857
place de428571
. - Pour
1/13
(0.076923076923076923...
), vous devez produire à la076923
place de76923
. - Pas de force brute, s'il vous plaît.
Cas de test
Input Output
1 0
2 0
3 3
7 142857
13 076923
17 0588235294117647
28 571428
70 142857
98 102040816326530612244897959183673469387755
9899 000101020305081321345590463683200323264976260228305889483786241034447924032730578846348115971310233356904737852308313971108192746742095161127386604707546216789574704515607637135064147893726639054449944438832205273259925244974239822204263056874431760783917567431053641781998181634508536215779371653702394181230427315890493989291847661379937367410849580765733912516415799575714718658450348520052530558642287099707041115264168097787655318719062531568845337912920497019901
Notation
C'est du code-golf . La solution la plus courte en octets gagne.
Aucune réponse ne serait acceptée, car le but n'est pas de trouver la langue capable de produire la solution la plus courte, mais la solution la plus courte dans chaque langue.
Classement
code-golf
math
arithmetic
number-theory
Leaky Nun
la source
la source
1/13
n'est0.076923076923...
pas le cas0.769230769230...
Réponses:
Java, 150 octets:
Espaces ajoutés:
Programme complet non golfé:
la source
for(;;)
serait moins d'octets quewhile(2<3)
si tout en étant également une boucle infinie! (et moins d'octets quewhile(1)
aussi @Maltysen)a
etr
dans les boucles for. Économise des octets!CJam, 26
Essayez-le en ligne
Explication:
Le programme construit une série de dividendes impliqués dans le calcul de l'expansion décimale, jusqu'à ce qu'il trouve un dividende qu'il a vu auparavant. Ensuite, il prend tous les dividendes en commençant par celui-ci, et les divise par n pour obtenir les chiffres de la répétition.
la source
Python 3.5,
79747370 octetsÉconomisé 3 octets en gardant une trace des dividendes, une idée que j'ai prise de la réponse CJam de @ aditsu .
Testez - le sur repl.it .
la source
Gelée ,
1210 octetsÉconomisé 2 octets en gardant une trace des dividendes, une idée que j'ai prise de la réponse CJam de @ aditsu .
Essayez-le en ligne!
Comment ça fonctionne
la source
Langue GameMaker, 152 octets
Basé sur la réponse de Kenny
la source
Java, 122
Similaire à ma solution CJam.
la source
Perl 6 , 37 octets
Si vous ne vous souciez pas que cela ne fonctionne qu'avec des dénominateurs qui tiennent dans un entier 64 bits, vous pouvez supprimer l'appel de méthode à
.FatRat
.Explication:
Tester:
la source
Pyth, 63 octets
Essayez-le en ligne!
Traduction directe de la réponse en Java .
la source
PHP, 169 octets
la source