fork download
  1. ; three more homework problems
  2.  
  3. (define (adjoin x xs)
  4. (if (member x xs) xs (cons x xs)))
  5.  
  6. (define (problem1 xs)
  7. (let loop ((xs xs) (zs (list)))
  8. (if (null? xs) zs
  9. (loop (cdr xs) (adjoin (car xs) zs)))))
  10.  
  11. (display (problem1 '(3 2 4 2 7 3 5 1 3))) (newline)
  12.  
  13. (define (problem2 xs ys)
  14. (let loop ((xs xs) (ys ys) (zs (list)))
  15. (cond ((or (null? xs) (null? ys))
  16. (reverse zs))
  17. ((< (car xs) (car ys))
  18. (loop (cdr xs) ys zs))
  19. ((< (car ys) (car xs))
  20. (loop xs (cdr ys) zs))
  21. (else (loop (cdr xs) (cdr ys)
  22. (cons (car xs) zs))))))
  23.  
  24. (display (problem2 '(2 3 5 5 6 7 8 9) '(1 2 4 5 5 7))) (newline)
  25.  
  26. (define (iroot k n)
  27. (let ((k-1 (- k 1)))
  28. (let loop ((u n) (s (+ n 1)))
  29. (if (<= s u) s
  30. (loop (quotient (+ (* k-1 u) (quotient n (expt u k-1))) k) u)))))
  31.  
  32. (define (problem3 n)
  33. (let ((n3 (iroot 3 n)))
  34. (= (* n3 n3 n3) n)))
  35.  
  36. (display (problem3 125)) (newline)
  37. (display (problem3 121)) (newline)
Success #stdin #stdout 0s 7272KB
stdin
Standard input is empty
stdout
(1 5 7 4 2 3)
(2 5 5 7)
#t
#f