aboutsummaryrefslogtreecommitdiffstats
path: root/AoC2022/04/solver.lisp
diff options
context:
space:
mode:
Diffstat (limited to 'AoC2022/04/solver.lisp')
-rw-r--r--AoC2022/04/solver.lisp26
1 files changed, 26 insertions, 0 deletions
diff --git a/AoC2022/04/solver.lisp b/AoC2022/04/solver.lisp
new file mode 100644
index 0000000..0a4077f
--- /dev/null
+++ b/AoC2022/04/solver.lisp
@@ -0,0 +1,26 @@
+(ql:quickload '(:fiveam :uiop))
+
+(defun subinterval (a0 a1 b0 b1)
+ "Test if [b0;b1] within [a0;a1]"
+ (and (<= a0 b0 ) (>= a1 b1)))
+
+(defun sections-contained (line)
+ (destructuring-bind (a0 a1 b0 b1)
+ (mapcar #'parse-integer
+ (uiop:split-string line :separator '(#\, #\-)))
+ (or (subinterval a0 a1 b0 b1)
+ (subinterval b0 b1 a0 a1))))
+
+(defun count-repeated ()
+ (with-open-file (in "input")
+ (loop for l = (read-line in nil nil)
+ while l
+ count (sections-contained l))))
+
+
+(fiveam:test results
+ (fiveam:is (= 515 (count-repeated)))
+ (fiveam:is (= 2567 (badge))))
+
+
+(fiveam:run-all-tests)