Advertisement
namekuseijin

l33tsp34k in scheme

Apr 6th, 2012
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 2.87 KB | None | 0 0
  1. ; l33tsp34k:
  2. ; (display (l33t "You know, I truly wanna kill whomever came up with entries for M, N, Y and W."))
  3. (define (l33t s)
  4.   (apply string-append
  5.          (map (lambda (c)
  6.                 (let ((trns (assoc c l33t-table)))
  7.                   (if trns
  8.                       (vector-ref (cdr trns) (random! (vector-length (cdr trns))))
  9.                       (string c))))
  10.               (upper (string->list s)))))
  11.  
  12. (define l33t-table
  13.   (map (lambda (x) (cons (car x) (apply vector (cdr x))))
  14.        '((#\A "4" "@" "/-\\" "/\\" "^" "aye" "∂" "ci" "λ" "Z")
  15.          (#\B "8" "|3" "6" "13" "|3" "ß" "]3")
  16.          (#\C "(" "<" "¢" "{" "©" "sea" "see")
  17.          (#\D "|)" "[)" "∂" "])" "I>" "|>" "0" "ð" "cl")
  18.          (#\E "3" "£" "&" "€" "[-" "ə")
  19.          (#\F "|=" "]=" "}" "ph" "(=" "ʃ")
  20.          (#\G "6" "9" "&" "(_+" "C-" "gee" "jee" "(γ," "cj")
  21.          (#\H "|-|" "#" "]-[" "[-]" ")-(" "(-)" ":-:" "}{" "}-{" "aych")
  22.          (#\I "!" "1" "|" "eye" "3y3" "ai" "¡")
  23.          (#\J "_|" "_/" "]" "¿" "</" "_)" "ʝ")
  24.          (#\K "X" "|<" "|X" "|{" "ɮ")
  25.          (#\L "1" "7" "|_" "£" "|" "|_" "lJ" "¬")
  26.          (#\M "44" "/\\/\\" "|\\/|" "em" "|v|" "IYI" "IVI" "[V]" "^^" "nn"
  27.               "//\\\\//\\\\" "(V)" "(\\/)" "/|\\" "/|/|" ".\\\\" "/^^\\" "/V\\" "|^^|" "AA")
  28.          (#\N "|\\|" "/\\/" "//\\\\//" "И" "[\\]" "<\\>" "{\\}" "//" "₪" "[]\\[]" "]\\[" "~")
  29.          (#\O "0" "()" "oh" "[]" "¤" "Ω")
  30.          (#\P "|*" "|o" "|º" "|>" "|\"" "?" "9" "[]D" "|7" "q" "þ" "¶" "℗" "|D")
  31.          (#\Q "0_" "0," "(,)" "<|" "cue" "9" "¶")
  32.          (#\R "|2" "2" "/2" "I2" "|^" "|~" "lz" "®" "|2" "[z" "|`" "l2" "Я" ".-" "ʁ")
  33.          (#\S "5" "$" "z" "§" "es")
  34.          (#\T "7" "+" "-|-" "1" "']['" "†")
  35.          (#\U "|_|" "(_)" "Y3W" "M" "µ" "[_]" "\\_/" "\\_\\" "/_/")
  36.          (#\V "\\/" "√" "\\\\//")
  37.          (#\W "\\/\\/" "vv" "'//" "\\\\'" "\\^/" "(n)" "\\X/" "\\|/" "\\_|_/"
  38.               "\\\\//\\\\//" "\\_:_/" "]I[" "UU" "Ш" "ɰ" "₩" "JL")
  39.          (#\X "%" "><" "Ж" "}{" "ecks" "×" "*" ")(" "ex")
  40.          (#\Y "j" "`/" "`(" "-/" "'/" "Ψ" "φ" "λ" "Ч" "¥")
  41.          (#\Z "2" "≥" "~/_" "%" "ʒ" "7_"))))
  42.  
  43.  
  44. ; ok, so I'm being a masochist for not simply using R6RS or some other...
  45. ; I'm a gluton for punishment... :p
  46. (define upper
  47.   (let ((ups  "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
  48.         (lows (let* ((s "abcdefghijklmnopqrstuvwxyz") (sz (string-length s)))
  49.                 (let f ((i 0))
  50.                   (if (= i sz) `()
  51.                       (cons (cons (string-ref s i) i)
  52.                             (f (+ 1 i))))))))
  53.     (lambda (ls)
  54.       (map (lambda (c) (let ((r (assoc c lows))) (if r (string-ref ups (cdr r)) c)))
  55.            ls))))
  56.  
  57. (define random!
  58.   (let ((seed 42))
  59.     (lambda (upto)
  60.       (let ((n (+ 3 (* 2 seed))))
  61.         (set! seed (+ 1 (modulo n seed) seed))
  62.         (modulo n upto)))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement