こういう問題が流れてきた。
まつひろのガレージライフ: 幼児が数分で解けるのに大人が解けない算数(?)の問題
「幼稚園児が5〜10分で解けるのに、プログラマなどの頭脳労働職の高学歴の方が解くのに1時間もかかる」とあるけど、これ1時間かかるの、プログラマとしてあまりよくないんじゃないのかなーと思った。
ので、プログラマ的に解いてみる。
改めて書き出すとこう。
8809=6 3333=0 7111=0 5555=0 2172=0 8193=3 6666=4 8096=5 1111=0 1012=1 3213=0 7777=0 7662=2 9999=4 9313=1 7756=1 0000=4 6855=3 2222=0 9881=5 3333=0 5531=0 5555=0 2581=???
問題は英語だし語呂合わせじゃない。幼稚園児にわかるということでそこまで複雑なルールでもない。なんらか数字に割り当てられた数を足すんだろう。画数ではないっぽい。ということで0-9を記号に当てる。
a:0 b:1 c:2 d:3 e:4 f:5 g:6 h:7 i:8 j:9
求めるのは2581なので
b+f+i+c
を求めるということになる。
んで、2,5,1はそれぞれ4つで0になる式がある。
1111=4b=0からb=0 2222=4c=0からc=0 5555=4f=0からf=0
結局、求めるのは8に割り当てたiの値。
直接は求められないので、8が含まれた、最初の式を使う。
8809=2i+a+j=6
ここで、aは、0000=4から
0000=4a=4、a=1
jは、9999=4から
9999=4j=4、j=1
となって、
2i+a+j=2i+1+1=2i+2=6 2i=4 i=2
が求まる。
よって、2581に対応する値は
2581=b+f+i+c=0+0+2+0=2
となって、2ということになる。
残りの式も、同様にあてはめていくと、このルールで整合するので、少なくとも正しい解のひとつということになる。
ブログ書きながらでも30分。
こういう、隠れた法則を探す作業は、バグによる変な出力から現象を探し出すのと同じなので、プログラマならむしろ慣れてるんじゃないでしょうか。