(defvar c) (defvar counter) (defun threevowels? (string) (setq counter 0) (loop for i from 0 to (- (length string) 1) do (setq c (char string i)) (setq counter (+ counter (if (or (equal c #\a) (equal c #\e) (equal c #\i) (equal c #\o) (equal c #\u)) 1 0))) (if (>= counter 3) (return-from threevowels? t))) nil) (defvar c1) (defvar c2) (defun twice? (string) (loop for i from 0 to (- (length string) 2) do (setq c1 (char string i)) (setq c2 (char string (+ i 1))) (if (equal c1 c2) (return-from twice? t)) ) nil) (defun redflag? (string) (or (search "ab" string) (search "cd" string) (search "pq" string) (search "xy" string))) (defun nice? (string) (and (threevowels? string) (twice? string) (not (redflag? string)))) (defvar my-count 0) (with-open-file (in "./data/input") (do ((line (read-line in nil) (read-line in nil))) ((null line)) (if (nice? line) (setq my-count (+ my-count 1))) )) (print my-count)