23 lines
534 B
Text
23 lines
534 B
Text
@(next :args)
|
|
@(do
|
|
(defun vig-op (plus-or-minus)
|
|
(op + #\A [mod [plus-or-minus (- @1 #\A) (- @2 #\A)] 26]))
|
|
|
|
(defun vig (msg key encrypt)
|
|
(mapcar (vig-op [if encrypt + -]) msg (repeat key))))
|
|
@(coll)@{key /[A-Za-z]/}@(end)
|
|
@(coll)@{msg /[A-Za-z]/}@(end)
|
|
@(cat key "")
|
|
@(filter :upcase key)
|
|
@(cat msg "")
|
|
@(filter :upcase msg)
|
|
@(bind encoded @(vig msg key t))
|
|
@(bind decoded @(vig msg key nil))
|
|
@(bind check @(vig encoded key nil))
|
|
@(output)
|
|
text: @msg
|
|
key: @key
|
|
enc: @encoded
|
|
dec: @decoded
|
|
check: @check
|
|
@(end)
|