あなたの仕事は、次のような入力を取るプログラムを書くことです:
a + b * c + a / 2
そして、ユーザー入力を受け取り、式を評価するプログラムのソースコードを生成します。
式は、演算子を含めることができ+、-、*、/、1文字の小文字の変数。0から32000までの整数。標準の算術優先順位に正しく従う必要があります。式は、26個の一意の変数a〜zに制限されています。ただし、1つの変数が複数回現れることがあります。
入力式は有効であると想定できます(これらの規則に従います)。
生成されたプログラムは、このフォームでユーザー入力を要求する必要があり、変数ごとに1回だけ要求します。
a =
0から32000までのユーザー入力は正しく処理されます。次に、式と正しい結果を出力します。整数または浮動小数点演算を使用できます。計算は、少なくとも32ビットの精度で実行する必要があります。それ以上であれば、オーバーフローやゼロによる除算を心配する必要はありません。
上記の式に対して生成された非ゴルフ生成Perlプログラムの例:
print "a = ";
my $a = <>;
print "b = ";
my $b = <>;
print "c = ";
my $c = <>;
print "a + b * c + a / 2 = " . ($a + $b * $c + $a / 2);
上記の式に対して生成されたプログラムの入力と出力の例:
a = 1
b = 2
c = 3
a + b * c + a / 2 = 7.5
スコアは、プログラムの長さ+この式に対して生成されたプログラムの長さとして計算されます。
1 + a * 4 * b + 2 / d * e - a - 3 + g / h * 32000
最も低いスコアが勝ちます。
更新:上記のように、問題のいくつかの要件を強調するだけです。
- プログラムの出力は、式を評価する別のプログラムのソースコードである必要があります。
- プログラムは元の式を印刷する必要があります。おそらくこれにはあいまいさがいくつかありますが(これ
a+bはと同じ式であると主張することもできますa + b)、明確にするために、空白がそのままの元の式である必要があるとしましょう。これまでのすべての有効な答えは、そのようにしてきました。