Compare commits
7 Commits
ec23232f15
...
main
Author | SHA1 | Date | |
---|---|---|---|
4a508a09e4
|
|||
27a935933c
|
|||
2e2bea3cff
|
|||
c927118354
|
|||
2ec8ded269
|
|||
bf73a34e73
|
|||
663f9012f0
|
28
README.md
28
README.md
@@ -11,29 +11,41 @@ I'll probably try to vary languages a bit to get some variety.
|
||||
|
||||
## Solutions
|
||||
|
||||
### [Day 1](day1/)
|
||||
### [Day 1](day01/)
|
||||
**Language**: Python 3.12 (generics used)
|
||||
|
||||
### [Day 2](day2/)
|
||||
### [Day 2](day02/)
|
||||
**Language**: Python 3
|
||||
|
||||
### [Day 3](day3/)
|
||||
### [Day 3](day03/)
|
||||
**Language**: TypeScript (Deno)
|
||||
|
||||
**Note**: This one was re-written because what I initially wrote belongs on [r/programminghorror](https://www.reddit.com/r/programminghorror/).
|
||||
|
||||
### [Day 4](day4/)
|
||||
### [Day 4](day04/)
|
||||
**Language**: Golang
|
||||
|
||||
### [Day 5](day5/)
|
||||
### [Day 5](day05/)
|
||||
**Language**: Kotlin
|
||||
|
||||
**Note**: Here begin the optimisations! (some people got away with brute force, I decided not to even go there).
|
||||
|
||||
### [Day 6](day6/)
|
||||
### [Day 6](day06/)
|
||||
**Language**: Haskell
|
||||
|
||||
### [Day 7](day7/)
|
||||
### [Day 7](day07/)
|
||||
**Language**: JavaScript (Node)
|
||||
|
||||
**Note**: Yes, I used JSDoc for type-hints. But I think only insane people use JavaScript without JSDoc.
|
||||
### [Day 8](day08/)
|
||||
**Language**: Bash
|
||||
|
||||
**Note**: Here begin languages I'm not great at.
|
||||
|
||||
### [Day 9](day09/)
|
||||
**Language**: Rust
|
||||
|
||||
### [Day 10](day10/)
|
||||
**Language**: Lua
|
||||
|
||||
### [Day 11](day11/)
|
||||
**Language**: Java (17)
|
0
day5/.gitignore → day05/.gitignore
vendored
0
day5/.gitignore → day05/.gitignore
vendored
0
day5/.idea/.gitignore → day05/.idea/.gitignore
generated
vendored
0
day5/.idea/.gitignore → day05/.idea/.gitignore
generated
vendored
0
day5/.idea/day5.iml → day05/.idea/day5.iml
generated
0
day5/.idea/day5.iml → day05/.idea/day5.iml
generated
0
day5/.idea/misc.xml → day05/.idea/misc.xml
generated
0
day5/.idea/misc.xml → day05/.idea/misc.xml
generated
0
day5/.idea/vcs.xml → day05/.idea/vcs.xml
generated
0
day5/.idea/vcs.xml → day05/.idea/vcs.xml
generated
9
day08/eg1.txt
Normal file
9
day08/eg1.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
RL
|
||||
|
||||
AAA = (BBB, CCC)
|
||||
BBB = (DDD, EEE)
|
||||
CCC = (ZZZ, GGG)
|
||||
DDD = (DDD, DDD)
|
||||
EEE = (EEE, EEE)
|
||||
GGG = (GGG, GGG)
|
||||
ZZZ = (ZZZ, ZZZ)
|
5
day08/eg2.txt
Normal file
5
day08/eg2.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
LLR
|
||||
|
||||
AAA = (BBB, BBB)
|
||||
BBB = (AAA, ZZZ)
|
||||
ZZZ = (ZZZ, ZZZ)
|
10
day08/eg3.txt
Normal file
10
day08/eg3.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
LR
|
||||
|
||||
11A = (11B, XXX)
|
||||
11B = (XXX, 11Z)
|
||||
11Z = (11B, XXX)
|
||||
22A = (22B, XXX)
|
||||
22B = (22C, 22C)
|
||||
22C = (22Z, 22Z)
|
||||
22Z = (22B, 22B)
|
||||
XXX = (XXX, XXX)
|
768
day08/input.txt
Normal file
768
day08/input.txt
Normal file
@@ -0,0 +1,768 @@
|
||||
LRRRLRRLRLLRLRRLRLRLLRRRLRLRRRLRRRLRLRLRRLRLRRRLRRLLRRLLLRRLRRLRRRLRLRRRLRRLRRRLRRRLRRLRLLRRRLRLRRLRLRLRRRLRRLLRRRLLRRLRLRRLRRRLLLRRRLLRLLRRLRRRLRLRLRRLLLRRRLLRRLLLRLRLRRLLRLLRRLLLRRLLRRRLRLRRRLRLLRRRLRRRLRLRLRRRLRLRRRLRRRLRRRLLRLRLRLRRLRLRRRLRLRLLRRLRRLRRLRRRLRRRLRLLRLLLRRLRLRRRR
|
||||
|
||||
HGK = (LRV, NBJ)
|
||||
MCT = (PKH, PBF)
|
||||
FJD = (PGR, CJB)
|
||||
CQL = (XNN, GCT)
|
||||
PBV = (QSS, PDK)
|
||||
MPX = (DHN, NCX)
|
||||
KKH = (HBR, MXL)
|
||||
BLM = (DHN, NCX)
|
||||
TTF = (FRT, CHK)
|
||||
JDT = (SSQ, KHX)
|
||||
KKR = (STS, RVK)
|
||||
KRM = (JXX, LQG)
|
||||
TTD = (SGV, VPF)
|
||||
KCP = (NPP, CTV)
|
||||
PTM = (MNN, GTS)
|
||||
KTP = (GLC, GJH)
|
||||
FNQ = (NVT, LXV)
|
||||
TKQ = (DCR, GJX)
|
||||
LXV = (VCC, CNC)
|
||||
DVQ = (QHD, TPF)
|
||||
QRN = (TXV, HFX)
|
||||
KFH = (XHS, SHB)
|
||||
QRT = (KQH, FFN)
|
||||
XKC = (NTC, RMK)
|
||||
GTH = (NVL, FFK)
|
||||
MJS = (BLD, SQD)
|
||||
XQB = (HVK, LVV)
|
||||
CLV = (XQB, XQS)
|
||||
HTH = (NSS, BKT)
|
||||
FMK = (DSS, JMS)
|
||||
KDF = (VTP, GMR)
|
||||
VFG = (DLS, TPQ)
|
||||
RHB = (SMB, JVD)
|
||||
DPX = (LHH, GNB)
|
||||
XHC = (RDF, XQN)
|
||||
MGD = (PKH, PBF)
|
||||
PTP = (KCT, BJH)
|
||||
RVV = (FKC, XHC)
|
||||
BRL = (BJH, KCT)
|
||||
JJF = (MCK, BCJ)
|
||||
KGR = (GJM, GJM)
|
||||
KRF = (FMD, BGJ)
|
||||
XQN = (DDR, NNX)
|
||||
TVQ = (XTH, PJL)
|
||||
HMT = (JNJ, BVS)
|
||||
NKB = (JXR, FQM)
|
||||
SFJ = (KFH, CCB)
|
||||
FMB = (NKB, DGT)
|
||||
VKD = (FMD, BGJ)
|
||||
PJR = (BTS, LNN)
|
||||
RJG = (DGK, BRS)
|
||||
LSZ = (BDS, RXJ)
|
||||
CTV = (KFV, JVF)
|
||||
TGP = (CTJ, FBQ)
|
||||
HVX = (JMR, RQT)
|
||||
RVK = (CTC, RDJ)
|
||||
KGS = (KMM, JPV)
|
||||
SCC = (QCG, TCS)
|
||||
HBR = (TGG, KBG)
|
||||
PND = (BMC, HSK)
|
||||
FQD = (PTD, NGM)
|
||||
XGH = (KKS, HHC)
|
||||
NJJ = (RHC, SFQ)
|
||||
SNF = (FXJ, BSR)
|
||||
DDR = (TSQ, PJR)
|
||||
VRV = (NMJ, JBJ)
|
||||
FFL = (NRD, BPD)
|
||||
NMJ = (LTR, RQQ)
|
||||
FSK = (KVQ, JXS)
|
||||
MLF = (HGD, XHZ)
|
||||
RQQ = (JGF, GGS)
|
||||
KSN = (HGL, HVX)
|
||||
VCR = (QNN, LLB)
|
||||
PKH = (XSR, XDF)
|
||||
DFL = (FFK, NVL)
|
||||
LPQ = (FKS, PGM)
|
||||
DQR = (JQV, FDP)
|
||||
SSQ = (QPT, QPT)
|
||||
JNC = (SPK, JPG)
|
||||
SFQ = (BPG, NSQ)
|
||||
NCD = (TJB, GBP)
|
||||
CTJ = (KTF, DQF)
|
||||
VPC = (VFG, QVQ)
|
||||
SQD = (XQC, PHJ)
|
||||
XKH = (MJS, SNH)
|
||||
VDS = (FKD, PKD)
|
||||
GFF = (JCF, HBS)
|
||||
FKD = (MCM, LKD)
|
||||
XDT = (NTC, RMK)
|
||||
GRK = (RFQ, CSF)
|
||||
PKN = (NGK, FLG)
|
||||
QHD = (FSJ, FSJ)
|
||||
GHS = (HTD, KLJ)
|
||||
JGR = (RRD, XVQ)
|
||||
XVC = (KGS, CNG)
|
||||
XFH = (RTB, DDK)
|
||||
CJS = (KKR, BNX)
|
||||
KLJ = (NMN, LQK)
|
||||
PJB = (GTH, DFL)
|
||||
NPT = (JRJ, TVT)
|
||||
FJX = (GXQ, VCG)
|
||||
QBH = (QCL, VCB)
|
||||
SXT = (MKJ, BLC)
|
||||
GTR = (CDG, BFT)
|
||||
KDJ = (GVL, KTD)
|
||||
NTC = (RJP, SVQ)
|
||||
DTP = (BSR, FXJ)
|
||||
FDN = (JHK, VNQ)
|
||||
BKL = (SBV, XKD)
|
||||
VCX = (JQV, FDP)
|
||||
LQG = (DKP, HTH)
|
||||
MCM = (RSJ, PXH)
|
||||
VHT = (CVK, MBQ)
|
||||
XQS = (LVV, HVK)
|
||||
CPG = (VFR, LVN)
|
||||
QVQ = (TPQ, DLS)
|
||||
VSH = (JNJ, BVS)
|
||||
CFB = (FXD, FQK)
|
||||
BGF = (TTJ, GNT)
|
||||
MBB = (MKH, TKK)
|
||||
SBV = (MQQ, DSG)
|
||||
JBR = (NDX, MBB)
|
||||
SMT = (KKS, HHC)
|
||||
CSF = (QHG, VXS)
|
||||
SFN = (LRD, NJJ)
|
||||
GGS = (JLD, LPJ)
|
||||
CHK = (QGS, RQZ)
|
||||
RNH = (BCJ, MCK)
|
||||
GJX = (XKQ, XTF)
|
||||
TVB = (HGK, LJB)
|
||||
SGV = (NNQ, LTF)
|
||||
JHR = (XMH, SJB)
|
||||
NBN = (BBH, PJQ)
|
||||
BPV = (MRP, MRP)
|
||||
PCH = (LFV, JCP)
|
||||
KPR = (TDB, RVV)
|
||||
KKT = (SNM, QBH)
|
||||
DPS = (QPK, VSP)
|
||||
LXM = (RNH, JJF)
|
||||
TRK = (XVM, RHX)
|
||||
TLT = (QQT, SXT)
|
||||
DDB = (PML, MXS)
|
||||
DSG = (BVH, QML)
|
||||
MHD = (PMV, GHH)
|
||||
XVQ = (MFC, JBH)
|
||||
TTJ = (PJN, CQD)
|
||||
XTG = (VBD, GFF)
|
||||
VJF = (TVQ, NRP)
|
||||
NSS = (HHN, FXT)
|
||||
XSR = (CQL, RRX)
|
||||
SPK = (BBP, LMK)
|
||||
RSB = (KKR, BNX)
|
||||
XNL = (NJJ, LRD)
|
||||
SBH = (TVQ, NRP)
|
||||
JXR = (NJK, CGS)
|
||||
DGX = (VPL, TRK)
|
||||
KTD = (KSP, TGB)
|
||||
CBP = (LXM, TRM)
|
||||
DCM = (FTX, FNC)
|
||||
LMP = (NRX, JQL)
|
||||
QNP = (FGF, QBT)
|
||||
GJT = (TFD, FVN)
|
||||
NPP = (KFV, JVF)
|
||||
SVG = (DSS, JMS)
|
||||
KBG = (KKG, PHN)
|
||||
RDJ = (GJV, HBN)
|
||||
NQS = (SNM, QBH)
|
||||
GHR = (DVK, BCH)
|
||||
LBX = (BNR, KDJ)
|
||||
SCJ = (MPS, RCR)
|
||||
HHM = (FXP, LTB)
|
||||
LCV = (BFT, CDG)
|
||||
LKS = (MRS, GSH)
|
||||
JQL = (GBT, STL)
|
||||
LHK = (VVP, LDT)
|
||||
FLX = (TKQ, DCL)
|
||||
VFR = (HDF, VSV)
|
||||
XQK = (FJD, MCG)
|
||||
JNF = (VDF, XJB)
|
||||
GXL = (FQD, QFJ)
|
||||
GBT = (CLG, KBH)
|
||||
VFV = (SSL, FMM)
|
||||
RHX = (LKS, BSD)
|
||||
LRD = (RHC, SFQ)
|
||||
TKK = (GJT, NFV)
|
||||
XTF = (GPQ, XVX)
|
||||
DQH = (KSN, GNR)
|
||||
TPQ = (MPB, DSJ)
|
||||
HTS = (XVQ, RRD)
|
||||
LFN = (KVX, TTD)
|
||||
NBQ = (JCH, TTM)
|
||||
FMT = (DDB, NRN)
|
||||
KTF = (FLX, DRP)
|
||||
NRP = (XTH, PJL)
|
||||
RFQ = (QHG, VXS)
|
||||
CRG = (BPJ, LRF)
|
||||
NRN = (PML, MXS)
|
||||
MXF = (CTV, NPP)
|
||||
BBV = (XXR, KQB)
|
||||
LVN = (VSV, HDF)
|
||||
PTK = (MVK, MVK)
|
||||
NHM = (TXP, DLL)
|
||||
NTK = (FGC, CGG)
|
||||
LRF = (NRM, VHT)
|
||||
XGG = (SSN, PBV)
|
||||
ZZZ = (HRP, SRS)
|
||||
DQF = (DRP, FLX)
|
||||
NTT = (RCT, VBL)
|
||||
HDH = (MGD, MCT)
|
||||
CVK = (DXG, DCM)
|
||||
KHX = (QPT, FHZ)
|
||||
GNR = (HVX, HGL)
|
||||
KVQ = (CBP, VMP)
|
||||
JFC = (VFV, KRP)
|
||||
FLG = (QTT, VKR)
|
||||
VSP = (JXH, PKN)
|
||||
HQN = (GJH, GLC)
|
||||
GNV = (FXD, FQK)
|
||||
BCJ = (MRT, GSD)
|
||||
KKG = (DDC, XMN)
|
||||
TLM = (JJM, QGK)
|
||||
VMP = (LXM, TRM)
|
||||
MPB = (NGN, JTD)
|
||||
NFV = (TFD, FVN)
|
||||
FVN = (DCP, PXL)
|
||||
NMQ = (VNK, DGX)
|
||||
NJB = (VXB, SFF)
|
||||
NPD = (NKB, DGT)
|
||||
JJM = (BBV, GPV)
|
||||
PQT = (XQK, KBT)
|
||||
PJL = (NQS, KKT)
|
||||
FTX = (PPL, RGJ)
|
||||
JCH = (DPP, GDB)
|
||||
SCN = (TKM, CLV)
|
||||
MKJ = (JFQ, FMT)
|
||||
JGN = (QBS, MFB)
|
||||
GJH = (SLD, LQT)
|
||||
GVL = (TGB, KSP)
|
||||
NBM = (QRN, CGF)
|
||||
XXR = (FMK, SVG)
|
||||
FQK = (QBN, NTK)
|
||||
BLX = (BMC, HSK)
|
||||
RCR = (JJR, DPX)
|
||||
TTG = (CTJ, FBQ)
|
||||
SSL = (KHQ, XFH)
|
||||
PKD = (LKD, MCM)
|
||||
RJH = (XKH, JCR)
|
||||
VPF = (NNQ, LTF)
|
||||
TJB = (TXQ, JFC)
|
||||
XHZ = (NHM, PFM)
|
||||
XTL = (RXJ, BDS)
|
||||
HQS = (KPR, GLQ)
|
||||
RRD = (MFC, JBH)
|
||||
FLN = (VCH, BGT)
|
||||
VBD = (HBS, JCF)
|
||||
TLR = (XTR, FSK)
|
||||
CHD = (FXP, LTB)
|
||||
HHN = (CNB, MDX)
|
||||
RJP = (TLM, NNT)
|
||||
HKC = (RVN, JKR)
|
||||
SJL = (CHD, HHM)
|
||||
FDP = (TLR, SRP)
|
||||
VPK = (MRP, RND)
|
||||
VQP = (BHF, MVH)
|
||||
XMN = (GRK, NLN)
|
||||
MVK = (MLS, MLS)
|
||||
GXM = (GJF, CRG)
|
||||
KFB = (HTD, KLJ)
|
||||
GFR = (XNL, SFN)
|
||||
BCL = (SRS, HRP)
|
||||
NLT = (SNT, VMJ)
|
||||
BRQ = (FQD, QFJ)
|
||||
VPL = (XVM, RHX)
|
||||
VJN = (SJB, XMH)
|
||||
GHH = (NSG, HVR)
|
||||
BBP = (XGH, SMT)
|
||||
DCB = (MVS, NRC)
|
||||
DGK = (FQP, KDF)
|
||||
BLC = (JFQ, FMT)
|
||||
TCS = (PVK, HSJ)
|
||||
PPL = (RSF, FSX)
|
||||
QTT = (KHG, QLF)
|
||||
PML = (NCQ, VRK)
|
||||
LLB = (SGJ, VHX)
|
||||
VXK = (FKD, PKD)
|
||||
FSX = (CJS, RSB)
|
||||
KKS = (SJL, SFR)
|
||||
JLD = (RXB, RJL)
|
||||
VGG = (XTL, LSZ)
|
||||
BLG = (KFH, CCB)
|
||||
TPF = (FSJ, GDP)
|
||||
JFQ = (DDB, NRN)
|
||||
RDF = (NNX, DDR)
|
||||
HGL = (RQT, JMR)
|
||||
KQB = (SVG, FMK)
|
||||
RMM = (JHK, VNQ)
|
||||
BCH = (VPC, GXH)
|
||||
MCG = (PGR, CJB)
|
||||
JBT = (PLF, VQP)
|
||||
NSQ = (PTK, TNS)
|
||||
RVN = (CMP, DBF)
|
||||
XGK = (VCH, BGT)
|
||||
BNR = (KTD, GVL)
|
||||
QML = (QQV, VFJ)
|
||||
KSD = (SFB, GGM)
|
||||
PDK = (JJH, BNH)
|
||||
KBH = (NTT, BVQ)
|
||||
MSA = (PFM, NHM)
|
||||
JRJ = (KXT, SFV)
|
||||
AAA = (SRS, HRP)
|
||||
NRD = (NLM, FXR)
|
||||
QCL = (JTT, LBX)
|
||||
CTC = (HBN, GJV)
|
||||
DDK = (LCV, GTR)
|
||||
PBF = (XSR, XDF)
|
||||
TKM = (XQS, XQB)
|
||||
SNM = (VCB, QCL)
|
||||
JCC = (LQQ, RFC)
|
||||
GSN = (VXB, SFF)
|
||||
CNG = (JPV, KMM)
|
||||
VMJ = (GVC, HGN)
|
||||
CXT = (LDT, VVP)
|
||||
CLG = (NTT, BVQ)
|
||||
HHC = (SFR, SJL)
|
||||
VTP = (SNF, DTP)
|
||||
PKA = (STR, TVR)
|
||||
MFB = (NJB, GSN)
|
||||
NNX = (TSQ, PJR)
|
||||
LCP = (HGK, LJB)
|
||||
MQQ = (BVH, QML)
|
||||
MXL = (TGG, KBG)
|
||||
FHZ = (TVR, STR)
|
||||
LQK = (SXB, LHF)
|
||||
QNM = (RXR, BXF)
|
||||
LNN = (SKN, BXL)
|
||||
HSJ = (PJB, VVJ)
|
||||
SHS = (SPK, JPG)
|
||||
VKR = (QLF, KHG)
|
||||
VMC = (CRG, GJF)
|
||||
XHS = (KQK, FNQ)
|
||||
BKT = (HHN, FXT)
|
||||
NCJ = (PMV, GHH)
|
||||
RQL = (NBF, CXB)
|
||||
MNG = (CCT, SRB)
|
||||
MQB = (CKV, XTG)
|
||||
PGR = (XJS, SCN)
|
||||
JCP = (VJS, FJX)
|
||||
TFD = (PXL, DCP)
|
||||
XTH = (NQS, KKT)
|
||||
JBH = (GXM, VMC)
|
||||
SLD = (BBC, RQH)
|
||||
BBH = (XCD, HQS)
|
||||
HRP = (VDJ, NCD)
|
||||
CCT = (JNC, SHS)
|
||||
VNK = (VPL, TRK)
|
||||
QPT = (STR, TVR)
|
||||
MJC = (FLN, XGK)
|
||||
TBK = (GJM, NCH)
|
||||
JCR = (SNH, MJS)
|
||||
TBC = (KVX, TTD)
|
||||
HDF = (GFR, TMR)
|
||||
DJV = (SFJ, BLG)
|
||||
VDJ = (GBP, TJB)
|
||||
FKS = (KKH, FGH)
|
||||
TXV = (NCJ, MHD)
|
||||
FGH = (MXL, HBR)
|
||||
RSJ = (CPG, RFT)
|
||||
MVS = (HMT, VSH)
|
||||
QBN = (CGG, FGC)
|
||||
GSH = (HTS, JGR)
|
||||
FBQ = (DQF, KTF)
|
||||
SFR = (CHD, HHM)
|
||||
PHN = (XMN, DDC)
|
||||
KRS = (GNV, CFB)
|
||||
QSS = (JJH, BNH)
|
||||
BXL = (NJG, HKC)
|
||||
RRX = (GCT, XNN)
|
||||
KCT = (SLM, CCK)
|
||||
BVQ = (RCT, VBL)
|
||||
NMN = (LHF, SXB)
|
||||
RQV = (SBV, XKD)
|
||||
JJR = (LHH, GNB)
|
||||
VCC = (BPV, VPK)
|
||||
TPB = (MJC, XBQ)
|
||||
SSN = (QSS, PDK)
|
||||
GXH = (VFG, QVQ)
|
||||
MRT = (VJN, JHR)
|
||||
CRL = (VDF, XJB)
|
||||
RFC = (LMX, PVR)
|
||||
FGC = (CKT, SVS)
|
||||
XKS = (BGV, MPT)
|
||||
CCB = (XHS, SHB)
|
||||
QGK = (BBV, GPV)
|
||||
FTP = (SSQ, SSQ)
|
||||
BSB = (MLS, HKM)
|
||||
SKN = (HKC, NJG)
|
||||
MNL = (TBC, LFN)
|
||||
MRP = (QLX, QLX)
|
||||
BSD = (MRS, GSH)
|
||||
GXQ = (TTG, TGP)
|
||||
FXD = (QBN, NTK)
|
||||
GDP = (QJV, LXZ)
|
||||
PJN = (DKM, NLT)
|
||||
BNH = (KGR, TBK)
|
||||
LHH = (RBC, HFK)
|
||||
TDB = (XHC, FKC)
|
||||
PXH = (CPG, RFT)
|
||||
DRG = (JCR, XKH)
|
||||
VXB = (NQQ, FLR)
|
||||
JBJ = (RQQ, LTR)
|
||||
JCF = (LPQ, JPC)
|
||||
SJR = (QNN, LLB)
|
||||
CGS = (HQB, FGG)
|
||||
GLN = (KFB, GHS)
|
||||
XKD = (MQQ, DSG)
|
||||
HBN = (KSD, TNM)
|
||||
XHB = (HQN, KTP)
|
||||
FVJ = (GNV, CFB)
|
||||
LJB = (NBJ, LRV)
|
||||
NVL = (XVC, FBC)
|
||||
SXB = (KRS, FVJ)
|
||||
RHC = (BPG, NSQ)
|
||||
LHF = (KRS, FVJ)
|
||||
STR = (BNF, GLN)
|
||||
MCK = (GSD, MRT)
|
||||
RBC = (BRL, PTP)
|
||||
MRS = (HTS, JGR)
|
||||
SFF = (FLR, NQQ)
|
||||
SRP = (FSK, XTR)
|
||||
XQC = (BRQ, GXL)
|
||||
BTS = (BXL, SKN)
|
||||
MFC = (GXM, VMC)
|
||||
BGT = (NMD, PCH)
|
||||
RGJ = (RSF, FSX)
|
||||
FPN = (SXT, QQT)
|
||||
BNF = (KFB, GHS)
|
||||
VVP = (XGJ, GPD)
|
||||
CGG = (CKT, SVS)
|
||||
XVX = (FMB, NPD)
|
||||
DDC = (GRK, NLN)
|
||||
JXX = (DKP, HTH)
|
||||
JKR = (CMP, DBF)
|
||||
SGJ = (KVS, CGD)
|
||||
TRM = (RNH, JJF)
|
||||
GNB = (HFK, RBC)
|
||||
CGK = (DCB, SBB)
|
||||
MDN = (RFC, LQQ)
|
||||
XJS = (CLV, TKM)
|
||||
LTF = (PTM, KRX)
|
||||
NCH = (GMX, VGG)
|
||||
NSG = (DRG, RJH)
|
||||
RXJ = (LCP, TVB)
|
||||
QLF = (JJQ, FSN)
|
||||
TSQ = (BTS, LNN)
|
||||
FNC = (RGJ, PPL)
|
||||
RXB = (PQT, QDN)
|
||||
SNH = (BLD, SQD)
|
||||
PJQ = (XCD, HQS)
|
||||
DHN = (BGF, XXN)
|
||||
QNN = (SGJ, VHX)
|
||||
BRS = (FQP, KDF)
|
||||
DRP = (DCL, TKQ)
|
||||
KMM = (BKX, CGK)
|
||||
MLS = (BCL, BCL)
|
||||
QQT = (BLC, MKJ)
|
||||
FFK = (FBC, XVC)
|
||||
BPG = (PTK, TNS)
|
||||
LTB = (XFC, KRM)
|
||||
XTR = (JXS, KVQ)
|
||||
PDF = (DVK, BCH)
|
||||
KVX = (SGV, VPF)
|
||||
DPP = (JVB, GKC)
|
||||
VVJ = (GTH, DFL)
|
||||
KVS = (BQG, KCQ)
|
||||
LFV = (VJS, FJX)
|
||||
TNG = (PJQ, BBH)
|
||||
NRM = (MBQ, CVK)
|
||||
CMP = (VKD, KRF)
|
||||
GTS = (BPT, TPB)
|
||||
BHF = (DJV, SSD)
|
||||
JNJ = (RGX, VRB)
|
||||
DKM = (VMJ, SNT)
|
||||
TSM = (QBS, MFB)
|
||||
BKX = (SBB, DCB)
|
||||
FBC = (CNG, KGS)
|
||||
TNM = (SFB, GGM)
|
||||
BQG = (TSM, JGN)
|
||||
TMR = (XNL, SFN)
|
||||
NGK = (VKR, QTT)
|
||||
GDB = (GKC, JVB)
|
||||
TXP = (FPN, TLT)
|
||||
NRX = (STL, GBT)
|
||||
BPT = (XBQ, MJC)
|
||||
HGN = (JPS, QLM)
|
||||
QLM = (SCJ, RNV)
|
||||
XCT = (DGX, VNK)
|
||||
HTD = (LQK, NMN)
|
||||
TLQ = (JRJ, TVT)
|
||||
GJM = (GMX, GMX)
|
||||
KFV = (GSS, TPM)
|
||||
KXT = (RJG, MGB)
|
||||
GSD = (JHR, VJN)
|
||||
NVT = (VCC, CNC)
|
||||
KQH = (XCT, NMQ)
|
||||
HVR = (DRG, RJH)
|
||||
LMK = (XGH, SMT)
|
||||
JTD = (GSL, MQB)
|
||||
PMV = (HVR, NSG)
|
||||
JPG = (LMK, BBP)
|
||||
RMK = (RJP, SVQ)
|
||||
LMX = (XLJ, PXQ)
|
||||
MGB = (DGK, BRS)
|
||||
PTD = (HDH, THF)
|
||||
FQM = (CGS, NJK)
|
||||
GSS = (BLX, PND)
|
||||
GJF = (BPJ, LRF)
|
||||
DLL = (TLT, FPN)
|
||||
NJG = (JKR, RVN)
|
||||
JPC = (PGM, FKS)
|
||||
SRS = (NCD, VDJ)
|
||||
XVM = (LKS, BSD)
|
||||
KRX = (GTS, MNN)
|
||||
RQT = (BKL, RQV)
|
||||
BLD = (PHJ, XQC)
|
||||
LKD = (PXH, RSJ)
|
||||
NJN = (VDT, NBM)
|
||||
GPV = (KQB, XXR)
|
||||
VDF = (VXK, VDS)
|
||||
CKT = (DQR, VCX)
|
||||
SLF = (LGK, XGG)
|
||||
PSL = (XDT, XKC)
|
||||
NNQ = (PTM, KRX)
|
||||
TVR = (GLN, BNF)
|
||||
PVK = (PJB, VVJ)
|
||||
DXG = (FTX, FNC)
|
||||
NBJ = (DQH, FDJ)
|
||||
CXB = (XSQ, QNP)
|
||||
NBF = (QNP, XSQ)
|
||||
MBQ = (DCM, DXG)
|
||||
BBX = (JQL, NRX)
|
||||
XBQ = (XGK, FLN)
|
||||
GKC = (MLD, FFL)
|
||||
GSL = (CKV, XTG)
|
||||
SBB = (NRC, MVS)
|
||||
QJV = (KQP, XHB)
|
||||
FMM = (XFH, KHQ)
|
||||
TXQ = (KRP, VFV)
|
||||
DCR = (XKQ, XTF)
|
||||
BJH = (CCK, SLM)
|
||||
RGX = (QRV, QRV)
|
||||
SFV = (RJG, MGB)
|
||||
GFQ = (PLF, VQP)
|
||||
BGJ = (TCQ, SLF)
|
||||
LTR = (GGS, JGF)
|
||||
JVD = (QVS, XKS)
|
||||
HKM = (BCL, ZZZ)
|
||||
GBP = (JFC, TXQ)
|
||||
VBL = (BLM, MPX)
|
||||
GRV = (QPK, VSP)
|
||||
BBC = (KCP, MXF)
|
||||
BVH = (VFJ, QQV)
|
||||
FDJ = (KSN, GNR)
|
||||
KCQ = (TSM, JGN)
|
||||
NNT = (QGK, JJM)
|
||||
BVS = (RGX, VRB)
|
||||
XGJ = (NPT, TLQ)
|
||||
JPV = (BKX, CGK)
|
||||
NCX = (XXN, BGF)
|
||||
SFB = (FTP, FTP)
|
||||
QQV = (SJR, VCR)
|
||||
KBT = (FJD, MCG)
|
||||
GNT = (CQD, PJN)
|
||||
NLM = (QRT, XNT)
|
||||
CJB = (XJS, SCN)
|
||||
CCK = (NBN, TNG)
|
||||
XLJ = (CRL, JNF)
|
||||
HVK = (MNG, CVP)
|
||||
GLQ = (RVV, TDB)
|
||||
JJH = (KGR, TBK)
|
||||
MVH = (SSD, DJV)
|
||||
PLF = (MVH, BHF)
|
||||
HQB = (CKL, DVQ)
|
||||
HBS = (LPQ, JPC)
|
||||
NRC = (HMT, VSH)
|
||||
CGD = (KCQ, BQG)
|
||||
BGV = (RMM, FDN)
|
||||
TTM = (DPP, GDB)
|
||||
DKP = (NSS, BKT)
|
||||
MKH = (NFV, GJT)
|
||||
RQZ = (GHR, PDF)
|
||||
XMH = (DPS, GRV)
|
||||
JMS = (SBH, VJF)
|
||||
DVK = (VPC, GXH)
|
||||
VRB = (QRV, TTF)
|
||||
XSQ = (FGF, QBT)
|
||||
DDQ = (NJN, KQV)
|
||||
HFK = (BRL, PTP)
|
||||
NBA = (RXJ, BDS)
|
||||
SLM = (NBN, TNG)
|
||||
NDX = (TKK, MKH)
|
||||
VFJ = (VCR, SJR)
|
||||
XNN = (TML, RGD)
|
||||
KQV = (NBM, VDT)
|
||||
BDS = (LCP, TVB)
|
||||
JVF = (TPM, GSS)
|
||||
FVH = (CGL, NBQ)
|
||||
CNB = (GFQ, JBT)
|
||||
RHA = (PDF, GHR)
|
||||
QFJ = (NGM, PTD)
|
||||
JXS = (VMP, CBP)
|
||||
XKQ = (GPQ, XVX)
|
||||
FXJ = (XPP, JBR)
|
||||
RFT = (VFR, LVN)
|
||||
DSS = (VJF, SBH)
|
||||
JPS = (SCJ, RNV)
|
||||
XDF = (CQL, RRX)
|
||||
FFN = (NMQ, XCT)
|
||||
VJS = (VCG, GXQ)
|
||||
TJS = (XDT, XKC)
|
||||
SMB = (QVS, XKS)
|
||||
FSJ = (QJV, QJV)
|
||||
QRV = (FRT, FRT)
|
||||
TML = (CXT, LHK)
|
||||
CQD = (NLT, DKM)
|
||||
SHB = (KQK, FNQ)
|
||||
PGM = (KKH, FGH)
|
||||
RSF = (CJS, RSB)
|
||||
LXZ = (XHB, KQP)
|
||||
KHG = (JJQ, FSN)
|
||||
CGF = (HFX, TXV)
|
||||
BFT = (PVS, DDQ)
|
||||
NJK = (HQB, FGG)
|
||||
TCQ = (XGG, LGK)
|
||||
SNT = (HGN, GVC)
|
||||
VCG = (TGP, TTG)
|
||||
VSV = (GFR, TMR)
|
||||
THF = (MGD, MCT)
|
||||
TVT = (SFV, KXT)
|
||||
LQQ = (PVR, LMX)
|
||||
CKL = (QHD, QHD)
|
||||
GPD = (NPT, TLQ)
|
||||
DSJ = (NGN, JTD)
|
||||
CVP = (SRB, CCT)
|
||||
VNQ = (GQL, FVH)
|
||||
MDX = (GFQ, JBT)
|
||||
PVR = (PXQ, XLJ)
|
||||
MXS = (VRK, NCQ)
|
||||
DBF = (KRF, VKD)
|
||||
CDA = (KQP, XHB)
|
||||
XCD = (KPR, GLQ)
|
||||
GJV = (KSD, TNM)
|
||||
JMR = (BKL, RQV)
|
||||
CKV = (GFF, VBD)
|
||||
GMR = (DTP, SNF)
|
||||
VCH = (NMD, PCH)
|
||||
JJQ = (RQL, JVX)
|
||||
SSD = (BLG, SFJ)
|
||||
NQQ = (BBX, LMP)
|
||||
PVS = (KQV, NJN)
|
||||
BSR = (JBR, XPP)
|
||||
SVQ = (NNT, TLM)
|
||||
HSK = (HJM, MNL)
|
||||
RQH = (MXF, KCP)
|
||||
FXP = (XFC, KRM)
|
||||
BPD = (FXR, NLM)
|
||||
FQP = (VTP, GMR)
|
||||
HJM = (TBC, LFN)
|
||||
KQP = (KTP, HQN)
|
||||
TPM = (PND, BLX)
|
||||
DCP = (MDN, JCC)
|
||||
LPJ = (RXB, RJL)
|
||||
QBT = (RHB, VBG)
|
||||
KRP = (FMM, SSL)
|
||||
NCQ = (VRV, GFS)
|
||||
FLR = (BBX, LMP)
|
||||
VRK = (GFS, VRV)
|
||||
RNV = (RCR, MPS)
|
||||
XXN = (GNT, TTJ)
|
||||
DLS = (DSJ, MPB)
|
||||
TGG = (KKG, PHN)
|
||||
CNC = (BPV, VPK)
|
||||
CDG = (DDQ, PVS)
|
||||
JXH = (NGK, FLG)
|
||||
BXF = (CJN, SCC)
|
||||
FMD = (SLF, TCQ)
|
||||
JQV = (TLR, SRP)
|
||||
RGD = (CXT, LHK)
|
||||
QGS = (PDF, GHR)
|
||||
RTB = (LCV, GTR)
|
||||
RXR = (SCC, CJN)
|
||||
FKC = (XQN, RDF)
|
||||
RJL = (PQT, QDN)
|
||||
DGT = (FQM, JXR)
|
||||
GMX = (XTL, XTL)
|
||||
KHQ = (RTB, DDK)
|
||||
GCT = (TML, RGD)
|
||||
SJB = (GRV, DPS)
|
||||
SVS = (DQR, VCX)
|
||||
NLN = (RFQ, CSF)
|
||||
NGN = (GSL, MQB)
|
||||
PFM = (TXP, DLL)
|
||||
VCB = (JTT, LBX)
|
||||
QBS = (NJB, GSN)
|
||||
XPP = (NDX, MBB)
|
||||
QCG = (HSJ, PVK)
|
||||
LGK = (SSN, PBV)
|
||||
NGM = (HDH, THF)
|
||||
BMC = (HJM, MNL)
|
||||
GGM = (FTP, JDT)
|
||||
PXL = (MDN, JCC)
|
||||
PHJ = (BRQ, GXL)
|
||||
QVS = (MPT, BGV)
|
||||
GQL = (NBQ, CGL)
|
||||
GLC = (SLD, LQT)
|
||||
MNN = (TPB, BPT)
|
||||
TGB = (VHM, QNM)
|
||||
MPS = (DPX, JJR)
|
||||
TNS = (MVK, BSB)
|
||||
QLX = (HGD, HGD)
|
||||
JHK = (FVH, GQL)
|
||||
CGL = (JCH, TTM)
|
||||
FGF = (VBG, RHB)
|
||||
CJN = (TCS, QCG)
|
||||
FSN = (RQL, JVX)
|
||||
XNT = (KQH, FFN)
|
||||
GVC = (JPS, QLM)
|
||||
LDT = (XGJ, GPD)
|
||||
LQT = (RQH, BBC)
|
||||
VHX = (KVS, CGD)
|
||||
PXQ = (JNF, CRL)
|
||||
FGG = (CKL, DVQ)
|
||||
STL = (KBH, CLG)
|
||||
FRT = (QGS, QGS)
|
||||
RCT = (BLM, MPX)
|
||||
VXS = (TJS, PSL)
|
||||
FXT = (MDX, CNB)
|
||||
KQK = (LXV, NVT)
|
||||
QDN = (KBT, XQK)
|
||||
NMD = (JCP, LFV)
|
||||
GPQ = (FMB, NPD)
|
||||
QPK = (PKN, JXH)
|
||||
STS = (CTC, RDJ)
|
||||
XJB = (VDS, VXK)
|
||||
BPJ = (NRM, VHT)
|
||||
GFS = (JBJ, NMJ)
|
||||
HFX = (MHD, NCJ)
|
||||
QHG = (TJS, PSL)
|
||||
FXR = (QRT, XNT)
|
||||
JTT = (KDJ, BNR)
|
||||
VHM = (RXR, BXF)
|
||||
KSP = (VHM, QNM)
|
||||
JVB = (MLD, FFL)
|
||||
XFC = (LQG, JXX)
|
||||
VBG = (JVD, SMB)
|
||||
JVX = (NBF, CXB)
|
||||
BNX = (STS, RVK)
|
||||
VDT = (QRN, CGF)
|
||||
MPT = (RMM, FDN)
|
||||
HGD = (PFM, NHM)
|
||||
SRB = (SHS, JNC)
|
||||
MLD = (BPD, NRD)
|
||||
DCL = (DCR, GJX)
|
||||
LRV = (FDJ, DQH)
|
||||
RND = (QLX, MLF)
|
||||
LVV = (CVP, MNG)
|
||||
JGF = (LPJ, JLD)
|
75
day08/solution.sh
Executable file
75
day08/solution.sh
Executable file
@@ -0,0 +1,75 @@
|
||||
#!/bin/bash
|
||||
|
||||
declare -A mappings
|
||||
|
||||
gcd() {
|
||||
local a=$1
|
||||
local b=$2
|
||||
while [ $b -ne 0 ]
|
||||
do
|
||||
local t=$b
|
||||
b=$(($a % $b))
|
||||
a=$t
|
||||
done
|
||||
echo ${a#-}
|
||||
}
|
||||
|
||||
lcm() {
|
||||
local d=$(gcd $1 $2)
|
||||
echo $(($1 * $2 / $d))
|
||||
}
|
||||
|
||||
findcount() {
|
||||
cur=$1
|
||||
instructions=$2
|
||||
pattern=$3
|
||||
count=0
|
||||
while [[ $cur != $pattern ]]
|
||||
do
|
||||
for (( idx = 0; idx < ${#instructions}; idx++ ))
|
||||
do
|
||||
((count += 1))
|
||||
instruction=${instructions:$idx:1}
|
||||
part=0
|
||||
if [ $instruction = "R" ]
|
||||
then
|
||||
part=4
|
||||
fi
|
||||
mapping=${mappings[$cur]}
|
||||
cur=${mapping:$part:3}
|
||||
if [[ $cur == $pattern ]]
|
||||
then
|
||||
break
|
||||
fi
|
||||
done
|
||||
done
|
||||
echo $count
|
||||
}
|
||||
|
||||
# Parse inputs
|
||||
file="input.txt"
|
||||
instructions=$(head -n1 $file)
|
||||
|
||||
while read line || [ -n "$line" ]
|
||||
do
|
||||
key=${line%% *}
|
||||
values=${line##*(}
|
||||
values=${values%)}
|
||||
mappings[$key]=${values/,/}
|
||||
done <<< $(tail -n +3 $file)
|
||||
|
||||
# Part 1
|
||||
echo "Part 1: $(findcount "AAA" $instructions "ZZZ")"
|
||||
|
||||
# Part 2
|
||||
count=1
|
||||
for key in ${!mappings[@]}
|
||||
do
|
||||
if [[ $key != *A ]]
|
||||
then
|
||||
continue
|
||||
fi
|
||||
cur=$key
|
||||
count=$(lcm $count $(findcount $cur $instructions *Z))
|
||||
done
|
||||
echo "Part 2: $count"
|
1
day09/.gitignore
vendored
Normal file
1
day09/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
target/
|
7
day09/Cargo.lock
generated
Normal file
7
day09/Cargo.lock
generated
Normal file
@@ -0,0 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "day9"
|
||||
version = "0.1.0"
|
8
day09/Cargo.toml
Normal file
8
day09/Cargo.toml
Normal file
@@ -0,0 +1,8 @@
|
||||
[package]
|
||||
name = "day9"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
3
day09/eg.txt
Normal file
3
day09/eg.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
0 3 6 9 12 15
|
||||
1 3 6 10 15 21
|
||||
10 13 16 21 30 45
|
200
day09/input.txt
Normal file
200
day09/input.txt
Normal file
@@ -0,0 +1,200 @@
|
||||
9 18 46 116 276 615 1284 2530 4774 8797 16131 29777 55390 103097 190178 344982 612707 1064056 1808240 3012174 4927668
|
||||
-4 -12 -25 -31 -5 104 413 1194 3057 7310 16632 36263 75998 153370 298520 561380 1021938 1804512 3097133 5177325 8445773
|
||||
1 1 5 24 83 222 495 982 1854 3567 7308 15874 35234 77104 162956 329984 639663 1189661 2129999 3684500 6178725
|
||||
10 16 34 81 191 420 848 1578 2732 4444 6850 10075 14217 19328 25392 32300 39822 47576 54994 61285 65395
|
||||
26 43 66 107 182 304 474 669 826 832 572 186 883 7031 30941 103128 293635 755982 1818159 4172274 9270105
|
||||
-1 11 40 101 219 429 776 1315 2111 3239 4784 6841 9515 12921 17184 22439 28831 36515 45656 56429 69019
|
||||
29 55 96 170 314 596 1138 2152 4004 7348 13424 24713 46321 88767 173332 341853 673895 1315693 2527224 4756356 8752348
|
||||
26 41 53 59 57 44 20 1 35 205 595 1197 1768 1752 672 109 9992 65289 265785 863823 2446291
|
||||
-2 15 46 91 150 223 310 411 526 655 798 955 1126 1311 1510 1723 1950 2191 2446 2715 2998
|
||||
8 21 32 50 107 269 647 1408 2786 5093 8730 14198 22109 33197 48329 68516 94924 128885 171908 225690 292127
|
||||
15 22 41 93 222 511 1098 2187 4057 7099 11972 20084 34798 64066 125641 256648 530155 1082524 2156795 4169223 7808414
|
||||
3 -1 -7 -1 53 221 607 1361 2687 4851 8189 13115 20129 29825 42899 60157 82523 111047 146913 191447 246125
|
||||
22 48 99 184 318 527 853 1364 2176 3496 5697 9438 15844 26763 45119 75382 124178 201064 319495 498012 761682
|
||||
29 42 63 113 237 520 1114 2283 4482 8510 15835 29318 54818 104617 204377 406627 815954 1634892 3246488 6362711 12293194
|
||||
-10 -15 -23 -41 -82 -152 -216 -127 520 2696 8592 22987 56041 128849 284194 606807 1260494 2554291 5057111 9791127 18549628
|
||||
-3 2 23 75 190 437 951 1964 3833 7063 12318 20402 32209 48777 72006 107570 173385 319988 673457 1516729 3430148
|
||||
10 24 58 133 275 525 965 1770 3300 6244 11832 22171 40905 74794 137746 260855 516006 1068052 2283634 4946565 10664743
|
||||
17 37 71 123 193 281 398 584 933 1625 2965 5429 9717 16813 28052 45194 70505 106845 157763 227599 321593
|
||||
-1 15 56 133 262 475 842 1515 2825 5508 11214 23564 50150 105986 218946 437556 840971 1549821 2734516 4614111 7433366
|
||||
-2 6 26 69 155 327 689 1481 3205 6821 14044 27800 52963 97641 175584 310869 547044 964612 1713402 3070379 5539247
|
||||
1 11 45 130 301 597 1056 1718 2655 4054 6391 10775 19670 38558 79985 173423 388553 887741 2038549 4643544 10388983
|
||||
14 41 90 174 313 548 981 1868 3805 8060 17117 35511 71046 136501 251942 447771 768656 1278499 2066612 3255284 5008935
|
||||
3 -3 -2 19 71 164 307 513 829 1423 2774 6037 13707 30798 66890 139558 279807 540025 1004306 1799227 3099391
|
||||
-7 -3 22 79 174 311 498 752 1099 1565 2154 2809 3352 3399 2246 -1278 -8995 -23603 -48946 -90333 -154910
|
||||
15 37 76 139 233 365 542 771 1059 1413 1840 2347 2941 3629 4418 5315 6327 7461 8724 10123 11665
|
||||
4 -5 -5 23 111 326 808 1830 3900 7950 15694 30293 57555 108040 200639 368417 667645 1190782 2083358 3562732 5932764
|
||||
7 4 0 2 29 122 359 875 1892 3771 7108 12913 22940 40280 70385 122745 213461 368890 630296 1058896 1739663
|
||||
20 38 64 98 153 264 505 1021 2090 4257 8631 17507 35565 72001 144052 282476 539624 1000776 1799386 3136768 5306529
|
||||
16 32 59 97 159 287 567 1145 2251 4245 7704 13563 23292 39016 63342 98417 143370 188750 205817 127525 -183299
|
||||
8 31 70 132 241 462 943 1978 4090 8129 15376 27640 47331 77488 121737 184150 268972 380179 520826 692140 892309
|
||||
10 22 34 46 58 70 82 94 106 118 130 142 154 166 178 190 202 214 226 238 250
|
||||
12 28 71 167 359 724 1407 2679 5030 9326 17100 31126 56586 103495 191838 362562 701032 1386473 2794531 5706776 11733117
|
||||
-4 -2 12 42 103 231 496 1026 2063 4095 8145 16363 33187 67557 137044 275378 545834 1064400 2038774 3832220 7065395
|
||||
-2 10 28 50 85 167 374 850 1840 3774 7474 14611 28624 56466 111814 220819 432086 833270 1577168 2919880 5271427
|
||||
2 8 29 77 171 341 643 1199 2295 4596 9576 20331 43086 90014 184648 372584 743158 1473984 2922985 5818429 11649307
|
||||
24 37 52 69 88 109 132 157 184 213 244 277 312 349 388 429 472 517 564 613 664
|
||||
7 16 37 70 115 172 241 322 415 520 637 766 907 1060 1225 1402 1591 1792 2005 2230 2467
|
||||
7 9 25 68 153 301 544 931 1535 2461 3855 5914 8897 13137 19054 27169 38119 52673 71749 96432 127993
|
||||
3 -1 7 49 166 439 1034 2293 4917 10335 21447 44105 90014 182296 365930 726922 1426767 2763115 5274351 9916141 18353334
|
||||
-4 5 22 43 71 134 314 791 1914 4322 9162 18512 36264 70050 135475 265245 528204 1067511 2174186 4423405 8918073
|
||||
8 8 20 55 136 304 617 1142 1957 3219 5434 10214 22061 52125 125497 294483 661534 1417162 2900344 5691705 10753286
|
||||
1 3 13 50 154 403 936 1995 4012 7791 14875 28245 53569 101297 189972 351182 636595 1127475 1946945 3275012 5365964
|
||||
8 9 22 59 144 332 740 1587 3238 6246 11385 19665 32316 50721 76267 110067 152484 202359 255808 304407 332528
|
||||
24 52 96 174 328 648 1308 2620 5121 9717 17917 32199 56559 97303 164151 271731 441550 704538 1104270 1700980 2576490
|
||||
-7 -5 13 71 206 468 920 1638 2711 4241 6343 9145 12788 17426 23226 30368 39045 49463 61841 76411 93418
|
||||
12 22 35 52 74 102 137 180 232 294 367 452 550 662 789 932 1092 1270 1467 1684 1922
|
||||
7 22 44 83 166 340 665 1207 2056 3409 5773 10358 19745 38929 76852 148556 278101 502408 876202 1478245 2419064
|
||||
8 26 48 73 100 128 156 183 208 230 248 261 268 268 260 243 216 178 128 65 -12
|
||||
0 1 -3 -4 18 109 371 1018 2474 5548 11775 24131 48562 97198 194907 392243 790276 1586899 3160913 6220790 12061258
|
||||
7 16 25 34 43 52 61 70 79 88 97 106 115 124 133 142 151 160 169 178 187
|
||||
4 10 16 22 28 34 40 46 52 58 64 70 76 82 88 94 100 106 112 118 124
|
||||
-1 5 18 39 78 166 372 842 1886 4153 8965 18944 39179 79364 157617 307091 587041 1100749 2023668 3646365 6438364
|
||||
8 22 40 72 137 277 590 1283 2748 5684 11349 22171 43263 86048 176533 373349 805440 1747710 3767222 7995854 16622077
|
||||
10 20 50 123 275 555 1025 1760 2848 4390 6500 9305 12945 17573 23355 30470 39110 49480 61798 76295 93215
|
||||
11 10 20 50 109 206 348 539 790 1168 1960 4134 10472 28054 73210 180682 419719 921627 1926971 3868278 7519431
|
||||
3 18 48 111 247 524 1043 1949 3471 6041 10593 19246 36770 73575 151546 315096 651863 1331732 2681734 5332353 10505669
|
||||
-2 -7 -8 4 51 180 479 1103 2319 4582 8657 15805 28054 48579 82218 136154 220796 350895 546934 836834 1258021
|
||||
6 14 26 38 45 42 24 -15 -79 -141 -20 1017 5369 19931 62761 177810 465668 1144548 2665818 5924016 12624697
|
||||
-3 8 34 87 188 381 770 1595 3368 7097 14633 29171 55903 102758 181157 307085 504388 816931 1347951 2371102 4612619
|
||||
7 -3 -7 10 72 230 591 1356 2865 5647 10473 18410 30874 49680 77087 115836 169179 240897 335305 457242 612044
|
||||
14 21 39 77 145 267 502 973 1904 3665 6825 12213 20987 34711 55440 85813 129154 189581 272123 382845 528981
|
||||
11 17 23 29 35 41 47 53 59 65 71 77 83 89 95 101 107 113 119 125 131
|
||||
8 1 -11 -28 -50 -77 -109 -146 -188 -235 -287 -344 -406 -473 -545 -622 -704 -791 -883 -980 -1082
|
||||
0 -9 -8 19 104 310 754 1657 3464 7112 14568 29824 60662 121768 240309 466084 890103 1678388 3132763 5799180 10660663
|
||||
9 19 44 89 157 242 323 360 297 90 -189 -46 2229 11456 39806 115816 302697 734001 1680486 3671075 7704557
|
||||
25 49 84 129 189 294 530 1090 2361 5071 10528 20991 40221 74268 132558 229352 385657 631677 1009900 1578925 2418141
|
||||
11 22 54 116 217 366 572 844 1191 1622 2146 2772 3509 4366 5352 6476 7747 9174 10766 12532 14481
|
||||
3 -1 -5 -9 -13 -17 -21 -25 -29 -33 -37 -41 -45 -49 -53 -57 -61 -65 -69 -73 -77
|
||||
26 33 31 23 20 48 174 565 1595 4016 9210 19540 38819 72917 130527 224112 371056 595043 927689 1410453 2096854
|
||||
7 14 21 29 36 38 28 5 18 284 1449 5140 15156 40116 99404 236311 546138 1233799 2726610 5885200 12380585
|
||||
12 24 52 125 285 584 1094 1941 3368 5818 10001 16864 27315 41456 56951 65988 50084 -28276 -238486 -700841 -1613855
|
||||
13 17 37 90 209 468 1023 2176 4475 8886 17135 32454 61235 116599 225772 444629 885065 1764239 3489437 6798422 12982565
|
||||
19 41 77 133 217 346 566 1006 2015 4479 10487 24612 56193 123142 257948 516697 992059 1831293 3260369 5615279 9381481
|
||||
16 28 35 31 10 -20 -10 170 784 2296 5449 11357 21610 38392 64612 104048 161504 242980 355855 509083 713402
|
||||
28 42 68 122 233 457 897 1729 3234 5836 10146 17012 27575 43331 66199 98595 143512 204606 286288 393822 533429
|
||||
15 13 23 65 179 438 956 1893 3463 5967 9930 16559 29002 55329 114871 250765 553784 1206951 2569594 5338863 10867842
|
||||
12 19 39 72 119 197 367 784 1780 3986 8494 17082 32630 60145 109479 202244 388361 783610 1651246 3573133 7797258
|
||||
7 8 19 49 113 256 607 1478 3523 7972 16955 33931 64237 115772 199831 332104 533855 833296 1267171 1882565 2738953
|
||||
29 58 102 158 232 366 677 1405 2973 6090 12001 23150 44853 89211 183633 388284 829937 1764646 3689092 7531306 14966890
|
||||
2 0 -1 -1 0 2 5 9 14 20 27 35 44 54 65 77 90 104 119 135 152
|
||||
2 12 40 105 237 479 899 1615 2834 4912 8476 14746 26410 49822 100038 211463 458918 997120 2131404 4439675 8975935
|
||||
8 12 15 15 15 37 141 445 1141 2506 4932 9075 16398 30727 62048 134773 304254 687624 1518333 3238311 6647865
|
||||
-3 0 13 40 82 137 200 263 315 342 327 250 88 -185 -598 -1183 -1975 -3012 -4335 -5988 -8018
|
||||
10 20 39 78 170 383 843 1776 3575 6899 12821 23066 40423 69482 117943 198874 334464 562030 943299 1578302 2625592
|
||||
3 1 5 30 113 320 750 1536 2843 4863 7807 11894 17337 24326 33008 43464 55683 69533 84729 100798 117041
|
||||
11 22 37 61 99 156 237 347 491 674 901 1177 1507 1896 2349 2871 3467 4142 4901 5749 6691
|
||||
9 25 56 112 208 367 625 1052 1813 3306 6427 13015 26502 52709 100605 182863 316823 529608 880266 1534525 2979054
|
||||
11 30 78 182 383 746 1391 2554 4681 8561 15542 27997 50499 92753 176401 349609 716183 1490248 3093758 6322888 12621407
|
||||
21 43 87 171 328 617 1134 2023 3487 5799 9313 14475 21834 32053 45920 64359 88441 119395 158619 207691 268380
|
||||
-6 2 29 82 180 378 798 1669 3386 6603 12368 22283 38630 64362 102872 157664 232762 336492 495195 791192 1453616
|
||||
13 20 43 89 157 246 370 580 998 1873 3674 7240 14012 26377 48159 85297 146755 245714 401101 639515 997615
|
||||
11 22 25 25 44 132 390 1021 2427 5377 11296 22786 44626 85795 163685 312898 603275 1175680 2310339 4552183 8931808
|
||||
-1 7 28 78 194 444 949 1925 3753 7085 12994 23176 40212 67898 111651 178999 280163 428739 642488 944242 1362934
|
||||
18 29 45 75 134 247 460 865 1656 3247 6508 13230 27064 55505 114252 236959 496935 1054429 2256583 4841522 10340513
|
||||
-1 7 23 49 99 224 560 1416 3427 7799 16661 33502 63593 114151 193762 310208 465306 644622 798854 811926 447438
|
||||
-2 4 25 70 144 245 361 467 522 466 217 -332 -1316 -2901 -5287 -8711 -13450 -19824 -28199 -38990 -52664
|
||||
25 39 48 48 35 5 -46 -122 -227 -365 -540 -756 -1017 -1327 -1690 -2110 -2591 -3137 -3752 -4440 -5205
|
||||
5 13 31 61 108 181 302 532 1023 2099 4366 8877 17480 33727 65224 129212 264762 557837 1191044 2541559 5376101
|
||||
18 35 66 127 247 468 845 1446 2352 3657 5468 7905 11101 15202 20367 26768 34590 44031 55302 68627 84243
|
||||
17 27 35 46 69 112 176 261 420 937 2763 8417 23640 60168 140050 301960 609915 1164687 2117955 3688848 6181943
|
||||
9 0 -9 -12 -3 34 145 430 1061 2280 4359 7500 11649 16194 19513 18334 6865 -24352 -89913 -211404 -419691
|
||||
9 5 1 -3 -7 -11 -15 -19 -23 -27 -31 -35 -39 -43 -47 -51 -55 -59 -63 -67 -71
|
||||
21 45 78 128 213 371 677 1273 2424 4616 8724 16333 30461 57335 110742 222282 464582 1002371 2203003 4873464 10764932
|
||||
19 38 76 143 241 362 487 586 619 538 290 -179 -919 -1970 -3355 -5072 -7085 -9314 -11624 -13813 -15599
|
||||
1 -5 -15 -29 -35 13 231 870 2438 5917 13113 27160 53166 98958 175892 299794 492341 783633 1217467 1862267 2833769
|
||||
16 19 37 90 206 434 877 1766 3617 7538 15786 32740 66613 132577 258695 497469 948605 1804277 3440098 6600426 12780635
|
||||
3 19 49 106 210 398 748 1412 2662 4977 9237 17134 31940 59751 111195 203265 360297 612003 984693 1479134 2024602
|
||||
5 8 17 47 128 321 753 1677 3569 7290 14380 27638 52317 98581 186397 354832 678833 1297972 2463223 4609329 8461202
|
||||
15 37 77 154 310 618 1185 2147 3649 5808 8685 12357 17296 25443 42625 83316 179203 393599 844461 1739636 3428986
|
||||
-5 2 22 51 82 118 200 451 1132 2699 5841 11468 20605 34133 52301 73914 95081 107384 95304 32713 -121788
|
||||
7 6 6 10 27 78 199 441 867 1546 2544 3912 5671 7794 10185 12655 14895 16446 16666 14694 9411
|
||||
-3 5 17 31 55 128 363 1022 2633 6159 13229 26441 49747 88930 152183 250800 399989 619817 936297 1382627 2000591
|
||||
5 7 4 -4 -17 -35 -58 -86 -119 -157 -200 -248 -301 -359 -422 -490 -563 -641 -724 -812 -905
|
||||
9 15 26 39 53 71 102 163 281 495 858 1439 2325 3623 5462 7995 11401 15887 21690 29079 38357
|
||||
16 30 58 109 192 316 490 723 1024 1402 1866 2425 3088 3864 4762 5791 6960 8278 9754 11397 13216
|
||||
7 14 37 76 135 237 453 953 2086 4493 9252 18047 33344 58546 98086 157402 242721 360560 516831 715414 956037
|
||||
8 28 63 113 178 258 353 463 588 728 883 1053 1238 1438 1653 1883 2128 2388 2663 2953 3258
|
||||
14 35 81 177 357 661 1132 1813 2744 3959 5483 7329 9495 11961 14686 17605 20626 23627 26453 28913 30777
|
||||
19 23 40 91 212 463 937 1769 3145 5311 8582 13351 20098 29399 41935 58501 80015 107527 142228 185459 238720
|
||||
-7 -14 -17 3 91 343 948 2261 4932 10129 19908 37800 69704 125196 219387 375488 628267 1028612 1649445 2593265 4001633
|
||||
-10 -20 -20 8 96 301 714 1463 2704 4606 7376 11452 18130 31099 59650 124715 269394 576256 1194468 2380728 4559068
|
||||
-3 -5 -10 -9 18 102 285 620 1171 2013 3232 4925 7200 10176 13983 18762 24665 31855 40506 50803 62942
|
||||
13 37 85 167 293 473 717 1035 1437 1933 2533 3247 4085 5057 6173 7443 8877 10485 12277 14263 16453
|
||||
13 19 36 75 142 251 464 981 2323 5690 13646 31396 69081 145715 295584 578035 1091437 1991393 3511488 5981061 9827180
|
||||
7 16 25 34 43 52 61 70 79 88 97 106 115 124 133 142 151 160 169 178 187
|
||||
6 23 56 123 272 609 1345 2876 5918 11735 22530 42125 77144 139041 247491 435894 760038 1311335 2236492 3766015 6254576
|
||||
8 14 30 59 106 193 388 855 1942 4344 9420 19840 40971 83961 172715 359576 759804 1625179 3496332 7509036 15994708
|
||||
13 25 54 118 251 522 1075 2202 4463 8879 17266 32881 61755 115451 216617 409843 782490 1504399 2903817 5613544 10853756
|
||||
14 36 78 148 259 449 822 1614 3284 6626 12894 23928 42265 71215 114878 178074 266154 384656 538766 732540 967839
|
||||
-2 -2 -9 -20 -9 103 508 1625 4301 10154 22162 45706 90491 174201 329580 618230 1157495 2172796 4099550 7781904 14860582
|
||||
-3 -9 -17 -16 14 106 312 711 1437 2778 5458 11325 24852 56138 126512 278510 593250 1220954 2436618 4746995 9105779
|
||||
-5 3 25 67 150 333 742 1598 3234 6087 10638 17240 25714 34515 39216 30125 -10783 -112477 -313885 -652503 -1129566
|
||||
20 29 34 29 8 -24 -32 76 484 1511 3662 7687 14648 25994 43644 70078 108436 162625 237434 338657 473224
|
||||
1 6 18 30 30 7 -25 33 486 2059 6243 15819 35613 73542 142018 259784 454263 764508 1244848 1969332 3037080
|
||||
-3 2 11 33 85 192 387 711 1213 1950 2987 4397 6261 8668 11715 15507 20157 25786 32523 40505 49877
|
||||
15 37 69 117 211 434 973 2203 4826 10118 20397 39921 76559 144741 270369 498591 905866 1619531 2853749 4986546 8742298
|
||||
-5 7 40 100 202 383 725 1404 2793 5664 11559 23436 46746 91164 173284 320698 578015 1015541 1741538 2919212 4789850
|
||||
25 39 61 105 205 430 899 1796 3385 6025 10185 16459 25581 38440 56095 79790 110969 151291 202645 267165 347245
|
||||
0 2 8 23 63 172 461 1185 2895 6739 15036 32298 66907 133641 257154 476315 848967 1456169 2404397 3823750 5860552
|
||||
-2 0 3 10 34 108 308 795 1882 4132 8493 16476 30382 53584 90870 148853 236454 365464 551191 813198 1176138
|
||||
2 -3 -17 -36 -49 -36 52 341 1121 2988 7060 15283 30833 58603 105733 182075 300387 476150 728272 1087961 1642414
|
||||
21 41 69 101 134 162 180 216 427 1321 4205 12011 30720 71690 155300 316450 612609 1135281 2025965 3497921 5865322
|
||||
0 5 15 27 38 45 45 35 12 -27 -85 -165 -270 -403 -567 -765 -1000 -1275 -1593 -1957 -2370
|
||||
25 35 36 36 50 94 180 313 501 823 1671 4403 12828 36204 94779 229356 516929 1095131 2199070 4215118 7757374
|
||||
2 22 53 86 107 97 32 -117 -384 -808 -1433 -2308 -3487 -5029 -6998 -9463 -12498 -16182 -20599 -25838 -31993
|
||||
2 6 18 55 154 387 883 1860 3680 6959 12796 23236 42161 76923 141212 259914 477090 868736 1562714 2769233 4826576
|
||||
16 18 18 21 52 176 525 1332 2972 6010 11256 19827 33216 53368 82763 124506 182424 261170 366334 504561 683676
|
||||
16 33 66 138 283 558 1075 2067 4021 7950 15957 32403 66278 135853 277440 561198 1118502 2187559 4186844 7829688 14298141
|
||||
-3 -9 -16 -24 -33 -43 -54 -66 -79 -93 -108 -124 -141 -159 -178 -198 -219 -241 -264 -288 -313
|
||||
4 20 42 69 109 202 459 1128 2713 6208 13593 28915 60601 126195 261567 537917 1091718 2175256 4238800 8059861 14940689
|
||||
-4 5 35 94 203 410 804 1529 2798 4907 8249 13328 20773 31352 45986 65763 91952 126017 169631 224690 293327
|
||||
18 19 13 8 39 192 652 1786 4270 9279 18791 36124 66953 121296 217458 390060 706976 1306281 2478279 4847070 9764689
|
||||
18 31 62 118 208 349 572 928 1494 2379 3730 5738 8644 12745 18400 26036 36154 49335 66246 87646 114392
|
||||
10 30 70 147 278 476 747 1088 1486 1918 2352 2749 3066 3260 3293 3138 2786 2254 1594 903 334
|
||||
23 40 61 99 197 443 983 2036 3922 7128 12476 21566 37933 69921 137341 285808 615565 1335968 2863027 5985897 12139425
|
||||
16 39 81 144 237 388 669 1246 2474 5076 10475 21393 42904 84261 162091 306176 570528 1056017 1959039 3679100 7057855
|
||||
5 19 52 116 229 416 718 1233 2228 4376 9187 19717 41654 84895 165743 309868 556191 961865 1608542 2610130 4122259
|
||||
8 21 34 47 60 73 86 99 112 125 138 151 164 177 190 203 216 229 242 255 268
|
||||
0 9 22 34 46 69 122 222 364 489 438 -110 -1718 -5291 -12198 -24418 -44712 -76823 -125706 -197790 -301274
|
||||
4 6 10 6 -8 2 158 754 2374 6047 13477 27507 53276 101163 193829 381839 776008 1610516 3359988 6947468 14100248
|
||||
17 31 55 89 131 174 215 285 518 1304 3634 9876 25482 62648 148008 338603 754745 1647147 3532835 7467169 15580487
|
||||
-1 -4 -13 -35 -77 -144 -237 -351 -473 -580 -637 -595 -389 64 867 2145 4047 6748 10451 15389 21827
|
||||
0 -1 1 5 9 18 69 285 970 2757 6821 15169 31019 59280 107145 184809 306324 490603 762585 1154573 1707757
|
||||
13 16 28 69 172 390 811 1595 3071 5983 12075 25390 54972 120159 260406 552658 1140793 2283674 4430998 8339531 15246604
|
||||
6 17 25 29 38 75 190 498 1259 3011 6765 14301 28724 55758 106960 207430 413198 848255 1780087 3769435 7962404
|
||||
12 32 67 117 182 262 357 467 592 732 887 1057 1242 1442 1657 1887 2132 2392 2667 2957 3262
|
||||
11 13 25 63 150 335 725 1526 3089 5975 11103 20153 36614 68297 132969 270360 566767 1203849 2552597 5349347 11016726
|
||||
20 44 80 128 188 260 344 440 548 668 800 944 1100 1268 1448 1640 1844 2060 2288 2528 2780
|
||||
8 22 43 83 176 393 873 1878 3881 7709 14799 27712 51245 94882 178083 341241 667334 1322744 2630891 5199833 10135534
|
||||
6 0 -10 -22 -18 48 271 835 2089 4687 9847 19868 39276 77522 155333 319153 672521 1441306 3104306 6647213 14047061
|
||||
19 41 92 198 405 802 1569 3060 5931 11323 21110 38222 67053 113964 187891 301068 469875 715821 1066672 1557734 2233301
|
||||
16 42 84 151 256 423 702 1198 2140 4062 8260 17854 40057 90678 202517 440212 925348 1877326 3677720 6968741 12800114
|
||||
0 -5 -2 17 57 127 253 497 990 2000 4066 8219 16254 30878 55306 91524 136173 173504 167923 68476 -137052
|
||||
3 2 12 56 167 389 778 1402 2339 3672 5480 7824 10727 14147 17942 21826 25315 27662 27780 24152 14727
|
||||
1 12 36 67 97 119 130 134 145 190 312 573 1057 1873 3158 5080 7841 11680 16876 23751 32673
|
||||
-1 -9 -16 -17 -7 19 66 139 243 383 564 791 1069 1403 1798 2259 2791 3399 4088 4863 5729
|
||||
-8 2 40 129 303 611 1127 1974 3382 5821 10280 18802 35433 67800 129599 244349 450852 810892 1419808 2420687 4023043
|
||||
11 21 47 111 247 515 1027 1983 3715 6751 11958 20936 37069 68098 131975 269496 570539 1226901 2635701 5596005 11671835
|
||||
-3 2 30 96 215 402 672 1040 1521 2130 2882 3792 4875 6146 7620 9312 11237 13410 15846 18560 21567
|
||||
7 10 22 61 167 406 869 1670 2967 5063 8688 15616 29831 59521 120247 239703 464551 869880 1571898 2744519 4640551
|
||||
10 8 5 2 9 65 282 931 2602 6509 15091 33203 70430 145441 293899 582353 1131886 2157242 4029909 7377444 13236491
|
||||
17 30 42 67 136 304 669 1412 2867 5630 10716 19773 35362 61312 103159 168678 268517 416942 632702 940023 1369740
|
||||
20 33 64 123 216 340 475 590 708 1123 2940 9237 27363 73249 179212 407705 874984 1790953 3524796 6710763 12415070
|
||||
17 26 48 95 183 337 606 1110 2150 4422 9388 19878 41058 82092 159377 303643 576544 1109743 2194981 4484682 9422430
|
||||
15 30 55 90 140 229 420 841 1717 3408 6453 11620 19962 32879 52186 80187 119755 174418 248451 346974 476056
|
||||
25 36 49 82 168 357 718 1341 2339 3850 6039 9100 13258 18771 25932 35071 46557 60800 78253 99414 124828
|
||||
9 23 47 87 150 243 370 534 764 1212 2413 5880 15329 39043 94343 216253 475182 1014766 2134653 4470747 9379297
|
||||
8 22 41 61 78 88 87 71 36 -22 -107 -223 -374 -564 -797 -1077 -1408 -1794 -2239 -2747 -3322
|
||||
-3 -4 0 15 58 163 394 871 1820 3670 7239 14077 27067 51425 96287 177125 319295 563088 970730 1635859 2696096
|
||||
22 29 32 31 26 17 4 -13 -34 -59 -88 -121 -158 -199 -244 -293 -346 -403 -464 -529 -598
|
||||
-1 4 13 23 27 12 -35 -107 -138 64 938 3413 9431 23091 53108 117913 255750 543625 1130844 2294724 4526868
|
||||
-7 0 32 115 286 593 1095 1862 2975 4526 6618 9365 12892 17335 22841 29568 37685 47372 58820 72231 87818
|
||||
11 14 29 70 151 286 489 774 1155 1646 2261 3014 3919 4990 6241 7686 9339 11214 13325 15686 18311
|
||||
8 6 4 2 0 -2 -4 -6 -8 -10 -12 -14 -16 -18 -20 -22 -24 -26 -28 -30 -32
|
||||
3 -1 2 32 130 371 877 1830 3485 6183 10364 16580 25508 37963 54911 77482 106983 144911 192966 253064 327350
|
||||
15 22 38 76 148 265 437 673 981 1368 1840 2402 3058 3811 4663 5615 6667 7818 9066 10408 11840
|
||||
8 18 41 89 174 308 503 771 1124 1574 2133 2813 3626 4584 5699 6983 8448 10106 11969 14049 16358
|
||||
20 22 32 76 193 439 901 1729 3206 5894 10917 20481 38820 73979 141382 271353 525379 1031339 2059025 4179887 8600866
|
||||
8 -2 -16 -22 1 78 230 463 754 1034 1168 932 -13 -2150 -6138 -12847 -23396 -39194 -61984 -93890 -137467
|
||||
17 24 29 35 45 62 89 129 185 260 357 479 629 810 1025 1277 1569 1904 2285 2715 3197
|
33
day09/src/main.rs
Normal file
33
day09/src/main.rs
Normal file
@@ -0,0 +1,33 @@
|
||||
use std::fs;
|
||||
|
||||
fn predict_next(line: &[i32]) -> i32 {
|
||||
if line.iter().all(|&n| n == 0) {
|
||||
0
|
||||
} else {
|
||||
let diffs = line.windows(2).into_iter()
|
||||
.map(|w| w[1] - w[0])
|
||||
.collect::<Vec<_>>();
|
||||
line.last().expect("should be a non-empty line") + predict_next(&diffs)
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let contents = fs::read_to_string("input.txt")
|
||||
.expect("should have read input file")
|
||||
.split("\n")
|
||||
.map(|line| line.split(" ")
|
||||
.map(|s| s.parse::<i32>().expect("should have been an integer"))
|
||||
.collect::<Vec<_>>()
|
||||
)
|
||||
.collect::<Vec<_>>();
|
||||
let p1: i32 = contents.iter()
|
||||
.map(|line| predict_next(line))
|
||||
.sum();
|
||||
println!("Part 1: {p1}");
|
||||
let p2: i32 = contents.iter()
|
||||
.map(|line| predict_next(
|
||||
&line.iter().rev().map(|&n| n).collect::<Vec<_>>()
|
||||
))
|
||||
.sum();
|
||||
println!("Part 2: {p2}");
|
||||
}
|
5
day10/eg1.txt
Normal file
5
day10/eg1.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
.....
|
||||
.S-7.
|
||||
.|.|.
|
||||
.L-J.
|
||||
.....
|
5
day10/eg2.txt
Normal file
5
day10/eg2.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
-L|F7
|
||||
7S-7|
|
||||
L|7||
|
||||
-L-J|
|
||||
L|-JF
|
5
day10/eg3.txt
Normal file
5
day10/eg3.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
..F7.
|
||||
.FJ|.
|
||||
SJ.L7
|
||||
|F--J
|
||||
LJ...
|
5
day10/eg4.txt
Normal file
5
day10/eg4.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
7-F7-
|
||||
.FJ|7
|
||||
SJLL7
|
||||
|F--J
|
||||
LJ.LJ
|
9
day10/eg5.txt
Normal file
9
day10/eg5.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
...........
|
||||
.S-------7.
|
||||
.|F-----7|.
|
||||
.||.....||.
|
||||
.||.....||.
|
||||
.|L-7.F-J|.
|
||||
.|..|.|..|.
|
||||
.L--J.L--J.
|
||||
...........
|
140
day10/input.txt
Normal file
140
day10/input.txt
Normal file
@@ -0,0 +1,140 @@
|
||||
F-F-JJF7.F7.F-LJ7-|77.L|.FJ7--7LFL|-|F-.|--7.F7-F-.F|-FL7.FF7.F77-FLLJFLF--.FL--FF--7..FJ-L-LL-J..F-J77FF|-FF77FL|-|7J-7--7J-L77.FL.FL|-F7F-
|
||||
LJ|.L-|-FF|J|L|||.L7J.FJF7-77.|7||L7F7-F77-|7|J.-.F-7F|L---L77..--|FL.F|L7FFF.FFF7..L77F.F|7.J7L7-JF.JJF-7.F--L7.7-L7..|L--7.L-.L|FFL-JL|F-J
|
||||
L.|FL7|F|||LJFL-LJ-JJF7JF|-7-FJF7J-L.7.F|-7L7||L.FJFJ7J7L7.LFL-LJ.|F|--|.F7F7-FFJL7--LFJFLLF.L||L7|.7L-|7F7F|||.FF7LL7F7J.|-F7-7J.L.|7L.-L-|
|
||||
LLF7-J7FL|..J-FLJL----JL-.L|JF7-J7F|7J.L|LJ.LLJJFL7L7F7F7777J.L|FFL|.|F|F||||-FL-7L7J.JF7.LL-7|7.7-FJ7LF-J|F7F-7FJ|7||FL.FF7LF-LJLJ7FJ.|-LF-
|
||||
FL|F-LFJ7LJ7.F-..L|-JL-7LJLL-JLFLLFJL7--L7|.FJ|LF7L7||||L7|F-7.L7-JJLF7F-JLJ|-|F7|FJ7F-JL-J|7JLL7|.L|J-L-7|||L7LJFJF7L77F-|L-F7JF||LJJ|-7LLJ
|
||||
FF|J7-LJ7L||FJ7...F-L-|-|J.LL|-777|F-F7|.-77.FFFJ|FJLJLJFJ-JFLF-JLFF7||L---7L7FJLJ|77JF-7...F7L7J7F.J7.F-J||||L-7|.|L-7JJJ|JFLJ|L7||FL7J|-||
|
||||
FJJJF-|L7F777-|FFFJ.L-J|.FF.|.F-JJ-7.||FJL||FF-JFJL7F---JJ.|F..FF|L|FJL7-F-JFJL--7L7F7-F77-|.-J|.F|L.|7L-7||L7F7|L7|F-JJJ|JFJLL|F--LJF7FL.|-
|
||||
|J.FL7J7|J|L|F-F-LJ--|-JFJ7--7|L.|.L-|F7JJF-7|F7|F7||F7JFL-F-7.FJFF7L-7L7L-7|F-7-L7|||L||7-LL7.-7L|JF-7F-J|L7|||L7LJL-77|.FLJ7-L7JL|||LFJFJ.
|
||||
L--7LJLJ7-J-JJ.L|J7.||-L7--7|.||FF-JLFJ|7F|FJLJ|||||LJ|JF-|JL-7.F7F7F7L7|LFJLJFJFL||||FJL7.|F-JJLF7.L7|L-7L-J|||FJF7F-JF77-|-JJFJ-FLF7.L7|.F
|
||||
..|LL|.|J.|.JJL-|FL-JJ-L|7FLF7.FF-7F-L7L7FJL7JFJ||LJF-J7J.FFJ-F-||||||FJL7|F--JF7FJ||LJF-J-7FL7FFJL7-||F7L-7FJ|||FJLJF7-L-7L7..|..F-|.F-|7-|
|
||||
.FLF-L-FF7L7L-|7F--|FL..|F7L||.L7LFL.FJFJL7FJFJFJL-7|F--77||LFF7|||||||F7LJ|F77|||FJ|F-J-F7F7LF-L-7|FJLJL7FJL-J|||F--JL-7FF7J7-JFL-J..L|L-.|
|
||||
.|.L-LJ|77.|FLL-JL-FJFJJ-F7FJ|7F-7|LFL7||FJL7L7L7F7|||F-JF7JL||LJLJ|||LJL7FJ||FJLJL-JL-7L|LJ|-F7F7||L7F7FJL-7F-J|||F----JFJ|7F7J|FF-J.FL|JFF
|
||||
7L7|F|7LJF-J-J||J.|.JJ7F||||FJ7-F|7-F-JL7L-7|FJFJ|LJ||L-7||J.FL---7||L-7.|L7||L-7F7F7F-J-L-7L-J||LJL7LJ||F-7||F7||||F7|F7L7|F7-7FL-.LF.JJ7F7
|
||||
L.L77777FJL|.--|.LF7|.F--J||L-7F7|F7L--7L--J||FJ-L-7LJF7LJL-7F---7||L-7L7|FJ||JFJ||||L--7F7L7F-JL7F-JLFJ|L7LJ||LJLJLJL-JL-J|||.L7.|7|LF|LFJ|
|
||||
FL7L|.LFJ.-FJ|.JF|JFL-L--7|L7FJ|L-J|F-7L--7FJ|L--7JL7FJL----JL--7LJL--JFJ|L-JL7L7|LJL---J||FJ||F-JL7F7|FJFL-7LJF-7F-7F-7F--J|L7L|F7-77|..J--
|
||||
FF-7JF7FJ7J..L-LLL-JLF.F-JL-J|FL-7FJL7L---J|FJF--JF7|L-7|F77F7F7|F--7F7L7L---7|FJL7F7F7.L||L7L7L--7||||L7F--JF7L7||FJ|FJL7F-JFJ---J|LF7-J-LJ
|
||||
L-J7-LJ|.JJ-F|-.|FFJ||FL7F--7L7F7||F7L----7|L7|F7-||L-7L7|L7||||LJF-J|L7|F--7||L7FJ|LJL7FJ|FJFJJF-JLJ||FJL--7|L-JLJL-JL--J|F-J-|7|F7FJ.JLF.|
|
||||
L7JF.L|7.|.-7FJ--7FJ|LF|LJF7L7||||LJ|F7F-7||-|||L7|L--JFJ|FJ|LJL7-L-7L7LJL-7LJL7|L7|F--JL7|L7|F7L---7||||F7FJL---------7F7|L---7F|7.L-|JF77L
|
||||
FJ.|..J-7FJ--JJFLJL77LFF-7||FJ||LJF-J||L7LJ|FJLJFJL-7F-JFJL7L7F-J|F7L7|F--7L--7||FJ|L--7FJL-JLJL7F-7|||L7|||F----------J|||F---JJ-7..|.-JLFJ
|
||||
L7FJF-L||77L|7J||FJ.LF7L7LJ||FJL-7|F7||FJF-JL--7L-7FJL7LL7FJFJL-7FJL7|||F-JF7FJ|||J|F--JL-7F-7F-JL7LJ|L7LJ||||F7F7JF7F7FJLJL---7J|J.-77|J.|J
|
||||
LLJL7J--L7--F7F7-7LLFJL7L-7||L7F-J|||||L7||F7F-JF-JL-7L7FJL7|F7FJL-7LJLJL--J|L7||L7||F7JF7LJFJ|F7|L-7|F|F7|||FJLJL7||||L-7F----J7|7FJ7---7.|
|
||||
FJFFJ.-.|.FF-77J|-7LL-7L--J||FJL-7LJLJL7|L7||L-7L-7F7|FJ|F-J||LJF7F|F7F7F7F7L-J|L7LJLJL-JL7FJFJ||FF-JL7LJ|||||F---J||||F7||F7JLF--77JLFJ||F-
|
||||
|-77FL-LJ-FJF-.FF.F7F-JF--7|||F7FL----7||FJ|L7FJF-J|LJL7||F7|L7FJL7LJLJ||LJL--7|FJF7F7F-7FJL7|J|L7L-7FJJFJ||LJL7F--J||LJ||LJL-7L-7L7..|L|F7|
|
||||
F-7-77FJ|-F--.F7|FF7L--JF7||||||F-7F7FJLJL7|FJL7L77L-7FJ|||||FJL-7|F7F7||FF--7|LJFJLJ|L7LJF-J|FJFJF7||F7L7|L7F-J|F--J|F-J|F--7L7FJFJ7-LFL-L-
|
||||
|LL|L-JLFJ|F|F7-F7|L7F--JLJLJLJ|L7||||F--7LJL-7|FJF7||L-JLJLJL7F7|LJ|||LJFJF7|L7FJ.F7L-JF7L-7||FJFJLJ|||FJ|FJL--JL--7|L--J|F7L-JL7L-7.7|--J.
|
||||
|LF--7JFJFF--J|F|LJFJL--------7|FJLJ|LJF7L7F--J|L7|L7|F-------J||L7FJ|L-7L7||L7||F7|L--7||F7|||L7L--7||LJFJL7F---7F-J|F---J||F7F-JF7|F-J-F7.
|
||||
7F||LL.L--L--7L7L-7L--7F7F7.F-J|L--7|F7|L-J|F7-L7LJFJ||F7F7F-77||FJ|FJF7|FJ|L7LJLJ||F--J||||||L7L7F-J|L-7||FJL-7|LJF7|L7F7L|LJLJF7|LJJ7.|L7-
|
||||
LF7F7.|7F-F-7|FJF7L--7LJLJL7L-7|F7FJLJ|L--7||L7LL-7L7|LJ|||L7L7||L7||FJLJL7|FL-7F-J||F7.||||||FJFJL-7||FJL7L7F-JF--J|L7|||FJF7F7|LJJL7F-F7|L
|
||||
|FJJJFJF.FL7LJ|||L7F7L----7L-7|LJ|L-7FJF7FJ||FJF--JFJ|F-J|L7L7|||FJ||L7|F7LJF7FJL7FJLJL7||||||L7L-7FJL-JF7|FJL-7L-7FJFJLJLJFJLJLJF|||LJ.LL||
|
||||
||FLJL7.F7-L-7L7L7|||JF7F7L-7||F-JF7||FJ|L7LJL7L--7|FJ|F7L7L7||||L7|L7L7||.FJ|L7FJL7F7FJ|||||L7|F-JL--7FJ|||F--JF7||FJF----JF7F|-|FL|F7-F-L-
|
||||
|77.FLLFJL7F7L7|FJ|||FJLJ|F7|||L7FJ|||L7|FJF--JJF7|||FJ||F|FJ|LJ|FJL7|FJ||FJFJ||L-7||LJFJLJLJFJ||F7F7-||J||||F7|||||L7|F7F7FJL-7LJ-LJ7J.7-LJ
|
||||
LJ-J-F.L-7LJL-J|L7LJLJF-7||LJ||FJL7LJ|FJ||FJ.F-7|LJLJ|FJL7|||L-7||F7||L7||L7L7FJF7||L-7|F---7|FJ||||L7|L7LJ|||L-J||L-JLJLJLJF--J7|JL|J|FL7.|
|
||||
|7|..F--7L----7|LL----JFJLJF7|||F7L-7|L7LJ|F7L7|L---7|L7FJ||F-7|LJ|LJL7|||FJFJL7|LJ|F-JLJF7-||L7||||FJ|FJF7|LJF7FJL7F7F7F--7L-7F7F77JF-77.-L
|
||||
.L-F7|F7L-7F--J|F-7F-7.L---J||||||F-JL7L-7||L7||F-7FJL-JL7|||FJL-7L7F7|||||FJF-JL7FJL7F7FJL7|L7|||||L7||FJ||F-JLJF7||LJLJF7|F-J||||J-F-J7-LL
|
||||
FL---LJ|F7LJF-7LJFJL7L-7F7F7|||LJ|L-7FJF7|||FJ||L7|L--7F-J||||.F7|FJ||||||||FL-7FJ|F-J||L7FJ|FJ||||L7||||FJ|L7JF-JLJL----J||L--JLJ|JFL-|.F|.
|
||||
-FJJ|.L|||F-JJL-7|F7|F-J|LJ|||L-7|7FJL7|LJ|||FJL7|L7F-J|F7|LJ|FJ|||FJ||||||L7F7|L7||F7||FJL7|L7||||FJ||||L7|FJFJF7F7F--7F7|L-7F7F-J77|L|7F-7
|
||||
.J-L7FLLJLJF7F7FJLJLJL-7L-7LJL--JL-JF-JL7FJ||L7L||FLJF-J|||7FJ|FJ|||-LJ||LJFJ|||FJ|||LJ||F-JL7||||LJFLJ||FJ|L-JFJ||LJF7LJ|L-7LJLJ.LJJ7F-7|.J
|
||||
L7F-7-F7F7FJLJLJF7F7F-7L--JF7F7F7F-7L-7FJL7||FJFJL--7L7FJ|L7L7||FJ|L-7FJL7FJFJLJL7||L-7||L7F7|LJ|L--7.FJ||J|F7FJFJL--JL-7|F7L--7F77.FL7.-J-|
|
||||
||J-F-JLJLJF7F-7|LJ||-L7F7FJ||||LJ|L7FJL7||||L7|F7F-JF||FJFJF||LJFJF7||F-J|FJJF--J||F7|||FJ|||F-JF-7L7L-JL-J|LJLL7F7F---JLJ|F7FJF7777|FF.F7|
|
||||
7.|.L7F-7F-JLJFLJF7LJF-J|||FJ|LJF7F-JL-7L7LJ|FJ||||F--J|L7|F-JL7FJFJLJ|L7FJL-7|F-7|||||||L7||||F7L7|FJLF---7L-7L|LJ|L-----7||||FF-7LFL-F7L7J
|
||||
-7F-7LJFJ|F---7F7||F7L--J||L-JF-J|L--7|L7L-7LJL|||||F7FJFJ|L7F7|L7L-7L|FJL7F7||L7||||LJ|L7|||||||FJ||F7L-7LL-7L7F7FJF-----JLJ|L-JFJLFJL|F-||
|
||||
LF|.LF-JFJL--7LJLJLJ|F7F7LJF-7L-7L---JF7L7FJF--J|LJ||||FL7|LLJ||||F7|FJ|F7LJ|||FJ|||L-7|FJ||LJ||||JLJ||F7|F7.L7LJ|L7L---7F7F7|F-7L-7L-7FJF|7
|
||||
F7LFJL--JF---JF7F--7LJLJL7JL7|F7L7F---JL7LJ7L--7L-7LJ||F7|L7F-JL7||LJL7LJ|7FJ||L7||L7FJ||7|L7FJ|||F--JLJ|LJL-7L7FJFJF7F7LJ|||LJF|F-J-L-|-LFJ
|
||||
LL7J7J.L-|F--7|LJF7|F---7L--JLJ||LJF-7F7L----7FJF-JF7|||LJFJL7F7||L--7L7FJFJFJL7|LJFJL7|L7|FJL7||||F7F-7L--7FJ7|L7L-JLJ|F-J|L--7LJ.L||L|7JJJ
|
||||
F7JFF--J.LJF-J||FJLJL7F-JF--7F7L---J.LJ|F7F--JL7L-7||||L7FJLFJ|LJL7F7L7||FL7L7FJL-7L-7||FJ|L7.LJLJLJLJFL--7|L7FJFJF--7|LJF-JF-7L7-F-|7LL|-77
|
||||
7LLFJ|.F-LFJF7L7|F7F-JL--JF7LJL--7F---7LJ|L7.F7|F7LJ|LJFJL-7L7L-7FJ|L-J|L-7|FJ|F-7L7FJ||||L-JF----7|F7F---JL-JL7L-JF7|F--JF7L7L-J7|||77.-.LF
|
||||
|F7L-7FLJ-L-JL7|LJLJF-----JL-----J|F--JF7L-JFJLJ|L-7L7-L7F7L7|F-JL7L7F7L-7|||L|L7|FJL7||L-7F-JF7F7|FJLJF------7L---JLJ|F--JL-JF--7J-LF7FL.FJ
|
||||
LF--||||-7.F|.LJF7F7L-7F-7F-7F-7F-JL7F7|L7F-JF7FJLFJFJF-J|L7|LJF7FL7LJL7FJ||L7L7||L77LJ|F-J|F7||||LJF-7|F-----JF7FF7F-JL---7F-JF-J7.L|JFJ-|J
|
||||
LLJLLLJJ-77|-F--JLJL7F||7LJJLJFJ|F--J|LJFJL-7||L7FJFJ7|F7|FJL--JL-7L7F7||FJ|FJJ||L-JF--JL-7LJLJLJL--JFJ|L7F7F7J|L7|LJF-----JL-7L7LF77JFF-F|.
|
||||
7L-77.|FL-7.FL-----7L7LJF---7-L-JL---JF-JF7FJ||FJL7L-7||||L7F-7F--JFJ||||L7|L-7LJ.F-JF7F7FJ-F7F7F----JFJ.LJLJL7|FJ|F-JF7F7F-7FJFJFJL7J||FJJ.
|
||||
|7|LL.LF7L-F7F--7F7L7L-7L--7L-7F------JF7||L7||||FJF7||||L7|L7|L-7FJFJ|||FJ|F7L--7|F7|||||F7|LJ|L7F--7|F--7F-7LJL-JL-7||||L7||FJF|F-JJ|77.L7
|
||||
L|F|.|L7JL|F-JF7LJL-JF7L---JF7LJF7F----JLJL7LJLJFJFJ||||L7||FJ|F-J|FJ|LJ||FJ|L--7||||||||||LJF7L7LJF7LJL-7|L7L7F7F7F-J|LJL7||||F-J|J..|LF7.J
|
||||
L|--J7-|7--L--JL-----JL-----J|F7|||F-------JF7F7L-JFLJ||FJ||L7||F7||F7-FJ|L7L--7||||||||||L7FJL7L7FJL----JL-J.|||||L7L|F--J|||LJF-J-F77F.J-7
|
||||
LJL|JFF777LLJ-F7F7F7F-7F7F7F7LJLJLJL----7F7FJ||L-----7|||FJL7||LJ||||L7L7L7L7F-JLJ||||||||7||F7L7|L--7F7F7F7F7LJLJL-JFJL7F7|LJF7L--7JLF-7J.|
|
||||
FL.|-JJL-J---FJLJLJ|L7||LJLJL--7F7LF---7LJ||FJ|F-----JLJLJLFJ|L7FJ|LJFJFL-JJ|L-7FFJ|LJLJ||FJ||L-JL---J|LJLJLJL-7F7F--JF7LJLJF-JL7F7|7-LJJF--
|
||||
-J7J.|7.LFJ|7L----7L-J|L--7F7F7LJ|FJ|F7L-7LJL-JL----7F-7F--JFJFJL7L7FJLF----JF-J-|FJLF7FJ||FJL----7F7FJF7F-----J|||F--JL7F--JF7JLJLJJ|FF-|7|
|
||||
L-J-J--J7F7F-7F7F7L7F7L-7JLJLJL-7|L--JL-7L7F-7F7F---J|FJL-7FJ|L7FJFJL7FJF7F-7L-7FLJF-J|L-JLJF-----J|||FJLJ7F7|F7|LJL7F77LJF--JL7F7JFFJ7J|L77
|
||||
F||FF|J7F||L7||||L-J|L-7|F7F7F--JL--7F--JFJL7|||L----JL7F-JL--7||.L7FJL-J||FJF7L-7.L-7|F7F-7L----7FJLJL----JL7|||F--J||F--JF7F7LJ|--JLL-JJ|-
|
||||
L--L7-7-FJL-JLJLJF--JF7|||||LJF7F--7|L--7|F7|LJL--7F--7|L-7F7FJ||F-J|.LLL||L7||F-JF-7|LJLJFJLF7F7LJF--------7LJLJL-77|LJF--JLJ|F-J7.LF-7J|||
|
||||
L|.|.FF-L--------J|F-JLJLJLJF7|||F-JL---JLJ|L----7|L-7|L7FJ|LJJLJ|F7L-7JL||FJ|||F7L7|L---7L7FJLJL-7L-7F--7F7L--7F--JFJF7L----7||JF-7J|FJ7L7L
|
||||
7J.L-|.FF---------7L-7F-7F-7|LJLJL-7-F--7F7L-7F-7||F7||FJL7L--7|7||L7FJ7-LJL-JLJ|L-J|F7F7L7|L--7F7|F7LJF-J||F7-LJF7.L7|L---7FJLJ.|FJL77F|LJJ
|
||||
-7|JJLF-L--7F7F--7L--JL7LJFJL-7F---JFJF7LJL-7|L7||LJLJLJJ.L7F7L-7||-||F||L|L-JJFJF-7||LJL7||F-7LJ|LJ|F-JF-JLJ|F7FJL--JL7F7||L7F7FJL-7|F-LFJ7
|
||||
L-77-LJJL7LLJLJ7FJF7F-7L-7L--7|L----JFJL-7F7|L-JLJF---7|F-7||L7FJLJJ||7JLJFJ7L||FJJ|LJF-7LJ||FJF7L-7|L--JF7F7LJLJF--7F7LJL7L-J|LJF--JF7F-7L-
|
||||
LJ.7.-F7JL7|LF-7|FJLJFL--JF-7LJF7F7F7L--7||||F----JF-7L7L7|LJ.S|.L-|LJ|F|.LLJFFLJF-JF7L7L-7LJL7||F-JL----JLJL-7F7L7LLJL--7L-7FL-7|F7.|LJFJF|
|
||||
|F|-7F|J.FL--L7LJ|F-------JFJF7|||LJL---JLJLJ|F--7FJ7L7L-JL7F-||-|LJJJL-.F.|FLFF-JF-JL7|F7L--7|||L--------7F-7LJL-JF----7|F-JF7||||L7|F-JLF-
|
||||
-J|.J---FF|.|FL7FJL-------7|J||||L---------7FJL-7LJF7FJF7F7|7.||7---L7JJ-FFJ---L--J7F7LJ||F--J||L---------J|FJLF-7FJF7F-J|L--JL-JLJFJ||F7-JJ
|
||||
LJJ7|LFF-7.F-F-J|JF---7F--JL-JLJL7LF----7F-JL7F7L--J|L-JLJ||LLLJ|7-77J|.FLJ|FLJF----J|F7||L7F7LJF-7F7F-----JL--JFJ|FJLJF-JF--7F7F7FJJ|LJ|L|F
|
||||
|.L7-FJLFLJ7-L--J7L--7|L7F-7F-7F7L-JF7F7LJF7F||L7F-7L-7F-7LJJ||J|FF-F--7L||L7.-L----7LJLJL7LJL7FJ.LJLJF7F----7F7L-JL--7|F7L7FJ|LJ|L--JF7|-J7
|
||||
L7-.LFJ-77J|F-LF7FF--JL-JL7LJJLJL7F7|||L--JL-JL7LJJL--J|FJFJ7-L7LF-.|-LL-FJJ|-LJLF--JF---7L---J|F--7F-J|L---7LJ|F7F7F7|||L7|L7L-7L----J||FLL
|
||||
LF.L.|JF|J-|JF-|L7L--7F-7FJF-7F-7LJLJLJF------7L7F77F7.||F7|FJLJJJ|7L|F|.L|-7-|FFJF--JFF-JF-7F7|L-7|L-7L---7L-7LJLJLJLJLJ-LJJL-7L----7.LJJ|L
|
||||
.|JF--7J||FJJLLL7L-7FJ|FLJ.L7|L7|F----7L-----7L7LJL-JL7|LJL7JFJ.F7L-FFL7-|J.J-FFL-JF--7L--J-LJLJF7||F7L7F7FL-7L7F7F-77F7F7F7F-7L7F-7FJ7-LJFL
|
||||
JLF||F7-J-L7-77FL-7LJFJF-77FJL7||L---7L------J.|F-----J|F--J7L--F-7J|LLL7|.-|-J||||L-7L----7F77FJLJLJL7LJL--7|FJ|||FJFJ||LJLJFJ.LJ-||||-|7J|
|
||||
|-|L7J.LFLF7FLF--7L--JFL7|FJF7LJ|F7F7L---7F7|F7|L----7||L7F77LLF77F-L--LF7|7||-J7FF7.L----7LJL-JF---7FJF7F--J|L-JLJ|.|FJL7F--J7F--7||77.L-..
|
||||
F-7JJ-|.|--7--L-7L-7F-7FJ||FJL-7LJLJL-7F7LJL-J|L-----JFJFJ||F77FF-77-L77L-L--J7.-FJL----7LL-7F-7|F--JL-JLJF7L|F7F-7L-JL-7||F7F7|F-J|L7JJ|--F
|
||||
-J||L77-|7-J-F--JF7|L7|L7|LJF7FJF--7F7LJL--7F7L-7F-7F7L7L7||||F7|FJ.||.L-F|J.|J7LL-7F7F7L---JL7LJ|F-7F7F--JL7LJ|L7|F-7F-J|LJLJLJL7FJFJ7LJJ.J
|
||||
LFF|-|FJLJ|.|L---J|L-JL-J|F-JLJFJF-J|L----7|||F7|L7|||||FJ||||||||F7F77LF.||FF77||FLJLJL-7F7F7L7FJ|FLJLJF--7L-7|FJ|L7|L--JF7F-7F-JL-JF-7..-.
|
||||
FLF|FJJ77|L.LF----JF7F7F7|L---7|FJF7|F----JLJLJLJFJLJL-JL-JLJ||||LJLJL7.F.|JL||FF7F7F--7FJ|LJL-JL-JF7F7FL-7|F-JLJFJFJ|F-7FJ|L7|L7-F7F|7J|.|7
|
||||
F-LJ7..FL|.FLL-----JLJLJ|L----J|L-JLJL-----7JF77FJF7F7F--7F7FJ|LJF-7F7L-7F7JFJL-J||LJF-JL-J|F------J|||F7FJ|L--7-L-JJ|||LJFL-JL-JFJL--77J7L7
|
||||
|JF-7F77J|F7LLF7F7F---7FJF7F--7|F------7F--JFJ|FJFJLJLJF7LJLJ|L7FJ-LJL--J|L7L--7FJL7FJF7F7F7L-7F7F-7LJLJLJJL--7L7F7FFJ|F-----7F7||F--7L7FL7.
|
||||
|F-JJL|.-FJL7F||||L--7LJFJLJF7LJ|F-7F-7LJF7L|FJ|FJLF7F-JL-77F7F||F7FF7F-7|FJF7FJL-7|L7|LJ|||F7LJLJFL-----7F--7L7LJ|FJFJ|F----J|L7||F7L7|FJ-7
|
||||
FJ7L--J7LL-7L-J|||F7LL-7|F--J|F7LJ7LJFJF-JL7|L-JL--JLJF--7L7||FJLJL-JLJFJ||FJ|L--7||FJL-7|||||F7F7F77F7F7LJF-JFJF-JL-J.||F7F7-|FJ|LJL7LJ7JJF
|
||||
.L-7J7L|L|FL7F7LJLJ|F7JLJL--7LJL-----J||F--J|F--7F----JF-JFJ||L-7F-----JFJ||FJLF-J|||F7FJLJLJLJLJLJL-J||L--JF7L-JF7F77FJLJLJL7||-|F--JF-7.|F
|
||||
-7LL7FLJ7|F7LJL-7F7LJ|F-----JF7F---7F7FJ|F7L|L-7|L----7L-7L7||F-J|-F-7F7L7LJL7FJF7||||LJF--------7F7F7LJF-7.||F-7||||FJF7F7F7LJL-JL-7FJFJ7-L
|
||||
.FFJL.|.|7|L7-F-J|L-7LJF7F7F7|LJFF-J||L7|||FJF7||F-7F-JF7L-J||L-7L7|FJ|L7|F--JL-J||||L--JF-------J|LJL--JFJFJLJFJ|||||FJLJ||L-7F-7F-J|FJJLFJ
|
||||
F-J7J7F-F7L7L-JF-JF-JF-J||LJLJFF7L--JL7|||||FJLJLJ|LJF7||JF7|L7-L7||L7L7|||F77F7FJ||L--7FJF----7F-JF-7F--JFJF-7L-JLJLJL-7|LJ7FJL7LJF-JL-7F7J
|
||||
L7.J|FF-J|-L7F7|F-JF7|F-J|F----JL-7F-7LJ||LJL-7F--7F-JLJ|FJ||FJF7|||FJFJLJLJ|FJLJFJ|F7FJL-JF-7FJ|F7L7|L---JFJ7|F7F-7F7F7L---7|F7L--JF---J||J
|
||||
F77LLFL-7L-7LJLJL--JLJL-7||F-----7LJJ|F7LJF---J|F-JL7F-7|L7LJL-JLJLJL7L7F---JL--7L7||LJF7F-JFJL7|||FJ|F7F--JF7LJLJFJ|||L---7||||F--7L----JL7
|
||||
FJL7||F|L-7L7F--------7-||LJF-7F7L--7||L-7|.F7FJL---JL7LJ7L-7F7F--7F7|FJL-7F----JFJ|L7FJ|L-7L-7LJ||L7|||L---JL---7L7||L---7LJ|||L-7|F-7F-7FJ
|
||||
F-|-F-----JFJL-----7F7L7LJF7L7||L---JLJF-JL-JLJF-----7L77F-7LJLJF7||||L7F-JL----7|FJFJL7|F-JF-JF-JL-JLJL-----7F7FJ7|||F---JF7||L7FJ||FJL7LJ7
|
||||
F-JFL-----7|F7F--77LJL7L7FJ|FJLJF7F--7FJF-7F--7L----7L7L-JFJF7F7|LJ|LJFJ|F7F7F--JLJFJF-J|L-7||FJF7F7F7F7F7-F7LJLJ|FJ||L7F--J|||JLJ.LJL7FJFL|
|
||||
LL-.F---7FJ|||L-7|F--7L7||FJL---JLJF-JL-JL|L-7|F-7F7L7L7F7|FJLJ|L-7|F-JFJ|LJ|L--7F-JFL-7L-7|L7L-JLJLJLJLJL-JL-7.F7L7|L-J|F--JLJLF----7LJL77|
|
||||
J-L.L--7|L7|||F7||L7FJFJLJ|F------7L---7F-JF-J||-LJL-JL||LJL--7|F-J||F7L7|F-J.F7||F-7F7L-7||FJF7F7F7F-7F---7F7L7||7LJF-7|L--7F7FJF---J-J7F-J
|
||||
L7.-F-7|L-JLJLJLJ|FJL7L--7LJF---7FJF-7FJL-7L-7LJF7F7FF7LJF7F7FJ|L-7|LJL7LJL7F7|LJ||FJ|L7FJLJL-J||LJ|L7|L-77LJL7LJL-7L|FJ|F--J|||FJLF7J-7F|7.
|
||||
L|77L7LJF--7F-7F7|L7FJF--JF7|FF-JL-JLLJF7FJF7L7FJLJL7||F-JLJ|L7|7FJL7F7L7F-J||L7FJ|L7L7||F-----J|F7L-JL7FL--7-L----JFJL-JL-7|||||F7||J.FJF77
|
||||
|.77FJF-JF-JL7|||L-JL-JF-7|||FJF-7F----J||FJL-J|F---J||L---7|FJL7L-7LJ|F|L-7||FJL7L7|FJLJL---7F7LJL---7|F--7L----7F-JF-7F--JFJLJLJLJL--7-||7
|
||||
L-J-|FJJ|L-7FJLJL7F7F7FJFJ|||L7|FJ|F----JLJF7F-J|F7F7|L7F--JLJF7L--JF-JFJF7LJ|L-7L-J||F-7F---J||FF7F7-||L-7|F7F--JL7FJFJL---JF7F7F-----JL|L7
|
||||
|.|.LJJLF--J|F-7-LJ|||L7L7|||FLJL-JL-----7FJ|L7FJ|LJLJFJL--7F-JL---7L7FJFJL--JF7L--7|LJ-||F7FFJL-JLJ|FJL--JLJ|L--7FJL7L--7F7FJ|||L-------JFJ
|
||||
F.7-FJ..L7F7||FJF7FJ||FJFJ|LJF7F---------J|FJFJ|7|F-7FJF7F7||F7F-7FJFJL7L--7F-J|F7FJL77FJ||L7|F7F--7LJF7F--7JL---J|F7L--7LJLJFLJL7F7F7F7F7|J
|
||||
L7.FJJ77FJ||||L-JLJFJ|L7L7L7FJLJF7F----7F-JL7L7L7|L7||FJ|||LJ||L7|L7L--JF--JL-7||||F7L7|FJ|FJ||||F-JF-JLJF7L----7FJ||F-7L--7F--7FJ|LJLJ||LJJ
|
||||
FLL7L||FL-JLJL----7|FL7|FJFJL-7FJLJF---JL--7L-JFJ|FJLJ|FJ|L7FJ|FJ|.|F--7L7F7F7||||LJ|FJ|L7|L7LJLJL--J7F7FJL-----JL7|LJLL7F7LJF-J|FJ|LJ-LJJJL
|
||||
||.|JLLJLFF-----7FJ|F-J|L-JF--J|F-7L--7F-77L7F7L7|L7|FJL7|FJL7|L7L7||F7L7LJLJ|||||FFJ|FJFJL7|F7F7LF--7||L-7F--7F7FJL---7LJL-7L-7LJF7.F7|||LJ
|
||||
LLJ-F7LJ|FL7F7F7LJFJL7FJF-7L---JL7L-7FJL7|F7LJL7||FJFJF-J|L7L||FJFJLJ|||L7F7FJ|LJL-JFJL7L7FJ||||L7L-7||L--J|F-J|||F---7L---7L7FJF-JL7F77-J.|
|
||||
-7|-|--.LJLLJLJL7FJF7LJ7L7L---7-FJF7LJF7|||||F-J||L7L7|F7|FJFJLJFJF7F|L--J|LJ-L---7FJF-JFJL7|||L7|F7||L----JL-7|LJ|F7.L7F--JFJL-JF-7L-77|LF7
|
||||
F|J.|7F|.7-F----JL7|L-7F7L-7F7L-JFJL7FJLJ||L7L-7LJFJFJ|||||FJF--JFJL7L-7F7L7F--7F7|L7L-7L7FJ|||FJLJ|||F7F--7F-JL7FJ|L-7LJF7|L--7FJL|F-J77L-J
|
||||
L|77.F7|-|.L---7F-JL-7||L--J|L--7|F-JL7F-J|FJF7|F-JFL7|||||L7||F7L-7|F7LJ|FJL-7||||FJF7|FJ|FJ||L--7|||||L-7||F7||L-JF7L--JL---7|L-7|L7-LJLJ7
|
||||
LL-J7L-L7FF----J|F---J|L----JF7FJ|L-7FJ|F7||FJ|||F-7FJLJ||L7||FJL7FJ|||F7|L-7FJ||||L7|LJL7|L-JL7F7|||LJ|F7||LJL-JF7FJL-7F-7F7FJ|F-J|FJJ7.F-7
|
||||
-.LL7|LF77|F7F-7|L7F-7|FF7-F-JLJFJF7|L7||LJ||7||||.LJF7FJ|FJ||L-7||LLJ||LJF-J|7|||L7|L7|FJL-7F-J|LJ||F-J|LJ|F7F7FJLJF7JLJJ|||L7|L-7LJ|.F7F.|
|
||||
|.|.L|-JJFJ|LJ-LJ7LJFJL-JL7L-7F7|FJLJFJ|L-7||FJ||L--7||L7||FJ|F-J||F--JL7J|F7L7LJL7|L7|FJF7FJL7FJLFJ|L-7L-7||LJLJF--JL---7LJ|FJ|F-J.|F-L|J7F
|
||||
|--F7|JLLL-JLF------JF---7|F7||LJ|F7FJFJF7|||L7||F-7||L-J||L7|L-7||L7F-7L7||L7L--7||7|||FJ||F-JL7FJFJF7|F7|||F7F-JF-7F--7L-7|L7|L7--FF-7-7-7
|
||||
LJ-|-FF-JFJ..L--7F7F7|F--JLJ|LJF-J||L7L-JLJ|L7LJ||J||L7F7|L-J|F7|||7||-|FJ||F|F--J|L7|||L7LJL-7FJ|FJ-|LJ||||LJLJF-JFLJF7L--J|FJL-J7-L-.J.F.|
|
||||
|77L-FJ7LJ7|7LF-J|||||L--7F7L-7L7FJ|FJ7F7-FJFJF-JL7|L7LJ|L--7LJ||||FJ|FJ|FJ|FJL-7FJFJ||L7|F---J|FJL7FJF7|||L-7F7L-----JL---7|L7LF7J.|F-.FJ7F
|
||||
|F||||||.F|LJ-L7FJ||LJFF-J||F7L-JL7||.FJL-JFJ7L-7FJL-JF7|F--JF7LJ||L7|L7|L-J|F7FJL7L7LJF||L7F7FJL7FJ|FJLJ|L7FJ|L7F---7F7F7FJL-J-|L7--J.F|7FJ
|
||||
LFLJL|L|.F|F7.F||FJL7|FJF7||||F7F7||L7L--7FJF7F7|L--7FJLJL-7FJL7L||L|L7LJ-F7||LJF7L7L--7|L7||||F-J|FJL7F-JFJL7|FJL--7LJLJLJF7F7F|FJJ7L7LF777
|
||||
|.||FJ-LF-7LFF7LJ|F-JFJFJ||LJ||||LJ|FJF7L|L7|LJLJF7FJ|F7F-7LJF7L7LJFJFJ-F-JLJL--J|FJF7FJ|FJ|||||F7||F7||F7L-7LJL7F-7L--7.F-JLJL-JL7FL.|.LLJ-
|
||||
FF|L7JJLJF|F|LF7LLJF7L7||||.FJ|||F-J|FJL-JFJL--7FJLJJ||LJFL7FJL7|JFJFJF-JF-7F-7F-JL-J|L7||FJ|||||||LJ|||||F7L-7FJL7|F-7L-JF--7F-7FJJ.JL-LF77
|
||||
7L|L-JFLFJ-7.FJL7F7|L-J|FJ|FJFJ|||F7||F7F7|7F--JL-7F-JL-7F7||F7|L7L7L7L7FJFJL7|L7F--7L7|||L7|||||||F-J|LJ||L7FJL7FJLJL|F7FJF7|L7LJJ-|.7LL7LJ
|
||||
|FJFJ.|-|FLL7L-7LJ||F7FJ|FJ|FJFLJ||||||||||FJF7F-7|L---7LJ||LJ|L7L7|FJFJ|JL7FJL7LJF-J|LJLJFJ|||||||L7FJF7||L||F7|L-7F7|||L-J||FJFJJF|FLF.||J
|
||||
LJLL7LJFF-L-|.LL-7LJ|||FJL7||F---J||||||||||FJ||FJL--7FJF-J|F-JFJFJLJFJFJF7||-||F-J7F77F-7L7|||||||FJ|J|LJL7|LJ|L7FJ||LJ|F-7|LJFJ|LFF-FL-J||
|
||||
LL7F|7.LF.|-L-7F-JF7|LJL7FJLJ|F-7FJ||LJ||LJ|L7|||F7F-JL7L-7|L-7L7L--7L7|FJLJL7FJL--7|L-JFJFJ|LJ||||L7|FJF-7||F-JFJL-JL-7|L7||7L|L|-FF-77-LF7
|
||||
.LF--|-|F7..---L7FJLJF-7|L7LFJ|FJ|FJ|F-JL-7L-J||LJ|L7-FJF-J|F-JFJF7FJ.LJ|F7F-JL7F7FJL-7FJJ|FJF-J|LJFJ|L7|FLJ||F-JF7F7F7||FJLJ-7LFJ|||.LJ-|L|
|
||||
.JLL|JFF|-FF--7-LJ.F7L7||FJFJFJL7||FJ|F7F-JF--JL-7L7L7L7L-7|L7FJFJLJF7F7LJLJF--J|LJF--JL-7LJ-|F7L7J|FJF||F--J|L7FJ||LJLJ|L-7LLL7L-J-7J7JF-77
|
||||
L-7.L.|LL7L|7.JJFF-JL-JLJL7L7|F-J||L7|||L7JL7F7F-J.L7L7L7FJ|FJ|FJ-F-JLJL----JF-7L--JF7F-7L7F7LJL7L7||F-J||F-7|FJ|FJL---7L7FJF|FLJJL-|.J-|-|7
|
||||
|FJ.L7|F-|FL|.|7F|F7F-7F7FJFJ|L7FJL-J|||FJF7LJ|L-7F7L7L7|L7LJFJL7.L--------7FJ||F7F7||L7L7LJL-7F|FJ||L7FJLJFJ|L7|L7F---JLLJL--||-..|J.L-J-|7
|
||||
|-F-F-J7-7JFJ-|FFJ||L7|||L7L-J.|L---7LJ|L-JL7||F-J||FJFJL7L-7L-7L7F7F------JL-7LJ|||||FJ-L7F-7|FJ||LJFJL--7L7L7||F|L-7-L..L|.LJL-7F|LL-FL7.|
|
||||
|-L7||--FJJJ.|L-L-J|FJ||L-JF7F7|F7F-JLFJF-7FJFJL--J|L7L-7L7FJF-JFJ|LJF----7F-7L-7LJ|||L-7FJL7LJL7L--7L7F-7L7L7|||FJF-J7L|-F-J.||FJ-7-.F|7|-7
|
||||
-77L-|-LJJ.|LJJLFJJLJ.LJ-LFJLJLJ|LJLF-JFJ||L7|F7F--JFJF7L7|L7L7FJJ|F7|F---J|7L-7L7FJ||F7|L7FJF--JF7FJ7LJ.L7|-LJ||L7L--7-.F7|JF7LF7F|F7-J-|.|
|
||||
L77JLJ77.F--7|JF--FLJ7L7F.L7F7F7L--7L-7|F-JFJLJ|L--7L7||FJ|FJFJL-7LJLJL-7F7L--7|FJ|FJLJLJFJL7L-7FJ|L--7L|-||LF-JL7|F-7|JF|L|J||FF--JFLJ|.F-L
|
||||
LLJJJ|L7-7FJ7|-|7F7J|J7FF--J|LJ|F--JF7||L7FJ7F-JF7FJFJ||L7|L7|F7FJF-----J||F7FJLJFJ|F----JF7L-7LJFJF7FJ.LLLJ-L7F7|||LLJ--F-|L|7J.7|F|J.77JL7
|
||||
||JF-7FJ|L.L-J.|F|.|LJ|-|F--JF7|L-7FJLJ|FJL-7|F7|LJ-L7||FJL-JLJ||-L----7FJ|||L--7L7|L7F7F7||F7L7-|FJLJ--77L|J|||||||.LL7L|-|.F--7.LF7J.-77J|
|
||||
FL7L.LL||L-JF|-J7|F-7.--LJJF-JLJF7||F-7|L7F-J|||L--7FLJ|L7JJ.J|LJJLF---J|FJ|L7F7L7LJJLJ||||||L-JJLJ-JJ|LJ7|L-LLJLJ||JLJ-JL|F7J-7.J-L7.FL.L77
|
||||
7F7JL77|JL|-FFFJ|F77|F|.|J-|F-7FJ||||FLJFJL-7||L7F7L--7|FJJ|77F|7.|L---7|L7L7||L7L----7||||LJLJ|LFJ|7L-7L--J.LJLFLLJJFL.F7FLJ.F|F|7L||J|--|J
|
||||
-|L|LLL77FF-|FJJJ|JF7--7L|FLJ.|L7||||F--JF-7|LJFJ|L7F-J|L7F|FJ777.JJLF-J|FJFJLJ.|F7F-7|LJ||7J7-J.|.FJ.L--FJ7JLJL7JFJJF-7L-|L--LL-L7.FJL-JL||
|
||||
FL7F--7L|-JF--L-FFJFJL--7LF---JFJLJLJL--7L7|L7.L7|FJ||.L-J7|FL-J7.L|-|F7|L7L--7FJ|LJFLJJFLJJ---F-J-|.FLL-7-J7-.7J.JF-J-L77JF..FJ7|F7|F7.FFL|
|
||||
JL7JF-JL||L-LJL77J-L7JF|-FL7F--J|..|.F--JFJL-JFFJ|L7L77.LJLJJ7|L|J.-J||||FJF-7||FJJF77.L-|.|.L-JJ7-LF7.|.-J7F-----J-LFFJL-FLJ-J.--7-F-|JJJLL
|
||||
.FJ-JF|7F7|.F-7LLJ.L||||.|FLJJJ|J-|LFL--7L-7-|-L7|FJFJ77JF|-FL7JLF77.||LJ|FJFJ||||FJ|77|L|7F7L|L|7..||7|FL.FF7L.|LL7LJ--7.|LJ77LJ|J-LFJ|F|.L
|
||||
LLJJ.F7-J|-FJ.L7L-F-.|J7.||F|7-||.|F----JF7L---7||L7|JLLF77L7L|JF|.77LJJ-LJ.|FJ|L-JFJL|7-FFL--L-FF-7-|-F77L-|7J-|..|7|J||F-7LJ7LL7J|.|.FJF||
|
||||
||77FJ|F7.L7|FL||FJ77|J|---7|--J-7-L-7F-7|L--7FJLJFLJ.F.LFL-..-FFJLJJ|L.FJJ-LJFJF7FJJ7L|LJ7J7.|-LJ7.FLLJ-7L7L7.FJ-FJF7||.7--7J7L----|77|-LJ|
|
||||
-|-|--F7|7..|J-L|-LJ7FFJF..L|--|-J7|7LJ-|L--7LJ.|7--|-|7L|FJ-7L7L7F|FJ--L-JJLLL7|LJ7|JJJF-JLL7FF7-7-JFJ|7LF|.|.L--F-J-J-FJF7|LJ-JJLL-JFJ|FFF
|
||||
LL.|||.F|L77.L-JL|L|7-|JL--.L-7L-L|JFF--JF-7L--7JJ.FF.|||.|7LL.-7|J7|FF.|J.7LL-LJ-L-F7|FL-||FLFJ7-|J.J7L--|7FJ777.F-7|---7LL7||FLJFJ|-7-|--J
|
||||
LJ-JJL-FLJ|J-JL7.7LLJ-F..-.-J.7LLL7-JL---J-L---JJ.F.F7.LJ.LJLJ.J-J.|.JL7-.J.JJFL|J.|JF-J-L|-LJF-F--FJJLLJLJJ-L|JLLJL7--J.J..|-F7JL--L-J.|JFJ
|
151
day10/solution.lua
Normal file
151
day10/solution.lua
Normal file
@@ -0,0 +1,151 @@
|
||||
---@alias Pipes PipePart[][]
|
||||
---@alias Pos {y: integer, x: integer}
|
||||
|
||||
---@class PipePart
|
||||
---@field p Pipes
|
||||
---@field s string
|
||||
---@field pos Pos
|
||||
PipePart = {p = {}, s = ".", pos = {y = -1, x = -1}}
|
||||
|
||||
---@param o PipePart | nil
|
||||
---@param p Pipes
|
||||
---@param s string
|
||||
---@param pos Pos
|
||||
---@return PipePart
|
||||
function PipePart:new(o, p, s, pos)
|
||||
self.__index = self
|
||||
---@param a PipePart
|
||||
---@param b PipePart
|
||||
---@return boolean
|
||||
self.__eq = function (a, b)
|
||||
return a.s == b.s and a.pos.y == b.pos.y and a.pos.x == b.pos.x
|
||||
end
|
||||
|
||||
o = o or {}
|
||||
setmetatable(o, self)
|
||||
o.p = p
|
||||
o.s = s
|
||||
o.pos = pos
|
||||
return o
|
||||
end
|
||||
|
||||
-- Assume "S" pipes are unambiguous
|
||||
|
||||
---@param c boolean Check if connected
|
||||
function PipePart:left(c)
|
||||
if self.s == "S" or self.s == "-" or self.s == "J" or self.s == "7" then
|
||||
local lp = self.p[self.pos.y][self.pos.x-1]
|
||||
if not c or lp ~= nil and lp:right(false) == self then
|
||||
return lp
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---@param c boolean Check if connected
|
||||
function PipePart:top(c)
|
||||
if self.s == "S" or self.s == "|" or self.s == "J" or self.s == "L" then
|
||||
local tp = self.p[self.pos.y-1][self.pos.x]
|
||||
if not c or tp ~= nil and tp:bottom(false) == self then
|
||||
return tp
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---@param c boolean Check if connected
|
||||
function PipePart:right(c)
|
||||
if self.s == "S" or self.s == "-" or self.s == "L" or self.s == "F" then
|
||||
local rp = self.p[self.pos.y][self.pos.x+1]
|
||||
if not c or rp ~= nil and rp:left(false) == self then
|
||||
return rp
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---@param c boolean Check if connected
|
||||
function PipePart:bottom(c)
|
||||
if self.s == "S" or self.s == "|" or self.s == "F" or self.s == "7" then
|
||||
local bp = self.p[self.pos.y+1][self.pos.x]
|
||||
if not c or bp ~= nil and bp:top(false) == self then
|
||||
return bp
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---@return fun(): (PipePart | nil)
|
||||
function PipePart:next()
|
||||
local nexts = {
|
||||
self:left(true),
|
||||
self:top(true),
|
||||
self:right(true),
|
||||
self:bottom(true)
|
||||
}
|
||||
local idx = 0
|
||||
return function()
|
||||
repeat
|
||||
idx = idx + 1
|
||||
until idx > 4 or nexts[idx] ~= nil
|
||||
return nexts[idx]
|
||||
end
|
||||
end
|
||||
|
||||
---@return fun(): (PipePart | nil)
|
||||
function PipePart:iterate()
|
||||
local last = nil
|
||||
local cur = self
|
||||
return function ()
|
||||
if self == cur and last ~= nil then
|
||||
return nil
|
||||
end
|
||||
for n in cur:next() do
|
||||
if n ~= last then
|
||||
last = cur
|
||||
cur = n
|
||||
return last
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function main()
|
||||
-- Parse input
|
||||
---@type string[]
|
||||
local lines = {}
|
||||
for line in io.lines("input.txt") do
|
||||
lines[#lines + 1] = line
|
||||
end
|
||||
---@type Pipes
|
||||
local pipes = {}
|
||||
---@type PipePart
|
||||
local starting = nil
|
||||
for y, line in ipairs(lines) do
|
||||
pipes[y] = {}
|
||||
for x = 1, #line do
|
||||
local s = line:sub(x, x)
|
||||
local part = PipePart:new(nil, pipes, s, {y=y, x=x})
|
||||
pipes[y][x] = part
|
||||
if s == "S" then
|
||||
starting = part
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Part 1
|
||||
local length = 0
|
||||
local last = nil
|
||||
for p in starting:iterate() do
|
||||
length = length + 1
|
||||
last = p
|
||||
end
|
||||
print("Part 1:", length // 2)
|
||||
|
||||
-- Part 2
|
||||
local area = 0
|
||||
for p in starting:iterate() do
|
||||
area = area + (p.pos.y + last.pos.y) * (p.pos.x - last.pos.x)
|
||||
last = p
|
||||
end
|
||||
area = math.abs(area // 2)
|
||||
print("Part 2:", area - length // 2 + 1) -- Think about this (it is right)
|
||||
end
|
||||
|
||||
main()
|
1
day11/.gitignore
vendored
Normal file
1
day11/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
*.class
|
10
day11/eg.txt
Normal file
10
day11/eg.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
...#......
|
||||
.......#..
|
||||
#.........
|
||||
..........
|
||||
......#...
|
||||
.#........
|
||||
.........#
|
||||
..........
|
||||
.......#..
|
||||
#...#.....
|
140
day11/input.txt
Normal file
140
day11/input.txt
Normal file
@@ -0,0 +1,140 @@
|
||||
.....#..........#...........................................#................#.....................................#...............#........
|
||||
.........................................#...........................................#........................................#.............
|
||||
..........................#........................................................................#........................................
|
||||
..................................................#.......................................#.............................#...................
|
||||
..........................................................#............................................................................#....
|
||||
.......................................#............................#...........................#...........................................
|
||||
...................................................................................#..................#............#........................
|
||||
...#..........#.....#.......................................................#................................#................#.............
|
||||
................................................................#...........................................................................
|
||||
.........................#.....................#......................#..................................#...........................#......
|
||||
..................................#.........................................................#...............................................
|
||||
...........................................#................................................................................................
|
||||
............................................................#............................................................................#..
|
||||
........#..................#.............................................#......................#..................#........................
|
||||
....................................#...............#...............#........................................................#..............
|
||||
..................................................................................#............................#............................
|
||||
.#...........#......#....................................#.......................................................................#..........
|
||||
.........................................#............................................#.................#............#......................
|
||||
.................................#.............................................#...........................................#..............#.
|
||||
....#.......................................................................................................................................
|
||||
.........................#.............................#..........#.....#...................................#...............................
|
||||
............................................................#....................................#..........................................
|
||||
.................#............#...................................................................................................#.........
|
||||
......................................#...............................................#...............#.................................#...
|
||||
...............................................................#..................................................#.....#.....#.............
|
||||
#.....................#..............................#...........................#..........................................................
|
||||
...............................................#.....................#...............................................................#......
|
||||
.........................................#...............#..................................#...............................................
|
||||
......#............................#........................................................................................................
|
||||
..........................................................................#...........................................#.....................
|
||||
..................#...................................#.............................#..............#........#...................#...........
|
||||
...........................#......................................#.........................................................................
|
||||
..............................................#...........#....................................#...........................#..............#.
|
||||
....#..................................#....................................................................................................
|
||||
................#.....#.....................................................#.............................#........#........................
|
||||
...............................................................#......#.....................................................................
|
||||
............................................#..................................................................................#............
|
||||
.......#........................#....................................................................................................#......
|
||||
..............................................................................#...............#...........................#.................
|
||||
.....................#.........................#............................................................................................
|
||||
..........................#.................................#.....#...............................................#.........................
|
||||
...................................................................................................#..............................#.........
|
||||
..................#...............#.......#............#....................................................................................
|
||||
.........................................................................................#....................#...............#.............
|
||||
............#............................................................................................................................#..
|
||||
......................#......................#..........................#......#..........................................#.................
|
||||
............................................................................................................................................
|
||||
...#...............................................................#..............................................#.........................
|
||||
..........................................#..................#.............#..........................................................#.....
|
||||
..................#............................#............................................................................................
|
||||
......................................................#.................................#.........#.........................................
|
||||
......................................#.................................#.........#........................#................................
|
||||
#..........................#..........................................................................#....................#................
|
||||
...........#................................#...............................#........................................#.............#........
|
||||
...................................#....................................................................................................#...
|
||||
............................................................................................................................................
|
||||
...............#.........................#..................................................................................................
|
||||
.................................................................#.......#......#...........................................................
|
||||
#.....................................................................................#........................................#............
|
||||
.........................#...........................................................................#...............................#......
|
||||
....................#..................#..........#.........#...............................................................................
|
||||
..........#......................#.........................................................................#...............#................
|
||||
.............................................#................................................#.............................................
|
||||
......#...............................................#........................#...................................................#........
|
||||
............................................................................................................................................
|
||||
..............................................................#..........................#..................................................
|
||||
............#.....#....................#...........................................#........................................................
|
||||
..#................................................#......#....................................................#............................
|
||||
..........................#...................................................................................................#..........#..
|
||||
....................................................................#.......................................................................
|
||||
....................#.........................#........#...........................................................................#........
|
||||
#.......................................#..........................................................#.....#..........#.......................
|
||||
............................................................#............#............#.....................................................
|
||||
............................................................................................................................................
|
||||
............................................................................................................#........................#......
|
||||
..............................#..............................................#.........................#.....................#..............
|
||||
.......#..............#.............#...............#.......................................................................................
|
||||
............................................................................................................................................
|
||||
..................#......................................................#....................#................#............................
|
||||
...........................#.....#......#........................#.............................................................#............
|
||||
............................................................................................................................................
|
||||
#...................................................................................#......................#..........#................#....
|
||||
............#..........#......................#.............................................................................................
|
||||
.............................................................#..........#.........................................................#.........
|
||||
....#.............#.........................................................................................................................
|
||||
................................#......#.........................................#..................#...........#..........#................
|
||||
............................................................................................................................................
|
||||
#..............#......................................#...............................................................#.....................
|
||||
..........#..................................#..............................#...............................................................
|
||||
............................................................................................................................................
|
||||
.................................................#..............#....................#.........#.......................................#....
|
||||
............................................................................................................................................
|
||||
............................................................................................................................................
|
||||
.............#............#................................#.........#......................#.............#................#................
|
||||
#..............................................#................................#...........................................................
|
||||
..........................................#...............................#.......................................#......................#..
|
||||
..............................#........................#..........#.........................................................................
|
||||
.........#.......#..........................................................................................................................
|
||||
.........................#................................................................#...................................#.............
|
||||
.............................................................................#.....................................................#........
|
||||
....................................................................................................#.......................................
|
||||
......#.....................#.....................................................................................#.........................
|
||||
......................................#...................#...............................................................#.................
|
||||
......................................................................#.....................#............................................#..
|
||||
..#...............................#............#...............#...................#..............................................#.........
|
||||
..............#..........................#.............#....................................................#.........#.....................
|
||||
...............................................................................................#............................................
|
||||
........................#.........................#...............#...........................................................#.............
|
||||
.........#..................................................................................................................................
|
||||
.....................................#...............................................................#......................................
|
||||
.........................................................#..................#...................................#...........................
|
||||
.................#..........................................................................................................................
|
||||
..............................#.................#....................#...................#...............................#..................
|
||||
...............................................................................................#.................................#..........
|
||||
.........#..........................................#.....................................................#.................................
|
||||
....#................#............#..............................................#..........................................................
|
||||
..........................#............#.............................................................................#......................
|
||||
...............#...............................................#...........#...................................................#............
|
||||
.......................................................................................................................................#....
|
||||
...............................#...............#.....................................#............#.........................................
|
||||
..#.........................................................................................................#...............................
|
||||
...........................#...............#..............................................#..............................#..................
|
||||
................#......................................#.........................................................................#..........
|
||||
.......................#..............#...............................#.....................................................................
|
||||
...............................................................#................#.........................#.........#.......................
|
||||
...............................#............................................................#......#........................................
|
||||
......#............#....................................................................................................#...................
|
||||
...........................#..........................................................#................................................#....
|
||||
....................................................#..................#...............................#....................................
|
||||
..............................................................................#.............................................................
|
||||
...#............................#..............................#..................................#.................#........#..............
|
||||
....................................................................#.........................................#.............................
|
||||
...........#.....#...............................#..........................................#...............................................
|
||||
.....................................#...........................................................................................#..........
|
||||
....................................................................................................#...................................#...
|
||||
.....#..................#.....................#............................#......#...............................#........#................
|
||||
.............#...................................................#.............................#............................................
|
||||
..............................#...........................#.............................................#..................................#
|
||||
......................................#...............................................#........................................#............
|
||||
...................#......#........................#.................#................................................#.....................
|
90
day11/solution.java
Normal file
90
day11/solution.java
Normal file
@@ -0,0 +1,90 @@
|
||||
import java.io.IOException;
|
||||
import java.math.BigInteger;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.SortedSet;
|
||||
import java.util.TreeSet;
|
||||
|
||||
class Solution {
|
||||
public static void main(String[] args) throws IOException {
|
||||
String contents = Files.readString(Path.of("input.txt"));
|
||||
String[] lines = contents.split("\n");
|
||||
List<Galaxy> galaxies = new ArrayList<Galaxy>();
|
||||
SortedSet<Integer> xs = new TreeSet<Integer>();
|
||||
SortedSet<Integer> ys = new TreeSet<Integer>();
|
||||
for (int x = 0; x < lines[0].length(); x++) {
|
||||
xs.add(x);
|
||||
}
|
||||
for (int y = 0; y < lines.length; y++) {
|
||||
ys.add(y);
|
||||
for (int x = 0; x < lines[y].length(); x++) {
|
||||
char c = lines[y].charAt(x);
|
||||
if (c == '#') {
|
||||
galaxies.add(new Galaxy(x, y));
|
||||
ys.remove(y);
|
||||
xs.remove(x);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Part 1
|
||||
List<Galaxy> galaxiesPart1 = expandSpaces(galaxies, xs, ys, 2);
|
||||
int sum1 = 0;
|
||||
for (Galaxy g1 : galaxiesPart1) {
|
||||
for (Galaxy g2 : galaxiesPart1) {
|
||||
sum1 += g1.distance(g2);
|
||||
}
|
||||
}
|
||||
System.out.println(String.format("Part 1: %d", sum1 / 2));
|
||||
|
||||
// Part 2
|
||||
List<Galaxy> galaxiesPart2 = expandSpaces(galaxies, xs, ys, 1000000);
|
||||
BigInteger sum2 = BigInteger.ZERO;
|
||||
for (Galaxy g1 : galaxiesPart2) {
|
||||
for (Galaxy g2 : galaxiesPart2) {
|
||||
int d = g1.distance(g2);
|
||||
sum2 = sum2.add(BigInteger.valueOf(d));
|
||||
}
|
||||
}
|
||||
System.out.println(String.format("Part 2: %d", sum2.divide(BigInteger.TWO)));
|
||||
}
|
||||
|
||||
private static List<Galaxy> expandSpaces(Iterable<Galaxy> galaxies, Iterable<Integer> xs, Iterable<Integer> ys, int times) {
|
||||
List<Galaxy> newGalaxies = new ArrayList<Galaxy>();
|
||||
for (Galaxy g : galaxies) {
|
||||
int dx = 0;
|
||||
int dy = 0;
|
||||
for (Integer x : xs) {
|
||||
if (x < g.x) {
|
||||
dx += times - 1;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
for (Integer y : ys) {
|
||||
if (y < g.y) {
|
||||
dy += times - 1;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
newGalaxies.add(new Galaxy(g.x + dx, g.y + dy));
|
||||
}
|
||||
return newGalaxies;
|
||||
}
|
||||
}
|
||||
|
||||
class Galaxy {
|
||||
public int x;
|
||||
public int y;
|
||||
public Galaxy(int x, int y) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
public int distance(Galaxy other) {
|
||||
return Math.abs(other.x - x) + Math.abs(other.y - y);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user