its beginning to look a lot like christmas 2023

This commit is contained in:
Adam Jeniski
2023-12-01 00:56:43 -05:00
parent fdd5179d31
commit c247628752
6 changed files with 80 additions and 0 deletions
+18
View File
@@ -0,0 +1,18 @@
(ns core
(:require [clj-http.client :as client]
[clojure.string :as string]))
(def input-cache (atom {}))
(def cookie (str "session=" (slurp "session")))
(defn get-puzzle-input [day]
(or (@input-cache day)
(swap! input-cache assoc day
(-> (str "https://adventofcode.com/2023/day/" day "/input")
(client/get {:throw-entire-message? true
:headers {"Cookie" cookie}})
:body
string/split-lines))))
(comment
input-cache)
+38
View File
@@ -0,0 +1,38 @@
(ns ^{:doc "Day 1"
:author "Adam Jeniski"}
day01 (:require [core :refer [get-puzzle-input]]
[clojure.string :as string]))
(def input (get-puzzle-input 1))
(def numeric-value-map {"one" 1
"two" 2
"three" 3
"four" 4
"five" 5
"six" 6
"seven" 7
"eight" 8
"nine" 9})
(defn numeric-value [s]
(or (numeric-value-map s) s))
;; part 1
(->> input
(map (fn [line]
{:first (re-find #"\d" line)
:last (re-find #"\d" (string/reverse line))}))
(map #(str (:first %) (:last %)))
(map #(Integer/parseInt %))
(reduce +))
;; part 2
(->> input
(map (fn [line]
(let [f (re-find #"one|two|three|four|five|six|seven|eight|nine|\d" line)
l (string/reverse (re-find #"eno|owt|eerht|ruof|evif|xis|neves|thgie|enin|\d" (string/reverse line)))]
(str (numeric-value f) (numeric-value l)))))
(map #(Integer/parseInt %))
(reduce +))