feat(sterni/aoc/2022): day11 BQN solution
Change-Id: If9c510e3530ecc1acafa1d708eacf64eb1132db7 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7583 Reviewed-by: sterni <sternenseemann@systemli.org> Autosubmit: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI
This commit is contained in:
		
							parent
							
								
									fc31f93eb5
								
							
						
					
					
						commit
						867210f084
					
				
					 2 changed files with 48 additions and 0 deletions
				
			
		
							
								
								
									
										41
									
								
								users/sterni/exercises/aoc/2022/11/11.bqn
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								users/sterni/exercises/aoc/2022/11/11.bqn
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,41 @@ | |||
| # needs export BQNLIBS=/path/to/mlochbaum/bqn-libs | ||||
| ⟨Split⟩ ← •Import "/strings.bqn"∾˜¯1↓1⊑•SH "printenv"‿"BQNLIBS" | ||||
| ⟨ReadDec⟩ ← •Import "../../lib.bqn" | ||||
| MakeOp ← { | ||||
|   𝕊 a‿"+"‿b: 𝕊 a‿+‿b; | ||||
|   𝕊 a‿"*"‿b: 𝕊 a‿×‿b; | ||||
|   𝕊 a‿op‿b: | ||||
|   is‿xs ← (<"old") (≡¨⊔⊢) a‿b | ||||
|   {op´ (𝕩⋆≠xs) ∾ReadDec¨ is} | ||||
| } | ||||
| ParseMonkey ← { | ||||
|   ·‿items‿op‿if‿then‿else: | ||||
|   { | ||||
|     initial ⇐ ReadDec¨ ", " Split 18↓items | ||||
|     op ⇐ MakeOp " " Split 19↓op | ||||
|     if ⇐ ReadDec 21↓if | ||||
|     then ⇐ ReadDec 29↓then | ||||
|     else ⇐ ReadDec 30↓else | ||||
|   } | ||||
| } | ||||
| monkeys ← ParseMonkey¨ 1↓' '((+`(≠⟜⊑)¨)⊔⊢)0(≠⟜≠¨/⊢)•FLines "input" | ||||
| items ← {𝕩.initial}¨ monkeys | ||||
| lim ← ×´{𝕩.if}¨ monkeys | ||||
| 
 | ||||
| Sim ← { | ||||
|   div 𝕊 len: | ||||
|   Turn ← { | ||||
|     items 𝕊 turnidx: | ||||
|     i ← (≠monkeys)|turnidx | ||||
|     m ← i⊑monkeys | ||||
| 
 | ||||
|     worry ← lim|⌊div÷˜ m.Op¨ i⊑items | ||||
|     else‿then ← 2↑0 (=⟜(m.if⊸|)⊔⊢) worry | ||||
| 
 | ||||
|     ⟨then, else⟩⊸(∾˜¨)⌾(m.then‿m.else⊸⊏) ⟨⟩˙⌾(i⊸⊑) items | ||||
|   } | ||||
|   ×´2↑∨+˝(<items) ((≠⊑)⊸(>((↕⊣)=|)¨)×(≠¨˘)∘>∘(⊣»Turn`)) ↕len×≠items | ||||
| } | ||||
| 
 | ||||
| •Out "day11.1: "∾•Fmt 3 Sim 20 | ||||
| •Out "day11.2: "∾•Fmt 1 Sim 10000 | ||||
|  | @ -15,6 +15,13 @@ depot.nix.readTree.drvTargets { | |||
|       ngn-k | ||||
|       depot.tvix.eval | ||||
|     ]; | ||||
| 
 | ||||
|     BQNLIBS = pkgs.fetchFromGitHub { | ||||
|       owner = "mlochbaum"; | ||||
|       repo = "bqn-libs"; | ||||
|       rev = "d56d8ea0b8c294fac7274678d9ab112553a03f42"; | ||||
|       sha256 = "1c1bkqj62v8m13jgaa32ridy0fk5iqysq5b2qwxbqxhky5zwnk9h"; | ||||
|     }; | ||||
|   }; | ||||
| 
 | ||||
|   bqn = pkgs.runCommand "bqn-aoc-2022" | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue