Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
26
Task/Vigen-re-cipher/Common-Lisp/vigen-re-cipher-1.lisp
Normal file
26
Task/Vigen-re-cipher/Common-Lisp/vigen-re-cipher-1.lisp
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
(defun strip (s)
|
||||
(remove-if-not
|
||||
(lambda (c) (char<= #\A c #\Z))
|
||||
(string-upcase s)))
|
||||
|
||||
(defun vigenère (s key &key decipher
|
||||
&aux (A (char-code #\A))
|
||||
(op (if decipher #'- #'+)))
|
||||
(labels
|
||||
((to-char (c) (code-char (+ c A)))
|
||||
(to-code (c) (- (char-code c) A)))
|
||||
(let ((k (map 'list #'to-code (strip key))))
|
||||
(setf (cdr (last k)) k)
|
||||
(map 'string
|
||||
(lambda (c)
|
||||
(prog1
|
||||
(to-char
|
||||
(mod (funcall op (to-code c) (car k)) 26))
|
||||
(setf k (cdr k))))
|
||||
(strip s)))))
|
||||
|
||||
(let* ((msg "Beware the Jabberwock... The jaws that... the claws that catch!")
|
||||
(key "vigenere cipher")
|
||||
(enc (vigenère msg key))
|
||||
(dec (vigenère enc key :decipher t)))
|
||||
(format t "msg: ~a~%enc: ~a~%dec: ~a~%" msg enc dec))
|
||||
12
Task/Vigen-re-cipher/Common-Lisp/vigen-re-cipher-2.lisp
Normal file
12
Task/Vigen-re-cipher/Common-Lisp/vigen-re-cipher-2.lisp
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
(defconstant +a+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
|
||||
|
||||
(defun strip (s)
|
||||
(string-upcase (remove-if-not 'alpha-char-p s)))
|
||||
|
||||
(defun vigenere (txt key &key plain &aux (p (if plain -1 1)))
|
||||
(let ((txt (strip txt)) (key (strip key)) (i -1))
|
||||
(map 'string
|
||||
(lambda (c)
|
||||
(setf i (mod (1+ i) (length key)))
|
||||
(char +a+ (mod (+ (position c +a+) (* p (position (elt key i) +a+))) 26)))
|
||||
txt)))
|
||||
Loading…
Add table
Add a link
Reference in a new issue