Nous savons tous que chaque fois qu'un nombre rationnel est écrit en décimal, le résultat est soit final soit (éventuellement) périodique. Par exemple, lorsque 41/42 est écrit en décimal, le résultat est
0.9 761904 761904 761904 761904 761904 761904 761904 ...
avec une séquence initiale de chiffres 0.9
suivie de la séquence 761904
répétée encore et encore. (Une notation pratique pour cela est l' 0.9(761904)
endroit où les parenthèses entourent le bloc de chiffres répétitifs.)
Votre objectif dans ce défi est de prendre un nombre rationnel positif, de supprimer le premier chiffre faisant partie de la séquence répétée et de renvoyer le nombre rationnel résultant. Par exemple, si nous faisons cela au 41/42, nous obtenons
0.9 61904 761904 761904 761904 761904 761904 761904 ...
ou 0.9(619047)
pour faire court, qui est 101/105.
Si le nombre rationnel a une expansion décimale terminale, comme 1/4 = le 0.25
fait, rien ne devrait se produire. Vous pouvez penser à 1/4 comme 0.250000000...
ou comme 0.249999999...
mais dans les deux cas, la suppression du premier chiffre de la partie répétitive laisse le nombre inchangé.
Détails
- L'entrée est un nombre rationnel positif, soit sous la forme d'une paire d'entiers positifs représentant le numérateur et le dénominateur, ou (si votre langue de choix le permet et si vous le souhaitez) comme une sorte d'objet de nombre rationnel.
- La sortie est également un nombre rationnel, également sous l'une ou l'autre forme. Si le résultat est un entier, vous pouvez renvoyer l'entier au lieu d'un nombre rationnel.
- Si vous prenez une paire de nombres en entrée, vous pouvez supposer qu'ils sont relativement premiers; si vous produisez une paire de nombres en sortie, vous devez les rendre relativement premiers.
- Veillez à trouver le premier chiffre qui commence un bloc répétitif. Par exemple, on pourrait écrire 41/42 comme
0.97(619047)
mais cela ne fait pas de 2041/2100 (avec l'expansion décimale0.97(190476)
) une réponse valide. - Vous pouvez supposer que dans l'entrée que vous obtenez, le premier chiffre périodique est après le point décimal, ce qui
120/11
=10.909090909...
entrée non valide: (son premier chiffre périodique pourrait être considéré comme le0
dans10
). Vous pouvez faire tout ce que vous voulez sur une telle entrée. - C'est le code-golf : la solution la plus courte l'emporte.
Cas de test
41/42 => 101/105
101/105 => 193/210
193/210 => 104/105
104/105 => 19/21
1/3 => 1/3
1/4 => 1/4
2017/1 => 2017/1
1/7 => 3/7
1/26 => 11/130
1234/9999 => 2341/9999
(2017,1)
.)
2/4
se produire dans l'entrée?
120/11
la bonne réponse 111/11
ou 210/11
?
111/11
sauf que la réponse la plus votée du moment revient 210/11
, donc je vous laisse choisir pour éviter d'invalider les réponses existantes.
2017
au lieu de2017/1
?