Quello che devi fare è creare una funzione / programma che accetta un decimale come input e produce il risultato di prendere ripetutamente il reciproco della parte frazionaria del numero, fino a quando il numero diventa un numero intero.
Più specificamente, il processo è il seguente:
Lascia che x sia l'input
Se x è un numero intero, emettilo.
Altrimenti: . Torna a 2.
è il componente frazionario di , ed è uguale a . è il piano di x, che è il numero intero maggiore inferiore a .
Casi test:
0 = 0
0.1 = 1/10 -> 10
0.2 = 1/5 -> 5
0.3 = 3/10 -> 10/3 -> 1/3 -> 3
0.4 = 2/5 -> 5/2 -> 1/2 -> 2
0.5 = 1/2 -> 2
0.6 = 3/5 -> 5/3 -> 2/3 -> 3/2 -> 1/2 -> 2
0.7 = 7/10 -> 10/7 -> 3/7 -> 7/3 -> 1/3 -> 3
0.8 = 4/5 -> 5/4 -> 1/4 -> 4
0.9 = 9/10 -> 10/9 -> 1/9 -> 9
1 = 1
3.14 = 157/50 -> 7/50 -> 50/7 -> 1/7 -> 7
6.28 = 157/25 -> 7/25 -> 25/7 -> 4/7 -> 7/4 -> 3/4 -> 4/3 -> 1/3 -> 3
Riepilogo da 0 a 1 con incrementi di 0,1: 0, 10, 5, 3, 2, 2, 2, 3, 4, 9, 1
Questo è code-golf , quindi vince meno byte.
chiarimenti:
- "Punti bonus" per nessun errore di arrotondamento
- Dovrebbe funzionare per qualsiasi numero razionale non negativo (ignorando l'errore di arrotondamento)
- È possibile, ma non è necessario emettere i passaggi effettuati
- Puoi prendere l'input come decimale, frazione o coppia di numeri, che possono essere in una stringa.
Ci scusiamo per tutti i problemi, questa è la mia prima domanda su questo sito web.