RSS

Haskellで8-Queen

Haskellの練習ということでやってみた。

8-Queenなんぞやったの大学1年のとき課題でCで書いて以来のような記憶があるけれど…。

置けなかった状態をNothingで返すんだとか変なことを考えていたらわけがわからなくなってきたので内包記法使って素直に実装。なんとなく納得できん。92通り出てきたのでとりあえず安心。もうちょっとごちゃごちゃ変な書き方をしてみたかったが。

最初はチェス盤をIntMapで表現するとかやっていたがQueenの位置だけを配列に覚えされるというやり方で数行で。きれいではあるが面白くはない。それだけHaskellが強力という話かもしれない。

Pythonで同じアルゴリズムでやってみた。もちろんきちんと動いたがこんな書き方している人はあまりないよなあ。代入とループに対して再帰、ifを使わずパターンマッチング。再帰は一見するとわけわからんからねえ…。

次はオセロを作ってみよう。