Completed day 1
This commit is contained in:
parent
35941e8619
commit
843c86d2a4
14
day1/Cargo.lock
generated
Normal file
14
day1/Cargo.lock
generated
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
[[package]]
|
||||||
|
name = "anyhow"
|
||||||
|
version = "1.0.34"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bf8dcb5b4bbaa28653b647d8c77bd4ed40183b48882e130c1f1ffb73de069fd7"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "day1"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"anyhow",
|
||||||
|
]
|
10
day1/Cargo.toml
Normal file
10
day1/Cargo.toml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[package]
|
||||||
|
name = "day1"
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = ["Tyler Hallada <tyler@hallada.net>"]
|
||||||
|
edition = "2018"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
anyhow = "1.0"
|
200
day1/input/input.txt
Executable file
200
day1/input/input.txt
Executable file
@ -0,0 +1,200 @@
|
|||||||
|
1934
|
||||||
|
1702
|
||||||
|
1571
|
||||||
|
1737
|
||||||
|
1977
|
||||||
|
1531
|
||||||
|
1428
|
||||||
|
1695
|
||||||
|
1794
|
||||||
|
1101
|
||||||
|
13
|
||||||
|
1164
|
||||||
|
1235
|
||||||
|
1289
|
||||||
|
1736
|
||||||
|
1814
|
||||||
|
1363
|
||||||
|
1147
|
||||||
|
1111
|
||||||
|
1431
|
||||||
|
1765
|
||||||
|
1515
|
||||||
|
1184
|
||||||
|
1036
|
||||||
|
1803
|
||||||
|
1791
|
||||||
|
1638
|
||||||
|
1809
|
||||||
|
1283
|
||||||
|
1980
|
||||||
|
1854
|
||||||
|
1878
|
||||||
|
1574
|
||||||
|
1352
|
||||||
|
1151
|
||||||
|
730
|
||||||
|
1581
|
||||||
|
1990
|
||||||
|
1919
|
||||||
|
2003
|
||||||
|
1538
|
||||||
|
1663
|
||||||
|
1735
|
||||||
|
1772
|
||||||
|
1830
|
||||||
|
1152
|
||||||
|
1022
|
||||||
|
1774
|
||||||
|
1544
|
||||||
|
1551
|
||||||
|
1835
|
||||||
|
1383
|
||||||
|
1614
|
||||||
|
1396
|
||||||
|
1715
|
||||||
|
1530
|
||||||
|
295
|
||||||
|
1208
|
||||||
|
1978
|
||||||
|
1104
|
||||||
|
1691
|
||||||
|
1176
|
||||||
|
1183
|
||||||
|
1909
|
||||||
|
1192
|
||||||
|
1535
|
||||||
|
1924
|
||||||
|
1268
|
||||||
|
1969
|
||||||
|
1954
|
||||||
|
1760
|
||||||
|
1077
|
||||||
|
1734
|
||||||
|
1371
|
||||||
|
1676
|
||||||
|
1933
|
||||||
|
1400
|
||||||
|
1928
|
||||||
|
1982
|
||||||
|
1541
|
||||||
|
1106
|
||||||
|
1248
|
||||||
|
1346
|
||||||
|
1782
|
||||||
|
1142
|
||||||
|
1849
|
||||||
|
1798
|
||||||
|
1362
|
||||||
|
1379
|
||||||
|
1886
|
||||||
|
1265
|
||||||
|
1226
|
||||||
|
1751
|
||||||
|
1575
|
||||||
|
1027
|
||||||
|
1710
|
||||||
|
1601
|
||||||
|
1205
|
||||||
|
1922
|
||||||
|
1452
|
||||||
|
1206
|
||||||
|
1263
|
||||||
|
2000
|
||||||
|
1957
|
||||||
|
1951
|
||||||
|
1834
|
||||||
|
1533
|
||||||
|
1149
|
||||||
|
1245
|
||||||
|
1564
|
||||||
|
1182
|
||||||
|
1237
|
||||||
|
1013
|
||||||
|
1254
|
||||||
|
1895
|
||||||
|
1504
|
||||||
|
1480
|
||||||
|
1556
|
||||||
|
1821
|
||||||
|
1589
|
||||||
|
1864
|
||||||
|
1573
|
||||||
|
1698
|
||||||
|
1927
|
||||||
|
1434
|
||||||
|
516
|
||||||
|
1722
|
||||||
|
1360
|
||||||
|
1940
|
||||||
|
1212
|
||||||
|
1329
|
||||||
|
1675
|
||||||
|
1812
|
||||||
|
1917
|
||||||
|
1302
|
||||||
|
1604
|
||||||
|
1336
|
||||||
|
1233
|
||||||
|
1405
|
||||||
|
1179
|
||||||
|
1169
|
||||||
|
1081
|
||||||
|
1941
|
||||||
|
1553
|
||||||
|
1236
|
||||||
|
1824
|
||||||
|
1923
|
||||||
|
1938
|
||||||
|
1475
|
||||||
|
1446
|
||||||
|
1545
|
||||||
|
1853
|
||||||
|
1664
|
||||||
|
317
|
||||||
|
1489
|
||||||
|
1884
|
||||||
|
1743
|
||||||
|
1621
|
||||||
|
1128
|
||||||
|
1474
|
||||||
|
1505
|
||||||
|
394
|
||||||
|
1387
|
||||||
|
1509
|
||||||
|
1627
|
||||||
|
1914
|
||||||
|
1913
|
||||||
|
1949
|
||||||
|
1843
|
||||||
|
1847
|
||||||
|
1882
|
||||||
|
1486
|
||||||
|
1082
|
||||||
|
1802
|
||||||
|
1645
|
||||||
|
1690
|
||||||
|
1629
|
||||||
|
1377
|
||||||
|
2004
|
||||||
|
1044
|
||||||
|
1191
|
||||||
|
1014
|
||||||
|
1857
|
||||||
|
1813
|
||||||
|
1572
|
||||||
|
1055
|
||||||
|
1002
|
||||||
|
1721
|
||||||
|
1273
|
||||||
|
1417
|
||||||
|
1968
|
||||||
|
1888
|
||||||
|
1863
|
||||||
|
1278
|
||||||
|
1141
|
||||||
|
1964
|
||||||
|
1259
|
||||||
|
1823
|
||||||
|
1181
|
||||||
|
1779
|
6
day1/input/test.txt
Normal file
6
day1/input/test.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
1721
|
||||||
|
979
|
||||||
|
366
|
||||||
|
299
|
||||||
|
675
|
||||||
|
1456
|
67
day1/src/main.rs
Normal file
67
day1/src/main.rs
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
use anyhow::{anyhow, Result};
|
||||||
|
|
||||||
|
use std::fs::File;
|
||||||
|
use std::io::prelude::*;
|
||||||
|
use std::io::BufReader;
|
||||||
|
|
||||||
|
const INPUT: &str = "input/input.txt";
|
||||||
|
|
||||||
|
fn solve_part1(input_path: &str) -> Result<u32> {
|
||||||
|
let file = File::open(input_path)?;
|
||||||
|
let reader = BufReader::new(file);
|
||||||
|
|
||||||
|
let mut prev_lines = Vec::new();
|
||||||
|
for line in reader.lines() {
|
||||||
|
let number: u32 = line?.parse()?;
|
||||||
|
for prev_number in prev_lines.iter() {
|
||||||
|
if number + prev_number == 2020 {
|
||||||
|
return Ok(number * prev_number);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
prev_lines.push(number);
|
||||||
|
}
|
||||||
|
|
||||||
|
Err(anyhow!("Found no pair of numbers that sums to 2020"))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn solve_part2(input_path: &str) -> Result<u32> {
|
||||||
|
let file = File::open(input_path)?;
|
||||||
|
let reader = BufReader::new(file);
|
||||||
|
|
||||||
|
let mut prev_lines = Vec::new();
|
||||||
|
for line in reader.lines() {
|
||||||
|
let number: u32 = line?.parse()?;
|
||||||
|
for prev_number in prev_lines.iter() {
|
||||||
|
for third_number in prev_lines.iter() {
|
||||||
|
if number + prev_number + third_number == 2020 {
|
||||||
|
return Ok(number * prev_number * third_number);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
prev_lines.push(number);
|
||||||
|
}
|
||||||
|
|
||||||
|
Err(anyhow!("Found no three numbers that sum to 2020"))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
println!("Part 1: {}", solve_part1(INPUT).unwrap());
|
||||||
|
println!("Part 2: {}", solve_part2(INPUT).unwrap());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
const TEST_INPUT: &str = "input/test.txt";
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn solves_part1() {
|
||||||
|
assert_eq!(solve_part1(TEST_INPUT).unwrap(), 514579);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn solves_part2() {
|
||||||
|
assert_eq!(solve_part2(TEST_INPUT).unwrap(), 241861950);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user