Scalaで8クイーン問題
What's the 8 Queen Problem
チェス盤の上にクイーンが取り合わないように何体置けるかというやつですね。Scala練習がてら作ってみた
やりかた
- 指定数おけたら終了(depth)
- 残り置ける場所(targets)がなかったら失敗
- 置けるのであればおいて再帰
(targets.headに)置けないのであればそこ以外で再検索(target.tailを指定して再帰)
あとは全点で呼び出して頑張ってもらう
まとめ
- c#のyieldとかまるっきり挙動というか概念が違う
- IndexedSeq連結 Map連結 ++
- Listのhead, tailはものすごく有用
- 再帰するには再帰関数の戻り値の型を明示しなければならない
関数型はまだなれなくて思うように使いこなせていない。でも既存の言語だけでは手持ちの選択肢としての言語が少し足りない気がした。