Advent 2023 Day 6

This commit is contained in:
Jos van Goor 2023-12-06 19:14:31 +01:00
parent 6567050431
commit 57429c49e9
6 changed files with 79 additions and 10 deletions

View file

@ -0,0 +1,2 @@
Time: 62 64 91 90
Distance: 553 1010 1473 1074

View file

@ -0,0 +1,42 @@
use std::fs::read_to_string;
fn parse_numbers_from_line(line: &str) -> Vec<i32> {
line.split_once(' ').unwrap().1
.split(' ').filter(|line| {
!line.is_empty()
}).map(|line| {
line.parse::<i32>().unwrap()
}).collect::<Vec<_>>()
}
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::<Vec<_>>();
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);
}

View file

@ -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::<String>().parse::<u64>().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::<Vec<_>>();
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));
}