diff options
| author | omagdy <omar.professional8777@gmail.com> | 2024-12-08 15:28:08 +0200 |
|---|---|---|
| committer | omagdy <omar.professional8777@gmail.com> | 2024-12-08 15:28:08 +0200 |
| commit | 01c6b2cb42a4144a573ec43e9e25c6718741a272 (patch) | |
| tree | 158b76f6363cd29251cedfa33f0cbf83ea5229c8 /2020/Rust/src/day1.rs | |
| parent | 57fc57ecc40f879a3ccb637a5f420a1e0a655eab (diff) | |
| download | aoc-01c6b2cb42a4144a573ec43e9e25c6718741a272.tar.xz aoc-01c6b2cb42a4144a573ec43e9e25c6718741a272.zip | |
Some solutions to AOC 2020
Diffstat (limited to '2020/Rust/src/day1.rs')
| -rwxr-xr-x | 2020/Rust/src/day1.rs | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/2020/Rust/src/day1.rs b/2020/Rust/src/day1.rs new file mode 100755 index 0000000..9a84dd4 --- /dev/null +++ b/2020/Rust/src/day1.rs @@ -0,0 +1,47 @@ +use std::collections::HashSet; + +fn solve_part_one(input: &str) -> i32 { + let mut seen = HashSet::new(); + let numbers: Vec<i32> = input + .lines() + .map(|line| line.trim().parse().unwrap()) + .collect(); + + for &number in &numbers { + let complement = 2020 - number; + if seen.contains(&complement) { + return number * complement; + } + seen.insert(number); + } + panic!("No two numbers sum to 2020!"); +} + +fn solve_part_two(input: &str) -> i32 { + let numbers: Vec<i32> = input + .lines() + .map(|line| line.trim().parse().unwrap()) + .collect(); + + for (i, &first) in numbers.iter().enumerate() { + let mut seen = HashSet::new(); + let target_sum = 2020 - first; + for &second in &numbers[i + 1..] { + let complement = target_sum - second; + if seen.contains(&complement) { + return first * second * complement; + } + seen.insert(second); + } + } + panic!("No three numbers sum to 2020!"); +} + +fn main() { + let test = include_str!("../input/day_1.test"); + let prod = include_str!("../input/day_1.prod"); + println!("Test_1: {}", solve_part_one(test)); + println!("Prod_1: {}", solve_part_one(prod)); + println!("Test_2: {}", solve_part_two(test)); + println!("Prod_2: {}", solve_part_two(prod)); +} |
