Day 8
This commit is contained in:
parent
d60382cc82
commit
5aa7827c02
7
d08/Cargo.lock
generated
Normal file
7
d08/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 = "d08"
|
||||
version = "0.1.0"
|
12
d08/Cargo.toml
Normal file
12
d08/Cargo.toml
Normal file
@ -0,0 +1,12 @@
|
||||
[package]
|
||||
name = "d08"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
|
||||
[[bin]]
|
||||
name = "d08"
|
||||
path = "main.rs"
|
716
d08/input.txt
Normal file
716
d08/input.txt
Normal file
@ -0,0 +1,716 @@
|
||||
LRRRLRRRLRRLRLRRLLRRLLRLRRRLRRLRRRLRRLLRLRLRRRLRLLRRRLLRLRRRLRLRRRLRRRLRRRLRRRLRLLLRRRLRRLRRLRRRLRLRLRRLRLRRRLRLRLRLRRRLRRLRLRRRLRRLRRRLRRLLRRRLLRLLRLRRRLRLLRRLLRRRLRLLRRLRLRRLRRRLRLRLRLLRLRRRLRRRLRLLLRRRLRLRRRLRRLRRLLLLRLRRRLRLRRRLLRRRLRRRLRRRLLLRLRLRLLLLRRRLRRLRRRLRLRLRLRRRLRLRRRR
|
||||
|
||||
VJN = (LNC, RRK)
|
||||
MJD = (HFS, VBQ)
|
||||
GHK = (BDH, QGD)
|
||||
GQG = (JVH, RGR)
|
||||
RDL = (QPQ, CNG)
|
||||
BDV = (JGN, RGX)
|
||||
TFD = (XLG, NQT)
|
||||
CVF = (DJM, PPL)
|
||||
PSD = (BCF, RRX)
|
||||
BLZ = (LPN, XVJ)
|
||||
BFJ = (TGL, BXH)
|
||||
PQM = (PDV, FPS)
|
||||
BKF = (KMG, SGP)
|
||||
RDF = (MJD, DKQ)
|
||||
DCF = (BHS, QLT)
|
||||
KCP = (JCM, MNP)
|
||||
CDG = (HHP, GRD)
|
||||
XDB = (XVQ, VHN)
|
||||
ZZZ = (MTL, KNJ)
|
||||
MPK = (SXH, GFC)
|
||||
GLV = (HMD, QTM)
|
||||
HMD = (QDQ, RKK)
|
||||
TTS = (XGQ, TFD)
|
||||
NHD = (BDV, XQJ)
|
||||
RRL = (SNF, GQG)
|
||||
PHN = (TDJ, JSG)
|
||||
NXP = (GVF, FHP)
|
||||
SFX = (KSN, MXH)
|
||||
XQL = (MDH, GHK)
|
||||
PBA = (RVX, RFP)
|
||||
LLN = (KKM, DMV)
|
||||
LLK = (XXH, HRX)
|
||||
LQF = (TXG, GXX)
|
||||
JGD = (NHQ, FHM)
|
||||
VMH = (NMK, KVC)
|
||||
SVD = (TTS, FTS)
|
||||
VMS = (FMF, CDD)
|
||||
RGR = (XQB, XVC)
|
||||
VTF = (MMF, FVC)
|
||||
HVC = (RDT, LJH)
|
||||
MXG = (KGF, NST)
|
||||
GQN = (NGC, RSC)
|
||||
RKN = (KXL, CCR)
|
||||
DDD = (NKM, JKX)
|
||||
DGF = (NNJ, NLC)
|
||||
TFV = (FGC, JTQ)
|
||||
CFK = (LSC, JFX)
|
||||
HPG = (JHQ, PLV)
|
||||
RSL = (RFJ, FCJ)
|
||||
JSG = (DRM, KHD)
|
||||
XBK = (NST, KGF)
|
||||
QQD = (RND, LCX)
|
||||
DJD = (QHF, KQJ)
|
||||
LFP = (QVN, CVF)
|
||||
TRB = (KTH, DDD)
|
||||
KJX = (KLJ, HCS)
|
||||
FPR = (SVC, NXM)
|
||||
RDR = (TSN, BPL)
|
||||
LNC = (TXR, LGB)
|
||||
SKV = (MCX, PTV)
|
||||
KCF = (NGC, RSC)
|
||||
SFH = (MRD, TNL)
|
||||
RPR = (KKM, DMV)
|
||||
HXH = (LLN, RPR)
|
||||
JLS = (LFT, PNR)
|
||||
LCX = (QVG, MCT)
|
||||
KGV = (NMB, KJN)
|
||||
KKM = (JLC, SKV)
|
||||
GXX = (QXJ, QNJ)
|
||||
CTH = (JRH, GHR)
|
||||
QVN = (PPL, DJM)
|
||||
NGM = (TMK, VNN)
|
||||
TJF = (LSS, LPS)
|
||||
NNJ = (NKJ, VHH)
|
||||
GNS = (PVJ, LMF)
|
||||
SPP = (NQM, NQM)
|
||||
FCV = (XHF, QPD)
|
||||
HJX = (VLV, XQF)
|
||||
SVC = (DPK, QVV)
|
||||
KHD = (TMN, LCB)
|
||||
NQM = (NRS, NRS)
|
||||
MHD = (XGH, DJD)
|
||||
NVG = (KVM, KPJ)
|
||||
DJM = (FNG, HXS)
|
||||
TVJ = (KCV, QFK)
|
||||
CMV = (VPV, NNM)
|
||||
DQR = (KNX, FJM)
|
||||
XXH = (JPV, XLP)
|
||||
GQQ = (LHB, BTF)
|
||||
JPM = (SNM, DDX)
|
||||
GFS = (VCL, QCN)
|
||||
JMH = (RMP, BFJ)
|
||||
VBQ = (HMV, XNS)
|
||||
RPQ = (JFP, JKF)
|
||||
GQV = (MRT, LMQ)
|
||||
HGX = (JRR, LDL)
|
||||
VRC = (FXJ, VNK)
|
||||
XHF = (JMJ, DTV)
|
||||
KFD = (BTM, PQT)
|
||||
NKM = (MXJ, MMR)
|
||||
CXX = (VRC, XBJ)
|
||||
SXK = (KTM, DSB)
|
||||
NQF = (TSV, DTT)
|
||||
RND = (MCT, QVG)
|
||||
LFX = (TMF, VTF)
|
||||
SXS = (PCC, RVJ)
|
||||
MKF = (SHQ, VSG)
|
||||
PFQ = (SJX, GLV)
|
||||
SGT = (NVV, QPT)
|
||||
NXM = (DPK, QVV)
|
||||
DGL = (NFM, TPX)
|
||||
JTQ = (LMM, HSM)
|
||||
DFL = (DQC, DJG)
|
||||
MXH = (NXL, THH)
|
||||
HPV = (GFX, CTH)
|
||||
LSC = (PNB, HXX)
|
||||
VFQ = (PTM, KGC)
|
||||
GLP = (BQF, NKQ)
|
||||
DDX = (QQD, QKV)
|
||||
HRX = (XLP, JPV)
|
||||
KJL = (GSH, HHF)
|
||||
HJN = (PKS, ZZZ)
|
||||
FPS = (QBL, GNG)
|
||||
HLS = (PDT, HGT)
|
||||
XHT = (LFB, FDC)
|
||||
RCC = (VKG, TJF)
|
||||
NXL = (XNH, XNH)
|
||||
PDX = (FHR, SSC)
|
||||
JPL = (SSC, FHR)
|
||||
CNH = (DTM, TTT)
|
||||
CJB = (KPJ, KVM)
|
||||
GHX = (QLD, GHQ)
|
||||
MSG = (MXG, XBK)
|
||||
PQQ = (QPT, NVV)
|
||||
QGG = (MQR, MQR)
|
||||
QBL = (SPP, JHH)
|
||||
FQQ = (VQD, KJX)
|
||||
QRD = (LQD, RKN)
|
||||
JKD = (FVD, BXL)
|
||||
DJX = (XVK, JJH)
|
||||
LCV = (RRL, CHK)
|
||||
BCF = (NRG, MRL)
|
||||
TXR = (XQK, PGF)
|
||||
BDH = (KMK, BVK)
|
||||
GTK = (KSN, MXH)
|
||||
HHP = (PMP, PFQ)
|
||||
QLD = (PTH, RDF)
|
||||
RFJ = (MHD, SPL)
|
||||
KFR = (SHF, SHF)
|
||||
VBD = (JCC, LDD)
|
||||
MVL = (HST, GRL)
|
||||
SHK = (XHT, RLT)
|
||||
XQB = (MVJ, QQM)
|
||||
LQD = (KXL, CCR)
|
||||
DMS = (LMK, LSK)
|
||||
FXQ = (GRL, HST)
|
||||
MXJ = (HGX, FVB)
|
||||
FHM = (SPN, HQJ)
|
||||
MKB = (FCD, FCD)
|
||||
QDD = (VLN, HCB)
|
||||
PTF = (DQC, DJG)
|
||||
RFH = (JHJ, PHN)
|
||||
GRD = (PMP, PFQ)
|
||||
DMD = (MMP, GLP)
|
||||
HCQ = (JQG, FLR)
|
||||
VPV = (TRG, BQQ)
|
||||
PDV = (QBL, GNG)
|
||||
CCT = (GMX, KCP)
|
||||
BCV = (DJX, DKC)
|
||||
VKG = (LSS, LPS)
|
||||
NGH = (TDQ, PHM)
|
||||
JVM = (KJK, GQQ)
|
||||
KMG = (MFS, QST)
|
||||
MPD = (LLF, PQN)
|
||||
QHK = (PNR, LFT)
|
||||
HHK = (RCC, HGD)
|
||||
MTL = (MVX, PJX)
|
||||
PJM = (NFM, TPX)
|
||||
BTM = (QKX, FRC)
|
||||
QKM = (NHQ, FHM)
|
||||
XVF = (PQN, LLF)
|
||||
NHG = (BSG, VBD)
|
||||
KQJ = (XDB, BVX)
|
||||
XKL = (QLC, LFP)
|
||||
VXX = (QLT, BHS)
|
||||
MVJ = (DLL, JTX)
|
||||
SJP = (BTM, PQT)
|
||||
QRT = (HHP, GRD)
|
||||
XFM = (LSC, JFX)
|
||||
RQH = (NGH, RPH)
|
||||
QDG = (TQS, MJR)
|
||||
PQT = (FRC, QKX)
|
||||
FHR = (SCF, FCV)
|
||||
DTV = (XHV, HXM)
|
||||
RGX = (RXQ, NGM)
|
||||
XVM = (RKN, LQD)
|
||||
KPV = (RLJ, LVJ)
|
||||
NRG = (JLM, SJG)
|
||||
NPD = (RCP, HJN)
|
||||
KLJ = (DXV, PMS)
|
||||
LSJ = (GXX, TXG)
|
||||
QLJ = (KXS, DSS)
|
||||
SGP = (MFS, QST)
|
||||
PSB = (HMX, JNQ)
|
||||
VNK = (JTK, QLJ)
|
||||
JVH = (XQB, XVC)
|
||||
GHR = (CRS, TLK)
|
||||
FCD = (VMX, VMX)
|
||||
JTX = (MCC, NPT)
|
||||
TDJ = (DRM, KHD)
|
||||
MFR = (HHC, BLZ)
|
||||
SNF = (JVH, RGR)
|
||||
JVQ = (RSQ, RFB)
|
||||
BHL = (BNM, GNS)
|
||||
QGB = (KJN, NMB)
|
||||
KTM = (GPC, MCH)
|
||||
TJP = (MRT, LMQ)
|
||||
MRD = (BMJ, NDV)
|
||||
LKS = (SXN, XBX)
|
||||
QHT = (NHD, KBM)
|
||||
VSN = (CNH, RHC)
|
||||
SKG = (BCP, JLJ)
|
||||
JMB = (PDV, FPS)
|
||||
DSS = (FPP, HDH)
|
||||
JRH = (CRS, TLK)
|
||||
LSA = (VRQ, RDR)
|
||||
FRC = (KPV, MTN)
|
||||
JMJ = (XHV, HXM)
|
||||
RRX = (MRL, NRG)
|
||||
FTS = (XGQ, TFD)
|
||||
QTS = (FMP, QDD)
|
||||
RQK = (JFP, JKF)
|
||||
XTS = (JCT, VGN)
|
||||
KKZ = (GDB, LRB)
|
||||
NDV = (LMX, VSH)
|
||||
PNB = (QGG, QGG)
|
||||
FPF = (XLQ, RSL)
|
||||
QFK = (RXL, GHD)
|
||||
MRS = (NVG, CJB)
|
||||
RCP = (PKS, PKS)
|
||||
HDH = (HBB, PGM)
|
||||
TMF = (FVC, MMF)
|
||||
PKS = (KNJ, MTL)
|
||||
FVB = (LDL, JRR)
|
||||
VSA = (XVJ, LPN)
|
||||
BTD = (TQS, MJR)
|
||||
FPP = (PGM, HBB)
|
||||
NMB = (BQR, LLK)
|
||||
SXM = (QQG, VMS)
|
||||
LDL = (CDG, QRT)
|
||||
HQJ = (RBL, TMD)
|
||||
QFG = (RHJ, MKF)
|
||||
CPX = (NRS, GFH)
|
||||
QQF = (SKG, RKL)
|
||||
SSC = (FCV, SCF)
|
||||
KXH = (VDQ, RFN)
|
||||
KVM = (DMS, NXK)
|
||||
DBJ = (GQN, KCF)
|
||||
VDQ = (BDL, JBM)
|
||||
LSK = (CHB, JMH)
|
||||
KBM = (BDV, XQJ)
|
||||
QVA = (QRD, XVM)
|
||||
PLV = (PQQ, SGT)
|
||||
FVG = (FXQ, MVL)
|
||||
QXJ = (FMJ, KBH)
|
||||
VQD = (HCS, KLJ)
|
||||
PCC = (BGT, HFQ)
|
||||
JTK = (KXS, DSS)
|
||||
QHF = (BVX, XDB)
|
||||
MRL = (SJG, JLM)
|
||||
NMK = (PXS, QQF)
|
||||
LMX = (HPV, TVR)
|
||||
PTV = (CCT, SBB)
|
||||
MHV = (TJP, GQV)
|
||||
GTX = (GQV, TJP)
|
||||
KCT = (SRH, GFS)
|
||||
SNS = (FPF, SLF)
|
||||
BCP = (RQH, PCB)
|
||||
RRK = (TXR, LGB)
|
||||
DQM = (SXH, GFC)
|
||||
VLJ = (CMR, BDX)
|
||||
QLT = (KVJ, SNS)
|
||||
QTM = (RKK, QDQ)
|
||||
QQG = (FMF, CDD)
|
||||
DST = (BKF, FJD)
|
||||
RGZ = (RFP, RVX)
|
||||
SBB = (GMX, KCP)
|
||||
DTT = (PTF, DFL)
|
||||
FHP = (LNF, FSK)
|
||||
FCH = (FQQ, LXM)
|
||||
LMQ = (XTB, HGC)
|
||||
HHF = (SDS, NPD)
|
||||
HXX = (QGG, BBB)
|
||||
PGM = (PGC, KTS)
|
||||
FXJ = (JTK, QLJ)
|
||||
RBQ = (LDJ, NKP)
|
||||
XTQ = (SLN, LTR)
|
||||
NGK = (KBJ, MSD)
|
||||
RVR = (RTX, MRS)
|
||||
JCT = (MDX, HFB)
|
||||
LHB = (CTX, JBL)
|
||||
RSQ = (CJF, TVJ)
|
||||
BQF = (XKL, NKK)
|
||||
HXM = (BQB, GLF)
|
||||
KDJ = (DMD, GHC)
|
||||
MQB = (FDF, VJN)
|
||||
AAA = (KNJ, MTL)
|
||||
XVC = (QQM, MVJ)
|
||||
PMP = (SJX, GLV)
|
||||
XPQ = (RLS, HJX)
|
||||
LMF = (TCQ, FQT)
|
||||
CNG = (GTX, MHV)
|
||||
LDJ = (THB, RDL)
|
||||
XVQ = (PFM, NHG)
|
||||
DKQ = (VBQ, HFS)
|
||||
SJV = (FHP, GVF)
|
||||
HMX = (HVC, NBN)
|
||||
SJX = (HMD, QTM)
|
||||
QVG = (FHJ, LFX)
|
||||
NVK = (QHT, PTS)
|
||||
KPJ = (NXK, DMS)
|
||||
RBX = (VJN, FDF)
|
||||
MRT = (HGC, XTB)
|
||||
FMF = (LSJ, LQF)
|
||||
JRR = (CDG, QRT)
|
||||
RTX = (NVG, CJB)
|
||||
HST = (NVX, SBC)
|
||||
TDQ = (SMT, FCK)
|
||||
KTS = (CKV, MTP)
|
||||
TMD = (KGV, QGB)
|
||||
MDL = (XHT, RLT)
|
||||
PTH = (MJD, DKQ)
|
||||
RFB = (CJF, TVJ)
|
||||
CDD = (LSJ, LQF)
|
||||
PTS = (NHD, KBM)
|
||||
NPX = (KCF, GQN)
|
||||
KBH = (DST, HTK)
|
||||
QPQ = (MHV, GTX)
|
||||
NXK = (LMK, LSK)
|
||||
THF = (MSD, KBJ)
|
||||
KJN = (LLK, BQR)
|
||||
LXC = (RFB, RSQ)
|
||||
KGC = (RXC, PFX)
|
||||
RLT = (FDC, LFB)
|
||||
DPK = (SCC, XCG)
|
||||
NST = (VHJ, XPQ)
|
||||
FNG = (DDL, CPP)
|
||||
XQK = (JCJ, BCV)
|
||||
JCC = (DQR, GPL)
|
||||
TJB = (SHF, KPB)
|
||||
GMX = (MNP, JCM)
|
||||
SXH = (VSN, KGL)
|
||||
KFB = (MDD, XDH)
|
||||
QVV = (XCG, SCC)
|
||||
RXQ = (VNN, TMK)
|
||||
NXN = (SJP, KFD)
|
||||
DXV = (KCB, BPN)
|
||||
KVC = (QQF, PXS)
|
||||
TMN = (FKX, GLJ)
|
||||
BQQ = (HHK, QBC)
|
||||
RVX = (RNG, KXH)
|
||||
NQT = (KFB, QBQ)
|
||||
XGH = (KQJ, QHF)
|
||||
VQZ = (RDR, VRQ)
|
||||
LPN = (SPT, XKD)
|
||||
JNQ = (NBN, HVC)
|
||||
RRN = (KJL, TFJ)
|
||||
HHG = (CMV, PHV)
|
||||
VHJ = (RLS, HJX)
|
||||
KPB = (NSL, KKZ)
|
||||
KMK = (LCV, TPV)
|
||||
TPX = (SQK, RFH)
|
||||
KTH = (JKX, NKM)
|
||||
VMX = (QRD, XVM)
|
||||
RBL = (QGB, KGV)
|
||||
NBN = (LJH, RDT)
|
||||
RLJ = (SGG, RRN)
|
||||
HMV = (DBJ, NPX)
|
||||
FJM = (SGM, SQV)
|
||||
XVK = (RQJ, QPF)
|
||||
DDN = (DSB, KTM)
|
||||
PFM = (VBD, BSG)
|
||||
HFS = (XNS, HMV)
|
||||
BVX = (VHN, XVQ)
|
||||
HFB = (VFQ, HBS)
|
||||
MTP = (GHX, MFF)
|
||||
GLF = (SLD, NQF)
|
||||
MSD = (MPK, DQM)
|
||||
LLB = (GHC, DMD)
|
||||
KFV = (JCT, VGN)
|
||||
FJD = (SGP, KMG)
|
||||
PGC = (CKV, MTP)
|
||||
KCB = (THF, NGK)
|
||||
GFC = (KGL, VSN)
|
||||
SLN = (BHL, SPG)
|
||||
LFT = (LLB, KDJ)
|
||||
PFX = (DMH, NXJ)
|
||||
GRL = (NVX, SBC)
|
||||
XLQ = (FCJ, RFJ)
|
||||
DKD = (FXQ, MVL)
|
||||
SLF = (RSL, XLQ)
|
||||
BXH = (GFK, QXX)
|
||||
LLF = (JKD, LNN)
|
||||
TSN = (TTM, JPM)
|
||||
RFQ = (QHT, PTS)
|
||||
KSK = (XFB, PSD)
|
||||
TCQ = (MKB, MKB)
|
||||
SLD = (DTT, TSV)
|
||||
VRQ = (BPL, TSN)
|
||||
GBB = (XBK, MXG)
|
||||
THH = (XNH, PDM)
|
||||
QCN = (QHK, JLS)
|
||||
TQS = (MSG, GBB)
|
||||
QNJ = (KBH, FMJ)
|
||||
MCX = (CCT, SBB)
|
||||
NKK = (LFP, QLC)
|
||||
QKX = (KPV, MTN)
|
||||
XSZ = (XVM, QRD)
|
||||
TMK = (XTQ, VCR)
|
||||
LDD = (DQR, GPL)
|
||||
GHC = (GLP, MMP)
|
||||
QXX = (KCM, QTS)
|
||||
JLJ = (RQH, PCB)
|
||||
LJH = (GFN, VLJ)
|
||||
PKG = (PDT, HGT)
|
||||
KGF = (XPQ, VHJ)
|
||||
FBC = (NXM, SVC)
|
||||
DDL = (VCX, VXC)
|
||||
CMR = (XTS, KFV)
|
||||
NGC = (FPR, FBC)
|
||||
PCL = (RVX, RFP)
|
||||
THB = (CNG, QPQ)
|
||||
LMM = (KCH, VMH)
|
||||
PXS = (SKG, RKL)
|
||||
LXM = (VQD, KJX)
|
||||
TXG = (QNJ, QXJ)
|
||||
JLM = (RBQ, CLX)
|
||||
PJX = (GXH, SVD)
|
||||
DJG = (DCF, VXX)
|
||||
CKV = (MFF, GHX)
|
||||
CTX = (MQB, RBX)
|
||||
SHF = (NSL, NSL)
|
||||
GDB = (PDX, JPL)
|
||||
QPT = (NJH, QFG)
|
||||
GPC = (SJV, NXP)
|
||||
XNH = (QXN, QXN)
|
||||
JLC = (MCX, PTV)
|
||||
NJH = (MKF, RHJ)
|
||||
RQJ = (SFX, GTK)
|
||||
SNM = (QKV, QQD)
|
||||
LNN = (FVD, BXL)
|
||||
MFS = (HLS, PKG)
|
||||
PHV = (VPV, NNM)
|
||||
XNS = (DBJ, NPX)
|
||||
VCG = (VMS, QQG)
|
||||
KJJ = (FLR, JQG)
|
||||
LCB = (FKX, GLJ)
|
||||
BTF = (CTX, JBL)
|
||||
RKK = (DGL, PJM)
|
||||
GFH = (PCL, RGZ)
|
||||
VHH = (SXM, VCG)
|
||||
RFP = (RNG, KXH)
|
||||
BNM = (PVJ, LMF)
|
||||
BPH = (MDL, SHK)
|
||||
JFP = (TRB, KGQ)
|
||||
NLR = (NNJ, NLC)
|
||||
TRG = (QBC, HHK)
|
||||
BMJ = (LMX, VSH)
|
||||
HBB = (KTS, PGC)
|
||||
KSN = (NXL, NXL)
|
||||
FCK = (LQL, LKS)
|
||||
LSS = (JJD, VRT)
|
||||
TSV = (DFL, PTF)
|
||||
RFN = (BDL, JBM)
|
||||
XKD = (SFH, SVJ)
|
||||
QBQ = (MDD, XDH)
|
||||
SQV = (VBL, MTD)
|
||||
MMF = (HHG, GLS)
|
||||
FCJ = (SPL, MHD)
|
||||
XQJ = (RGX, JGN)
|
||||
BRB = (KJK, GQQ)
|
||||
JGN = (RXQ, NGM)
|
||||
SHQ = (FBN, XQL)
|
||||
RQG = (LBQ, SXS)
|
||||
PCB = (RPH, NGH)
|
||||
KBJ = (DQM, MPK)
|
||||
JPV = (BFS, CXX)
|
||||
CRS = (QKM, JGD)
|
||||
LNF = (SST, BPH)
|
||||
JCM = (XVF, MPD)
|
||||
KXN = (KJJ, HCQ)
|
||||
RSC = (FPR, FBC)
|
||||
KGQ = (DDD, KTH)
|
||||
RDT = (GFN, VLJ)
|
||||
RXL = (JVM, BRB)
|
||||
PHM = (SMT, FCK)
|
||||
QQM = (JTX, DLL)
|
||||
CHK = (GQG, SNF)
|
||||
GVF = (FSK, LNF)
|
||||
PDM = (QXN, VQZ)
|
||||
FVD = (KFR, KFR)
|
||||
MTN = (RLJ, LVJ)
|
||||
NFM = (RFH, SQK)
|
||||
BXL = (KFR, TJB)
|
||||
LGB = (PGF, XQK)
|
||||
BHS = (SNS, KVJ)
|
||||
SPN = (TMD, RBL)
|
||||
XBX = (FVG, DKD)
|
||||
KCV = (RXL, GHD)
|
||||
HCB = (DGF, NLR)
|
||||
HCS = (PMS, DXV)
|
||||
PQL = (PLV, JHQ)
|
||||
MCH = (SJV, NXP)
|
||||
CHB = (RMP, BFJ)
|
||||
LMK = (JMH, CHB)
|
||||
XLP = (CXX, BFS)
|
||||
TVR = (CTH, GFX)
|
||||
BQB = (SLD, NQF)
|
||||
DSB = (GPC, MCH)
|
||||
BPL = (TTM, JPM)
|
||||
DKC = (JJH, XVK)
|
||||
TPV = (CHK, RRL)
|
||||
TCD = (FQQ, LXM)
|
||||
SCC = (XFM, CFK)
|
||||
RNG = (VDQ, RFN)
|
||||
GFX = (GHR, JRH)
|
||||
HBS = (PTM, KGC)
|
||||
HSM = (VMH, KCH)
|
||||
KCH = (NMK, KVC)
|
||||
MQR = (HHC, HHC)
|
||||
JBM = (LXS, RVR)
|
||||
TFJ = (GSH, HHF)
|
||||
JKX = (MXJ, MMR)
|
||||
NVX = (PHK, VPX)
|
||||
MJR = (MSG, GBB)
|
||||
XLG = (QBQ, KFB)
|
||||
GFN = (CMR, BDX)
|
||||
NRS = (PCL, PCL)
|
||||
JFX = (PNB, HXX)
|
||||
VNN = (XTQ, VCR)
|
||||
PDT = (QDG, BTD)
|
||||
BVK = (LCV, TPV)
|
||||
VGN = (HFB, MDX)
|
||||
PTM = (RXC, PFX)
|
||||
RKL = (JLJ, BCP)
|
||||
VLN = (DGF, NLR)
|
||||
FKX = (TFV, VPR)
|
||||
RHJ = (SHQ, VSG)
|
||||
VXC = (HXH, LNB)
|
||||
RPH = (TDQ, PHM)
|
||||
GNC = (SJP, KFD)
|
||||
PMS = (KCB, BPN)
|
||||
BDL = (LXS, RVR)
|
||||
XTB = (KXN, RCS)
|
||||
BGT = (TGX, KSK)
|
||||
GXH = (TTS, FTS)
|
||||
NSL = (LRB, GDB)
|
||||
MTD = (KCT, FXH)
|
||||
SST = (SHK, MDL)
|
||||
CCQ = (JVQ, LXC)
|
||||
MVX = (SVD, GXH)
|
||||
KCM = (FMP, QDD)
|
||||
GFK = (QTS, KCM)
|
||||
XBJ = (FXJ, VNK)
|
||||
VCX = (HXH, LNB)
|
||||
HGD = (VKG, TJF)
|
||||
SPT = (SVJ, SFH)
|
||||
CJF = (QFK, KCV)
|
||||
RCS = (KJJ, HCQ)
|
||||
FDC = (PQM, JMB)
|
||||
BFS = (VRC, XBJ)
|
||||
JJH = (QPF, RQJ)
|
||||
DRM = (TMN, LCB)
|
||||
QXN = (VRQ, RDR)
|
||||
FMP = (VLN, HCB)
|
||||
QLC = (QVN, CVF)
|
||||
SQK = (PHN, JHJ)
|
||||
BPN = (THF, NGK)
|
||||
VCL = (QHK, JLS)
|
||||
DTM = (SXK, DDN)
|
||||
VPR = (JTQ, FGC)
|
||||
NXJ = (NVK, RFQ)
|
||||
XGQ = (XLG, NQT)
|
||||
XDH = (XJV, RQG)
|
||||
MDX = (HBS, VFQ)
|
||||
QKV = (LCX, RND)
|
||||
DMV = (SKV, JLC)
|
||||
SBC = (VPX, PHK)
|
||||
DQC = (VXX, DCF)
|
||||
VSH = (HPV, TVR)
|
||||
NKJ = (VCG, SXM)
|
||||
QST = (PKG, HLS)
|
||||
KXS = (HDH, FPP)
|
||||
RMP = (BXH, TGL)
|
||||
QDQ = (PJM, DGL)
|
||||
PHK = (PCQ, PSB)
|
||||
PCQ = (JNQ, HMX)
|
||||
QBC = (RCC, HGD)
|
||||
SPL = (DJD, XGH)
|
||||
PQN = (JKD, LNN)
|
||||
LXS = (RTX, MRS)
|
||||
PGF = (BCV, JCJ)
|
||||
LFB = (JMB, PQM)
|
||||
FHH = (VMX, XSZ)
|
||||
TTM = (SNM, DDX)
|
||||
GNG = (SPP, JHH)
|
||||
MCT = (FHJ, LFX)
|
||||
JHH = (NQM, CPX)
|
||||
SXN = (FVG, DKD)
|
||||
XQF = (FCH, TCD)
|
||||
BSG = (LDD, JCC)
|
||||
MMP = (BQF, NKQ)
|
||||
VHN = (NHG, PFM)
|
||||
MDD = (RQG, XJV)
|
||||
BDX = (KFV, XTS)
|
||||
KJK = (LHB, BTF)
|
||||
KNJ = (PJX, MVX)
|
||||
PPL = (FNG, HXS)
|
||||
JJD = (TDK, CCQ)
|
||||
JHQ = (SGT, PQQ)
|
||||
RHC = (DTM, TTT)
|
||||
GLS = (PHV, CMV)
|
||||
GLJ = (VPR, TFV)
|
||||
VCR = (LTR, SLN)
|
||||
CCR = (RPQ, RQK)
|
||||
PVJ = (TCQ, FQT)
|
||||
SGG = (KJL, TFJ)
|
||||
CLX = (LDJ, NKP)
|
||||
XCG = (XFM, CFK)
|
||||
GHD = (BRB, JVM)
|
||||
NKQ = (NKK, XKL)
|
||||
TLK = (QKM, JGD)
|
||||
CPP = (VCX, VXC)
|
||||
TGX = (XFB, PSD)
|
||||
LLJ = (FCD, FHH)
|
||||
LQL = (XBX, SXN)
|
||||
MDH = (BDH, QGD)
|
||||
SJG = (CLX, RBQ)
|
||||
NKP = (RDL, THB)
|
||||
FDF = (RRK, LNC)
|
||||
HFQ = (KSK, TGX)
|
||||
FLR = (HPG, PQL)
|
||||
PNR = (LLB, KDJ)
|
||||
QPD = (DTV, JMJ)
|
||||
NLC = (NKJ, VHH)
|
||||
HXS = (CPP, DDL)
|
||||
DMH = (NVK, RFQ)
|
||||
NHQ = (SPN, HQJ)
|
||||
LBQ = (PCC, RVJ)
|
||||
BQR = (HRX, XXH)
|
||||
LVJ = (RRN, SGG)
|
||||
QGD = (BVK, KMK)
|
||||
HGC = (RCS, KXN)
|
||||
KNX = (SQV, SGM)
|
||||
KXL = (RPQ, RQK)
|
||||
FBN = (MDH, GHK)
|
||||
LPS = (VRT, JJD)
|
||||
XHV = (BQB, GLF)
|
||||
SRH = (QCN, VCL)
|
||||
GPL = (KNX, FJM)
|
||||
HHC = (XVJ, LPN)
|
||||
FGC = (HSM, LMM)
|
||||
TTT = (DDN, SXK)
|
||||
MMR = (FVB, HGX)
|
||||
VRT = (TDK, CCQ)
|
||||
BBB = (MQR, MFR)
|
||||
VKA = (LRB, GDB)
|
||||
GSH = (SDS, SDS)
|
||||
MFF = (GHQ, QLD)
|
||||
TDK = (JVQ, LXC)
|
||||
KVJ = (FPF, SLF)
|
||||
SGM = (MTD, VBL)
|
||||
JHJ = (JSG, TDJ)
|
||||
JQG = (PQL, HPG)
|
||||
VPX = (PSB, PCQ)
|
||||
SCF = (XHF, QPD)
|
||||
FVC = (GLS, HHG)
|
||||
VBL = (KCT, FXH)
|
||||
JKF = (KGQ, TRB)
|
||||
FXH = (GFS, SRH)
|
||||
GHQ = (RDF, PTH)
|
||||
SPG = (BNM, GNS)
|
||||
JCJ = (DKC, DJX)
|
||||
TNL = (NDV, BMJ)
|
||||
SMT = (LQL, LKS)
|
||||
NPT = (NXN, GNC)
|
||||
MNP = (MPD, XVF)
|
||||
SDS = (RCP, RCP)
|
||||
LTR = (BHL, SPG)
|
||||
RVJ = (HFQ, BGT)
|
||||
SVJ = (MRD, TNL)
|
||||
HTK = (FJD, BKF)
|
||||
FHJ = (TMF, VTF)
|
||||
LNB = (LLN, RPR)
|
||||
TGL = (GFK, QXX)
|
||||
XFB = (RRX, BCF)
|
||||
XJV = (LBQ, SXS)
|
||||
QPF = (SFX, GTK)
|
||||
NNM = (TRG, BQQ)
|
||||
JBL = (MQB, RBX)
|
||||
MCC = (NXN, GNC)
|
||||
RXC = (DMH, NXJ)
|
||||
NVV = (QFG, NJH)
|
||||
DLL = (MCC, NPT)
|
||||
VSG = (FBN, XQL)
|
||||
VLV = (TCD, FCH)
|
||||
KGL = (RHC, CNH)
|
||||
LRB = (PDX, JPL)
|
||||
HGT = (QDG, BTD)
|
||||
FMJ = (HTK, DST)
|
||||
FSK = (BPH, SST)
|
||||
RLS = (XQF, VLV)
|
||||
FQT = (MKB, LLJ)
|
||||
XVJ = (XKD, SPT)
|
120
d08/main.py
Normal file
120
d08/main.py
Normal file
@ -0,0 +1,120 @@
|
||||
from pathlib import Path
|
||||
from typing import NamedTuple
|
||||
from itertools import cycle
|
||||
import math
|
||||
|
||||
|
||||
class Node(NamedTuple):
|
||||
id: str
|
||||
left: str
|
||||
right: str
|
||||
|
||||
|
||||
def parse(input: Path) -> tuple[str, dict[str, Node]]:
|
||||
with input.open() as f:
|
||||
|
||||
steps = f.readline().strip()
|
||||
nodes: dict[str, Node] = {}
|
||||
|
||||
_ = f.readline()
|
||||
|
||||
for line in f:
|
||||
node = Node(
|
||||
line[0:3],
|
||||
line[7:10],
|
||||
line[12:15],
|
||||
)
|
||||
nodes[node.id] = node
|
||||
|
||||
return steps, nodes
|
||||
|
||||
|
||||
def part2(input: Path) -> int:
|
||||
steps, nodes = parse(input)
|
||||
|
||||
start_nodes: list[str] = [
|
||||
node for node in nodes.keys() if node.endswith("A")
|
||||
]
|
||||
|
||||
periods: dict[str, int] = {}
|
||||
for start_node in start_nodes:
|
||||
current = start_node
|
||||
num_steps = 0
|
||||
for step in cycle(steps):
|
||||
if current.endswith("Z"):
|
||||
print(f"Found a node for {start_node} at {current} in {num_steps}")
|
||||
periods[start_node] = num_steps
|
||||
# This assumes there is only one possible end and that it begins a
|
||||
# cycle after that. Apparently true for this data set.
|
||||
break
|
||||
|
||||
num_steps += 1
|
||||
|
||||
if step == "L":
|
||||
current = nodes[current].left
|
||||
elif step == "R":
|
||||
current = nodes[current].right
|
||||
else:
|
||||
raise ValueError(f"Unknown step {step}")
|
||||
|
||||
return math.lcm(*[p for p in periods.values()])
|
||||
|
||||
|
||||
def part2_brute(input: Path) -> int:
|
||||
steps, nodes = parse(input)
|
||||
|
||||
current: list[str] = [
|
||||
node for node in nodes.keys() if node.endswith("A")
|
||||
]
|
||||
|
||||
num_steps = 0
|
||||
for step in steps:
|
||||
if all(node.endswith("Z") for node in current):
|
||||
break
|
||||
|
||||
num_steps += 1
|
||||
|
||||
for i, node in enumerate(current):
|
||||
# if node.endswith("Z"):
|
||||
# print(f"Node {initial[i]} reached {node} in {num_steps-1} steps")
|
||||
if step == "L":
|
||||
current[i] = nodes[node].left
|
||||
elif step == "R":
|
||||
current[i] = nodes[node].right
|
||||
else:
|
||||
raise ValueError(f"Unknown step {step}")
|
||||
|
||||
return num_steps
|
||||
|
||||
|
||||
def part1(input: Path) -> int:
|
||||
steps_s, nodes = parse(input)
|
||||
steps = cycle(steps_s)
|
||||
|
||||
current = "AAA"
|
||||
num_steps = 0
|
||||
for step in steps:
|
||||
if current == "ZZZ":
|
||||
break
|
||||
|
||||
num_steps += 1
|
||||
|
||||
if step == "L":
|
||||
current = nodes[current].left
|
||||
elif step == "R":
|
||||
current = nodes[current].right
|
||||
else:
|
||||
raise ValueError(f"Unknown step {step}")
|
||||
|
||||
return num_steps
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# input = Path("sample.txt")
|
||||
input = Path("input.txt")
|
||||
|
||||
result1 = part1(input)
|
||||
print("part1", result1)
|
||||
|
||||
result2 = part2(input)
|
||||
print("part2", result2)
|
61
d08/main.rs
Normal file
61
d08/main.rs
Normal file
@ -0,0 +1,61 @@
|
||||
use std::collections::HashMap;
|
||||
use std::fs;
|
||||
|
||||
struct Node {
|
||||
left: String,
|
||||
right: String,
|
||||
}
|
||||
|
||||
fn main() {
|
||||
// let file_contents = fs::read_to_string("sample.txt").expect("No input found");
|
||||
let file_contents = fs::read_to_string("input.txt").expect("No input found");
|
||||
let mut lines = file_contents.lines();
|
||||
|
||||
let steps = lines.next().expect("No steps found");
|
||||
let map = lines
|
||||
.filter(|l| !l.is_empty())
|
||||
.map(|l| {
|
||||
let node = &l[0..3];
|
||||
let left = &l[7..10];
|
||||
let right = &l[12..15];
|
||||
|
||||
(
|
||||
node,
|
||||
Node {
|
||||
left: left.to_string(),
|
||||
right: right.to_string(),
|
||||
},
|
||||
)
|
||||
})
|
||||
.collect::<HashMap<&str, Node>>();
|
||||
|
||||
let mut current = map
|
||||
.keys()
|
||||
.filter(|node| node.ends_with("A"))
|
||||
.map(|node| node.clone())
|
||||
.collect::<Vec<&str>>();
|
||||
|
||||
for node in ¤t {
|
||||
println!("Starting node {}", node);
|
||||
}
|
||||
|
||||
let mut num_steps = 0;
|
||||
for step in steps.chars().cycle() {
|
||||
if current.iter().all(|node| node.ends_with("Z")) {
|
||||
break;
|
||||
}
|
||||
|
||||
num_steps += 1;
|
||||
|
||||
for i in 0..current.len() {
|
||||
if step == 'L' {
|
||||
current[i] = &map[current[i]].left;
|
||||
}
|
||||
if step == 'R' {
|
||||
current[i] = &map[current[i]].right;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
println!("Part 2 {}", num_steps)
|
||||
}
|
10
d08/sample.txt
Normal file
10
d08/sample.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)
|
Loading…
Reference in New Issue
Block a user