Compare commits

..

No commits in common. "a77b4cfe2d4228f69319a7579bc8096652329a45" and "bd36d74070f7d7dfdea54b7d671bc39d9c8843f8" have entirely different histories.

4 changed files with 52 additions and 123 deletions

112
README.md
View File

@ -1,115 +1,107 @@
``` ```
Advent of code 2020 Advent of code 2020
Day 1 - Part 1: 1016964 Day 1 - Part 1: 1016964
generator: 17.607µs, generator: 14.391µs,
runner: 634ns runner: 474ns
Day 1 - Part 2: 182588480 Day 1 - Part 2: 182588480
generator: 12.778µs, generator: 10.146µs,
runner: 350ns runner: 343ns
Day 2 - Part 1: 586 Day 2 - Part 1: 586
generator: 270ns, generator: 444ns,
runner: 99.187µs runner: 105.789µs
Day 2 - Part 2: 352 Day 2 - Part 2: 352
generator: 155ns, generator: 121ns,
runner: 80.499µs runner: 75.691µs
Day 3 - Part 1: 265 Day 3 - Part 1: 265
generator: 58.252µs, generator: 53.669µs,
runner: 60.543µs runner: 57.907µs
Day 3 - Part 2: 3154761400 Day 3 - Part 2: 3154761400
generator: 45.099µs, generator: 42.455µs,
runner: 314.415µs runner: 304.869µs
Day 4 - Part 2: 186 Day 4 - Part 2: 186
generator: 145ns, generator: 122ns,
runner: 160.805µs runner: 157.483µs
Day 5 - Part 1: SeatId(933) Day 5 - Part 1: SeatId(933)
generator: 174ns, generator: 123ns,
runner: 49.723µs runner: 48.343µs
Day 5 - Part 2: SeatId(711) Day 5 - Part 2: SeatId(711)
generator: 129ns, generator: 106ns,
runner: 50.982µs runner: 48.996µs
Day 6 - Part 1: 6633 Day 6 - Part 1: 6633
generator: 143ns, generator: 108ns,
runner: 132.68µs runner: 128.65µs
Day 6 - Part 2: 3202 Day 6 - Part 2: 3202
generator: 122ns, generator: 116ns,
runner: 117.655µs runner: 109.555µs
Day 7 - Part 1: 208 Day 7 - Part 1: 208
generator: 123ns, generator: 106ns,
runner: 595.023µs runner: 583.139µs
Day 7 - Part 2: 1664 Day 7 - Part 2: 1664
generator: 185ns, generator: 124ns,
runner: 519.257µs runner: 500.463µs
Day 8 - Part 1: 1723 Day 8 - Part 1: 1723
generator: 146ns, generator: 137ns,
runner: 38.424µs runner: 39.976µs
Day 8 - Part 2: 846 Day 8 - Part 2: 846
generator: 115ns, generator: 144ns,
runner: 43.972µs runner: 44.921µs
Day 9 - Part 1: 36845998 Day 9 - Part 1: 36845998
generator: 196ns, generator: 104ns,
runner: 78.343µs runner: 78.75µs
Day 9 - Part 2: 4830226 Day 9 - Part 2: 4830226
generator: 194ns, generator: 101ns,
runner: 29.993µs runner: 31.208µs
Day 10 - Part 1: 1890 Day 10 - Part 1: 1890
generator: 150ns, generator: 116ns,
runner: 6.979µs runner: 7.921µs
Day 10 - Part 2: 49607173328384 Day 10 - Part 2: 49607173328384
generator: 142ns, generator: 97ns,
runner: 6.741µs runner: 7.19µs
Day 11 - Part 1: 2329 Day 11 - Part 1: 2329
generator: 122ns, generator: 187ns,
runner: 14.828453ms runner: 14.368179ms
Day 11 - Part 2: 2138 Day 11 - Part 2: 2138
generator: 172ns, generator: 139ns,
runner: 31.021411ms runner: 27.689729ms
Day 12 - Part 1: 1177 Day 12 - Part 1: 1177
generator: 286ns, generator: 110ns,
runner: 26.03µs runner: 25.441µs
Day 12 - Part 2: 46530 Day 12 - Part 2: 46530
generator: 104ns, generator: 88ns,
runner: 23.79µs runner: 24.573µs
Day 13 - Part 1: 1895 Day 13 - Part 1: 1895
generator: 103ns, generator: 83ns,
runner: 2.238µs runner: 2.072µs
Day 14 - Part 1: 13865835758282 Day 14 - Part 1: 13865835758282
generator: 110ns, generator: 121ns,
runner: 84.059µs runner: 86.572µs
Day 14 - Part 2: 4195339838136 Day 14 - Part 2: 4195339838136
generator: 127ns, generator: 112ns,
runner: 10.124784ms runner: 9.722698ms
Day 15 - Part 1: 273
generator: 217ns,
runner: 53.363µs
Day 15 - Part 2: 47205
generator: 122ns,
runner: 2.443352675s
``` ```

View File

@ -1 +0,0 @@
1,12,0,20,8,16

View File

@ -1,61 +0,0 @@
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);
}
}

View File

@ -4,7 +4,6 @@ pub mod day11;
pub mod day12; pub mod day12;
pub mod day13; pub mod day13;
pub mod day14; pub mod day14;
pub mod day15;
pub mod day2; pub mod day2;
pub mod day3; pub mod day3;
pub mod day4; pub mod day4;