Ce que vous devez faire est de créer une fonction / programme qui prend une décimale en entrée et génère le résultat de la prise répétée de l'inverse de la partie fractionnaire du nombre, jusqu'à ce que le nombre devienne un entier.
Plus précisément, le processus est le suivant:
Soit x l'entrée
Si x est un entier, affichez-le.
Sinon: . Revenez à 2.
est la composante fractionnaire de , et est égale à . est le plancher de x, qui est le plus grand entier inférieur à .
Cas de 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
Résumé pour 0 à 1 par incréments de 0,1: 0, 10, 5, 3, 2, 2, 2, 3, 4, 9, 1
Il s'agit de code-golf , donc le moins d'octets gagne.
Clarifications:
- "Points bonus" pour aucune erreur d'arrondi
- Devrait fonctionner pour tout nombre rationnel non négatif (en ignorant l'erreur d'arrondi)
- Vous pouvez, mais ne devez pas afficher les étapes suivies
- Vous pouvez prendre l'entrée sous forme décimale, fraction ou paire de nombres, qui peut être dans une chaîne.
Désolé pour tous les problèmes, c'est ma première question sur ce site.