From 8d43e37df99f280377bed90284d6ac2428334804 Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Wed, 30 Nov 2022 19:55:31 -0500 Subject: move 2021 days to folder; update README --- day3/part1.clj | 25 ------------------------- day3/part2.clj | 36 ------------------------------------ 2 files changed, 61 deletions(-) delete mode 100644 day3/part1.clj delete mode 100644 day3/part2.clj (limited to 'day3') diff --git a/day3/part1.clj b/day3/part1.clj deleted file mode 100644 index 3fe888e..0000000 --- a/day3/part1.clj +++ /dev/null @@ -1,25 +0,0 @@ -(require '[clojure.string :as str]) - -(->> "./in" - (slurp) - (str/split-lines) - (map (fn [l] (map #(if (= % \1) 1 0) l))) - (apply (partial map +)) - (map #(if (< % 500) \1 \0)) - (str/join) - (#(Integer/parseInt % 2)) - (#(* % (bit-xor % (dec (int (Math/pow 2 12)))))) - (println) - ) - -; (->> input data file name -; read in entire contents -; split contents into array of lines -; for each line, transform characters '1'/'0' to numbers -; build sum array using the lines -; convert back to array of characters -; join characters into single string -; convert binary string to a number (gamma) -; multiply gamma by its bit-inverse (bit length hard-coded) -; print results - diff --git a/day3/part2.clj b/day3/part2.clj deleted file mode 100644 index 00e656f..0000000 --- a/day3/part2.clj +++ /dev/null @@ -1,36 +0,0 @@ -(require '[clojure.string :as str]) - -(def bitcount 12) -(def input - (->> "./in" - (slurp) - (str/split-lines) - (map #(Integer/parseInt % 2)) - ) - ) - -(defn countbit [lst bit] - (->> lst - (map #(if (bit-test % bit) 1 0)) - (apply +) - ) - ) - -(defn filterbit [lst bit v] - (if (= 1 (count lst)) - lst - (filter #(= (bit-test % bit) v) lst) - ) - ) - -(loop [bit (dec bitcount) lst0 input lst1 input] - (if (and (= 1 (count lst0)) (= 1 (count lst1))) - (println (map * lst0 lst1)) - (recur - (dec bit) - (filterbit lst0 bit (>= (countbit lst0 bit) (/ (count lst0) 2))) - (filterbit lst1 bit (< (countbit lst1 bit) (/ (count lst1) 2))) - ) - ) - ) - -- cgit v1.2.3