パスを数える simpath algorithm を実装した。knuth先生のあの本にのっているとか。 参考動画 http://youtu.be/Q4gTV4r0zRs simpathは動的計画法(DP)の一種。ただし、そのまま DPの表を作るとメモリ不足とかで頓死するので、動的に表を作成し、不要部分は削除、共有可能な部分は共有するという方針。 それでも、メモリ消費は大きくてHaskellで実装した下のコードでは 9x9 は計算できたけど 10x10 はメモリが足りなくて実行できなかった。工夫すればできそうだけど、そもそもHaskellで書くのがまちが(ry {-# LANGUAGE TupleSections #-} import Data.IntMap (IntMap, insert, insertWith, delete, empty, fromList) import Data.M