diff --git a/2023/day6/src/main.rs b/2023/day6/src/main.rs index aeeb934..d9d3fe7 100644 --- a/2023/day6/src/main.rs +++ b/2023/day6/src/main.rs @@ -7,6 +7,9 @@ fn main() { let content = fs::read_to_string("input").expect("Could not read the file"); let part1 = part1(content.clone()); println!("Part 1: {}", part1); + let part2 = part2(content); + println!("Part 1: {}", part2); + } fn part1(content: String) -> i64 { @@ -18,7 +21,7 @@ fn part1(content: String) -> i64 { .into_iter() .filter(|x| !x.is_empty()) .collect::>(); - let distance = content.split("\n").collect::>()[1] + let distances = content.split("\n").collect::>()[1] .split(":") .collect::>()[1] .split(" ") @@ -26,12 +29,35 @@ fn part1(content: String) -> i64 { .into_iter() .filter(|x| !x.is_empty()) .collect::>(); - let races = c![(times[i].parse::().unwrap(), distance[i].parse::().unwrap()), for i in 0..times.len()]; - + let races = c![(times[i].parse::().unwrap(), distances[i].parse::().unwrap()), for i in 0..times.len()]; let result = c![get_possible_answers(x.0,x.1), for x in races].into_iter().product::(); return result; } - +fn part2(content: String) -> i64 { + let binding = content.split("\n").collect::>()[0] + .split(":") + .collect::>()[1] + .replace(" ", ""); + let times= binding + .split(" ") + .collect::>() + .into_iter() + .filter(|x| !x.is_empty()) + .collect::>()[0]; + let binding = content.split("\n").collect::>()[1] + .split(":") + .collect::>()[1] + .replace(" ", ""); + let distances = binding + .split(" ") + .collect::>() + .into_iter() + .filter(|x| !x.is_empty()) + .collect::>()[0]; + let races = c![(times.parse::().unwrap(), distances.parse::().unwrap()), for i in 0..times.len()]; + let result = c![get_possible_answers(x.0,x.1), for x in races][0]; + return result; +} fn get_possible_answers(time:i64, distance:i64) -> i64{ let list_of_nums_to_check = c![x+1, for x in 0..((((time)/2) as f64).ceil()) as i64]; let result_list = c![i,for i in list_of_nums_to_check.iter().rev().collect::>(), if i*(time-i) > distance];