24 lines
613 B
Plaintext
24 lines
613 B
Plaintext
@(next :args)
|
|
@(cases)
|
|
@{key /[0-9]+/}
|
|
@text
|
|
@(or)
|
|
@ (throw error "specify <key-num> <text>")
|
|
@(end)
|
|
@(do
|
|
(defvar k (int-str key 10)))
|
|
@(bind enc-dec
|
|
@(collect-each ((i (range 0 25)))
|
|
(let* ((p (tostringp (+ #\a i)))
|
|
(e (tostringp (+ #\a (mod (+ i k) 26))))
|
|
(P (upcase-str p))
|
|
(E (upcase-str e)))
|
|
^(((,p ,e) (,P ,E))
|
|
((,e ,p) (,E ,P))))))
|
|
@(deffilter enc . @(mappend (fun first) enc-dec))
|
|
@(deffilter dec . @(mappend (fun second) enc-dec))
|
|
@(output)
|
|
encoded: @{text :filter enc}
|
|
decoded: @{text :filter dec}
|
|
@(end)
|