days 1–7 [except 3b]
This commit is contained in:
commit
4bee69d8b1
2 changed files with 97 additions and 0 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
test
|
||||||
|
input*
|
95
aoc.bqn
Normal file
95
aoc.bqn
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
ReadInt ⇐ (+ ⟜ (10⊸×))´ ∘ (-⟜'0') ∘ ⌽
|
||||||
|
IntFile ⇐ ReadInt¨ •FLines
|
||||||
|
|
||||||
|
aoc1 ⇐ {
|
||||||
|
A ⇐ +´ ∘ (>⟜(∞⊸»)) ∘ IntFile
|
||||||
|
B ⇐ +´ ∘ (>⟜(∞⊸»)) ∘ (+´˘) ∘ (3⊸↕) ∘ IntFile
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
Split ⇐ ((+`׬) - ⊢)∘= ⊔ ⊢ # from bqn crates lmao
|
||||||
|
Words ⇐ ((0≠≠)¨⊸/) ∘ (' '⊸Split)
|
||||||
|
CSV ⇐ ','⊸Split
|
||||||
|
CSVInt ⇐ ReadInt¨ CSV
|
||||||
|
|
||||||
|
aoc2 ⇐ {
|
||||||
|
Move1 ← { "forward" 𝕊 x: x‿0; "down" 𝕊 y: 0‿y; "up" 𝕊 y: ⟨0,-y⟩ }
|
||||||
|
Move ← Move1⟜ReadInt´ ∘ Words
|
||||||
|
MoveFile ← Move¨ ∘ •FLines
|
||||||
|
DoMoveB ← {dx‿da 𝕊 x‿y‿a : ⟨x+dx, y+(dx×a), a+da⟩}
|
||||||
|
|
||||||
|
A ⇐ ×´ +´ ∘ MoveFile
|
||||||
|
B ⇐ ×´ ∘ (2⊸↑) ∘ (0‿0‿0⊸(DoMoveB´)∘⌽) ∘ MoveFile
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
FromBin ⇐ +´ 2⊸⋆∘↕∘≠ × ⌽
|
||||||
|
BitFile ⇐ (-⟜'0') ∘ > ∘ •FLines
|
||||||
|
|
||||||
|
aoc3 ⇐ {
|
||||||
|
Most ← ⊑ ∘ ((⍒⊒) ⊸ ⊏)
|
||||||
|
Gamma ← Most˘ ∘ ⍉ ∘ BitFile
|
||||||
|
|
||||||
|
A ⇐ ¬⊸(×○FromBin) ∘ Gamma
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
aoc4 ⇐ {
|
||||||
|
BingoFile ← {
|
||||||
|
lines ← •FLines 𝕩
|
||||||
|
picks ⇐ CSVInt ⊑lines
|
||||||
|
boards ⇐ ReadInt¨ > Words¨ 1⊸↓˘ ∘‿6 ⥊ 1↓lines
|
||||||
|
states ⇐ boards <⊸(≡◶⊣‿0¨`) picks
|
||||||
|
}
|
||||||
|
|
||||||
|
Win ← ∨´ ((∧´ 0⊸≡)˘)∘(⍉∾⊢)
|
||||||
|
Score ← +´⥊
|
||||||
|
|
||||||
|
A ⇐ {
|
||||||
|
picks‿states ← BingoFile 𝕩
|
||||||
|
⊑ 0⊸≠⊸/ +´¨ picks × (Score × Win)˘¨ states
|
||||||
|
}
|
||||||
|
|
||||||
|
B ⇐ {
|
||||||
|
picks‿states ← BingoFile 𝕩
|
||||||
|
pick‿cur‿prev ← ⊑ ((∧´ Win˘)¨ states) / (picks ∾¨ states ⋈¨ »states)
|
||||||
|
pick × Score (¬Win˘ prev) / cur
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
aoc5 ⇐ {
|
||||||
|
VentFile ← ReadInt¨∘∾∘(CSV¨ 0‿2⊸⊏)∘Words¨ •FLines
|
||||||
|
To ← {𝕨≡𝕩? 𝕩; ⌽⍟(𝕨>𝕩) (𝕨⌊𝕩) ↓ ↕(1+𝕨⌈𝕩)}
|
||||||
|
DrawLine ← {x1‿y1‿x2‿y2: (x1 To x2) ⋈¨ (y1 To y2)}
|
||||||
|
Orth ← {∨´ =´ <˘ 2‿∘ ⥊ 𝕩}
|
||||||
|
Danger ← {1⊑ /⁼ ⊒ ∾DrawLine¨ 𝕩}
|
||||||
|
A ⇐ Danger (Orth¨⊸/ VentFile), B ⇐ Danger VentFile
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
aoc6 ⇐ {
|
||||||
|
FishFile ← /⁼∘CSVInt∘⊑∘•FLines
|
||||||
|
Step ← (⊑ × (/⁼6‿8)˙) +○(9⊸↑) «
|
||||||
|
Fishies ← {+´ Step⍟𝕨 FishFile 𝕩}
|
||||||
|
A ⇐ 80⊸Fishies, B ⇐ 256⊸Fishies
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
aoc7 ⇐ {
|
||||||
|
CrabFile ← CSVInt∘⊑∘•FLines
|
||||||
|
|
||||||
|
Range ← {l + ↕(⌈´𝕩)¬(l←⌊´𝕩)}
|
||||||
|
|
||||||
|
FuelA ← +´ ∘| -
|
||||||
|
FuelB ← +´∘(÷⟜2)∘(⊢×+⟜1)∘| -
|
||||||
|
|
||||||
|
_Go ← {⌊´ ps⊸𝔽¨ Range ps←CrabFile 𝕩}
|
||||||
|
A ⇐ FuelA _Go, B ⇐ FuelB _Go
|
||||||
|
}
|
Loading…
Reference in a new issue