Bacon cipher: Difference between revisions

m
Line 1,017:
For instance.
 
<pre>(cdr (assoc #\a +codes+)) = (Aa Aa Aa Aa Aa) (car (rassoc '(Aa Aa Aa Aa Aa) +codes+) = #\a </pre>
 
2. Program
Line 1,024:
 
(defconstant +codes+
'((#\Aa . (Aa Aa Aa Aa Aa)) (#\Bb . (Aa Aa Aa Aa Bb)) (#\Cc . (Aa Aa Aa Bb Aa))
(#\Dd . (Aa Aa Aa Bb Bb)) (#\Ee . (Aa Aa Bb Aa Aa)) (#\Ff . (Aa Aa Bb Aa Bb))
(#\Gg . (Aa Aa Bb Bb Aa)) (#\Hh . (Aa Aa Bb Bb Bb)) (#\Ii . (Aa Bb Aa Aa Aa))
(#\Jj . (Aa Bb Aa Aa Bb)) (#\Kk . (Aa Bb Aa Bb Aa)) (#\Ll . (Aa Bb Aa Bb Bb))
(#\Mm . (Aa Bb Bb Aa Aa)) (#\Nn . (Aa Bb Bb Aa Bb)) (#\Oo . (Aa Bb Bb Bb Aa))
(#\Pp . (Aa Bb Bb Bb Bb)) (#\Qq . (Bb Aa Aa Aa Aa)) (#\Rr . (Bb Aa Aa Aa Bb))
(#\Ss . (Bb Aa Aa Bb Aa)) (#\Tt . (Bb Aa Aa Bb Bb)) (#\Uu . (Bb Aa Bb Aa Aa))
(#\Vv . (Bb Aa Bb Aa Bb)) (#\Ww . (Bb Aa Bb Bb Aa)) (#\Xx . (Bb Aa Bb Bb Bb))
(#\Yy . (Bb Bb Aa Aa Aa)) (#\Zz . (Bb Bb Aa Aa Bb)) (#\SPACEspace . (Bb Bb Bb Aa Aa))))
 
(defun encode (text message)
Line 1,041:
(let (cipher key code)
(loop for c across message do
(setf code (cdr (assoc (char-upcasedowncase c) +codes+)))
(setf key (append key code)))
(loop for c across text always key do
Line 1,086:
"I'VE knOwn ADveNtures, seEn plACes YoU PEoplE will NEvER SEe, i'Ve beEn offwoRl
d anD BaCK... FRon"
(decode (encode +monologue+ +key+))
" TEARS IN RAIN "</pre>
 
422

edits