init 2017
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
input/
|
||||
.lein-repl-history
|
||||
.idea/
|
||||
*.iml
|
||||
@@ -0,0 +1,15 @@
|
||||
(defproject org.ajet/advent-of-code "0.0.0-SNAPSHOT"
|
||||
:description "my 2017 advent of code solutions in clojure"
|
||||
:url "http://github.com/ajetski/advent-of-code"
|
||||
:min-lein-version "2.0.0"
|
||||
:jvm-opts ["-Xmx16g"]
|
||||
:plugins [[cider/cider-nrepl "0.57.0"]]
|
||||
:dependencies [[org.clojure/clojure "1.12.0"]
|
||||
[org.clojure/data.priority-map "1.2.0"]
|
||||
[org.clojure/math.combinatorics "0.3.0"]
|
||||
[babashka/fs "0.5.23"]
|
||||
[org.babashka/http-client "0.4.22"]
|
||||
[org.clojure/core.match "1.1.0"]
|
||||
[clj-python/libpython-clj "2.025"]
|
||||
[tools.aqua/z3-turnkey "4.14.1"]]
|
||||
:source-paths ["src" "../shared/clj/src"])
|
||||
@@ -0,0 +1,26 @@
|
||||
(ns day01
|
||||
(:require input-manager))
|
||||
|
||||
(defn to-digit [c] (Character/digit c 10))
|
||||
|
||||
(def input (mapv to-digit (input-manager/get-input-raw 2017 01)))
|
||||
|
||||
(defn solve [offset]
|
||||
(let [lookup (fn [idx]
|
||||
(input (mod idx (count input))))]
|
||||
(->> input
|
||||
(map-indexed vector)
|
||||
(filter (fn [[idx el]]
|
||||
(= el (lookup (+ offset idx)))))
|
||||
(map second)
|
||||
(apply +))))
|
||||
|
||||
;; part 1
|
||||
(solve 1)
|
||||
|
||||
|
||||
|
||||
;; part 2
|
||||
(solve (/ (count input) 2))
|
||||
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
(ns day02
|
||||
(:require input-manager
|
||||
core))
|
||||
|
||||
(def input (mapv (comp #(mapv parse-long %)
|
||||
core/split-whitespace)
|
||||
(input-manager/get-input 2017 02)))
|
||||
|
||||
;; part 1
|
||||
(->> input
|
||||
(map (comp #(apply - %)
|
||||
(juxt #(apply max %)
|
||||
#(apply min %))))
|
||||
(apply +))
|
||||
|
||||
(defn find-divisible [l]
|
||||
(or (first
|
||||
(for [a (range (count l))
|
||||
b (range (count l))
|
||||
:when (and (not= a b)
|
||||
(= (mod (l a) (l b)) 0))]
|
||||
(/ (l a) (l b))))
|
||||
0))
|
||||
|
||||
(apply + (map find-divisible input))
|
||||
@@ -0,0 +1,20 @@
|
||||
(ns day04
|
||||
(:require input-manager
|
||||
core))
|
||||
|
||||
(def input (map core/split-whitespace (input-manager/get-input 2017 04)))
|
||||
|
||||
;; part 1
|
||||
(->> input
|
||||
(filter #(= (count %)
|
||||
(count (into #{} %))))
|
||||
count)
|
||||
|
||||
;; part 2
|
||||
(->> input
|
||||
(filter (fn [l]
|
||||
(= (count (into #{} (map frequencies l)))
|
||||
(count l))))
|
||||
|
||||
count)
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
(ns user
|
||||
(:require
|
||||
[clojure.pprint :as pprint]))
|
||||
|
||||
(defonce printer (bound-fn* pprint/pprint))
|
||||
(add-tap printer)
|
||||
|
||||
(comment
|
||||
;; tap debugging
|
||||
(remove-tap printer))
|
||||
|
||||
Reference in New Issue
Block a user