Files
aoc2016/day19/src/main.rs
T

33 lines
680 B
Rust

#[cfg(debug_assertions)]
const LENGTH: usize = 5;
#[cfg(not(debug_assertions))]
const LENGTH: usize = 3_017_957;
fn main() {
let builder = std::thread::Builder::new().stack_size(100_000_000);
let handle = builder.spawn(part_1).unwrap();
handle.join().unwrap();
}
fn part_1() {
let mut pointer = 0;
let mut next = [0; LENGTH];
for (idx, val) in next.iter_mut().enumerate() {
*val = (idx + 1) % LENGTH;
}
loop {
next[pointer] = next[next[pointer]];
pointer = next[pointer];
// only one elf left
if next[pointer] == pointer {
println!("{}", pointer + 1);
break;
}
}
}