fvmarcoline wrote:
(defconstant dirs '(up down left right))
(defun all-moves ()
(loop for dir in dirs
append
(loop for i from 0 to 4
collect (list i dir))))
(defun move-to-int (move)
(+ (first move) (* 5 (position (second move) dirs))))
(nth 12 (all-moves))
=> (2 left)
(map 'list 'move-to-int (all-moves))
=> (0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19)
Gauche Scheme
(define dirs '(up down left right))
(define dir-table (map cons dirs '(0 5 10 15)))
(define (all-moves)
(append-map
(^(dir) (map (^i (list i dir)) (lrange 0 5)))
dirs))
(define (move-to-int move)
(+ (car move) (assv-ref dir-table (cadr move))))
(~ (all-moves) 12)
===>
(2 left)
(map move-to-int (all-moves))
===>
(0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19)
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)