From: Ben Harris Date: Sun, 5 May 2024 12:07:17 +0000 (+0100) Subject: 05b done X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~bjharris/git?a=commitdiff_plain;h=20ab8a1c409081be04bc8240b6d5f7ab9efc3094;p=aoc-2022.git 05b done --- diff --git a/05/05b.bqn b/05/05b.bqn new file mode 100644 index 0000000..5f4daac --- /dev/null +++ b/05/05b.bqn @@ -0,0 +1,33 @@ +Split←{ + blocknums ← +`𝕨 + # Set entries in blocknums to -1 when they correspond with delimiters. + blocknums ↩ (¯1¨)⌾(𝕨⊸/) blocknums + blocknums⊔𝕩 +} + +Prep1Proc←{ # Prepare one step of procedure + # Converts "move 3 from 1 to 3" into [⟨1,3⟩,⟨1,3⟩,⟨1,3⟩]. + •ParseFloat¨⟨1,3,5⟩⊏(' '=𝕩)Split𝕩 +} + +Prep←{ + ⟨rawmap, rawproc⟩←(""⊸≡¨𝕩)Split𝕩 + map0←⍉>¯1↓rawmap # Drop last line and transpose + map1←(1=4|↕≠map0)/map0 # Extract crate letters from chaff + map←⟨""⟩∾{(𝕩≠' ')/𝕩}¨<˘map1 # Convert to a 0-based list of strings + proc←>Prep1Proc¨rawproc + ⟨map, proc⟩ +} + +ExecuteMove←{⟨n,from,to⟩𝕊stacks: + crates←n↑from⊑stacks + stacks (n⊸↓)⌾(from⊸⊑) ↩ + stacks (crates⊸∾)⌾(to⊸⊑) ↩ + stacks +} + +Main←{𝕊⟨map,proc⟩: + ⊑¨1↓ map ExecuteMove˝⌽proc +} + +•Show Main Prep •file.Lines ⊑•args