chiark / gitweb /
16a: faster search, now 19 levels in a minute
authorBen Harris <bjh21@bjh21.me.uk>
Tue, 21 May 2024 11:00:36 +0000 (13:00 +0200)
committerBen Harris <bjh21@bjh21.me.uk>
Tue, 21 May 2024 11:00:44 +0000 (13:00 +0200)
16/16a.bqn

index a83e7493cf63e37d9043dcf0660cf986279496c2..4775b48f66e650ec4305a3debde8b785a95c1efa 100644 (file)
@@ -8,18 +8,19 @@ Main←{
   names←{𝕩.name}¨𝕩
   flows←{𝕩.flow}¨𝕩
   tunnelses←{names⊐⥊⋈˘𝕩.tunnels}¨𝕩
+  tunnels←{⊑𝕨∊𝕩⊑tunnelses}⌜˜↕≠𝕩
   Open←{1⌾(𝕩⊸⊑)𝕨}
   Search←{
-    𝕊⟨0,·,·⟩: 0;
-    𝕊⟨time,·,vs⟩: ∧´vs? time×+´vs/flows;
-    𝕊⟨time,here,vs⟩:
-    •Show ⟨time,here,vs
+    𝕊⟨0,·,·⟩: 0;
+    𝕊⟨time,·,vs⟩: ∧´vs? time×+´vs/flows;
+    𝕊⟨time,here,vs,visited⟩:
+    #•Show ⟨time,here,vs,visited
     time-↩1
-    (+´vs/flows)+⌈´⟨Search⟨time,here,vs Open here⟩⟩∾{
-      Search⟨time,𝕩,vs⟩
-    }¨here⊑tunnelses
+    (+´vs/flows)+⌈´⟨Search⟨time,here,vs Open here,0¨visited⟩⟩∾{
+      Search⟨time,𝕩,vs,visited Open here
+    }¨/(here⊏tunnels)∧¬visited
   }
-  Search⟨30,0,0¨𝕩⟩
+  Search⟨19,0,0¨𝕩,0¨𝕩⟩
 }
 
 •Show Main Prep¨ •file.Lines ⊑•args