diff --git a/2015/days/01/lisp.lisp b/2015/days/01/lisp.lisp index 9e7fe98..fa4889c 100644 --- a/2015/days/01/lisp.lisp +++ b/2015/days/01/lisp.lisp @@ -1,4 +1,7 @@ ;; Day 1: Not Quite Lisp +;; +;; Part 1: What is the floor Santa takes ? + (defparameter balance 0) diff --git a/2015/days/01/lisp2.lisp b/2015/days/01/lisp2.lisp new file mode 100644 index 0000000..938432d --- /dev/null +++ b/2015/days/01/lisp2.lisp @@ -0,0 +1,27 @@ +;; Day 1: Not Quite Lisp +;; +;; Part 2: Position of the character with balance -1 (basement) +;; +;; ref. +;; - read: https://lispcookbook.github.io/cl-cookbook/files.html + +(defparameter balance 0) +(defparameter position 0) + +(defun direction (char) (cond + ((char= char #\() + +1) + ((char= char #\)) + -1) + )) + +(with-open-file (in "./data/input") + (loop for char = (read-char in nil) + until (= balance -1) + do + (setf balance + (+ balance (direction char))) + (setf position + (+ position 1)))) + +(print position)