From 59459e74893e060472b1db6821e590a45bbac012 Mon Sep 17 00:00:00 2001 From: Adam Kramer Date: Wed, 2 Dec 2020 18:24:52 -0800 Subject: [PATCH] finished day 1 --- src/bin/1.rs | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/bin/1.rs b/src/bin/1.rs index ef50f80..605a6a5 100644 --- a/src/bin/1.rs +++ b/src/bin/1.rs @@ -40,8 +40,30 @@ use std::{fs::{File}, io}; use std::collections::HashSet; use std::io::{BufRead, BufReader}; +fn find_triple(target: i32, list: &Vec, set: &HashSet) -> i32 { + for i in list { + let product = find_pair(target - i, list, set); + if product > 0 { + return product * i; + } + } + 0 +} + +fn find_pair(target: i32, list: &Vec, set: &HashSet) -> i32 { + for i in list { + if i > &target { + break + } + let val = target - i; + if set.contains(&val) { + return i * val; + } + } + 0 +} + fn main() -> io::Result<()> { - //let contents = fs::read_to_string("1.input").expect("Couldn't read \"1.input\""); let file = File::open("1.input")?; let reader = BufReader::new(file); @@ -53,5 +75,10 @@ fn main() -> io::Result<()> { list.push(value); set.insert(value); } + + list.sort(); + + println!("Pair is {}", find_pair(2020, &list, &set)); + println!("Triple is {}", find_triple(2020, &list, &set)); Ok(()) }