From 580d09701f0377c4b80e6ea52cf8fa6b647778b1 Mon Sep 17 00:00:00 2001 From: Leah Neukirchen Date: Wed, 16 Dec 2020 20:38:55 +0100 Subject: day15 --- day15 | 1 + day15.clj | 20 ++++++++++++++++++++ day15.ijs | 20 ++++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 day15 create mode 100644 day15.clj create mode 100644 day15.ijs diff --git a/day15 b/day15 new file mode 100644 index 0000000..161a9a7 --- /dev/null +++ b/day15 @@ -0,0 +1 @@ +5,2,8,16,18,0,1 \ No newline at end of file diff --git a/day15.clj b/day15.clj new file mode 100644 index 0000000..569c5fb --- /dev/null +++ b/day15.clj @@ -0,0 +1,20 @@ +(def data [5 2 8 16 18 0 1]) + +(defn doit [n] + (letfn [(rec [lasta lastb last i] + (if (<= i n) + (let [new-last (if (and (lasta last) (lastb last)) + (- (lastb last) (lasta last)) + 0)] + (recur (assoc lasta new-last (lastb new-last)) + (assoc lastb new-last i) + new-last + (inc i))) + last))] + (rec {} + (into {} (map-indexed #(vector %2 %1) data)) + (last data) + (count data)))) + +(doit 2019) ; => 517 +(doit 30000000) ; => 3303657 slow diff --git a/day15.ijs b/day15.ijs new file mode 100644 index 0000000..81aac36 --- /dev/null +++ b/day15.ijs @@ -0,0 +1,20 @@ +d =: 5 2 8 16 18 0 1 + +h =: 3 : 0 +if. 1 = #y do. + 0 +else. + --/ _2 {. y +end. +) + +part1 =: 3 : 0 +for. i. 2020 do. + d =: d,h I. d = {:d +end. +2019 { d +) + +part1'' NB. 517 + +NB. part2 tbd -- cgit 1.4.1