chicken-users
[Top][All Lists]
Advanced

[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!"




reply via email to

[Prev in Thread] Current Thread [Next in Thread]