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