heh
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 29 |
1 files changed, 7 insertions, 22 deletions
diff --git a/src/main.rs b/src/main.rs index aa6a487..49f6081 100644 --- a/src/main.rs +++ b/src/main.rs @@ -71,30 +71,15 @@ use crate::util::{MapF, UnionFind}; #[unsafe(no_mangle)] #[implicit_fn::implicit_fn] pub unsafe fn p1(x: &'static [u8; ISIZE]) -> impl Debug { - let value = x.chunked::<202>(); - let mut dir = Dir::S; - let mut start = value.find(b'|'); - let mut letters = vec![]; - let mut steps = 0; - loop { - steps += 1; - match value[start.1][start.0] { - b'+' => { - (dir, start) = [dir.turn_90(), dir.turn_90ccw()] - .into_iter() - .fmap_w(_ + start) - .find(|&(_, (x, y))| !value[y][x].is_ascii_whitespace()) - .unwrap(); - } - b' ' => return (letters.str().to_owned(), steps), - l => { - if l.is_ascii_alphabetic() { - letters.push(l) - } - start = (dir + start).unwrap() - } + let mut set = HashSet::default(); + let mut n = 0; + for freq in util::ints::<i32>(x).collect::<Vec<_>>().into_iter().cycle() { + n += freq; + if !set.insert(n) { + return n; } } + panic!() } const ISIZE: usize = include_bytes!("inp.txt").len(); |