diff options
author | Leah Neukirchen <leah@vuxu.org> | 2020-12-16 20:38:55 +0100 |
---|---|---|
committer | Leah Neukirchen <leah@vuxu.org> | 2020-12-16 20:38:55 +0100 |
commit | 580d09701f0377c4b80e6ea52cf8fa6b647778b1 (patch) | |
tree | 2e3ef57dfb00c94d6c9bfbb0b7a64bf73a9f419f | |
parent | 76933fddfe8deb9d18c40ea974bbe71bbc7dd319 (diff) | |
download | adventofcode2020-580d09701f0377c4b80e6ea52cf8fa6b647778b1.tar.gz adventofcode2020-580d09701f0377c4b80e6ea52cf8fa6b647778b1.tar.xz adventofcode2020-580d09701f0377c4b80e6ea52cf8fa6b647778b1.zip |
day15
-rw-r--r-- | day15 | 1 | ||||
-rw-r--r-- | day15.clj | 20 | ||||
-rw-r--r-- | day15.ijs | 20 |
3 files changed, 41 insertions, 0 deletions
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 |