[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Chicken-users] Lisp puzzles
From: |
John Cowan |
Subject: |
[Chicken-users] Lisp puzzles |
Date: |
Tue, 21 Apr 2009 22:56:57 -0400 |
User-agent: |
Mutt/1.5.13 (2006-08-11) |
These are some very old Lisp puzzles I dug up and translated to Scheme.
The idea is to figure out what they do, ideally without testing them,
but if you *want* to test them, nobody can stop you.
;; What do these functions do?
(define (greussay l r)
(cond
((atom? l) #f)
((memq l r) #t)
((greussay (car l) (cons l r)) #t)
(else (greussay (cdr l) (cons l r)))))
(define (allen l)
(cond
((null? l) '())
((null? (cdr l)) l)
(else (cons (car (allen (cdr l)))
(allen (cdr (allen (cdr l))))))))
(define (samet x y)
(if (< x 2)
(+ y 1)
(samet (- x 1) (samet (- x 2) y))))
(define (goossens-moby l)
(if (null? (cdr l))
(car l)
(goossens-moby (cddr (append l (car l))))))
(define (hofstadter-g n)
(if (= 0 n)
0
(- n (hofstadter-g (hofstadter-g (- n 1))))))
(define (hofstadter-q n)
(cond
((= n 1) 1)
((= n 2) 1)
(else (+ (hofstadter-q (- n (hofstadter-q (- n 1))))
(hofstadter-q (- n (hofstadter-q (- n 2))))))))
(define (goossens l x)
(if (null? l)
x
(goossens (reverse (cdr l)) (car l))))
;; Utility function
#;(define (atom? x) (not (pair? x)))
--
Henry S. Thompson said, / "Syntactic, structural, John Cowan
Value constraints we / Express on the fly." address@hidden
Simon St. Laurent: "Your / Incomprehensible http://www.ccil.org/~cowan
Abracadabralike / schemas must die!"
- [Chicken-users] Lisp puzzles,
John Cowan <=