インターネットで次のような問題を見つけました。
ある数の粘度は、すべての桁を掛けて出る答えが1桁になるまでにかかる積算の回数で表す。それぞれの桁の数を掛け算して出るのが2番目の数で、そのまた全桁の数を掛けて出るのが3番目の数…こうして1桁の数が出るまでやり、出るまでに重ねた掛け算の回数を数えるのだ。
例えば、77は粘度4だ。なぜなら1桁になるまで4回掛け算しなきゃならないからね(77-49-36-18-8)。粘度1で一番小さい数は10、粘度2で一番小さい数は25、粘度3で一番小さい数は39、粘度4の最小数は77だ。では、粘度5で一番小さい数は何?
マーティン・ガードナーという数学者の作ったパズルのうちもっとも難しい物のようです。
しばらく考えてみたのですが皆目わかりません。粘度nのうち最小のものから粘度n+1で最小のものを作れるわけではないのが問題です。粘度n及び粘度n+1の集合の間に何らかの順序を保存する対応が作れないかと苦心してはみたのですがさっぱりです。
仕方ないのでコンピュータに計算させてみた結果。
def multi(a) wakachi = a.to_s.split("") multi = 1 for i in 0..(wakachi.length()-1) multi *= wakachi[i].to_i end return multi end def nendo(a) if a < 10 return 0 else return nendo(multi(a)) + 1 end end i = 1 loop{ if nendo(i) == 5 puts i break end i += 1 }
・結果
#=>679
気に食わない結果です。
6*7*9=378
3*7*8=168で、位に1を含みます。だいぶ想定を外れています。
誰か数学的な(?)解法を思いつかれましたらご一報ください。
(注:解決しました)