(put '5x5-mode 'mode-class 'special)
(defun 5x5-mode ()
- "A mode for playing `5x5'
+ "A mode for playing `5x5'.
The key bindings for 5x5-mode are:
(loop for y from 0 to (1- 5x5-grid-size) sum (5x5-row-value (aref grid y))))
(defun 5x5-draw-grid-end ()
- "Draw the top/bottom of the grid"
+ "Draw the top/bottom of the grid."
(insert "+")
(loop for x from 0 to (1- 5x5-grid-size) do
(insert "-" (make-string 5x5-x-scale ?-)))
;;;###autoload
(defun 5x5-crack-xor-mutate ()
- "Attempt to crack 5x5 by xor the current and best solution.
+ "Attempt to crack 5x5 by xoring the current and best solution.
Mutate the result."
(interactive)
(5x5-crack #'5x5-make-xor-with-mutation))
5x5-crack takes the argument BREEDER which should be a function that takes
two parameters, the first will be a grid vector array that is the current
-solution and the second will be the best solution so far. The function
+solution and the second will be the best solution so far. The function
should return a grid vector array that is the new solution."
(interactive "aBreeder function: ")
(5x5-mutate-solution best))
(defun 5x5-make-xor-with-mutation (current best)
- "xor current and best solution then mutate the result."
+ "Xor current and best solution then mutate the result."
(let ((xored (5x5-make-new-grid)))
(loop for y from 0 to (1- 5x5-grid-size) do
(loop for x from 0 to (1- 5x5-grid-size) do
solution)
(defun 5x5-play-solution (solution best)
- "Play a solution on an empty grid. This destroys the current game in
-progress because it is an animated attempt."
+ "Play a solution on an empty grid. This destroys the current game
+in progress because it is an animated attempt."
(5x5-new-game)
(let ((inhibit-quit t))
(loop for y from 0 to (1- 5x5-grid-size) do
(and (or x y) (not (and x y))))
(defun 5x5-y-or-n-p (prompt)
- "5x5 wrapper for y-or-n-p which respects the 5x5-hassle-me setting."
+ "5x5 wrapper for `y-or-n-p' which respects the `5x5-hassle-me' setting."
(if 5x5-hassle-me
(y-or-n-p prompt)
t))