(define char->dice (quote ((#\1 D11) (#\2 D12) (#\3 D13) (#\4 D14) (#\5 D15) (#\6 D16) (#\7 D21) (#\8 D22) (#\9 D23) (#\0 D24) (#\A D25) (#\B D26) (#\C D31) (#\D D32) (#\E D33) (#\F D34) (#\G D35) (#\H D36) (#\I D41) (#\J D42) (#\K D43) (#\L D44) (#\M D45) (#\N D46) (#\O D51) (#\P D52) (#\Q D53) (#\R D54) (#\S D55) (#\T D56) (#\U D61) (#\V D62) (#\W D63) (#\X D64) (#\Y D65) (#\Z D66))))(define dice->bin (quote ((D11 "000000") (D12 "000001") (D13 "00001") (D14 "00010") (D15 "000110") (D16 "000111") (D21 "001000") (D22 "001001") (D23 "00101") (D24 "00110") (D25 "001110") (D26 "001111") (D31 "01000") (D32 "01001") (D33 "0101") (D34 "0110") (D35 "01110") (D36 "01111") (D41 "10000") (D42 "10001") (D43 "1001") (D44 "1010") (D45 "10110") (D46 "10111") (D51 "110000") (D52 "110001") (D53 "11001") (D54 "11010") (D55 "110110") (D56 "110111") (D61 "111000") (D62 "111001") (D63 "11101") (D64 "11110") (D65 "111110") (D66 "111111"))))(define (lookup key alist) (let ((p (assoc key alist))) (or (and p (cadr p)) (error "No mapping for key" key))))(define (encode->dice str) (map (lambda (ch) (lookup ch char->dice)) (string->list str)))(define (dice->binary dice-list) (apply string-append (map (lambda (d) (lookup d dice->bin)) dice-list)))
(display "ZELAH")(newline)
(display (encode->dice "ZELAH"))(newline)
(display (dice->binary (encode->dice "ZELAH")))