tangled
alpha
login
or
join now
m1emi1em.dev
/
aoc2025
1
fork
atom
this repo has no description
1
fork
atom
overview
issues
pulls
pipelines
(D2P1): (Slow) solution
m1emi1em.dev
3 months ago
d37455be
6f328d28
+38
2 changed files
expand all
collapse all
unified
split
resources
02-test.txt
src
aoc2025
day2.clj
+1
resources/02-test.txt
···
1
1
+
11-22,95-115,998-1012,1188511880-1188511890,222220-222224,1698522-1698528,446443-446449,38593856-38593862,565653-565659,824824821-824824827,2121212118-2121212124
+37
src/aoc2025/day2.clj
···
1
1
+
(ns aoc2025.day2
2
2
+
(:require [aoc2025.util :as util]
3
3
+
[clojure.string :as str]))
4
4
+
5
5
+
(def parser
6
6
+
(comp (partial partition 2)
7
7
+
(partial util/splarse #"(,|-)")
8
8
+
first))
9
9
+
10
10
+
(def parse-file (comp parser util/read-file))
11
11
+
12
12
+
(defn- glue-number [digits] (->> digits (apply str) util/parse-int))
13
13
+
(defn- expand-number [number] (->> number str vec (mapv (comp util/parse-int str))))
14
14
+
(defn- number-digit-length [number] (->> number expand-number count))
15
15
+
16
16
+
(defn- invalid-ids-in-range [[start end]]
17
17
+
(set
18
18
+
(for [i (range start (inc end))
19
19
+
:let [i-digits (expand-number i)
20
20
+
i-digit-length (number-digit-length i)
21
21
+
seq-length (util/floor-div i-digit-length 2)]
22
22
+
:when (and (util/divisible? i-digit-length 2)
23
23
+
(apply = (partition seq-length i-digits)))]
24
24
+
i)))
25
25
+
26
26
+
(defn part1 [ids] (->> ids (mapcat invalid-ids-in-range) (reduce +)))
27
27
+
28
28
+
(defn solve
29
29
+
([] (solve "02.txt"))
30
30
+
([fname]
31
31
+
(->> fname
32
32
+
parse-file
33
33
+
((juxt part1)))))
34
34
+
35
35
+
36
36
+
(solve "02-test.txt")
37
37
+
;(time (solve)) ;=> "Elapsed time: 5291.804431 msecs"