複数の入力を使用して数学の問題を実行すると便利な場合があります。この課題の目標は、このタスクを容易にするプログラムを作成することです。
数値生成式
3種類の式をサポートする必要があります。
- 単一の数値ジェネレーター:非常にシンプルで、単なるリテラルの数値
- 複数番号ジェネレータ:少し複雑です。これらは角括弧(
[])で囲まれています。数値は,、式内でコンマ()で区切られています。例[-1,2,3.26]。 - 範囲ジェネレーター:これは中括弧(
{})で囲まれています。カンマで区切られた3つの数字があります。この式の形式は{start,stop,step}です。startそしてstop包括的です。
評価のルール
- 操作の順序をサポートする必要があります。(https://en.wikipedia.org/wiki/Order_of_operations#Definition)
- 括弧をサポートする必要はありません。
- 式には任意の数のスペースを入れることができます。
- 浮動小数点数をサポートする必要があります(言語のデフォルトの精度は問題ありません)。
0結果による除算NaN(数値ではない)。
プログラムは*、乗算()、除算(/)、加算(+)および減算(-)をサポートする必要があります。
出力
出力の各行は、ジェネレーターの組み合わせの1つです。形式は、式(それに置換される実数を含む)の後に等号(=)と評価の結果が続きます。ジェネレーターのすべての組み合わせは、出力で表す必要があります。
例
(>>>入力を示す)
>>>3 * [3,2]
3 * 3 = 9
3 * 2 = 6
>>>{1,2,3}
1 = 1 <-- this is because 1 + 3 > the end
>>>{0,2,1} + {0,1,1}
0 + 0 = 0
1 + 0 = 1
2 + 0 = 2
0 + 1 = 1
1 + 1 = 2
2 + 1 = 3
>>>6/[2,3]
6/2 = 3
6/3 = 2
>>>{1.5,2.5,0.5}
1.5 = 1.5
2 = 2
2.5 = 2.5
>>>3-{6,5,-1}
3-6 = -3
3-5 = -2
>>>5/{-1,1,1}
5/-1 = -5
5/0 = NaN
5/1 = 5
>>>4.4 / [1,2.2] + {0,2,1}
4.4 / 1 + 0 = 4.4
4.4 / 1 + 1 = 5.4
4.4 / 1 + 2 = 6.4
4.4 / 2.2 + 0 = 2
4.4 / 2.2 + 1 = 3
4.4 / 2.2 + 2 = 4
>>> [1,2] / 0 + 5
1 / 0 + 5 = NaN
2 / 0 + 5 = NaN
プログラムは覚えておいて、どこでも使用できるように短くする必要があります。
サンドボックスでこの投稿を手伝ってくれた@PeterTaylorと@geokavelに感謝します。
x/0NaNへの即時評価になりますか、またはNaNを値として扱う必要がありますか?