こうゆうのを見ると、
ついプログラムを組んで解かせてみたくなります(笑)
数独やナンプレなど、
プログラムで解かせるにはちょっと面倒な問題が多いですが、
唯一、8番のマーティン・ガードナーの最難問は
簡単にプログラムが書けそうです。
ある数の粘度は、すべての桁を掛けて出る答えが1桁になるまでにかかる積算の回数で表す。それぞれの桁の数を掛け算して出るのが2番目の数で、そのまた全桁の数を掛けて出るのが3番目の数…こうして1桁の数が出るまでやり、出るまでに重ねた掛け算の回数を数えるのだ。
例えば、77は粘度4だ。なぜなら1桁になるまで4回掛け算しなきゃならないからね(77-49-36-18-8)。粘度1で一番小さい数は10、粘度2で一番小さい数は25、粘度3で一番小さい数は39、粘度4の最小数は77だ。では、粘度5で一番小さい数は何?
約30分ぐらいでこの問題を解くPythonスクリプトを書いてみました。
結論から言うと、各粘度で最も小さい値は1000000以下の値で下記の通りです。
粘度1:0
粘度2:25
粘度3:39
粘度4:77
粘度5:679 (答え)
粘度6:6788
粘度7:68889
今回作ったスクリプトは下記の通りです。
gist リンク:マーティン・ガードナーの最難問を解くPython Script
このスクリプトを動かすと、maxNum以下の値で
各粘度の最小値を、
記事冒頭のスクリーンショットのように表示します。
プログラムって本当に楽しいですね(笑)