--- /dev/null
+Split←{
+ blocknums ← +`𝕨
+ # Set entries in blocknums to -1 when they correspond with delimiters.
+ blocknums ↩ (¯1¨)⌾(𝕨⊸/) blocknums
+ blocknums⊔𝕩
+}
+
+Prep←{
+ cubes←{
+ •ParseFloat¨(','=𝕩)Split 𝕩
+ }¨𝕩
+ # We assume that all co-ordinates are non-negative.
+ # "3" here allows a margin for flow all round the droplet.
+ droplet←(3+⌈˝>cubes)⥊0
+ droplet↩1¨⌾((1+cubes)⊸⊑)droplet
+}
+
+Main←{ 𝕊 droplet:
+ steam←1⌾(0⊸⊑∘⥊)(≢droplet)⥊0
+ Flood1←{ droplet 𝕊 steam:
+ (¬droplet) ∧ steam ∨ ∨´{(«∨»)⎉𝕩 steam}¨1+↕=𝕩
+ }
+ Flood←{ droplet 𝕊 steams:
+ (<droplet Flood1 ⊑steams)»steams
+ } •_while_ { droplet 𝕊 steams:
+ ≢´steams
+ }
+ ⟨steam,·⟩ ↩ droplet Flood ⟨steam,@⟩
+ NSurfacesInDir←{ +´⥊𝕩≠»𝕩 }
+ +´ NSurfacesInDir¨ ⍉⍟(↕=droplet) ¬steam
+}
+
+•Show Main Prep •file.Lines ⊑•args