heh
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 63 |
1 files changed, 34 insertions, 29 deletions
diff --git a/src/main.rs b/src/main.rs index d32c07c..aea2771 100644 --- a/src/main.rs +++ b/src/main.rs @@ -56,39 +56,44 @@ use std::{ use swizzle::array; pub use util::prelude::*; + #[unsafe(no_mangle)] #[implicit_fn::implicit_fn] pub unsafe fn p1(i: &'static str) -> impl Display { - 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(); + let mut max = 0; + util::iterg( + ((0, 0), Vec::<Dir>::new()), + &mut |(po, pa): ((usize, usize), Vec<Dir>)| { + let open = (util::md5s( + &[ + &b"udskfozm"[..], + &pa.iter().map(_.turdl()).collect::<Vec<_>>(), + ] + .concat(), + )) + .bytes() + .carr::<4>() + .map(|x| matches!(x, b'b' | b'c' | b'd' | b'e' | b'f')); + + ([Dir::N, Dir::S, Dir::W, Dir::E]) + .into_iter() + .zip(open) + .filter(_.1) + .flat_map(move |(d, _)| d.lim_add(po, [0, 4], [0, 4]).map(|x| (x, d))) + .map(move |(x, d)| (x, pa.iter().copied().chain([d]).collect::<Vec<_>>())) + }, + &mut |x| x.0 == (3, 3), + &mut |x| max = max.max(x.1.len()), + ); + max - 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<_>>(), - ) - }) - .skip(1) - .find(_.len() % 2 != 0) - .unwrap(), - ) + // .unwrap() + // .1 + // .1 + // .iter() + // .map(_.turdl()) + // .collect::<Vec<_>>(), + // String::from_utf8_unchecked( } fn main() { |