mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-20 14:19:17 +02:00
26 lines
759 B
Scheme
26 lines
759 B
Scheme
;;; MAZE -- Constructs a maze on a hexagonal grid, written by Olin Shivers.
|
|
|
|
(import (scheme base) (scheme read) (scheme write) (scheme time))
|
|
|
|
(define (get-set-root s)
|
|
(let lp ((r s));; Find the last pair
|
|
(let ((next (cdr r)));; in the list. That's
|
|
(cond ((pair? next) (lp next));; the root r.
|
|
|
|
(else
|
|
(if (not (eq? r s));; Now zip down the list again,
|
|
(let lp ((x s));; changing everyone's cdr to r.
|
|
(let ((next (cdr x)))
|
|
(cond ((not (eq? r next))
|
|
(set-cdr! x r)
|
|
(lp next))))))
|
|
r)))));; Then return r.
|
|
|
|
(write
|
|
(get-set-root '(
|
|
(a . 1)
|
|
(b . 2)
|
|
(c . 3)
|
|
(d . 4)
|
|
(e . 5)
|
|
)))
|