fork(1) download
  1. ; seven-segment devices
  2.  
  3. (define (digits n . args)
  4. (let ((b (if (null? args) 10 (car args))))
  5. (let loop ((n n) (d '()))
  6. (if (zero? n) d
  7. (loop (quotient n b)
  8. (cons (modulo n b) d))))))
  9.  
  10. (define (digit . xs)
  11. (let loop ((xs xs) (sum 0))
  12. (if (null? xs) sum
  13. (loop (cdr xs) (+ sum (expt 2 (car xs)))))))
  14.  
  15. (display (digit 0 2 3 4 5 6)) (newline) ; 0
  16. (display (digit 4 6)) (newline) ; 1
  17. (display (digit 0 1 2 4 5)) (newline) ; 2
  18. (display (digit 0 1 2 4 6)) (newline) ; 3
  19. (display (digit 1 3 4 6)) (newline) ; 4
  20. (display (digit 0 1 2 3 6)) (newline) ; 5
  21. (display (digit 0 1 2 3 5 6)) (newline) ; 6
  22. (display (digit 2 4 6)) (newline) ; 7
  23. (display (digit 0 1 2 3 4 5 6)) (newline) ; 8
  24. (display (digit 0 1 2 3 4 6)) (newline) ; 9
  25.  
  26. (define (bentley n)
  27. (let ((ds (vector 125 80 55 87 90 79 111 84 127 95)))
  28. (map (lambda (d) (vector-ref ds d)) (digits n))))
  29.  
  30. (display (bentley 3141592654)) (newline)
Success #stdin #stdout 0.04s 8220KB
stdin
Standard input is empty
stdout
125
80
55
87
90
79
111
84
127
95
(87 80 90 80 79 95 55 111 79 90)