/ Uiua / 2024 / 06.ua
06.ua
 1  &fras ⊣ &args
 2  
 3  ⊜∘≠@\n.
 4  
 5  Init  ← ¯1_0⊢⊚=@^
 6  Step  ← ⨬(⟜+|⇌⍜⊢¯)=@#◡(⬚@.⊡+)
 7  Valid ← /××∩>¯1.⊙△
 8  
 9  map.[] ⊸Init
10  &p⊸⧻ ⊙⋅◌⍢(⊃(insert⊙0:⊙◌|⋅Step)|⋅⋅Valid)
11  
12  SkipForward ← ⍢(⟜+|×⊃(⋅Valid|≠@#⬚@.⊡+))
13  CheckCycle ← (
14    map.[] ⊸Init
15    ⍢(⊃(insert⊙0:⊙⊂|⇌⍜⊢¯SkipForward◌)|¬has□:⊙⊂)
16    Valid⋅◌
17  )
18  
19  ▽=@.◡⊡⊙◌°map
20  &p /+≡wait≡pool(CheckCycle⍜⊡⋅@#)⊙¤