mirror of https://github.com/HeNine/aoc2020
day10
parent
75746ade18
commit
ca275c703e
@ -0,0 +1,9 @@
|
|||||||
|
[package]
|
||||||
|
name = "day10"
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = ["henine <why@no.com>"]
|
||||||
|
edition = "2018"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
@ -0,0 +1,106 @@
|
|||||||
|
66
|
||||||
|
7
|
||||||
|
73
|
||||||
|
162
|
||||||
|
62
|
||||||
|
165
|
||||||
|
157
|
||||||
|
158
|
||||||
|
137
|
||||||
|
125
|
||||||
|
138
|
||||||
|
59
|
||||||
|
36
|
||||||
|
40
|
||||||
|
94
|
||||||
|
95
|
||||||
|
13
|
||||||
|
35
|
||||||
|
136
|
||||||
|
96
|
||||||
|
156
|
||||||
|
155
|
||||||
|
24
|
||||||
|
84
|
||||||
|
42
|
||||||
|
171
|
||||||
|
142
|
||||||
|
3
|
||||||
|
104
|
||||||
|
149
|
||||||
|
83
|
||||||
|
129
|
||||||
|
19
|
||||||
|
122
|
||||||
|
68
|
||||||
|
103
|
||||||
|
74
|
||||||
|
118
|
||||||
|
20
|
||||||
|
110
|
||||||
|
54
|
||||||
|
127
|
||||||
|
88
|
||||||
|
31
|
||||||
|
135
|
||||||
|
26
|
||||||
|
126
|
||||||
|
2
|
||||||
|
51
|
||||||
|
91
|
||||||
|
16
|
||||||
|
65
|
||||||
|
128
|
||||||
|
119
|
||||||
|
67
|
||||||
|
48
|
||||||
|
111
|
||||||
|
29
|
||||||
|
49
|
||||||
|
12
|
||||||
|
132
|
||||||
|
17
|
||||||
|
41
|
||||||
|
166
|
||||||
|
75
|
||||||
|
146
|
||||||
|
50
|
||||||
|
30
|
||||||
|
1
|
||||||
|
164
|
||||||
|
112
|
||||||
|
34
|
||||||
|
18
|
||||||
|
72
|
||||||
|
97
|
||||||
|
145
|
||||||
|
11
|
||||||
|
117
|
||||||
|
58
|
||||||
|
78
|
||||||
|
152
|
||||||
|
90
|
||||||
|
172
|
||||||
|
163
|
||||||
|
89
|
||||||
|
107
|
||||||
|
45
|
||||||
|
37
|
||||||
|
79
|
||||||
|
159
|
||||||
|
141
|
||||||
|
105
|
||||||
|
10
|
||||||
|
115
|
||||||
|
69
|
||||||
|
170
|
||||||
|
25
|
||||||
|
100
|
||||||
|
80
|
||||||
|
4
|
||||||
|
85
|
||||||
|
169
|
||||||
|
106
|
||||||
|
57
|
||||||
|
116
|
||||||
|
23
|
@ -0,0 +1,52 @@
|
|||||||
|
use std::fs::File;
|
||||||
|
use std::io::{BufRead, BufReader};
|
||||||
|
use std::string::String;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let file = match File::open("input") {
|
||||||
|
Ok(file) => file,
|
||||||
|
Err(e) => panic!(e)
|
||||||
|
};
|
||||||
|
|
||||||
|
let input_buffer = BufReader::new(&file);
|
||||||
|
let lines = input_buffer.lines();
|
||||||
|
|
||||||
|
let mut adapters: Vec<u32> = lines
|
||||||
|
.map(Result::unwrap)
|
||||||
|
.map(|x: String| x.trim().to_string())
|
||||||
|
.map(|x| x.parse::<u32>().unwrap())
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
adapters.sort();
|
||||||
|
|
||||||
|
let mut hist = [0, 0, 1];
|
||||||
|
let mut prev = 0;
|
||||||
|
for adapter in adapters.iter() {
|
||||||
|
hist[(adapter - prev - 1) as usize] += 1;
|
||||||
|
prev = *adapter;
|
||||||
|
}
|
||||||
|
println!("{:?}", hist);
|
||||||
|
|
||||||
|
println!("{}", hist[0] * hist[2]);
|
||||||
|
|
||||||
|
adapters.reverse();
|
||||||
|
|
||||||
|
let mut path_counts = Vec::with_capacity(adapters.len());
|
||||||
|
path_counts.push(1 as u64);
|
||||||
|
for _i in 1..adapters.len() { path_counts.push(0 as u64) };
|
||||||
|
|
||||||
|
for adapter_i in 1..adapters.len() {
|
||||||
|
let adapter = adapters[adapter_i];
|
||||||
|
path_counts[adapter_i] =
|
||||||
|
if adapter_i >= 1 && adapters[adapter_i - 1] - adapter <= 3 { path_counts[adapter_i - 1] } else { 0 } +
|
||||||
|
if adapter_i >= 2 && adapters[adapter_i - 2] - adapter <= 3 { path_counts[adapter_i - 2] } else { 0 } +
|
||||||
|
if adapter_i >= 3 && adapters[adapter_i - 3] - adapter <= 3 { path_counts[adapter_i - 3] } else { 0 }
|
||||||
|
}
|
||||||
|
|
||||||
|
let count =
|
||||||
|
if adapters[adapters.len() - 1] <= 3 { path_counts[adapters.len() - 1] } else { 0 } +
|
||||||
|
if adapters[adapters.len() - 2] <= 3 { path_counts[adapters.len() - 2] } else { 0 } +
|
||||||
|
if adapters[adapters.len() - 3] <= 3 { path_counts[adapters.len() - 3] } else { 0 };
|
||||||
|
|
||||||
|
println!("{}", count);
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
28
|
||||||
|
33
|
||||||
|
18
|
||||||
|
42
|
||||||
|
31
|
||||||
|
14
|
||||||
|
46
|
||||||
|
20
|
||||||
|
48
|
||||||
|
47
|
||||||
|
24
|
||||||
|
23
|
||||||
|
49
|
||||||
|
45
|
||||||
|
19
|
||||||
|
38
|
||||||
|
39
|
||||||
|
11
|
||||||
|
1
|
||||||
|
32
|
||||||
|
25
|
||||||
|
35
|
||||||
|
8
|
||||||
|
17
|
||||||
|
7
|
||||||
|
9
|
||||||
|
4
|
||||||
|
2
|
||||||
|
34
|
||||||
|
10
|
||||||
|
3
|
Loading…
Reference in New Issue