8クイーン問題

今回の SICP 勉強会は8クイーン問題まで行かなかったので、さ来週へのお楽しみが増えた。

個々の手続きは書けて動いているのだが、どうも盤の大きさを変えると動かなくなる、と eric-n さんに言うと、どういうふうに実装したか訊かれたので、盤のクイーンの位置をデータとして持っておいて、毎回新しいクイーンを置くたびに新しいクイーンの「利き」のところにこれまでに置いたクイーンがいるかどうかチェックしている、というと、それは今すぐやめてください、と言われたのでなにかと思ったら、クイーンの位置だけ記憶しておけばあとは簡単に計算できるとのこと。たしかにそうだな。前も同じようにデータの保持方法あからさまに馬鹿なことしていたことがあった。こういうの苦手なのかもしれない。