Skip to content

Instantly share code, notes, and snippets.

@Arnot
Created October 6, 2017 14:40
Show Gist options
  • Save Arnot/0b39ea8b98a4ac386fee9fbd88d0b57b to your computer and use it in GitHub Desktop.
Save Arnot/0b39ea8b98a4ac386fee9fbd88d0b57b to your computer and use it in GitHub Desktop.
(defun ca-vectorize ()
(let* ((line (thing-at-point 'line t))
(ll (string-to-list line))
(result (make-vector (1- (length ll)) 0))) ; skip newline
(loop for c in ll
for i below (length ll)
do (unless (equal c ?\n)
(if (equal c ?\s)
(setf (elt result i) 0)
(setf (elt result i) 1))))
result))
(defun ca-step (vec)
(let* ((len (length vec))
(result (make-vector len 0)))
(loop for i below len
do (setf (aref result i)
(cond
((= i 0) (ca-next 0 (aref vec i) (aref vec (1+ i))))
((> i (- len 2)) (ca-next (aref vec (1- i)) (aref vec i) 0))
(t (ca-next (aref vec (1- i)) (aref vec i) (aref vec (1+ i)))))))
result))
(defun ca-next (left middle right)
(let ((x (list left middle right)))
(cond
((equal x '(1 1 1)) 0)
((equal x '(1 1 0)) 1)
((equal x '(1 0 1)) 1)
((equal x '(1 0 0)) 0)
((equal x '(0 1 1)) 1)
((equal x '(0 1 0)) 1)
((equal x '(0 0 1)) 1)
((equal x '(0 0 0)) 0))))
(ca-vectorize)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment