From db2686c798378738020a0951a521358586e21aa0 Mon Sep 17 00:00:00 2001 From: Santo Cariotti Date: Fri, 9 Feb 2024 11:42:04 +0100 Subject: Add day2 in OCaml --- 2023/day9/src/lib.rs | 122 --------------------------------------------------- 1 file changed, 122 deletions(-) delete mode 100644 2023/day9/src/lib.rs (limited to '2023/day9/src') diff --git a/2023/day9/src/lib.rs b/2023/day9/src/lib.rs deleted file mode 100644 index a1b0588..0000000 --- a/2023/day9/src/lib.rs +++ /dev/null @@ -1,122 +0,0 @@ -pub fn part1(input: &str) -> i32 { - let mut res: i32 = 0; - - let m: Vec> = input - .trim_end() - .split('\n') - .map(|x| { - x.split(' ') - .map(|y| y.parse::().unwrap()) - .collect::>() - }) - .collect(); - - for i in m { - let mut aux: Vec> = vec![i]; - - let mut z = 1; - loop { - aux.push(vec![]); - for j in 1..aux[z - 1].len() { - let x = aux[z - 1][j] - aux[z - 1][j - 1]; - aux[z].push(x); - } - - if aux[z].iter().filter(|&k| *k != 0).count() == 0 { - aux[z].push(0); - break; - } - - z += 1; - } - - let n = aux.len() - 1; - for j in (0..n).rev() { - let t = aux[j + 1][aux[j + 1].len() - 1]; - let r = aux[j][aux[j].len() - 1]; - aux[j].push(t + r); - } - - res += aux[0][aux[0].len() - 1]; - } - - res -} - -pub fn part2(input: &str) -> i32 { - let mut res: i32 = 0; - - let m: Vec> = input - .trim_end() - .split('\n') - .map(|x| { - x.split(' ') - .map(|y| y.parse::().unwrap()) - .collect::>() - }) - .collect(); - - for i in m { - let mut aux: Vec> = vec![i]; - - let mut z = 1; - loop { - aux.push(vec![]); - for j in 1..aux[z - 1].len() { - let x = aux[z - 1][j] - aux[z - 1][j - 1]; - aux[z].push(x); - } - - if aux[z].iter().filter(|&k| *k != 0).count() == 0 { - aux[z].push(0); - break; - } - - z += 1; - } - - let n = aux.len() - 1; - for j in (0..n).rev() { - let t = aux[j + 1][0]; - let r = aux[j][0]; - aux[j].insert(0, r - t); - } - - res += aux[0][0]; - } - - res -} - -#[cfg(test)] -mod tests { - use super::*; - - #[test] - fn example_part1() { - let input = include_str!("../example.txt"); - let result = part1(input); - assert_eq!(result, 114); - } - - #[test] - fn input_part1() { - let input = include_str!("../input.txt"); - let result = part1(input); - assert_eq!(result, 2008960228); - } - - #[test] - fn example_part2() { - let input = include_str!("../example.txt"); - let result = part2(input); - assert_eq!(result, 2); - } - - #[test] - fn input_part2() { - let input = include_str!("../input.txt"); - let result = part2(input); - assert_eq!(result, 71585); - } -} -- cgit v1.2.3-18-g5258