From 57429c49e9cf3fcfdbeb3f8c5c6d18fc9da1de44 Mon Sep 17 00:00:00 2001 From: Jos van Goor Date: Wed, 6 Dec 2023 19:14:31 +0100 Subject: [PATCH] Advent 2023 Day 6 --- advent_of_code_2018/day7/test.in | 7 ----- advent_of_code_2019/day2/test.txt | 1 - advent_of_code_2019/day3/test.txt | 2 -- advent_of_code_2023/day6/input.txt | 2 ++ advent_of_code_2023/day6/main1.rs | 42 ++++++++++++++++++++++++++++++ advent_of_code_2023/day6/main2.rs | 35 +++++++++++++++++++++++++ 6 files changed, 79 insertions(+), 10 deletions(-) delete mode 100644 advent_of_code_2018/day7/test.in delete mode 100644 advent_of_code_2019/day2/test.txt delete mode 100644 advent_of_code_2019/day3/test.txt create mode 100644 advent_of_code_2023/day6/input.txt create mode 100644 advent_of_code_2023/day6/main1.rs create mode 100644 advent_of_code_2023/day6/main2.rs diff --git a/advent_of_code_2018/day7/test.in b/advent_of_code_2018/day7/test.in deleted file mode 100644 index 1dfd2ea..0000000 --- a/advent_of_code_2018/day7/test.in +++ /dev/null @@ -1,7 +0,0 @@ -Step C must be finished before step A can begin. -Step C must be finished before step F can begin. -Step A must be finished before step B can begin. -Step A must be finished before step D can begin. -Step B must be finished before step E can begin. -Step D must be finished before step E can begin. -Step F must be finished before step E can begin. \ No newline at end of file diff --git a/advent_of_code_2019/day2/test.txt b/advent_of_code_2019/day2/test.txt deleted file mode 100644 index c5d0d74..0000000 --- a/advent_of_code_2019/day2/test.txt +++ /dev/null @@ -1 +0,0 @@ -2,3,0,3,99 \ No newline at end of file diff --git a/advent_of_code_2019/day3/test.txt b/advent_of_code_2019/day3/test.txt deleted file mode 100644 index 3207492..0000000 --- a/advent_of_code_2019/day3/test.txt +++ /dev/null @@ -1,2 +0,0 @@ -R75,D30,R83,U83,L12,D49,R71,U7,L72 -U62,R66,U55,R34,D71,R55,D58,R83 \ No newline at end of file diff --git a/advent_of_code_2023/day6/input.txt b/advent_of_code_2023/day6/input.txt new file mode 100644 index 0000000..a15dea2 --- /dev/null +++ b/advent_of_code_2023/day6/input.txt @@ -0,0 +1,2 @@ +Time: 62 64 91 90 +Distance: 553 1010 1473 1074 \ No newline at end of file diff --git a/advent_of_code_2023/day6/main1.rs b/advent_of_code_2023/day6/main1.rs new file mode 100644 index 0000000..f88c8a8 --- /dev/null +++ b/advent_of_code_2023/day6/main1.rs @@ -0,0 +1,42 @@ +use std::fs::read_to_string; + +fn parse_numbers_from_line(line: &str) -> Vec { + line.split_once(' ').unwrap().1 + .split(' ').filter(|line| { + !line.is_empty() + }).map(|line| { + line.parse::().unwrap() + }).collect::>() +} + +fn count_winning_strategies(time: i32, distance: i32) -> i32 { + let mut winners = 0; + + for hold in 0..time { + if (time - hold) * hold > distance { + winners += 1 + } + } + + winners +} + +fn main() { + + let lines = read_to_string("input.txt").unwrap().lines().map(|line| { + String::from(line) + }).collect::>(); + + let times = parse_numbers_from_line(&lines[0]); + let distances = parse_numbers_from_line(&lines[1]); + + println!("times: {:?}", times); + println!("distances: {:?}", distances); + + let mut score = 1; + for idx in 0..times.len() { + score *= count_winning_strategies(times[idx], distances[idx]); + } + + println!("Score: {}", score); +} \ No newline at end of file diff --git a/advent_of_code_2023/day6/main2.rs b/advent_of_code_2023/day6/main2.rs new file mode 100644 index 0000000..d6a1500 --- /dev/null +++ b/advent_of_code_2023/day6/main2.rs @@ -0,0 +1,35 @@ +use std::fs::read_to_string; + +fn parse_number_from_line(line: &str) -> u64 { + line.split_once(' ').unwrap().1 + .split(' ').filter(|line| { + !line.is_empty() + }).collect::().parse::().unwrap() +} + +fn count_winning_strategies(time: u64, distance: u64) -> u64 { + let mut winners = 0; + + for hold in 0..time { + if (time - hold) * hold > distance { + winners += 1 + } + } + + winners +} + +fn main() { + + let lines = read_to_string("input.txt").unwrap().lines().map(|line| { + String::from(line) + }).collect::>(); + + let time = parse_number_from_line(&lines[0]); + let distance = parse_number_from_line(&lines[1]); + + println!("time: {:?}", time); + println!("distance: {:?}", distance); + + println!("Winning strategies: {}", count_winning_strategies(time, distance)); +} \ No newline at end of file