From ca880afe7bdea987bcb294b30f5f6a9563a06c83 Mon Sep 17 00:00:00 2001 From: alex <> Date: Fri, 13 Dec 2024 11:35:50 +0100 Subject: [PATCH] Day13 - part 2 --- src/day13.rs | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/src/day13.rs b/src/day13.rs index 0c3aa22..da04e1a 100644 --- a/src/day13.rs +++ b/src/day13.rs @@ -1,23 +1,22 @@ use std::error::Error; use std::path::Path; -fn extract_values(line: &str) -> (i32, i32) { +fn extract_values(line: &str) -> (i64, i64) { let (_, xy) = line.split_once(":").unwrap(); let (x, y) = xy.split_once(",").unwrap(); - let x = x[3..x.len()].parse::().unwrap(); - let y = y[3..y.len()].parse::().unwrap(); + let x = x[3..x.len()].parse::().unwrap(); + let y = y[3..y.len()].parse::().unwrap(); (x, y) } -fn run_part1(input: &str) -> Result> { - println!("Running {} - part 1", get_day()); - - let res: u32 = input.split("\n\n") +fn solve(input: &str, offset: i64) -> u64 { + input.split("\n\n") .map(|list| { let list: Vec<_> = list.lines().collect(); let (xa, ya) = extract_values(list[0]); let (xb, yb) = extract_values(list[1]); let (xp, yp) = extract_values(list[2]); + let (xp, yp) = (xp + offset, yp + offset); let det = xa*yb - ya*xb; match det { 0 => 0, @@ -30,20 +29,22 @@ fn run_part1(input: &str) -> Result> { else { let a = an / det; let b = bn / det; - (a*3 + b) as u32 + (a*3 + b) as u64 } } } }) - .sum(); + .sum() +} - Ok(res) +fn run_part1(input: &str) -> Result> { + println!("Running {} - part 1", get_day()); + Ok(solve(input, 0)) } -fn run_part2(input: &str) -> Result> { +fn run_part2(input: &str) -> Result> { println!("Running {} - part 2", get_day()); - - Ok(0) + Ok(solve(input, 10000000000000)) } pub fn run(input: &str) -> Result<(), Box> { @@ -87,9 +88,4 @@ Prize: X=18641, Y=10279 fn test_part1() { assert_eq!(480, run_part1(TEXT_INPUT).unwrap()); } - - #[test] - fn test_part2() { - assert_eq!(0, run_part2(TEXT_INPUT).unwrap()); - } } -- 2.39.5