Sappiamo tutti che ogni volta che un numero razionale è scritto in decimale, il risultato è terminato o (eventualmente) periodico. Ad esempio, quando 41/42 è scritto in decimale, il risultato è
0.9 761904 761904 761904 761904 761904 761904 761904 ...
con una sequenza iniziale di cifre 0.9
seguita dalla sequenza 761904
ripetuta più volte. (Una nota utile per questo è 0.9(761904)
dove le parentesi circondano il blocco di cifre ripetute.)
Il tuo obiettivo in questa sfida è prendere un numero razionale positivo, eliminare la prima cifra che fa parte della sequenza ripetuta e restituire il numero razionale risultante. Ad esempio, se facciamo questo al 41/42, otteniamo
0.9 61904 761904 761904 761904 761904 761904 761904 ...
o 0.9(619047)
in breve, che è 101/105.
Se il numero razionale ha un'espansione decimale finale, come 1/4 = 0.25
, non dovrebbe succedere nulla. Puoi pensare a 1/4 come 0.250000000...
o come 0.249999999...
ma in entrambi i casi, l'eliminazione della prima cifra della parte ripetuta lascia invariato il numero.
Dettagli
- L'input è un numero razionale positivo, o come una coppia di numeri interi positivi che rappresentano il numeratore e il denominatore, oppure (se la tua lingua preferita lo consente e vuoi farlo) come una sorta di oggetto di numero razionale.
- L'output è anche un numero razionale, anche in entrambe le forme. Se il risultato è un numero intero, è possibile restituire il numero intero anziché un numero razionale.
- Se prendi una coppia di numeri come input, puoi presumere che siano relativamente primi; se produci una coppia di numeri come output, devi renderli relativamente primi.
- Fai attenzione a trovare la prima cifra che inizia un blocco ripetuto. Ad esempio, si potrebbe scrivere 41/42 come
0.97(619047)
ma ciò non rende 2041/2100 (con l'espansione decimale0.97(190476)
) una risposta valida. - Si può presumere che nell'input che si ottiene, la prima cifra periodica sia dopo il punto decimale, rendendo
120/11
=10.909090909...
input non valido: (la sua prima cifra periodica può essere considerata0
in10
). Puoi fare tutto ciò che ti piace su tale input. - Questo è code-golf : vince la soluzione più breve.
Casi 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
succedere nell'input?
120/11
la risposta corretta 111/11
o 210/11
?
111/11
tranne che la risposta più votata al momento ritorna 210/11
, quindi ti lascerò scegliere per evitare di invalidare le risposte esistenti.
2017
invece di2017/1
?