Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defparameter *digits* "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")
- (defun print-positive-integer (integer base stream)
- (let ((factor (log 2d0 (float base 1d0)))
- (digits *digits*))
- (labels ((upper (integer)
- (if (< integer base)
- (princ (schar digits integer) stream)
- (let* ((binary-length (integer-length integer))
- (length (max 2 (floor (* factor binary-length))))
- (length/2 (floor length 2))
- (divisor (expt base length/2)))
- (upper (floor integer divisor))
- (lower (mod integer divisor) length/2))))
- (lower (integer length)
- (if (= length 1)
- (princ (schar digits integer) stream)
- (let* ((length/2 (floor length 2))
- (divisor (expt base length/2)))
- (lower (floor integer divisor) (- length length/2))
- (lower (mod integer divisor) length/2)))))
- (upper integer))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement