Inspiré par cette réponse (soulignement le mien):
Nous allons jouer à un jeu. Supposons que vous ayez un certain nombre x . Vous commencez par x , puis vous pouvez ajouter, soustraire, multiplier ou diviser par n'importe quel entier, sauf zéro. Vous pouvez également multiplier par x . Vous pouvez faire ces choses autant de fois que vous le souhaitez. Si le total devient nul, vous gagnez.
Par exemple, supposons que x soit 2/3. Multipliez par 3, puis soustrayez 2. Le résultat est zéro. Vous gagnez!
Supposons que x soit 7 ^ (1/3). Multipliez par x , puis par x à nouveau, puis soustrayez 7. Vous gagnez!
Supposons que x soit √2 + √3. Ici, ce n'est pas facile de voir comment gagner. Mais il s'avère que si vous multipliez par x , soustrayez 10, multipliez par x deux fois et ajoutez 1, alors vous gagnez. (Ce n'est pas censé être évident; vous pouvez l'essayer avec votre calculatrice.)
Mais si vous commencez avec x = π, vous ne pouvez pas gagner. Il n'y a aucun moyen de passer de π à 0 si vous ajoutez, soustrayez, multipliez ou divisez par des nombres entiers, ou multipliez par π, quel que soit le nombre de pas que vous faites. (Ce n'est pas non plus censé être évident. C'est une chose très délicate!)
Des nombres comme √2 + √3 à partir desquels vous pouvez gagner sont appelés algébriques . Les nombres comme π avec lesquels vous ne pouvez pas gagner sont appelés transcendantaux.
Pourquoi est-ce intéressant? Chaque nombre algébrique est lié arithmétiquement aux nombres entiers, et les mouvements gagnants dans le jeu vous montrent comment. Le chemin vers zéro peut être long et compliqué, mais chaque étape est simple et il y a un chemin. Mais les nombres transcendantaux sont fondamentalement différents: ils ne sont pas liés arithmétiquement aux entiers via des étapes simples.
Essentiellement, vous utiliserez les étapes utilisées dans la question citée ci-dessus pour "gagner" le jeu pour une contribution donnée.
Étant donné une constante algébrique réelle, xconvertissez le nombre à zéro en utilisant les opérations autorisées suivantes:
- Ajoutez ou soustrayez un entier.
- Multipliez ou divisez par un entier non nul.
- Multipliez par la constante d'origine
x.
L'entrée est une chaîne qui peut contenir des entiers, addition, soustraction, multiplication, division, exponentiation (votre choix de **ou ^, les exposants sont utilisés pour représenter les racines) et des parenthèses. Les espaces dans l'entrée sont facultatifs, mais pas dans la sortie. Vous devez sortir les étapes nécessaires pour obtenir un résultat de zéro, donc la multiplication par 7comme une seule étape serait sortie comme *7. Un espace de fin et / ou une nouvelle ligne est autorisé.
Exemples
0 -> +0 (or any other valid, or empty)
5/7 + 42 -> -42 *7 -5 (or shorter: *7 -299)
2^(1/3) -> *x *x -2
5*(3**(1/4)) -> *x *x *x -1875
2^(1/2)+3^(1/2) -> *x -10 *x *x +1
Le code le plus court gagne.
x^4-10*x^2+1. Voir WolframAlpha

0les résultats doivent-ils être? Compte tenu des erreurs d'arrondi et de la précision du flotteur, je pouvais facilement voir des situations problématiques ...