heh
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs42
1 files changed, 30 insertions, 12 deletions
diff --git a/src/main.rs b/src/main.rs
index 8ec4de1..d32c07c 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -59,20 +59,38 @@ pub use util::prelude::*;
#[unsafe(no_mangle)]
#[implicit_fn::implicit_fn]
pub unsafe fn p1(i: &'static str) -> impl Display {
- let x = i
- .行()
- .map(|x| util::ints(x).carr::<4>().swizzle([1, 3]))
- // p2
- .chain([[11, 0]]);
- (0..)
- .find(|t| {
- x.clone()
- .ι1::<i64>()
- .map(|([p, now], i)| (now + t + i) % p)
- .all(_ == 0)
+ let x = std::iter::successors(Some("01111010110010011".as_bytes().to_vec()), |a| {
+ Some(
+ a.iter()
+ .copied()
+ .chain([b'0'])
+ .chain(a.iter().rev().copied().map(|x| match x {
+ b'0' => b'1',
+ _ => b'0',
+ }))
+ .collect::<Vec<u8>>(),
+ )
+ })
+ .find(_.len() > 35651584)
+ .unwrap();
+
+ String::from_utf8_unchecked(
+ successors(Some(x[..35651584].to_vec()), |x| {
+ Some(
+ x.array_chunks::<2>()
+ .map(|x| match x {
+ b"00" | b"11" => b'1',
+ _ => b'0',
+ })
+ .collect::<Vec<_>>(),
+ )
})
- .unwrap()
+ .skip(1)
+ .find(_.len() % 2 != 0)
+ .unwrap(),
+ )
}
+
fn main() {
unsafe { println!("{}", p1(include_str!("inp.txt"))) };
}