• re: Generating code which compiles to a jmphash

    From B. Pym@21:1/5 to fvmarcoline on Thu Jul 18 16:10:44 2024
    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)