From 6551f561f25d030665831fa73945bdd28c4fc353 Mon Sep 17 00:00:00 2001 From: Andrea Ambu Date: Mon, 2 Dec 2024 08:38:14 +0000 Subject: [PATCH] 24/1 in clj --- clojure/y2024/d01.bb | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 clojure/y2024/d01.bb diff --git a/clojure/y2024/d01.bb b/clojure/y2024/d01.bb new file mode 100644 index 0000000..ce9c55b --- /dev/null +++ b/clojure/y2024/d01.bb @@ -0,0 +1,29 @@ +#!/usr/bin/env bb + +(ns y2024.d01 + (:require [babashka.cli :as cli])) + + +(def cli-options {:input {:default "../../inputs/2024/01.input" :type :string}}) + +(def opts (cli/parse-opts *command-line-args* {:spec cli-options})) + +(def input + (->> (slurp (get opts :input)) + (re-seq #"\d+") + (map parse-long) + (partition 2) + (apply map vector))) + +(defn part1 [[lhs rhs]] + (->> (map - (sort lhs) (sort rhs)) + (map abs) + (reduce +))) + +(defn part2 [[lhs rhs]] + (let [freqs (frequencies rhs)] + (->> (map #(* % (freqs % 0)) lhs) + (reduce +)))) + +(prn {:part1 (part1 input) + :part2 (part2 input)})