add day 19 naive approach
This commit is contained in:
Generated
+7
@@ -0,0 +1,7 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 4
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "day19"
|
||||||
|
version = "0.1.0"
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
[package]
|
||||||
|
name = "day19"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2024"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
|
||||||
|
[profile.release]
|
||||||
|
lto = "fat"
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
#[cfg(debug_assertions)]
|
||||||
|
const LENGTH: usize = 5;
|
||||||
|
#[cfg(not(debug_assertions))]
|
||||||
|
const LENGTH: usize = 3_017_957;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let mut pointer = 0;
|
||||||
|
let mut has_presents = [true; LENGTH];
|
||||||
|
let mut next_elf = [0; LENGTH];
|
||||||
|
|
||||||
|
for (idx, val) in next_elf.iter_mut().enumerate() {
|
||||||
|
*val = (idx + 1) % LENGTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
'outer: loop {
|
||||||
|
let mut offset = 1;
|
||||||
|
loop {
|
||||||
|
let idx = (pointer + offset) % LENGTH;
|
||||||
|
if has_presents[idx] {
|
||||||
|
has_presents[idx] = false;
|
||||||
|
pointer = idx;
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
offset += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let count = has_presents.iter().filter(|b| **b).count();
|
||||||
|
println!("{count}");
|
||||||
|
if count == 1 {
|
||||||
|
let correct_idx = has_presents
|
||||||
|
.iter()
|
||||||
|
.enumerate()
|
||||||
|
.filter(|(_, b)| **b)
|
||||||
|
.map(|(i, _)| i)
|
||||||
|
.next()
|
||||||
|
.unwrap()
|
||||||
|
+ 1;
|
||||||
|
println!("{correct_idx}");
|
||||||
|
break 'outer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user