2010年 6月号

ばっく・なんばー(2010年) : 5月号 | 4月号 | 3月号 | 1月号

ばっく・なんばー(2009年) : 12月号 | 8月号 | 7月号 | 6月号 | 5月号 | 2月号 | 1月号

ばっく・なんばー(2008年) : 12月号 | 11月号 | 10月号 | 9月号 | 8月号 | 7月号 | 6月号 | 5月号 | 4月号 | 3月号 | 2月号 | 1月号

ばっく・なんばー(2007年) : 12月号 | 11月号 | 10月号 | 9月号 | 8月号 | 7月号 | 6月号 | 5月号 | 4月号 | 3月号 | 2月号

←戻る

 

▼つっこみフォーム。日記に対する些細な御意見等ありましたらどうぞ

2010年6月30日 (水) : 100になったー

最近Twitterで流行ってるコレのお話。
http://shindanmaker.com/27696

入力したTwitterID(または文字列)に対し、固有の5つの1ケタの数字の組み合わせが与えられるので、 それに+や×などの演算記号を挿入して式として組み立てて、解を100にするというゲームのようなもの。
(もうこの時点で診断じゃなくてゲームやん、と突っ込みたくなりますがw)

条件として、

と提示されてあるので、たとえば 9 7 1 1 1 が与えられたときに

97+1+1+1

とするのはアウト。

では、アウトとならないものにはどんなものがあるか。
加法(+)、減法(−)、乗法(×)、除法(÷)ならびに優先順位のカッコの使用。
それ以外にも、べき乗(^)、コンビネーション()や、階乗(!)、平方根(√)で与えられた数字そのものを改変してしまう(たとえば4にルートをつけて2にしてみたり)、という手が使える。

さらに、演算記号以外のものを用いてはならないという条件や、独自のルールを定めては いけないという条件も見当たらないので、たとえば、n? を「1からnまでの自然数の総和」と定める、とことわっておけば、 2? = 1+2 = 3, 3? = 1+2+3 = 6, 4? = 1+2+3+4 = 10 などが得られる。

プログラムでn=5の場合を書くなら、
a = 0; i = 5; while (i>0) { a+=i; i--; } print a;
こんな感じかな?

これを踏まえて、考えてみた。
お題として 0 0 0 0 0 が提示されたとき、条件に従った上で100はつくれるのか。

結論からいうと、できます。

まず、さきほどの n? を「1からnまでの自然数の総和」であると宣言し、オリジナルのルールを作ります。
そのうえで、

(((0!+0!)?+0!)?)^(0!+0!)

を計算してみてください。
ほら、10の2乗で100になったでしょ?

多少強引でレッドカードチックな気もしますが、条件に反していないのでこれも立派な解法だと思うのです。たぶんw