![]() |
テンパズルとは、 「4つの数字と任意の四則演算を用いて計算結果を10にする」 というパズルです。累乗(指数)、ルートなどはダメ、カッコの使用はOKです。 電車の切符に印刷してある4桁の数字で暇つぶししたやつです。 これを、コンピュータで、すべての可能性を調べ、その結果を表示させるにはどうしたらいいでしょうか? |
演算子は、4つの数字の間に入るので4×4×4=64通りの入り方が考えられます。
また、カッコの使用箇所は下記の5通り。
(a*b)*c)*d
(a*b)*(c*d)
(a*(b*c))*d
a*((b*c)*d)
a*(b*(c*d))
最後に4つの数字の順列は、10個から4つ選ぶ重複順列ですから
10×10×10×10=10,000通り
以上より全部で
64×5×10,000=3,200,000通りを調べれば終了です。
これをプログラムに直して実行すればいいのですが、、、
10,000通りのところはfor文で繰り返せばいいですが、64通りの部分はどうしましょうか。
64通りのところと5通りのところは、切り離せない雰囲気、、、やっぱ320行のプログラムを書くしかないのでしょうか?
どうも不満ですが、、、、
○C言語ソースリスト
○答え
一応、答えは出ましたが、どうもカッコ悪いです。もっとエレガントな方法はないのでしょうか?
最終更新:2011年9月6日