補足2問まとめて。
Problem 14 補足
collatz
関数を変更して、数列そのものをリストで返すのではなく長さを返すようにした。(数列の長さ, 数列の最初の項)
のペアを foldl で大きい方のみを保持して解を求める。この問題を解く過程で、タプルの大小比較は最初の要素から順に行うことを知った。
ペアの要素のfstとsndが(数列の長さ, 数列の最初)の順であるからmax関数での比較で成り立つようになっている。
Problem 15 補足
格子経路は二項係数を用いると容易に求められると教えてもらったので実践してみた。すごくシンプルになった…。
なお、Haskell の階乗については色々面白い書き方があるそうだ。
(僕がパッと思いついたのは "Another junior Haskell programmer" だった…)