codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
(define morse-code '( (#\A ".-") (#\B "-...") (#\C "-.-.") (#\D "-..") (#\E ".") (#\F "..-.") (#\G "--.") (#\H "....") (#\I "..") (#\J ".---") (#\K "-.-") (#\L ".-..") (#\M "--") (#\N "-.") (#\O "---") (#\P ".--.") (#\Q "--.-") (#\R ".-.") (#\S "...") (#\T "-") (#\U "..-") (#\V "...-") (#\W ".--") (#\X "-..-") (#\Y "-.--") (#\Z "--..") (#\1 ".----") (#\2 "..---") (#\3 "...--") (#\4 "....-") (#\5 ".....") (#\6 "-....") (#\7 "--...") (#\8 "---..") (#\9 "----.") (#\0 "-----") (".-" #\A) ("-..." #\B) ("-.-." #\C) ("-.." #\D) ("." #\E) ("..-." #\F) ("--." #\G) ("...." #\H) (".." #\I) (".---" #\J) ("-.-" #\K) (".-.." #\L) ("--" #\M) ("-." #\N) ("---" #\O) (".--." #\P) ("--.-" #\Q) (".-." #\R) ("..." #\S) ("-" #\T) ("..-" #\U) ("...-" #\V) (".--" #\W) ("-..-" #\X) ("-.--" #\Y) ("--.." #\Z) (".----" #\1) ("..---" #\2) ("...--" #\3) ("....-" #\4) ("....." #\5) ("-...." #\6) ("--..." #\7) ("---.." #\8) ("----." #\9) ("-----" #\0) (#\space ""))) (define (morse str) (let loop ((cs (string->list str)) (result '())) (if (null? cs) (list->string (cdr (reverse result))) (loop (cdr cs) (append (reverse (string->list (cadr (assoc (char-upcase (car cs)) morse-code)))) (list #\space) result))))) (define (un-morse str) (let loop ((cs (string->list str)) (ms '()) (result '())) (cond ((null? cs) (if (null? ms) (list->string (reverse result)) (list->string (reverse (cons (cadr (assoc (list->string (reverse ms)) morse-code)) result))))) ((char=? (car cs) #\space) (if (null? ms) (loop (cdr cs) ms (cons #\space result)) (loop (cdr cs) '() (cons (cadr (assoc (list->string (reverse ms)) morse-code)) result)))) ((or (char=? (car cs) #\.) (char=? (car cs) #\-)) (loop (cdr cs) (cons (car cs) ms) result))))) (display (un-morse (morse "Programming Praxis")))
Private
[
?
]
Run code
Submit