about summary refs log tree commit diff
path: root/day17.clj
diff options
context:
space:
mode:
Diffstat (limited to 'day17.clj')
-rw-r--r--day17.clj36
1 files changed, 36 insertions, 0 deletions
diff --git a/day17.clj b/day17.clj
new file mode 100644
index 0000000..be972ba
--- /dev/null
+++ b/day17.clj
@@ -0,0 +1,36 @@
+(ns org.vuxu.aoc2021.day17
+  (:require [clojure.string :as str]))
+
+(def data
+  (->> (slurp "day17")
+       (re-seq #"-?\d+")
+       (map parse-long)))
+
+(def x-range (take 2 data))
+(def y-range (drop 2 data))
+
+(def part1        
+  (quot (* (Math/abs (first y-range))
+           (dec (Math/abs (first y-range)))) 2))
+;; => 3655
+
+(defn check [[x y] [vx vy]]
+  (cond
+    (and (<= (first x-range) x (second x-range))
+         (<= (first y-range) y (second y-range)))
+    true
+    
+    (< y (first y-range))
+    false
+
+    :else
+    (recur [(+ x vx) (+ y vy)]
+           [(- vx (Integer/signum vx)) (dec vy)])))
+
+(def part2
+  (count
+   (filter identity
+           (for [vx (range (inc (second x-range)))
+                 vy (range (first y-range) (inc (Math/abs (first y-range))))]
+             (check [0 0] [vx vy])))))
+;; => 1447