のてすきあ − 完全独習非プログラマー −

Haskell で Project Euler を解く素人遊び

Problem 40

0.1234567891011121314... と続く小数の小数第1位,10位,100位,1000位,10000位,100000位,1000000位の数を全てかけ合わせるといくらになるか。

 言語によっては相当難しいのかも知れない。しかしHaskellには無限リストという武器がある。ゆえに本問は小数であることを意識する必要もなければ、件の小数をどのように表現するか悩む必要もない。知りたい数字の並びは [1..]という無限リストの形でHaskellが勝手に抱え込んでくれる。我々がすることは、1,10,100...番目の数字を拾い集めるだけである。

無限リストのおかげ☆