Add solution for 2020 day 01

This commit is contained in:
Patrick Auernig 2021-12-03 01:58:10 +01:00
parent c04c9a17f5
commit fc62292117
7 changed files with 297 additions and 26 deletions

View File

@ -1,28 +1,29 @@
# [Advent of Code 2020](https://adventofcode.com/2020)
## Progress
- [ ] Day 01
- [ ] Day 02
- [ ] Day 03
- [ ] Day 04
- [ ] Day 05
- [ ] Day 06
- [ ] Day 07
- [ ] Day 08
- [ ] Day 09
- [ ] Day 10
- [ ] Day 11
- [ ] Day 12
- [ ] Day 13
- [ ] Day 14
- [ ] Day 15
- [ ] Day 16
- [ ] Day 17
- [ ] Day 18
- [ ] Day 19
- [ ] Day 20
- [ ] Day 21
- [ ] Day 22
- [ ] Day 23
- [ ] Day 24
- [ ] Day 25
| Solved | Day | Language |
| :----: | :-: | :------- |
| ✓ | 01 | Rust |
| | 02 | |
| | 03 | |
| | 04 | |
| | 05 | |
| | 06 | |
| | 07 | |
| | 08 | |
| | 09 | |
| | 10 | |
| | 11 | |
| | 12 | |
| | 13 | |
| | 14 | |
| | 15 | |
| | 16 | |
| | 17 | |
| | 18 | |
| | 19 | |
| | 20 | |
| | 21 | |
| | 22 | |
| | 23 | |
| | 24 | |
| | 25 | |

2
2020/day-01/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
part_one
part_two

15
2020/day-01/common.rs Normal file
View File

@ -0,0 +1,15 @@
use std::env;
use std::fs::File;
use std::io::Read;
pub type Result<T> = std::result::Result<T, Box<dyn std::error::Error>>;
pub fn read_file() -> Result<Vec<u32>> {
let path = env::args().skip(1).next().unwrap();
let mut file = File::open(path)?;
let mut content = String::new();
file.read_to_string(&mut content)?;
Ok(content.lines().map(|l| l.parse().unwrap()).collect())
}

View File

@ -0,0 +1,200 @@
1028
1987
1938
1136
1503
1456
1107
1535
1946
1986
855
1587
1632
1548
1384
1894
1092
1876
1914
1974
1662
1608
2004
1464
1557
1485
1267
1582
1307
1903
1102
1578
1421
1184
1290
1786
1295
1930
1131
1802
1685
1735
1498
1052
1688
990
1805
1768
1922
1781
1897
1545
1591
1393
1186
149
1619
1813
1708
1119
1214
1705
1942
1684
1460
1123
1439
1672
1980
1337
1731
1203
1481
2009
1110
1116
1443
1957
1891
1595
1951
1883
1733
1697
1321
1689
1103
1300
1262
1190
1667
1843
1544
1877
1718
1866
1929
1169
1693
1518
1375
1477
1222
1791
1612
1373
1253
1087
1959
1970
1112
1778
1412
1127
1767
1091
1653
1609
1810
1912
1917
935
1499
1878
1452
1935
1937
968
1905
1077
1701
1789
1506
1451
1125
1686
1117
1991
1215
1776
1976
846
1923
1945
1888
1193
1146
1583
1315
1372
1963
1491
1777
1799
1363
1579
1367
1863
1983
1679
1944
1654
1953
1297
530
1502
1738
1934
1185
1998
1764
1856
1207
1181
1494
1676
1900
1057
339
1994
2006
1536
2007
644
1173
1692
1493
1756
1916
1890
1908
1887
1241
1447
1997
1967
1098
1287
1392
1932

View File

@ -0,0 +1,6 @@
1721
979
366
299
675
1456

21
2020/day-01/part_one.rs Normal file
View File

@ -0,0 +1,21 @@
mod common;
use common::{read_file, Result};
fn main() -> Result<()> {
let entries = read_file()?;
let mut skip_inner = 0;
for outer in &entries {
for inner in entries.iter().skip(skip_inner) {
if outer + inner == 2020 {
println!("{}", outer * inner);
return Ok(());
}
}
skip_inner += 1;
}
Ok(())
}

26
2020/day-01/part_two.rs Normal file
View File

@ -0,0 +1,26 @@
mod common;
use common::{read_file, Result};
fn main() -> Result<()> {
let entries = read_file()?;
let mut skip_inner = 0;
for outer in &entries {
let mut skip_innermost = 0;
for inner in entries.iter().skip(skip_inner) {
for innermost in entries.iter().skip(skip_innermost) {
if outer + inner + innermost == 2020 {
println!("{}", outer * inner * innermost);
return Ok(());
}
}
skip_innermost += 1;
}
skip_inner += 1;
}
Ok(())
}