'O\.'⎕R'.O' is a complete function, so you can just write that instead of {'O\.'⎕R'.O'⊢⍵}. Also I think it's faster to put ⍣≡ before ⍤1 so that you stop doing replacements for each row as soon as it doesn't change anymore. And the ⊢ before ⌽ is unnecessary, because ≡ and ⌽ are both functions, so they won't combine like arrays do.
APLcart has {↑⍺⍵} for "Two-row matrix from two vectors (pad shorter vector)". Is there a nicer way than ↑⌊⍥≢↑¨,⍥⊂ to do the same thing but instead of pad the shorter vector, truncate the longer vector?
@JonathanCarroll Welcome! I recommend taking a minute to familiarise yourself with apl.wiki/APL_Orchard#Features — where you can e.g. learn how to format code in monospace font.
@JonathanCarroll The inline syntax only works for a message without line breaks. Instead of using a multi-line message, simply post multiple consecutive messages, and they'll be visually joined as paragraphs.
Btw, I suspect (not tested) that +/∊⍸¨'O'='O\.'⎕R'.O'⍣≡↓⌽⍉p works.
@Adám Ooh! I've seen lots of people using helpers in their AoC solutions (in other languages) that do this because it's so common. Is the implementation much different to just mixing the flag=1 version?
@JonathanCarroll Yeah, it can read in the data straight to a single memory pocket, instead of building one pocket per line, only to need rewriting eveything into a single pocket upon Mix.