From: Ben Harris Date: Tue, 7 May 2024 20:27:47 +0000 (+0100) Subject: 07b done (also slight readability improvement in 07a X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~bjharris/git?a=commitdiff_plain;h=954011476b6d2b5a2f30983be166dfa79c020b8b;p=aoc-2022.git 07b done (also slight readability improvement in 07a --- diff --git a/07/07a.bqn b/07/07a.bqn index c048925..f445839 100644 --- a/07/07a.bqn +++ b/07/07a.bqn @@ -30,7 +30,7 @@ Main←{ [sizes,filepaths]←⍉files sizes •ParseFloat¨↩ DirSize←{𝕊dir:+´({∨´dir⊸≡¨↑𝕩}¨filepaths)/sizes} - +´ 100000⊸≥⊸/ DirSize¨dirs + +´ {100000≥𝕩}⊸/ DirSize¨dirs } •Show Main Prep •file.Lines ⊑•args diff --git a/07/07b.bqn b/07/07b.bqn new file mode 100644 index 0000000..439c968 --- /dev/null +++ b/07/07b.bqn @@ -0,0 +1,38 @@ +Split←{ + blocknums ← +`𝕨 + # Set entries in blocknums to -1 when they correspond with delimiters. + blocknums ↩ (¯1¨)⌾(𝕨⊸/) blocknums + blocknums⊔𝕩 +} + +Prep←{ + 1↓(+`{"$ "≡2↑𝕩}¨𝕩)⊔𝕩 +} + +FS←{𝕤 + cwd←⟨⟩ + nothing←⟨0,2⟩⥊⟨⟩ # 0 by 23 array, to return from "cd" + Exec⇐{ + ⟨⟩𝕊⟨"cd", "/"⟩: cwd↩⟨⟩, nothing; + ⟨⟩𝕊⟨"cd", ".."⟩: cwd ¯1⊸↓↩, nothing; + ⟨⟩𝕊⟨"cd", dir⟩: cwd ∾⟜⟨dir⟩↩, nothing; + input𝕊⟨"ls"⟩: >{𝕊⟨size,name⟩:⟨size,cwd∾⟨name⟩⟩}∘{(' '=𝕩)Split𝕩}¨input + } + Cmd⇐{𝕨 Exec 1↓(' '=𝕩)Split𝕩} +} + +Main←{ + dev←FS @ + files←∾{(1↓𝕩)dev.Cmd(⊑𝕩)}¨𝕩 + dirs ←⍷({"dir"≡⊑𝕩}˘files)/files + dirs ↩¯1⊏⍉dirs + files↩⍷({"dir"≢⊑𝕩}˘files)/files + [sizes,filepaths]←⍉files + sizes •ParseFloat¨↩ + DirSize←{𝕊dir:+´({∨´dir⊸≡¨↑𝕩}¨filepaths)/sizes} + free←70000000-DirSize⟨⟩ + need←30000000-free + ⌊´{need≤𝕩}⊸/DirSize¨dirs +} + +•Show Main Prep •file.Lines ⊑•args