Created
July 6, 2010 15:28
-
-
Save valvallow/465527 to your computer and use it in GitHub Desktop.
scheme, gauche, decimal, binary
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(define (quotient-down n divider) | |
(let loop ((n n)(acc '())) | |
(if (zero? n) | |
acc | |
(loop (quotient n divider)(cons n acc))))) | |
(define (number-list->number lis) | |
(string->number (string-join (map x->string lis) ""))) | |
(define (dec->bin n) | |
(number-list->number | |
(map (lambda (e) | |
(if (zero? (remainder e 2)) 0 1)) | |
(quotient-down n 2)))) | |
(dec->bin 172) | |
(number->string 172 2) | |
(dec->bin 60) | |
(number->string 60 2) | |
(dec->bin 128) | |
(number->string 128 2) | |
(dec->bin 100) | |
(number->string 100 2) | |
(define (number->number-list n) | |
(map (compose string->number string) | |
(string->list (number->string n)))) | |
(use srfi-1) | |
(define (reverse-index-expt ls) | |
(unfold null? | |
(lambda (s) | |
(expt 2 (- (length s) 1))) | |
cdr ls)) | |
(define (bin->dec n) | |
(let1 bls (number->number-list n) | |
(apply + (filter-map (lambda (b e) | |
(and (= b 1) e)) | |
bls | |
(reverse-index-expt bls))))) | |
(bin->dec 10011001) | |
(bin->dec 1111) | |
(bin->dec 1101) | |
(bin->dec 1110) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment