読者です 読者をやめる 読者になる 読者になる

オセロ必勝法 Part1

8×8のオセロの必勝法が知りたいので、それを目標にプログラミングしていきたいと思います。
手始めに、オセロ盤のマスを作りました。
言語はEmacs Lispです。

(defun Osero ()
  (let ((table nil))
  (defun initable (table sq)
    (defun initableat (table)
      (cond ((not table) (setq table '((0 0))))
	    ((= (cadr (car table)) (1- sq)) (setq table (push `(,(1+ (caar table)) 0) table)))
	    (t (setq table (push `(,(caar table) ,(1+ (cadr (car table)))) table)))
	    table))
    (defun nest (f x n)
      (let ((i 0)
	    (out x))
	(while (<= i n)
	  (setq out (funcall f out))
	  (setq i (1+ i)))
	out))
    (setq table (nest 'initableat nil (1- (* sq sq)))))))

(Osero)
initable
(initable nil 2)
((1 1) (1 0) (0 1) (0 0))

次回は、石を返すプログラムを作ろうと思います。