feat(sterni/aoc/2022): day07 BQN solution
Did not have the motivation to go back and improve things, so this is my initial attempt. Change-Id: I3e129523d8f6c03bfbe50351f78d56ec7254a2dc Reviewed-on: https://cl.tvl.fyi/c/depot/+/7539 Reviewed-by: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI Autosubmit: sterni <sternenseemann@systemli.org>
This commit is contained in:
		
							parent
							
								
									16db5e2cc8
								
							
						
					
					
						commit
						11abe4784c
					
				
					 1 changed files with 24 additions and 0 deletions
				
			
		
							
								
								
									
										24
									
								
								users/sterni/exercises/aoc/2022/07/7.bqn
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								users/sterni/exercises/aoc/2022/07/7.bqn
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,24 @@ | |||
| lib ← •Import "../../lib.bqn" | ||||
| cmds ← 1↓ '$' ((+`= ⟜(⊑¨))⊔⊢) •FLines "input" | ||||
| paths ← (<⟨⟩) { | ||||
|   𝕨 𝕊 "$ ls": 𝕨; | ||||
|   𝕨 𝕊 "$ cd /": ⟨⟩; | ||||
|   𝕨 𝕊 "$ cd ..": (-1)↓𝕨; | ||||
|   𝕨 𝕊 𝕩: 𝕨∾<5↓𝕩 # "$ cd …" | ||||
| }` ⊑¨cmds | ||||
| ParseLs ← { | ||||
|   dirs‿files ← 2↑((lib.IsAsciiNum∘⊑∘⊑)¨⊔⊢) ((<' ')⊸lib.SplitOn)¨ 1↓𝕩 | ||||
|   (1⊑¨dirs)⋈(lib.ReadDec 0⊸⊑)¨files | ||||
| } | ||||
| dirlists ← ParseLs⌾(1⊸⊑)¨⥊⋈˘(("$ cd"⊸≢⟜(4⊸↑)∘⊑¨)∘(1⊸⊏)˘/⊢) (⍒≠¨paths)⊏⍉paths≍cmds | ||||
| DirSize ← {⊑𝕨 (⊑∘(1⊸⊑¨∘⊣⊐⊢)⊑⊣) <𝕩} | ||||
| DirName ← ∾'/'⊸∾¨ | ||||
| dirsizes ← ⊑¨ ⟨⟩ { | ||||
|   szs 𝕊 ⟨dir, subdirs‿files⟩: | ||||
|   Canon ← DirName dir⊸∾⟜⋈ | ||||
|   sz ← +´files∾szs⊸DirSize∘Canon¨ subdirs | ||||
|   szs∾<sz⋈DirName dir | ||||
| }˜´ ⌽dirlists | ||||
| 
 | ||||
| •Out "day07.1: "∾•Fmt +´ 100000 (≥/⊢) dirsizes | ||||
| •Out "day07.2: "∾•Fmt (30000000-70000000-⌈´dirsizes) ⌊´∘(≤/⊢) dirsizes | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue