m1dnight

Knutsel

Jan 14th, 2013
353
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 1.72 KB | None | 0 0
  1. (define (knutsel n sterren sneeuwmannen)
  2.   (define output '())
  3.   (define (add-sterren output n)
  4.     (define (iter output n)
  5.       (if (or (null? sterren) (<= n 0))
  6.           output
  7.           (let ((rest (cdr sterren)))
  8.             (cond ((null? output)
  9.                    (set! output sterren)
  10.                    (set-cdr! sterren '()))
  11.                   (else
  12.                    (set-cdr! (last output) sterren)
  13.                    (set-cdr! sterren '())))
  14.             (set! sterren rest)
  15.             (iter output (- n 1)))))
  16.     (iter output n))  
  17.   (define (iter sneeuwmannen)
  18.     (display "sterren: ")(display sterren)(newline)
  19.     (display "sneeuwmannen: ")(display sneeuwmannen)(newline)
  20.     (display "output: ")(display output)(newline)
  21.     (cond
  22.       ((null? sterren)
  23.        (set-cdr! (last output) sneeuwmannen)
  24.        (set-cdr! (last output) output)
  25.        (display sterren)(newline)
  26.        output
  27.        )
  28.       ((null? sneeuwmannen)
  29.        (set-cdr! (last output) sterren)
  30.        (set-cdr! (last output) output)
  31.        output
  32.        (display "sterren: ")(display sterren)(newline)
  33.        (display "sneeuwmannen: ")(display sneeuwmannen)(newline)
  34.        (display "output: ")(display output)(newline))
  35.       (else
  36.        (let ((ster sterren)
  37.              (sneeuwman sneeuwmannen)
  38.              (restsneeuw (cdr sneeuwmannen)))
  39.          ;sneeuwman aanhangen
  40.          (if (null? output)
  41.              (begin (set! output sneeuwman)
  42.                     (set-cdr! output '()))
  43.              (begin (set-cdr! sneeuwman '())
  44.                     (set-cdr! (last output) sneeuwman)))
  45.          ;n sterren aanhangen
  46.          (add-sterren output n)
  47.          ;itereren
  48.          (iter restsneeuw)))))
  49.   (iter sneeuwmannen))
Advertisement
Add Comment
Please, Sign In to add comment