手法
うーん。
なんだかなあ。
Haskellには
(!!)関数があるので、これを入れ子にして、C++でやったようなDijkstra法を実現することは可能です。
可能ですが、なんだかなー......
汚い。
というか、普通に手続き型で書くのと何の変化もなくなってしまう。
入力を受け取るところだけ書きましたが、まさにC++でやったとおり
toInt :: String -> [Int] toInt [] = [] toInt (x:xs) = read [x] : toInt xs input :: (Int,Int) -> String -> [[Int]] input (h,w) =take h.map (toInt.take w).lines toAlist :: [String] -> (Int,Int) toAlist (x:y:_) = (read x , read y) main = do hw <- getLine cs <- getContents print $ input (toAlist $ words hw) cs
これを使って、あとはh,wについて、
パターンマッチ
(!!)による要素取り出し
とかをすればできるといえばできますが。
書いた所で達成感はないだろうな。後味悪いだけ.....
うーん。
Stateモナド使っても出来そうだけど