93 lines
1.8 KiB
Text
93 lines
1.8 KiB
Text
~ "aoc.ua" ~ Lines
|
||
|
||
Lines &fras "input/day11.txt"
|
||
|
||
⍚(
|
||
°$"_: _"
|
||
⊙(◇⋕₃₆°/$"_ _")
|
||
⋕₃₆
|
||
≡⌞⊂
|
||
)
|
||
⍆ /◇⊂
|
||
Edges ←
|
||
|
||
# Queue ? Edges
|
||
TopoSort ← (
|
||
$Edges
|
||
|
||
°˜⊟ ⊸⍉
|
||
◴▽¬⊸∊
|
||
$Queue
|
||
|
||
⊙($Nodes[])
|
||
|
||
⍢( # Queue Nodes Edges
|
||
°⊂
|
||
# N Queue' Nodes Edges
|
||
⊃(⊙∘|⊂⊙⋅∘)
|
||
# N Queue' Nodes' Edges
|
||
◡(
|
||
⊕□ ⊸≡(≠⊙⊢) ⊙⋅⋅∘
|
||
∩°□ ⊃(⍣⊡[]0|⍣⊡[]1)
|
||
≡⊣
|
||
)
|
||
# Neighbors Edges' N Queue' Nodes' Edges
|
||
⊓($Neighbors|$Edges|◌|$Queue|$Nodes|◌)
|
||
◡(˜▽⟜(¬˜∊) ⊙≡⊣∘)
|
||
⊙◌
|
||
⊃($Queue ⊂⊙⋅∘|⋅⋅⋅∘|⋅∘)
|
||
| >0⧻
|
||
)
|
||
|
||
⋅⊙◌
|
||
)
|
||
|
||
# Count ? Edges End Start
|
||
Paths ← (
|
||
⊓($Edges|$End|$Start)
|
||
$Queue ⊸TopoSort
|
||
|
||
⍢(↘1|≠⊢⊙⋅∘)
|
||
|
||
# ⍢(↘¯1|≠⊣⊙⋅⋅∘)
|
||
⊙⊙◌
|
||
|
||
⟜($Counts insert⊢⊙(1 []))
|
||
↘1
|
||
|
||
⍢(°⊂
|
||
# N Queue' Counts Edges
|
||
◡(⊙⋅⋅∘
|
||
▽⊸≡(=⊙⊢∘)
|
||
≡⊣
|
||
)
|
||
$Neighbors
|
||
|
||
◡(⊙⋅⋅⊙
|
||
/+≡⌟(⍣get0)
|
||
)
|
||
⊃(⋅⋅⋅∘|insert ⊃(⋅⋅∘|⊙⋅⋅⋅∘))
|
||
| >0⧻
|
||
)
|
||
⋅⊙◌
|
||
⍣˜get0
|
||
)
|
||
|
||
Part₁ ← Paths⊙(∩⋕₃₆ "out" "you")
|
||
|
||
Without ← ▽⊸≡(≠⊙⊢∘)
|
||
|
||
Part₂ ← (
|
||
⊃(
|
||
| Paths ∧Without (◇⋕₃₆ {"out" "dac"}) ⊙(∩⋕₃₆ "fft" "svr")
|
||
| Paths ∧Without (◇⋕₃₆ {"svr" "out"}) ⊙(∩⋕₃₆ "dac" "fft")
|
||
| Paths ∧Without (◇⋕₃₆ {"fft" "svr"}) ⊙(∩⋕₃₆ "out" "dac")
|
||
| Paths ∧Without (◇⋕₃₆ {"out" "fft"}) ⊙(∩⋕₃₆ "dac" "svr")
|
||
| Paths ∧Without (◇⋕₃₆ {"svr" "out"}) ⊙(∩⋕₃₆ "fft" "dac")
|
||
| Paths ∧Without (◇⋕₃₆ {"dac" "svr"}) ⊙(∩⋕₃₆ "out" "fft")
|
||
)
|
||
+⊓(××|××)
|
||
)
|
||
|
||
Part₁ Edges
|
||
Part₂ Edges
|