; muenchhausen numbers
(define (sum xs) (apply + xs))
(define (digits n . args)
(let ((b (if (null? args) 10 (car args))))
(let loop ((n n) (d '()))
(if (zero? n) d
(loop (quotient n b)
(cons (modulo n b) d))))))
(define (f n)
(define (power n)
(vector-ref '#(0 1 4 27 256 3125 46656
823543 16777216 387420489) n))
(sum (map power (digits n))))
(do ((n 0 (+ n 1))) ((= n 4000))
(when (= (f n) n)
(display n) (newline)))
OyBtdWVuY2hoYXVzZW4gbnVtYmVycwoKKGRlZmluZSAoc3VtIHhzKSAoYXBwbHkgKyB4cykpCgooZGVmaW5lIChkaWdpdHMgbiAuIGFyZ3MpCiAgKGxldCAoKGIgKGlmIChudWxsPyBhcmdzKSAxMCAoY2FyIGFyZ3MpKSkpCiAgICAobGV0IGxvb3AgKChuIG4pIChkICcoKSkpCiAgICAgIChpZiAoemVybz8gbikgZAogICAgICAgICAgKGxvb3AgKHF1b3RpZW50IG4gYikKICAgICAgICAgICAgICAgIChjb25zIChtb2R1bG8gbiBiKSBkKSkpKSkpCgooZGVmaW5lIChmIG4pCiAgKGRlZmluZSAocG93ZXIgbikKICAgICh2ZWN0b3ItcmVmICcjKDAgMSA0IDI3IDI1NiAzMTI1IDQ2NjU2CiAgICAgICAgICAgICAgICAgIDgyMzU0MyAxNjc3NzIxNiAzODc0MjA0ODkpIG4pKQogIChzdW0gKG1hcCBwb3dlciAoZGlnaXRzIG4pKSkpCgooZG8gKChuIDAgKCsgbiAxKSkpICgoPSBuIDQwMDApKQogICh3aGVuICg9IChmIG4pIG4pCiAgICAoZGlzcGxheSBuKSAobmV3bGluZSkpKQ==