数独ソルバ

Haskell で数独ソルバを書いてみた。 特徴は ・明示的な再帰は使わず (iterate ...) !! 81 を使った。(81手目に解が求まる) ・探索中のマス目状態を、未確定部分と仮確定部分に分けて持つ。 import List (partition,delete) mark (pos@(i,j),d) cand = (…

List化関手同士の自然変換

・自然変換 Listのreverse リストの反転は自然変換になっているという初等的でありがたい例。 応用として、cdrとかもいいんじゃないかと発言したけど、空リストの扱いが困るから微妙。でも同じ感じで結構考えられそう。 http://d.hatena.ne.jp/oto-oto-oto/2…

公平に配る

Haskell で。Maybe 大好き。 import List import Maybe deal n xs = map catMaybes $ transpose $ init $ takeWhile (not.null) $ map (take n) $ iterate (drop n) $ replicate n Nothing ++ map Just xs ++ [Nothing]

はてな日記開始

今日からゆるーく書き始めてみる。