$ RL $ $ AAA = (BBB, CCC) $ BBB = (DDD, EEE) $ CCC = (ZZZ, GGG) $ DDD = (DDD, DDD) $ EEE = (EEE, EEE) $ GGG = (GGG, GGG) $ ZZZ = (ZZZ, ZZZ) TestInput ← $ LLR $ $ AAA = (BBB, BBB) $ BBB = (AAA, ZZZ) $ ZZZ = (ZZZ, ZZZ) TestInputII ← $ LR $ $ 11A = (11B, XXX) $ 11B = (XXX, 11Z) $ 11Z = (11B, XXX) $ 22A = (22B, XXX) $ 22B = (22C, 22C) $ 22C = (22Z, 22Z) $ 22Z = (22B, 22B) $ XXX = (XXX, XXX) TestInputIII ← ParseI ← ( ⊓⊢≡(°[⊙⊙∘]≡°□↘1⊢regex"(.{3}) = \\((.{3}), (.{3})\\)")∩≡°□⊃↙↘1⊜□≠@\n. ⊙⊙⊙⊟⊃(∘|°⊟⊗"AAA"_"ZZZ"⋅∘|⊗:⋅⊙∘|⊗:⋅⊙⋅∘) ) ParseII ← ( ⊓⊢≡(°[⊙⊙∘]≡°□↘1⊢regex"(.{3}) = \\((.{3}), (.{3})\\)")∩≡°□⊃↙↘1⊜□≠@\n. ⊙⊙⊙⊟⊃(∘|°⊟≡(⊚⌕)"AZ"¤≡(⊢⇌)⋅∘|⊗:⋅⊙∘|⊗:⋅⊙⋅∘) ) PartI ← ⊙⋅⋅⋅;⍢⊃( +1 | ⋅∘ | ⊡⊟⊗⊙"LR"⊡◿⧻,⊙⊙⊙⋅∘ | ⋅⋅⋅⊙∘ )(¬∊⋅⋅⊙∘) 0 Lcm ← ×÷⊃(+⍢⊃◿∘(≠0×)⊃↧↥|⊙∘) PartII ← /Lcm≡(PartI)¤⊙⊙∩¤ PartI ParseI TestInput PartI ParseI TestInputII PartII ParseII TestInputIII PartI ParseI &fras "day08.in" PartII ParseII &fras "day08.in"