fork(4) download
  1. ; binary gap
  2.  
  3. (define-syntax while
  4. (syntax-rules ()
  5. ((while pred? body ...)
  6. (do () ((not pred?)) body ...))))
  7.  
  8. (define (gap n)
  9. (while (even? n) (set! n (/ n 2)))
  10. (let loop ((n n) (curr 0) (maxi 0))
  11. (cond ((zero? n) maxi)
  12. ((even? n) (loop (/ n 2) (+ curr 1) maxi))
  13. (else (loop (quotient n 2) 0 (max curr maxi))))))
  14.  
  15. (display (map gap '(9 15 20 529))) (newline)
Success #stdin #stdout 0s 42848KB
stdin
Standard input is empty
stdout
(2 0 1 4)