Name: Anonymous 2013-06-04 15:05
I WILL KILL YOU
(define (bases i)
(define (base-iter l i n)
(cond ((> i (- n 2)) l)
(else (if (= (remainder n i) (remainder (floor (/ n i)) i)) (base-iter (cons i l) (+ i 1) n) (base-iter l (+ i 1) n)))))
(base-iter '() 2 i))
(define (dubs n)
(display (foldr string-append "" (list "[b]" (number->string n) "[/b] has")))
(let ((base-list (bases n)))
(cond ((empty? base-list) (display " no dubs."))
(else (begin (display " dubs ") (print-dubs base-list n))))))
(define (print-dubs l n)
(cond ((empty? l) (void))
(else (let ((punctuation (cond ((empty? (cdr l)) ".")
((empty? (cddr l)) " and ")
(else ", ")))
(dub-digit (number->string (remainder n (car l)))))
(display (foldr string-append "" (list dub-digit "|" dub-digit " in base[sub]" (number->string (car l)) "[/sub]" punctuation))))
(print-dubs (cdr l) n))))