day09 part 1

This commit is contained in:
Johannes Schaefer
2018-12-10 13:10:09 +01:00
parent d84e3bff27
commit e5a3a1458a
3 changed files with 38 additions and 1 deletions

View File

@@ -1,4 +1,4 @@
fn main() { fn main() {
aoc_2018::tasks::day08::both(); aoc_2018::tasks::day09::task1();
// aoc_2018::tasks::day08::task2(); // aoc_2018::tasks::day08::task2();
} }

36
src/tasks/day09.rs Normal file
View File

@@ -0,0 +1,36 @@
const PLAYERS: usize = 468;
const MODULO: usize = 23;
const HIGHEST_MARBLE: usize = 71843;
pub fn task1() {
let mut player_score = [0usize; PLAYERS];
let mut current_player = 1;
let mut current_index: usize = 0;
let mut deck: Vec<usize> = Vec::new();
deck.push(0);
for marble in 1..=HIGHEST_MARBLE {
if marble % MODULO == 0 {
current_index = rem(current_index, 7, deck.len());
player_score[current_player] += marble;
player_score[current_player] += deck.remove(current_index);
} else {
current_index = (current_index + 2) % deck.len();
deck.insert(current_index, marble);
}
current_player = (current_player + 1) % PLAYERS;
}
let result = player_score.iter().max().unwrap();
println!("The highest score is {}", result); // 385469 too low
}
pub fn rem(a: usize, sub: usize, m: usize) -> usize {
if sub > a {
let mut x = a as isize;
x -= sub as isize;
x = x % m as isize;
(x + m as isize) as usize
} else {
(a - sub) % m
}
}

View File

@@ -6,3 +6,4 @@ pub mod day05;
pub mod day06; pub mod day06;
pub mod day07; pub mod day07;
pub mod day08; pub mod day08;
pub mod day09;