Inspiriert von dieser Antwort (Hervorhebung von mir):
Wir werden ein Spiel spielen. Angenommen, Sie haben eine Zahl x . Sie beginnen mit x und können dann eine beliebige Ganzzahl außer Null addieren, subtrahieren, multiplizieren oder dividieren. Sie können auch mit x multiplizieren . Sie können diese Dinge so oft tun, wie Sie möchten. Wenn die Summe Null wird, gewinnen Sie.
Angenommen, x ist 2/3. Mit 3 multiplizieren und dann 2 subtrahieren. Das Ergebnis ist Null. Du gewinnst!
Angenommen, x ist 7 ^ (1/3). Multiplizieren Sie mit x , dann erneut mit x und subtrahieren Sie 7. Sie gewinnen!
Angenommen, x ist √2 + √3. Hier ist es nicht leicht zu sehen, wie man gewinnt. Es stellt sich jedoch heraus, dass Sie gewinnen, wenn Sie mit x multiplizieren , 10 subtrahieren, zweimal mit x multiplizieren und 1 addieren. (Dies sollte nicht offensichtlich sein; Sie können es mit Ihrem Taschenrechner versuchen.)
Wenn Sie jedoch mit x = π beginnen, können Sie nicht gewinnen. Es gibt keine Möglichkeit, von π nach 0 zu gelangen, wenn Sie addieren, subtrahieren, multiplizieren oder durch ganze Zahlen dividieren oder mit π multiplizieren, unabhängig davon, wie viele Schritte Sie ausführen. (Dies sollte auch nicht offensichtlich sein. Es ist eine sehr knifflige Sache!)
Zahlen wie √2 + √3, aus denen Sie gewinnen können, werden als algebraisch bezeichnet . Zahlen wie π, mit denen man nicht gewinnen kann, heißen transzendent.
Warum ist das interessant? Jede algebraische Zahl ist arithmetisch mit den ganzen Zahlen verknüpft, und die Gewinnzüge im Spiel zeigen Ihnen, wie dies geschieht. Der Weg zu Null mag lang und kompliziert sein, aber jeder Schritt ist einfach und es gibt einen Weg. Transzendentale Zahlen unterscheiden sich jedoch grundlegend: Sie sind nicht über einfache Schritte arithmetisch mit den ganzen Zahlen verbunden.
Im Wesentlichen werden Sie die in der oben genannten Frage verwendeten Schritte verwenden, um das Spiel für eine bestimmte Eingabe zu "gewinnen".
xKonvertieren Sie bei einer reellen algebraischen Konstante die Zahl mit den folgenden zulässigen Operationen in Null:
- Addiere oder subtrahiere eine ganze Zahl.
- Multiplizieren oder dividieren Sie mit einer Ganzzahl ungleich Null.
- Mit der ursprünglichen Konstante multiplizieren
x.
Die Eingabe ist eine Zeichenfolge, die Ganzzahlen, Addition, Subtraktion, Multiplikation, Division, Exponentiation (Exponenten Ihrer Wahl **oder ^Exponenten werden zur Darstellung von Wurzeln verwendet) und Klammern enthalten kann. Leerzeichen in der Eingabe sind optional, jedoch nicht in der Ausgabe. Sie sollten die Schritte ausgeben, die erforderlich sind, um ein Ergebnis von Null zu erhalten, sodass das Multiplizieren mit 7einem Schritt als ausgegeben wird *7. Ein Leerzeichen und / oder eine neue Zeile ist zulässig.
Beispiele
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
Der kürzeste Code gewinnt.
x^4-10*x^2+1. Siehe WolframAlpha

0müssen die Ergebnisse sein? Angesichts von Rundungsfehlern und Float-Präzision konnte ich leicht problematische Situationen erkennen ...