this repo has no description

(D2P1): (Slow) solution

+38
+1
resources/02-test.txt
··· 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 + (ns aoc2025.day2 2 + (:require [aoc2025.util :as util] 3 + [clojure.string :as str])) 4 + 5 + (def parser 6 + (comp (partial partition 2) 7 + (partial util/splarse #"(,|-)") 8 + first)) 9 + 10 + (def parse-file (comp parser util/read-file)) 11 + 12 + (defn- glue-number [digits] (->> digits (apply str) util/parse-int)) 13 + (defn- expand-number [number] (->> number str vec (mapv (comp util/parse-int str)))) 14 + (defn- number-digit-length [number] (->> number expand-number count)) 15 + 16 + (defn- invalid-ids-in-range [[start end]] 17 + (set 18 + (for [i (range start (inc end)) 19 + :let [i-digits (expand-number i) 20 + i-digit-length (number-digit-length i) 21 + seq-length (util/floor-div i-digit-length 2)] 22 + :when (and (util/divisible? i-digit-length 2) 23 + (apply = (partition seq-length i-digits)))] 24 + i))) 25 + 26 + (defn part1 [ids] (->> ids (mapcat invalid-ids-in-range) (reduce +))) 27 + 28 + (defn solve 29 + ([] (solve "02.txt")) 30 + ([fname] 31 + (->> fname 32 + parse-file 33 + ((juxt part1))))) 34 + 35 + 36 + (solve "02-test.txt") 37 + ;(time (solve)) ;=> "Elapsed time: 5291.804431 msecs"