(defun read-fish (name) (flow (file-get-string name) (tok #/\d+/) (mapcar toint))) (defun sim-naive (input n) (while (plusp (pdec n)) (upd input (mappend [iff zerop (ret '(6 8)) [chain pred list]]))) (len input)) (defun sim (input n) (let ((phase (vector 9 0))) (each ((i input)) (inc [phase i])) (while (plusp (pdec n)) (rotate [phase 0] [phase 1] [phase 2] [phase 3] [phase 4] [phase 5] [phase 6] [phase 7] [phase 8]) (inc [phase 6] [phase 8])) (sum phase))) (defun sim2 (input n) (let ((phase (vector 9 0))) (each ((i input)) (inc [phase i])) (while (plusp (pdec n)) (pset [phase 8] [phase 0] [phase 0..8] [phase 1..9]) (inc [phase 6] [phase 8])) (sum phase)))