forked from ggriffiniii/aoc
Compare commits
3 Commits
bd36d74070
...
a77b4cfe2d
| Author | SHA1 | Date | |
|---|---|---|---|
| a77b4cfe2d | |||
| 397b7950c6 | |||
| 8c537e610f |
112
README.md
112
README.md
@ -1,107 +1,115 @@
|
||||
```
|
||||
Advent of code 2020
|
||||
Day 1 - Part 1: 1016964
|
||||
generator: 14.391µs,
|
||||
runner: 474ns
|
||||
generator: 17.607µs,
|
||||
runner: 634ns
|
||||
|
||||
Day 1 - Part 2: 182588480
|
||||
generator: 10.146µs,
|
||||
runner: 343ns
|
||||
generator: 12.778µs,
|
||||
runner: 350ns
|
||||
|
||||
Day 2 - Part 1: 586
|
||||
generator: 444ns,
|
||||
runner: 105.789µs
|
||||
generator: 270ns,
|
||||
runner: 99.187µs
|
||||
|
||||
Day 2 - Part 2: 352
|
||||
generator: 121ns,
|
||||
runner: 75.691µs
|
||||
generator: 155ns,
|
||||
runner: 80.499µs
|
||||
|
||||
Day 3 - Part 1: 265
|
||||
generator: 53.669µs,
|
||||
runner: 57.907µs
|
||||
generator: 58.252µs,
|
||||
runner: 60.543µs
|
||||
|
||||
Day 3 - Part 2: 3154761400
|
||||
generator: 42.455µs,
|
||||
runner: 304.869µs
|
||||
generator: 45.099µs,
|
||||
runner: 314.415µs
|
||||
|
||||
Day 4 - Part 2: 186
|
||||
generator: 122ns,
|
||||
runner: 157.483µs
|
||||
generator: 145ns,
|
||||
runner: 160.805µs
|
||||
|
||||
Day 5 - Part 1: SeatId(933)
|
||||
generator: 123ns,
|
||||
runner: 48.343µs
|
||||
generator: 174ns,
|
||||
runner: 49.723µs
|
||||
|
||||
Day 5 - Part 2: SeatId(711)
|
||||
generator: 106ns,
|
||||
runner: 48.996µs
|
||||
generator: 129ns,
|
||||
runner: 50.982µs
|
||||
|
||||
Day 6 - Part 1: 6633
|
||||
generator: 108ns,
|
||||
runner: 128.65µs
|
||||
generator: 143ns,
|
||||
runner: 132.68µs
|
||||
|
||||
Day 6 - Part 2: 3202
|
||||
generator: 116ns,
|
||||
runner: 109.555µs
|
||||
generator: 122ns,
|
||||
runner: 117.655µs
|
||||
|
||||
Day 7 - Part 1: 208
|
||||
generator: 106ns,
|
||||
runner: 583.139µs
|
||||
generator: 123ns,
|
||||
runner: 595.023µs
|
||||
|
||||
Day 7 - Part 2: 1664
|
||||
generator: 124ns,
|
||||
runner: 500.463µs
|
||||
generator: 185ns,
|
||||
runner: 519.257µs
|
||||
|
||||
Day 8 - Part 1: 1723
|
||||
generator: 137ns,
|
||||
runner: 39.976µs
|
||||
generator: 146ns,
|
||||
runner: 38.424µs
|
||||
|
||||
Day 8 - Part 2: 846
|
||||
generator: 144ns,
|
||||
runner: 44.921µs
|
||||
generator: 115ns,
|
||||
runner: 43.972µs
|
||||
|
||||
Day 9 - Part 1: 36845998
|
||||
generator: 104ns,
|
||||
runner: 78.75µs
|
||||
generator: 196ns,
|
||||
runner: 78.343µs
|
||||
|
||||
Day 9 - Part 2: 4830226
|
||||
generator: 101ns,
|
||||
runner: 31.208µs
|
||||
generator: 194ns,
|
||||
runner: 29.993µs
|
||||
|
||||
Day 10 - Part 1: 1890
|
||||
generator: 116ns,
|
||||
runner: 7.921µs
|
||||
generator: 150ns,
|
||||
runner: 6.979µs
|
||||
|
||||
Day 10 - Part 2: 49607173328384
|
||||
generator: 97ns,
|
||||
runner: 7.19µs
|
||||
generator: 142ns,
|
||||
runner: 6.741µs
|
||||
|
||||
Day 11 - Part 1: 2329
|
||||
generator: 187ns,
|
||||
runner: 14.368179ms
|
||||
generator: 122ns,
|
||||
runner: 14.828453ms
|
||||
|
||||
Day 11 - Part 2: 2138
|
||||
generator: 139ns,
|
||||
runner: 27.689729ms
|
||||
generator: 172ns,
|
||||
runner: 31.021411ms
|
||||
|
||||
Day 12 - Part 1: 1177
|
||||
generator: 110ns,
|
||||
runner: 25.441µs
|
||||
generator: 286ns,
|
||||
runner: 26.03µs
|
||||
|
||||
Day 12 - Part 2: 46530
|
||||
generator: 88ns,
|
||||
runner: 24.573µs
|
||||
generator: 104ns,
|
||||
runner: 23.79µs
|
||||
|
||||
Day 13 - Part 1: 1895
|
||||
generator: 83ns,
|
||||
runner: 2.072µs
|
||||
generator: 103ns,
|
||||
runner: 2.238µs
|
||||
|
||||
Day 14 - Part 1: 13865835758282
|
||||
generator: 121ns,
|
||||
runner: 86.572µs
|
||||
generator: 110ns,
|
||||
runner: 84.059µs
|
||||
|
||||
Day 14 - Part 2: 4195339838136
|
||||
generator: 112ns,
|
||||
runner: 9.722698ms
|
||||
generator: 127ns,
|
||||
runner: 10.124784ms
|
||||
|
||||
Day 15 - Part 1: 273
|
||||
generator: 217ns,
|
||||
runner: 53.363µs
|
||||
|
||||
Day 15 - Part 2: 47205
|
||||
generator: 122ns,
|
||||
runner: 2.443352675s
|
||||
|
||||
```
|
||||
|
||||
1
input/2020/day15.txt
Normal file
1
input/2020/day15.txt
Normal file
@ -0,0 +1 @@
|
||||
1,12,0,20,8,16
|
||||
61
src/day15.rs
Normal file
61
src/day15.rs
Normal file
@ -0,0 +1,61 @@
|
||||
use aoc_runner_derive::aoc;
|
||||
|
||||
use std::collections::{hash_map::Entry, HashMap};
|
||||
|
||||
fn spoken_word_n(mut spoken: HashMap<usize, usize>, mut last_spoken: usize, n: usize) -> usize {
|
||||
for turn in spoken.len() + 1..=n {
|
||||
//dbg!(turn, last_spoken);
|
||||
last_spoken = match spoken.entry(last_spoken) {
|
||||
Entry::Occupied(mut occupied) => {
|
||||
let difference = turn - 1 - *occupied.get();
|
||||
occupied.insert(turn - 1);
|
||||
difference
|
||||
}
|
||||
Entry::Vacant(vacant) => {
|
||||
vacant.insert(turn - 1);
|
||||
0
|
||||
}
|
||||
}
|
||||
}
|
||||
last_spoken
|
||||
}
|
||||
|
||||
#[aoc(day15, part1)]
|
||||
fn solve_d15_p1(input: &str) -> usize {
|
||||
let mut last_spoken = None;
|
||||
let spoken: HashMap<usize, usize> = input
|
||||
.split(',')
|
||||
.enumerate()
|
||||
.map(|(idx, spoken)| {
|
||||
let spoken = spoken.parse().unwrap();
|
||||
last_spoken = Some(spoken);
|
||||
(spoken, idx + 1)
|
||||
})
|
||||
.collect();
|
||||
spoken_word_n(spoken, last_spoken.unwrap(), 2020)
|
||||
}
|
||||
|
||||
#[aoc(day15, part2)]
|
||||
fn solve_d15_p2(input: &str) -> usize {
|
||||
let mut last_spoken = None;
|
||||
let spoken: HashMap<usize, usize> = input
|
||||
.split(',')
|
||||
.enumerate()
|
||||
.map(|(idx, spoken)| {
|
||||
let spoken = spoken.parse().unwrap();
|
||||
last_spoken = Some(spoken);
|
||||
(spoken, idx + 1)
|
||||
})
|
||||
.collect();
|
||||
spoken_word_n(spoken, last_spoken.unwrap(), 30_000_000)
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test_part1() {
|
||||
assert_eq!(solve_d15_p1("1,3,2"), 1);
|
||||
}
|
||||
}
|
||||
@ -4,6 +4,7 @@ pub mod day11;
|
||||
pub mod day12;
|
||||
pub mod day13;
|
||||
pub mod day14;
|
||||
pub mod day15;
|
||||
pub mod day2;
|
||||
pub mod day3;
|
||||
pub mod day4;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user