diff --git a/2020/01/main.rs b/2020/01/main.rs index a18a16c..e2bfad8 100644 --- a/2020/01/main.rs +++ b/2020/01/main.rs @@ -6,6 +6,13 @@ mod utils; fn main() -> Result<(), Box<dyn Error>> { let lines = utils::parse_input_lines::<u32>()?; + part1(&lines); + part2(&lines); + + Ok(()) +} + +fn part1(lines: &Vec<u32>) { 'outer: for i in 0..lines.len() { let value1 = lines.get(i).unwrap(); @@ -14,10 +21,27 @@ fn main() -> Result<(), Box<dyn Error>> { if value1 + value2 == 2020 { println!("Result: {} x {} = {}", value1, value2, value1 * value2); - break 'outer + break 'outer; + } + } + } +} + +fn part2(lines: &Vec<u32>) { + 'outer: for i in 0..lines.len() { + let value1 = lines.get(i).unwrap(); + + for j in (i + 1)..lines.len() { + let value2 = lines.get(j).unwrap(); + + for k in (j + 1)..lines.len() { + let value3 = lines.get(k).unwrap(); + + if value1 + value2 + value3 == 2020 { + println!("Result: {} x {} x {} = {}", value1, value2, value3, value1 * value2 * value3); + break 'outer; + } } } } - - Ok(()) }