heh
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs27
1 files changed, 18 insertions, 9 deletions
diff --git a/src/main.rs b/src/main.rs
index 1b45818..8c74898 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -61,15 +61,24 @@ pub use util::prelude::*;
#[unsafe(no_mangle)]
#[implicit_fn::implicit_fn]
pub unsafe fn p1(i: &'static str) -> impl Display {
- infinite_successors(util::nail(i.as_bytes()), |x| {
- let x: [u8; 102] = [b'.'].couple(x).join(b'.');
- x.windowed::<3>()
- .map(|x| b".^"[matches!(x, b"^^." | b".^^" | b"^.." | b"..^") as usize])
- })
- .take(400000)
- .flatten()
- .filter(*_ == b'.')
- .count()
+ let n = 3012210;
+ let mut elves = vec![1; n];
+ for i in (0..elves.len()).cycle() {
+ if elves[i] == 0 {
+ continue;
+ }
+ if elves[i] == n {
+ return i + 1;
+ }
+ let left = (0..n)
+ .cycle()
+ .skip(i + 1)
+ .take(n)
+ .find(|x| elves[*x] != 0)
+ .unwrap();
+ elves[i] += take(&mut elves[left]);
+ }
+ panic!()
}
fn main() {