05.ua
1 &fras ⊣ &args 2 3 ParseSeeds ← ≡⋕↘1⊜□≠@ .°□⊢ 4 ParseRangeMap ← ⍜°[⊙⊙∘]⊃(-:|⋅∘|⋅+)⊜⋕≠@ . 5 ParseMaps ← ≡(□≡◇ParseRangeMap↘1⊜□≠@\n.°□) ↘1 6 Contains ← ≍1_0≤ 7 FindRangeMap ← ⊢⊚⊂⊙1 ≡Contains ⊙⍜⍉(↘1) 8 MapNum ← +⊡⊃FindRangeMap(⊂⊙0⊢⍉:) 9 SeedRanges ← ⍜(°⊟⍉)⟜+ ↯∞_2 10 Intersect ← ⊟⊓/↥/↧⍜⊟⍉ 11 IsEmpty ← /≤ 12 SplitAt ← ⊃(↧⊂∞)(↥⊂:¯∞) 13 MapSeedRange ← ( 14 ¤+⊙(⊙⊟ :⊙Intersect ∩SplitAt ⊙,) °[⊙⊙∘]: 15 ∩(▽¬≡IsEmpty.) 16 ) 17 FlatMapSeedRanges ← ◌∧(⊃⋅∘(∩⊂⊙::MapSeedRange)) ⊙⊙(.↯0_2[]) 18 MapSeedRanges ← ⊂∧(⊙⊂FlatMapSeedRanges:) :⊙⊙(↯0_2[]) 19 A ← /↧≡(∧(MapNum:°□):) ⊙¤ 20 B ← /↧⊢⍉ ∧(MapSeedRanges:°□) :SeedRanges 21 22 ⊃B A ⊃ParseSeeds ParseMaps ⊜□¬⌕"\n\n".