ゲームをします。いくつかの数xがあるとします。xから始めて、ゼロ以外の任意の整数で加算、減算、乗算、または除算できます。xを掛けることもできます。これらのことは何度でも行うことができます。合計がゼロになると、勝ちます。
たとえば、xが2/3 であるとします。3を乗算してから2を減算します。結果はゼロです。あなたが勝ちます!
仮定xは 7 ^(1/3)です。乗算により、X、それまでのx再び、その後、あなたは勝つ7を引きます!
仮定xは √2+√3です。ここで勝つ方法を見ることは簡単ではありません。しかし、xを掛けて10を引き、xを 2倍して1を加えると、勝つことがわかります。(これは自明ではありません。電卓で試すことができます。)
しかし、x =πで始めると、勝つことができません。加算、減算、乗算、整数による除算、またはπによる乗算では、いくつのステップを実行しても、πから0に到達する方法はありません。(これも明白であるとは限りません。非常に注意が必要です!)
あなたが勝つことができる√2+√3のような数は代数と呼ばれます。あなたが勝つことができないπのような数は超越と呼ばれます。
なぜこれが面白いのですか?各代数は整数に算術的に関連付けられており、ゲームでの勝利の動きはその方法を示しています。ゼロへの道は長くて複雑かもしれませんが、各ステップは単純であり、道があります。しかし、超越数は根本的に異なります。それらは、簡単な手順で整数に算術的に関連しているわけではありません。
基本的に、上記の質問で使用した手順を使用して、特定の入力でゲームを「勝ち」ます。
実数の代数定数が与えられたx場合、以下の許可された演算を使用して数値をゼロに変換します。
- 整数を加算または減算します。
- ゼロ以外の整数で乗算または除算します。
- 元の定数を掛け
xます。
入力は、整数、加算、減算、乗算、除算、指数(**またはの選択^、指数は根を表すために使用されます)、および括弧を含む可能性のある文字列です。入力のスペースはオプションですが、出力にはありません。ゼロの結果を得るのに必要なステップを出力する必要があります。そのため7、1ステップとして乗算すると、として出力され*7ます。末尾にスペースや改行を入れることができます。
例
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
最短のコードが勝ちます。
x^4-10*x^2+1です。WolframAlpha

0結果はどれくらい近い必要がありますか?丸め誤差と浮動小数点の精度を考えると、問題のある状況を簡単に見ることができました...