
前の投稿に引き続き、Clojureの勉強会のコメント用の投稿です。
問題24を解の解き方の解説図です。
詳細は、gistのコメントで。
gistを貼っておきます。
解説
実際に数列を作るときに、樹形図を描いたのですが、それを見ていて思いつい
た方法です。
図を作りました。
。
樹形図を描いてX番目の数を求めるときには、全部描いて、端から数えればい
いわけですが、図のようにあるノードの下にある葉の数は計算で求めることが
できるので、労力を減らせます。
図は、0-3の4つの数で、4ケタの数を作るときの図です。このとき全体では、
4!=24通りありますが、この15番目の数が何であるか考えます。
1桁目の数は0,1,2,3のいずれかですが、それぞれで始まる数は3!=6つあります。
求めるのは15番目ですから、0と1の下には無いことがわかります。1桁目の数は、2で決まり
です。さて、残りは15-(6*2)=3こです。2の次の数は、0,1,3のいずれかですが、
それぞれの下には、2!=2こずつの数があります。残りは3こなので、2番目
の数は、1で決まりです。のこりの数は、0,3で残り1こなので、最後は03となり
ます。...

最近、Clojureの勉強会に出ていて、Project Euler の4番の高速版を作ってみました。
説明の画像を作ったので、貼ります。
コードも貼っときます。
説明はgistのコメントで。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears...