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 |       ngn-k | ||||||
|       depot.tvix.eval |       depot.tvix.eval | ||||||
|     ]; |     ]; | ||||||
|  | 
 | ||||||
|  |     BQNLIBS = pkgs.fetchFromGitHub { | ||||||
|  |       owner = "mlochbaum"; | ||||||
|  |       repo = "bqn-libs"; | ||||||
|  |       rev = "d56d8ea0b8c294fac7274678d9ab112553a03f42"; | ||||||
|  |       sha256 = "1c1bkqj62v8m13jgaa32ridy0fk5iqysq5b2qwxbqxhky5zwnk9h"; | ||||||
|  |     }; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   bqn = pkgs.runCommand "bqn-aoc-2022" |   bqn = pkgs.runCommand "bqn-aoc-2022" | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue