day08 part 1
This commit is contained in:
		
							parent
							
								
									7f9256db4e
								
							
						
					
					
						commit
						46c164c2d8
					
				
					 7 changed files with 919 additions and 0 deletions
				
			
		
							
								
								
									
										12
									
								
								days/day08/Cargo.toml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								days/day08/Cargo.toml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
[package]
 | 
			
		||||
name = "day08"
 | 
			
		||||
authors.workspace = true
 | 
			
		||||
description.workspace = true
 | 
			
		||||
version.workspace = true
 | 
			
		||||
edition.workspace = true
 | 
			
		||||
 | 
			
		||||
[dependencies]
 | 
			
		||||
aoc_libs.workspace = true
 | 
			
		||||
regex.workspace = true
 | 
			
		||||
once_cell.workspace = true
 | 
			
		||||
collection_literals.workspace = true
 | 
			
		||||
							
								
								
									
										752
									
								
								days/day08/src/input.txt
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										752
									
								
								days/day08/src/input.txt
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,752 @@
 | 
			
		|||
LLRRLRRRLLRLRRLLLLRLRRLRRRLRLRRRLLRRLRRRLLRRLRRLRRLLRRRLRRLRRLRRRLRRLRLRLRRLRRLRRRLLRRLLLRRLRRRLRRRLRRRLRRLRRRLRLLRLRRRLRLRRLLRLRRRLRRRLRLRRRLRRRLRLRLRRLRRLRLRRLLRRRLRRRLRRRLLRRRLRLRLRLRLLRRRLRRRLRRLRRRLLRLRRLRRLRRRLRRRLRRLRLRLRRRLRRLRRLRRRLLRRLRLRLRRRLRLRLRRLRRLLRRLRRRLLRLLRLRLRRRR
 | 
			
		||||
 | 
			
		||||
FGF = (HTC, DTX)
 | 
			
		||||
PTP = (MCL, BDN)
 | 
			
		||||
LHL = (LJF, BDX)
 | 
			
		||||
XMM = (KCX, JHL)
 | 
			
		||||
GLD = (RNN, MXG)
 | 
			
		||||
HSR = (JPX, CXF)
 | 
			
		||||
CRF = (BMJ, FHT)
 | 
			
		||||
QSS = (KPH, FVD)
 | 
			
		||||
RHV = (LRD, XDS)
 | 
			
		||||
KTT = (XPS, VCX)
 | 
			
		||||
LQK = (TLF, VJX)
 | 
			
		||||
MMK = (VJV, HQV)
 | 
			
		||||
RKX = (RKG, XJB)
 | 
			
		||||
HDM = (NFK, JNB)
 | 
			
		||||
PFJ = (QDJ, NDH)
 | 
			
		||||
JKB = (MDK, MRJ)
 | 
			
		||||
BSP = (QBQ, JPM)
 | 
			
		||||
FQH = (HJD, VHF)
 | 
			
		||||
QQL = (VDB, KGM)
 | 
			
		||||
TRB = (KTC, RGN)
 | 
			
		||||
VXC = (NDK, MVK)
 | 
			
		||||
BCS = (PSX, PLK)
 | 
			
		||||
FHK = (MLK, RDP)
 | 
			
		||||
TVB = (JXV, SSR)
 | 
			
		||||
GXD = (KSF, BRK)
 | 
			
		||||
MNJ = (MHG, CRF)
 | 
			
		||||
RLC = (TGD, CHV)
 | 
			
		||||
LBQ = (NQK, MHP)
 | 
			
		||||
JLH = (FGB, KNM)
 | 
			
		||||
PCN = (CQF, NDF)
 | 
			
		||||
FVP = (NKS, RCB)
 | 
			
		||||
GHL = (TTB, KLQ)
 | 
			
		||||
MTB = (VDM, FKT)
 | 
			
		||||
LLB = (VXL, TRT)
 | 
			
		||||
RSS = (GDP, TKD)
 | 
			
		||||
SFH = (FCM, GKF)
 | 
			
		||||
KSF = (VQB, JXJ)
 | 
			
		||||
LJH = (PNS, DGC)
 | 
			
		||||
TJC = (KQM, BVL)
 | 
			
		||||
PRL = (TCG, GCQ)
 | 
			
		||||
NBG = (GNR, SRM)
 | 
			
		||||
CST = (FXL, BDF)
 | 
			
		||||
XXH = (KVH, KSM)
 | 
			
		||||
FJP = (PKX, DSF)
 | 
			
		||||
DTS = (FFF, DQM)
 | 
			
		||||
CMG = (VBJ, DBF)
 | 
			
		||||
NHD = (TCJ, DHF)
 | 
			
		||||
KKF = (RVP, FVR)
 | 
			
		||||
LDS = (VPJ, MPN)
 | 
			
		||||
GHC = (DBK, SCS)
 | 
			
		||||
KVK = (NFV, MXJ)
 | 
			
		||||
NTN = (TDC, VNC)
 | 
			
		||||
FCR = (DCR, FQH)
 | 
			
		||||
PLK = (GHT, PBT)
 | 
			
		||||
VJF = (VJN, PVB)
 | 
			
		||||
TKR = (GHS, TTP)
 | 
			
		||||
PQJ = (VGB, SGP)
 | 
			
		||||
TGM = (JQM, PPK)
 | 
			
		||||
LFQ = (QGB, QXB)
 | 
			
		||||
RDP = (HSF, MQV)
 | 
			
		||||
SGP = (HVK, XMV)
 | 
			
		||||
FTB = (RFV, MLT)
 | 
			
		||||
LCX = (RSB, RSB)
 | 
			
		||||
VGD = (XJB, RKG)
 | 
			
		||||
PFD = (RGK, JGB)
 | 
			
		||||
DBK = (RMP, RSH)
 | 
			
		||||
TTC = (NDH, QDJ)
 | 
			
		||||
PVF = (QRG, QCV)
 | 
			
		||||
BGV = (TDS, DRK)
 | 
			
		||||
VHF = (XTB, TGM)
 | 
			
		||||
DBF = (GGT, BRQ)
 | 
			
		||||
TFG = (SVV, FCV)
 | 
			
		||||
MDK = (THF, PLQ)
 | 
			
		||||
NDF = (BSP, STC)
 | 
			
		||||
SMZ = (KHB, TST)
 | 
			
		||||
SLC = (BKM, BCS)
 | 
			
		||||
NSV = (VVM, VQG)
 | 
			
		||||
GCA = (XQT, RCD)
 | 
			
		||||
FVD = (NXJ, MBJ)
 | 
			
		||||
HCH = (MRF, RQJ)
 | 
			
		||||
PLN = (BNK, CLF)
 | 
			
		||||
TTP = (BCP, SLC)
 | 
			
		||||
BRF = (SHR, CTK)
 | 
			
		||||
KCX = (PDR, HHQ)
 | 
			
		||||
GMG = (NFV, MXJ)
 | 
			
		||||
SNN = (XDS, LRD)
 | 
			
		||||
SBB = (JXL, BFK)
 | 
			
		||||
NCV = (KVH, KSM)
 | 
			
		||||
DQQ = (FFF, DQM)
 | 
			
		||||
THT = (MFP, VSD)
 | 
			
		||||
GVH = (KHF, TKB)
 | 
			
		||||
HPC = (MKX, SVS)
 | 
			
		||||
KSS = (QQQ, HSR)
 | 
			
		||||
NCP = (FCV, SVV)
 | 
			
		||||
FGB = (LGN, LKJ)
 | 
			
		||||
TST = (DFV, GND)
 | 
			
		||||
PJR = (VMQ, HPB)
 | 
			
		||||
BHB = (VMQ, HPB)
 | 
			
		||||
LMG = (SHS, XJC)
 | 
			
		||||
GGT = (TQQ, XQK)
 | 
			
		||||
PKR = (QQR, JGG)
 | 
			
		||||
FLR = (LJP, VQT)
 | 
			
		||||
NFK = (HKG, BPJ)
 | 
			
		||||
MGG = (SST, MCT)
 | 
			
		||||
BVD = (SNV, TTH)
 | 
			
		||||
GHX = (GMK, JXG)
 | 
			
		||||
PDR = (HCD, HNG)
 | 
			
		||||
XJN = (NHR, CBN)
 | 
			
		||||
XRG = (LBQ, MTV)
 | 
			
		||||
VFM = (MMS, VXT)
 | 
			
		||||
PPP = (LHR, HJH)
 | 
			
		||||
FJG = (NLS, CCF)
 | 
			
		||||
NDK = (RHD, BVD)
 | 
			
		||||
VSB = (LKB, CCX)
 | 
			
		||||
NJG = (PTK, MCD)
 | 
			
		||||
MLS = (XCQ, FCR)
 | 
			
		||||
QSM = (CBJ, GRG)
 | 
			
		||||
PTC = (NJG, FLT)
 | 
			
		||||
MRJ = (PLQ, THF)
 | 
			
		||||
HJD = (XTB, TGM)
 | 
			
		||||
XCQ = (DCR, FQH)
 | 
			
		||||
HPN = (CQD, CTP)
 | 
			
		||||
BDJ = (JND, JRB)
 | 
			
		||||
PXL = (VXT, MMS)
 | 
			
		||||
NFV = (SFX, BDQ)
 | 
			
		||||
SNQ = (PQJ, TNG)
 | 
			
		||||
LSL = (KFN, JFL)
 | 
			
		||||
SMK = (FQS, FJJ)
 | 
			
		||||
QDV = (BDX, LJF)
 | 
			
		||||
GMK = (TSJ, SVF)
 | 
			
		||||
GDP = (MML, MML)
 | 
			
		||||
GRG = (PVF, CKG)
 | 
			
		||||
CXF = (MNJ, TBZ)
 | 
			
		||||
LKM = (HJH, LHR)
 | 
			
		||||
GHS = (BCP, SLC)
 | 
			
		||||
XBH = (BDS, NDQ)
 | 
			
		||||
NLL = (NJT, QCJ)
 | 
			
		||||
MXJ = (BDQ, SFX)
 | 
			
		||||
FCF = (QQQ, QQQ)
 | 
			
		||||
SXG = (LFQ, TTZ)
 | 
			
		||||
PLP = (MJL, FPL)
 | 
			
		||||
FSV = (SBB, JFC)
 | 
			
		||||
NLH = (TDS, DRK)
 | 
			
		||||
QDM = (GHX, GGM)
 | 
			
		||||
JJB = (MSQ, MMK)
 | 
			
		||||
TRS = (BXN, RLM)
 | 
			
		||||
DMP = (RTP, CHG)
 | 
			
		||||
XGG = (PCC, XKH)
 | 
			
		||||
MCT = (NLK, DTM)
 | 
			
		||||
DLC = (JTQ, BLF)
 | 
			
		||||
VBJ = (GGT, BRQ)
 | 
			
		||||
XQD = (NTN, XRC)
 | 
			
		||||
FKM = (QKK, JBQ)
 | 
			
		||||
PNN = (RGN, KTC)
 | 
			
		||||
LCM = (DTG, GHC)
 | 
			
		||||
LKJ = (LFV, RNG)
 | 
			
		||||
HRR = (JND, JRB)
 | 
			
		||||
BDN = (SNQ, NVC)
 | 
			
		||||
RSH = (PJS, LHG)
 | 
			
		||||
CTP = (DJM, NHF)
 | 
			
		||||
XMV = (CFJ, MDV)
 | 
			
		||||
HXM = (PTP, XVQ)
 | 
			
		||||
CKG = (QCV, QRG)
 | 
			
		||||
GKK = (CRG, MPJ)
 | 
			
		||||
LNS = (VSB, GNQ)
 | 
			
		||||
RVP = (JJB, LCN)
 | 
			
		||||
DVH = (QLD, QGV)
 | 
			
		||||
CPH = (PMN, QSC)
 | 
			
		||||
BXQ = (CPH, DSQ)
 | 
			
		||||
SDM = (DSB, CNV)
 | 
			
		||||
RNN = (SHM, LSL)
 | 
			
		||||
VQC = (GKH, DMP)
 | 
			
		||||
KXV = (GKN, PTC)
 | 
			
		||||
TNK = (NMK, PKR)
 | 
			
		||||
TSL = (MTV, LBQ)
 | 
			
		||||
VSD = (LGH, HNM)
 | 
			
		||||
QRQ = (QXH, GRQ)
 | 
			
		||||
NKS = (NSL, HPN)
 | 
			
		||||
TQC = (JQK, TXF)
 | 
			
		||||
THF = (TVM, KKF)
 | 
			
		||||
VSL = (PLN, GDS)
 | 
			
		||||
SSN = (FTB, NXF)
 | 
			
		||||
NHF = (BFG, XTZ)
 | 
			
		||||
HSP = (QRQ, DFC)
 | 
			
		||||
JQM = (BNP, PMD)
 | 
			
		||||
GDV = (RVK, MQF)
 | 
			
		||||
MTK = (TGD, CHV)
 | 
			
		||||
FFX = (DSN, XXJ)
 | 
			
		||||
HKG = (THT, KNJ)
 | 
			
		||||
RCN = (DCB, XFN)
 | 
			
		||||
HCD = (TDF, BQM)
 | 
			
		||||
TKJ = (JPV, GRR)
 | 
			
		||||
RVK = (HXX, PRL)
 | 
			
		||||
HDN = (TRT, VXL)
 | 
			
		||||
KHQ = (DQQ, DTS)
 | 
			
		||||
MPJ = (PLP, KBG)
 | 
			
		||||
SFX = (KTT, NTG)
 | 
			
		||||
NMJ = (BGV, NLH)
 | 
			
		||||
LXK = (CRB, GXD)
 | 
			
		||||
KBG = (FPL, MJL)
 | 
			
		||||
GNQ = (LKB, CCX)
 | 
			
		||||
MRV = (RVK, MQF)
 | 
			
		||||
PKH = (NPN, MHQ)
 | 
			
		||||
NLK = (LTJ, RXP)
 | 
			
		||||
LBH = (VTP, SGG)
 | 
			
		||||
NTG = (VCX, XPS)
 | 
			
		||||
CCD = (GVF, SSJ)
 | 
			
		||||
BBB = (SSR, JXV)
 | 
			
		||||
NSL = (CQD, CQD)
 | 
			
		||||
BNK = (SGS, JQD)
 | 
			
		||||
TTB = (KVK, GMG)
 | 
			
		||||
FDR = (RBS, TXD)
 | 
			
		||||
PJG = (RTV, JQS)
 | 
			
		||||
LGV = (LSB, NPF)
 | 
			
		||||
XVQ = (MCL, BDN)
 | 
			
		||||
BMJ = (KRT, XXN)
 | 
			
		||||
XCM = (LXK, VKJ)
 | 
			
		||||
CCF = (SDR, PTQ)
 | 
			
		||||
GSS = (PJR, BHB)
 | 
			
		||||
CJL = (QKK, JBQ)
 | 
			
		||||
FBT = (VJF, SGL)
 | 
			
		||||
DSB = (QKQ, RBK)
 | 
			
		||||
SGS = (MLQ, PXT)
 | 
			
		||||
PKX = (KPF, CNQ)
 | 
			
		||||
JND = (SDG, SND)
 | 
			
		||||
DJM = (BFG, BFG)
 | 
			
		||||
LHK = (SBB, JFC)
 | 
			
		||||
QLD = (SGX, KDP)
 | 
			
		||||
NPF = (VDC, KHQ)
 | 
			
		||||
BRQ = (XQK, TQQ)
 | 
			
		||||
NGQ = (JNB, NFK)
 | 
			
		||||
NFH = (MPN, VPJ)
 | 
			
		||||
KHF = (LKG, GLD)
 | 
			
		||||
XKC = (XTX, XTX)
 | 
			
		||||
DJG = (XGL, BTF)
 | 
			
		||||
LGN = (RNG, LFV)
 | 
			
		||||
HQV = (CJL, FKM)
 | 
			
		||||
JPV = (SVD, XJN)
 | 
			
		||||
TSJ = (NMD, MGG)
 | 
			
		||||
QRG = (HBD, CST)
 | 
			
		||||
FXL = (PFX, HVV)
 | 
			
		||||
TNG = (VGB, SGP)
 | 
			
		||||
HXX = (GCQ, TCG)
 | 
			
		||||
RTP = (CDD, QJR)
 | 
			
		||||
RXN = (LFQ, LFQ)
 | 
			
		||||
MVK = (BVD, RHD)
 | 
			
		||||
PLR = (FVP, DHP)
 | 
			
		||||
GRR = (XJN, SVD)
 | 
			
		||||
DHJ = (VRN, DTR)
 | 
			
		||||
HSF = (TSS, JSQ)
 | 
			
		||||
TXN = (FGF, NMV)
 | 
			
		||||
CBJ = (CKG, PVF)
 | 
			
		||||
GHT = (RCN, NTR)
 | 
			
		||||
SMH = (FJG, LQD)
 | 
			
		||||
CVN = (PLR, DDF)
 | 
			
		||||
SJK = (TTF, SLQ)
 | 
			
		||||
LMN = (XHT, CFF)
 | 
			
		||||
KLQ = (GMG, KVK)
 | 
			
		||||
KXC = (CHP, NLL)
 | 
			
		||||
KNM = (LKJ, LGN)
 | 
			
		||||
QHK = (LNV, GKK)
 | 
			
		||||
BTH = (KVR, FNQ)
 | 
			
		||||
QFV = (PRK, LTV)
 | 
			
		||||
DBH = (HND, HFC)
 | 
			
		||||
CRG = (KBG, PLP)
 | 
			
		||||
TCG = (DVF, BXQ)
 | 
			
		||||
SJQ = (KPR, QKP)
 | 
			
		||||
JMJ = (TTB, KLQ)
 | 
			
		||||
RFV = (XBH, CGX)
 | 
			
		||||
AAA = (QDM, GMV)
 | 
			
		||||
JTQ = (HRR, BDJ)
 | 
			
		||||
MHQ = (HPQ, KXC)
 | 
			
		||||
SDG = (HGR, RJN)
 | 
			
		||||
PNS = (FMC, JKB)
 | 
			
		||||
KHB = (DFV, GND)
 | 
			
		||||
NXJ = (MLS, HLT)
 | 
			
		||||
HND = (LVF, BBJ)
 | 
			
		||||
FCZ = (RCD, XQT)
 | 
			
		||||
NFP = (FVD, KPH)
 | 
			
		||||
NTH = (FVH, DJG)
 | 
			
		||||
GMV = (GHX, GGM)
 | 
			
		||||
FKT = (CLC, BTH)
 | 
			
		||||
LTV = (BKP, HVT)
 | 
			
		||||
VLF = (DLX, FMB)
 | 
			
		||||
NNP = (NFH, LDS)
 | 
			
		||||
GQV = (RTR, NMJ)
 | 
			
		||||
MCD = (PFK, HPC)
 | 
			
		||||
XML = (RNR, GJF)
 | 
			
		||||
TXD = (LGT, QSM)
 | 
			
		||||
DKG = (RTV, JQS)
 | 
			
		||||
MQF = (PRL, HXX)
 | 
			
		||||
XJB = (HKV, FLR)
 | 
			
		||||
SHS = (VVH, CHN)
 | 
			
		||||
PMD = (NSV, BMQ)
 | 
			
		||||
TLJ = (DMP, GKH)
 | 
			
		||||
CMA = (TST, KHB)
 | 
			
		||||
CRB = (KSF, BRK)
 | 
			
		||||
XQT = (TXN, LNN)
 | 
			
		||||
QHF = (XKH, PCC)
 | 
			
		||||
FQM = (PKR, NMK)
 | 
			
		||||
DHP = (NKS, RCB)
 | 
			
		||||
KSM = (DKP, SDM)
 | 
			
		||||
LKB = (RQV, BRF)
 | 
			
		||||
BVL = (TRB, PNN)
 | 
			
		||||
GJF = (NTH, JRX)
 | 
			
		||||
HTC = (HRL, HXM)
 | 
			
		||||
JGB = (QVX, GMR)
 | 
			
		||||
VJV = (CJL, FKM)
 | 
			
		||||
RGK = (QVX, GMR)
 | 
			
		||||
KPF = (JCK, XDV)
 | 
			
		||||
LNV = (CRG, MPJ)
 | 
			
		||||
QNP = (LXK, VKJ)
 | 
			
		||||
MFT = (NJK, VVL)
 | 
			
		||||
PBT = (RCN, NTR)
 | 
			
		||||
CKV = (XHT, CFF)
 | 
			
		||||
RCD = (TXN, LNN)
 | 
			
		||||
MBJ = (HLT, MLS)
 | 
			
		||||
QDC = (NMJ, RTR)
 | 
			
		||||
SVV = (FJC, MJR)
 | 
			
		||||
STN = (LQC, HFR)
 | 
			
		||||
QXB = (RPJ, MHL)
 | 
			
		||||
VJN = (TVB, BBB)
 | 
			
		||||
GKH = (RTP, CHG)
 | 
			
		||||
XGL = (PMX, FFX)
 | 
			
		||||
KNH = (FGB, KNM)
 | 
			
		||||
TVN = (QKP, KPR)
 | 
			
		||||
JFC = (BFK, JXL)
 | 
			
		||||
LHG = (TFG, NCP)
 | 
			
		||||
HFT = (HND, HFC)
 | 
			
		||||
DKP = (DSB, CNV)
 | 
			
		||||
LGH = (DCG, QPN)
 | 
			
		||||
LGC = (VVL, NJK)
 | 
			
		||||
HSC = (NTJ, QQL)
 | 
			
		||||
CFF = (JMJ, GHL)
 | 
			
		||||
PFH = (SGL, VJF)
 | 
			
		||||
LGT = (GRG, CBJ)
 | 
			
		||||
JSQ = (SFH, RVQ)
 | 
			
		||||
VDM = (CLC, BTH)
 | 
			
		||||
NTR = (DCB, XFN)
 | 
			
		||||
KVH = (DKP, SDM)
 | 
			
		||||
BVQ = (LSH, SDX)
 | 
			
		||||
NRC = (QCH, TRS)
 | 
			
		||||
DCB = (KBT, TSR)
 | 
			
		||||
DGC = (FMC, JKB)
 | 
			
		||||
VMQ = (LJR, LJR)
 | 
			
		||||
MXG = (LSL, SHM)
 | 
			
		||||
CPM = (TRS, QCH)
 | 
			
		||||
DLX = (LQN, TJC)
 | 
			
		||||
GDS = (BNK, CLF)
 | 
			
		||||
JRK = (PGJ, NHD)
 | 
			
		||||
JXV = (DRH, CVN)
 | 
			
		||||
SVD = (CBN, NHR)
 | 
			
		||||
LCN = (MSQ, MMK)
 | 
			
		||||
MJL = (RQL, RGF)
 | 
			
		||||
JLT = (QRQ, DFC)
 | 
			
		||||
BGP = (DPV, VXC)
 | 
			
		||||
PSQ = (PJR, BHB)
 | 
			
		||||
NTJ = (KGM, VDB)
 | 
			
		||||
SGX = (VFM, PXL)
 | 
			
		||||
QBQ = (MCM, VNV)
 | 
			
		||||
CHV = (QJN, CMG)
 | 
			
		||||
DRK = (BKT, LBH)
 | 
			
		||||
SVS = (NPV, HCH)
 | 
			
		||||
BCP = (BKM, BCS)
 | 
			
		||||
BXN = (PSQ, GSS)
 | 
			
		||||
GQJ = (SMH, XHX)
 | 
			
		||||
NPV = (RQJ, MRF)
 | 
			
		||||
NMV = (HTC, DTX)
 | 
			
		||||
LKR = (SPG, SJK)
 | 
			
		||||
HLT = (XCQ, FCR)
 | 
			
		||||
SKX = (HSC, CFR)
 | 
			
		||||
SDR = (BLQ, FKV)
 | 
			
		||||
FCN = (FKT, VDM)
 | 
			
		||||
VPB = (CJR, FHK)
 | 
			
		||||
MHL = (PFJ, TTC)
 | 
			
		||||
XQK = (BBK, PBQ)
 | 
			
		||||
MDV = (SCJ, BKF)
 | 
			
		||||
VDC = (DQQ, DTS)
 | 
			
		||||
RTV = (LDP, PCN)
 | 
			
		||||
GRQ = (FDR, DHG)
 | 
			
		||||
NDH = (JGX, SSN)
 | 
			
		||||
NCG = (GNR, SRM)
 | 
			
		||||
LQN = (BVL, KQM)
 | 
			
		||||
NHR = (FQM, TNK)
 | 
			
		||||
LJR = (GDP, GDP)
 | 
			
		||||
JXL = (VKV, MJQ)
 | 
			
		||||
QCH = (BXN, RLM)
 | 
			
		||||
QGB = (MHL, RPJ)
 | 
			
		||||
DDN = (GLT, DHJ)
 | 
			
		||||
SHR = (BGP, FCX)
 | 
			
		||||
DPV = (MVK, NDK)
 | 
			
		||||
XHT = (GHL, JMJ)
 | 
			
		||||
QKK = (LCX, LCX)
 | 
			
		||||
TRT = (QFV, NHT)
 | 
			
		||||
PBQ = (DPX, LNS)
 | 
			
		||||
JHL = (HHQ, PDR)
 | 
			
		||||
DCG = (JLX, VSL)
 | 
			
		||||
SST = (NLK, DTM)
 | 
			
		||||
QPN = (JLX, VSL)
 | 
			
		||||
GXS = (FJP, DCM)
 | 
			
		||||
VJX = (DKB, FCZ)
 | 
			
		||||
XXJ = (HDN, LLB)
 | 
			
		||||
JPM = (VNV, MCM)
 | 
			
		||||
QGV = (SGX, KDP)
 | 
			
		||||
QNA = (QGB, QXB)
 | 
			
		||||
CQD = (DJM, DJM)
 | 
			
		||||
TTF = (TVN, SJQ)
 | 
			
		||||
CHP = (QCJ, NJT)
 | 
			
		||||
BBJ = (LVT, TKJ)
 | 
			
		||||
VKJ = (CRB, GXD)
 | 
			
		||||
LJF = (FFL, KXV)
 | 
			
		||||
TKD = (MML, ZZZ)
 | 
			
		||||
QKP = (CKV, LMN)
 | 
			
		||||
CQF = (STC, BSP)
 | 
			
		||||
PHM = (FHK, CJR)
 | 
			
		||||
BTF = (PMX, FFX)
 | 
			
		||||
JRX = (FVH, DJG)
 | 
			
		||||
PMN = (NBG, NCG)
 | 
			
		||||
LKG = (RNN, MXG)
 | 
			
		||||
NXB = (JLH, KNH)
 | 
			
		||||
MLQ = (FBT, PFH)
 | 
			
		||||
JML = (XKC, GLX)
 | 
			
		||||
NHT = (PRK, LTV)
 | 
			
		||||
BLQ = (SKX, HGL)
 | 
			
		||||
BDX = (FFL, KXV)
 | 
			
		||||
DVN = (SCR, JML)
 | 
			
		||||
FPL = (RQL, RGF)
 | 
			
		||||
MMS = (SVR, KSV)
 | 
			
		||||
FLT = (PTK, MCD)
 | 
			
		||||
PTQ = (BLQ, FKV)
 | 
			
		||||
DHG = (RBS, TXD)
 | 
			
		||||
QSC = (NCG, NBG)
 | 
			
		||||
LFV = (NXP, GMF)
 | 
			
		||||
XDS = (KQP, STN)
 | 
			
		||||
PVB = (BBB, TVB)
 | 
			
		||||
JGX = (NXF, FTB)
 | 
			
		||||
CNB = (PRR, JRK)
 | 
			
		||||
TQQ = (PBQ, BBK)
 | 
			
		||||
GMF = (MKH, CRH)
 | 
			
		||||
SDP = (KCQ, PKV)
 | 
			
		||||
MHP = (HMR, LCM)
 | 
			
		||||
RRS = (QGV, QLD)
 | 
			
		||||
PKV = (XKG, HTH)
 | 
			
		||||
JLX = (GDS, PLN)
 | 
			
		||||
RJN = (VGD, RKX)
 | 
			
		||||
NMK = (QQR, JGG)
 | 
			
		||||
PFK = (SVS, MKX)
 | 
			
		||||
NXF = (MLT, RFV)
 | 
			
		||||
VVM = (HDM, NGQ)
 | 
			
		||||
VSJ = (QDG, VKM)
 | 
			
		||||
RBS = (QSM, LGT)
 | 
			
		||||
KFN = (RRS, DVH)
 | 
			
		||||
XXN = (XMM, SKM)
 | 
			
		||||
TXF = (LKM, PPP)
 | 
			
		||||
DFV = (VLF, GPC)
 | 
			
		||||
RMP = (PJS, LHG)
 | 
			
		||||
LVP = (QDG, VKM)
 | 
			
		||||
DFC = (QXH, GRQ)
 | 
			
		||||
GPC = (DLX, FMB)
 | 
			
		||||
LJP = (CCD, FSM)
 | 
			
		||||
MPN = (PFD, RSN)
 | 
			
		||||
SGG = (RHV, SNN)
 | 
			
		||||
BDF = (HVV, PFX)
 | 
			
		||||
QQR = (GVH, QSB)
 | 
			
		||||
RPJ = (TTC, PFJ)
 | 
			
		||||
NDQ = (NXV, XQD)
 | 
			
		||||
RGF = (BVQ, GMB)
 | 
			
		||||
TXM = (DCM, FJP)
 | 
			
		||||
VRN = (XFV, MFG)
 | 
			
		||||
FCX = (VXC, DPV)
 | 
			
		||||
RQJ = (HFT, DBH)
 | 
			
		||||
MLT = (CGX, XBH)
 | 
			
		||||
TSR = (QSS, NFP)
 | 
			
		||||
BCD = (VQC, TLJ)
 | 
			
		||||
JQK = (PPP, LKM)
 | 
			
		||||
DSF = (CNQ, KPF)
 | 
			
		||||
CVS = (LDS, NFH)
 | 
			
		||||
VTP = (SNN, RHV)
 | 
			
		||||
FTA = (MHG, CRF)
 | 
			
		||||
RNR = (NTH, JRX)
 | 
			
		||||
DRH = (PLR, DDF)
 | 
			
		||||
KSV = (SMK, NHC)
 | 
			
		||||
VKM = (HFV, LMG)
 | 
			
		||||
DTR = (XFV, MFG)
 | 
			
		||||
MML = (QDM, GMV)
 | 
			
		||||
HPQ = (CHP, NLL)
 | 
			
		||||
GKF = (QHK, TDM)
 | 
			
		||||
TDF = (DHX, LPT)
 | 
			
		||||
PXT = (FBT, PFH)
 | 
			
		||||
BRK = (VQB, JXJ)
 | 
			
		||||
VXT = (KSV, SVR)
 | 
			
		||||
HNM = (QPN, DCG)
 | 
			
		||||
HHQ = (HNG, HCD)
 | 
			
		||||
MPG = (JJS, SMZ)
 | 
			
		||||
CGS = (QDC, GQV)
 | 
			
		||||
GMR = (GQJ, RMH)
 | 
			
		||||
BKF = (CNB, NKP)
 | 
			
		||||
VDB = (VPB, PHM)
 | 
			
		||||
DSQ = (PMN, QSC)
 | 
			
		||||
DTX = (HRL, HXM)
 | 
			
		||||
QXH = (FDR, DHG)
 | 
			
		||||
LPT = (QDV, LHL)
 | 
			
		||||
DKB = (XQT, RCD)
 | 
			
		||||
QJN = (VBJ, DBF)
 | 
			
		||||
FVR = (JJB, LCN)
 | 
			
		||||
MFG = (CPM, NRC)
 | 
			
		||||
FMC = (MDK, MRJ)
 | 
			
		||||
JLL = (RXN, SXG)
 | 
			
		||||
NQK = (LCM, HMR)
 | 
			
		||||
KBT = (QSS, NFP)
 | 
			
		||||
DHX = (QDV, LHL)
 | 
			
		||||
SKM = (JHL, KCX)
 | 
			
		||||
FSM = (SSJ, GVF)
 | 
			
		||||
NVC = (TNG, PQJ)
 | 
			
		||||
SRM = (HSP, JLT)
 | 
			
		||||
FCM = (TDM, QHK)
 | 
			
		||||
NPN = (HPQ, KXC)
 | 
			
		||||
JGG = (QSB, GVH)
 | 
			
		||||
DCM = (DSF, PKX)
 | 
			
		||||
BLF = (BDJ, HRR)
 | 
			
		||||
JXJ = (JCC, LGV)
 | 
			
		||||
PSX = (PBT, GHT)
 | 
			
		||||
CRH = (NXX, BCD)
 | 
			
		||||
SCS = (RSH, RMP)
 | 
			
		||||
LTJ = (FSV, LHK)
 | 
			
		||||
PSV = (PKV, KCQ)
 | 
			
		||||
TVM = (FVR, RVP)
 | 
			
		||||
LSH = (DDN, HNX)
 | 
			
		||||
XTX = (RXN, RXN)
 | 
			
		||||
RKG = (FLR, HKV)
 | 
			
		||||
JNB = (BPJ, HKG)
 | 
			
		||||
GKN = (NJG, FLT)
 | 
			
		||||
RLM = (PSQ, GSS)
 | 
			
		||||
CNQ = (XDV, JCK)
 | 
			
		||||
HFR = (TQC, KLB)
 | 
			
		||||
RQV = (SHR, CTK)
 | 
			
		||||
DSN = (HDN, LLB)
 | 
			
		||||
FFF = (KSR, KSR)
 | 
			
		||||
FJJ = (FCF, KSS)
 | 
			
		||||
KPH = (NXJ, MBJ)
 | 
			
		||||
KCQ = (XKG, HTH)
 | 
			
		||||
PPK = (BNP, PMD)
 | 
			
		||||
TKB = (LKG, GLD)
 | 
			
		||||
JQD = (MLQ, PXT)
 | 
			
		||||
BPJ = (THT, KNJ)
 | 
			
		||||
RBK = (FCN, MTB)
 | 
			
		||||
PDK = (GHS, TTP)
 | 
			
		||||
SDX = (DDN, HNX)
 | 
			
		||||
BQM = (DHX, LPT)
 | 
			
		||||
KNJ = (MFP, VSD)
 | 
			
		||||
CLC = (FNQ, KVR)
 | 
			
		||||
XPS = (NXB, SXK)
 | 
			
		||||
CLF = (JQD, SGS)
 | 
			
		||||
DQM = (KSR, LQK)
 | 
			
		||||
XKG = (MRV, GDV)
 | 
			
		||||
RHD = (TTH, SNV)
 | 
			
		||||
RTR = (BGV, NLH)
 | 
			
		||||
QSB = (TKB, KHF)
 | 
			
		||||
BKP = (PJG, DKG)
 | 
			
		||||
RMH = (XHX, SMH)
 | 
			
		||||
PGR = (PNS, DGC)
 | 
			
		||||
GND = (VLF, GPC)
 | 
			
		||||
PCC = (QNP, XCM)
 | 
			
		||||
KDP = (PXL, VFM)
 | 
			
		||||
SPG = (TTF, SLQ)
 | 
			
		||||
SXK = (KNH, JLH)
 | 
			
		||||
PFX = (MFT, LGC)
 | 
			
		||||
BKM = (PLK, PSX)
 | 
			
		||||
TGD = (CMG, QJN)
 | 
			
		||||
NXV = (NTN, XRC)
 | 
			
		||||
MFP = (HNM, LGH)
 | 
			
		||||
MQQ = (RSB, MPG)
 | 
			
		||||
TBZ = (CRF, MHG)
 | 
			
		||||
XDV = (TKR, PDK)
 | 
			
		||||
DVF = (CPH, DSQ)
 | 
			
		||||
SNV = (GXS, TXM)
 | 
			
		||||
DCR = (HJD, VHF)
 | 
			
		||||
QDG = (LMG, HFV)
 | 
			
		||||
MHG = (FHT, BMJ)
 | 
			
		||||
NKP = (PRR, JRK)
 | 
			
		||||
XRC = (VNC, TDC)
 | 
			
		||||
JFL = (RRS, DVH)
 | 
			
		||||
KRT = (SKM, XMM)
 | 
			
		||||
CDD = (DVN, PDM)
 | 
			
		||||
NXP = (MKH, CRH)
 | 
			
		||||
LVT = (GRR, JPV)
 | 
			
		||||
NJT = (RLC, MTK)
 | 
			
		||||
HVV = (MFT, LGC)
 | 
			
		||||
RNG = (GMF, NXP)
 | 
			
		||||
SVR = (SMK, NHC)
 | 
			
		||||
QDJ = (SSN, JGX)
 | 
			
		||||
RQL = (BVQ, GMB)
 | 
			
		||||
HMR = (GHC, DTG)
 | 
			
		||||
CGX = (BDS, NDQ)
 | 
			
		||||
MJQ = (LVP, VSJ)
 | 
			
		||||
XJC = (CHN, VVH)
 | 
			
		||||
FFL = (GKN, PTC)
 | 
			
		||||
XJS = (SJK, SPG)
 | 
			
		||||
JQS = (PCN, LDP)
 | 
			
		||||
SHM = (JFL, KFN)
 | 
			
		||||
HPB = (LJR, RSS)
 | 
			
		||||
JXG = (SVF, TSJ)
 | 
			
		||||
STC = (QBQ, JPM)
 | 
			
		||||
FHT = (XXN, KRT)
 | 
			
		||||
LRD = (KQP, STN)
 | 
			
		||||
VCX = (SXK, NXB)
 | 
			
		||||
KSR = (TLF, TLF)
 | 
			
		||||
KQM = (PNN, TRB)
 | 
			
		||||
KTC = (TSL, XRG)
 | 
			
		||||
VKV = (VSJ, LVP)
 | 
			
		||||
XTB = (PPK, JQM)
 | 
			
		||||
BFK = (MJQ, VKV)
 | 
			
		||||
GLT = (VRN, DTR)
 | 
			
		||||
VPJ = (PFD, RSN)
 | 
			
		||||
BKT = (SGG, VTP)
 | 
			
		||||
BMQ = (VVM, VQG)
 | 
			
		||||
KVR = (QHF, XGG)
 | 
			
		||||
LNH = (QDC, GQV)
 | 
			
		||||
SLQ = (SJQ, TVN)
 | 
			
		||||
CJR = (RDP, MLK)
 | 
			
		||||
JCK = (TKR, PDK)
 | 
			
		||||
GVF = (XXH, NCV)
 | 
			
		||||
LQC = (TQC, KLB)
 | 
			
		||||
TSS = (SFH, RVQ)
 | 
			
		||||
HRL = (XVQ, PTP)
 | 
			
		||||
TDM = (GKK, LNV)
 | 
			
		||||
BNP = (BMQ, NSV)
 | 
			
		||||
BFG = (RNQ, PKH)
 | 
			
		||||
CFJ = (BKF, SCJ)
 | 
			
		||||
QQQ = (JPX, JPX)
 | 
			
		||||
MQV = (JSQ, TSS)
 | 
			
		||||
XHX = (LQD, FJG)
 | 
			
		||||
PMX = (XXJ, DSN)
 | 
			
		||||
KGM = (VPB, PHM)
 | 
			
		||||
GNR = (JLT, HSP)
 | 
			
		||||
NLS = (PTQ, SDR)
 | 
			
		||||
MSQ = (VJV, HQV)
 | 
			
		||||
FMB = (TJC, LQN)
 | 
			
		||||
XFV = (NRC, CPM)
 | 
			
		||||
RSN = (JGB, RGK)
 | 
			
		||||
PRK = (HVT, BKP)
 | 
			
		||||
HFV = (XJC, SHS)
 | 
			
		||||
SVF = (NMD, MGG)
 | 
			
		||||
QVX = (GQJ, RMH)
 | 
			
		||||
TCF = (BLF, JTQ)
 | 
			
		||||
MLK = (HSF, MQV)
 | 
			
		||||
RVQ = (FCM, GKF)
 | 
			
		||||
GLX = (XTX, JLL)
 | 
			
		||||
PDM = (SCR, JML)
 | 
			
		||||
HGR = (RKX, VGD)
 | 
			
		||||
JRB = (SND, SDG)
 | 
			
		||||
FKV = (SKX, HGL)
 | 
			
		||||
TDC = (LNH, CGS)
 | 
			
		||||
FVH = (XGL, BTF)
 | 
			
		||||
NHC = (FQS, FJJ)
 | 
			
		||||
BBK = (LNS, DPX)
 | 
			
		||||
VVH = (NNP, CVS)
 | 
			
		||||
NJK = (DLC, TCF)
 | 
			
		||||
SGL = (VJN, PVB)
 | 
			
		||||
MTV = (NQK, MHP)
 | 
			
		||||
PJS = (TFG, NCP)
 | 
			
		||||
DTG = (SCS, DBK)
 | 
			
		||||
TCJ = (SDP, PSV)
 | 
			
		||||
VGB = (HVK, XMV)
 | 
			
		||||
MCL = (SNQ, NVC)
 | 
			
		||||
NXX = (TLJ, VQC)
 | 
			
		||||
HVK = (MDV, CFJ)
 | 
			
		||||
NMD = (MCT, SST)
 | 
			
		||||
TTZ = (QXB, QGB)
 | 
			
		||||
VNC = (LNH, CGS)
 | 
			
		||||
GMB = (LSH, SDX)
 | 
			
		||||
CHN = (NNP, CVS)
 | 
			
		||||
FCV = (MJR, FJC)
 | 
			
		||||
HNG = (TDF, BQM)
 | 
			
		||||
SCR = (XKC, GLX)
 | 
			
		||||
DDF = (DHP, FVP)
 | 
			
		||||
CTK = (BGP, FCX)
 | 
			
		||||
CHG = (QJR, CDD)
 | 
			
		||||
VXL = (QFV, NHT)
 | 
			
		||||
SSJ = (XXH, NCV)
 | 
			
		||||
RNQ = (NPN, MHQ)
 | 
			
		||||
FJC = (XJF, XML)
 | 
			
		||||
XTZ = (PKH, RNQ)
 | 
			
		||||
CBN = (TNK, FQM)
 | 
			
		||||
RSB = (JJS, JJS)
 | 
			
		||||
TTH = (GXS, TXM)
 | 
			
		||||
HJH = (LKR, XJS)
 | 
			
		||||
VQB = (JCC, LGV)
 | 
			
		||||
HKV = (LJP, VQT)
 | 
			
		||||
RGN = (XRG, TSL)
 | 
			
		||||
MKX = (NPV, HCH)
 | 
			
		||||
JJS = (TST, KHB)
 | 
			
		||||
JPX = (MNJ, MNJ)
 | 
			
		||||
HTH = (MRV, GDV)
 | 
			
		||||
VQT = (CCD, FSM)
 | 
			
		||||
PGJ = (DHF, TCJ)
 | 
			
		||||
DHF = (SDP, PSV)
 | 
			
		||||
XJF = (GJF, RNR)
 | 
			
		||||
LQD = (CCF, NLS)
 | 
			
		||||
MRF = (DBH, HFT)
 | 
			
		||||
FNQ = (XGG, QHF)
 | 
			
		||||
GGM = (JXG, GMK)
 | 
			
		||||
BDS = (NXV, XQD)
 | 
			
		||||
MCM = (PGR, LJH)
 | 
			
		||||
LDP = (NDF, CQF)
 | 
			
		||||
QCJ = (RLC, MTK)
 | 
			
		||||
CCX = (RQV, BRF)
 | 
			
		||||
HBD = (BDF, FXL)
 | 
			
		||||
CBA = (RNQ, PKH)
 | 
			
		||||
MJR = (XJF, XML)
 | 
			
		||||
JCC = (LSB, NPF)
 | 
			
		||||
VQG = (NGQ, HDM)
 | 
			
		||||
RCB = (NSL, HPN)
 | 
			
		||||
QCV = (HBD, CST)
 | 
			
		||||
TDS = (LBH, BKT)
 | 
			
		||||
CNV = (QKQ, RBK)
 | 
			
		||||
KLB = (JQK, TXF)
 | 
			
		||||
XKH = (QNP, XCM)
 | 
			
		||||
SCJ = (CNB, NKP)
 | 
			
		||||
HGL = (CFR, HSC)
 | 
			
		||||
BDQ = (NTG, KTT)
 | 
			
		||||
PRR = (PGJ, NHD)
 | 
			
		||||
KPR = (CKV, LMN)
 | 
			
		||||
HFC = (LVF, BBJ)
 | 
			
		||||
TLF = (DKB, DKB)
 | 
			
		||||
SND = (HGR, RJN)
 | 
			
		||||
VNV = (PGR, LJH)
 | 
			
		||||
PLQ = (KKF, TVM)
 | 
			
		||||
LVF = (LVT, TKJ)
 | 
			
		||||
QJR = (PDM, DVN)
 | 
			
		||||
HVT = (DKG, PJG)
 | 
			
		||||
CFR = (QQL, NTJ)
 | 
			
		||||
DTM = (LTJ, RXP)
 | 
			
		||||
HNX = (GLT, DHJ)
 | 
			
		||||
QKQ = (FCN, MTB)
 | 
			
		||||
PTK = (HPC, PFK)
 | 
			
		||||
FQS = (FCF, KSS)
 | 
			
		||||
JBQ = (LCX, MQQ)
 | 
			
		||||
RXP = (LHK, FSV)
 | 
			
		||||
SSR = (DRH, CVN)
 | 
			
		||||
LSB = (VDC, KHQ)
 | 
			
		||||
DPX = (GNQ, VSB)
 | 
			
		||||
ZZZ = (GMV, QDM)
 | 
			
		||||
XFN = (TSR, KBT)
 | 
			
		||||
LNN = (NMV, FGF)
 | 
			
		||||
KQP = (LQC, HFR)
 | 
			
		||||
LHR = (XJS, LKR)
 | 
			
		||||
GCQ = (DVF, BXQ)
 | 
			
		||||
VVL = (TCF, DLC)
 | 
			
		||||
MKH = (NXX, BCD)
 | 
			
		||||
							
								
								
									
										14
									
								
								days/day08/src/main.rs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								days/day08/src/main.rs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,14 @@
 | 
			
		|||
mod part1;
 | 
			
		||||
mod part2;
 | 
			
		||||
mod parse;
 | 
			
		||||
 | 
			
		||||
fn main() {
 | 
			
		||||
    let input = include_str!("./input.txt");
 | 
			
		||||
    let structured_input = parse::parse(input);
 | 
			
		||||
 | 
			
		||||
    println!("Part One");
 | 
			
		||||
    println!("Result: {}", part1::part1(&structured_input));
 | 
			
		||||
 | 
			
		||||
    println!("Part Two");
 | 
			
		||||
    println!("Result: {}", part2::part2());
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										79
									
								
								days/day08/src/parse.rs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								days/day08/src/parse.rs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,79 @@
 | 
			
		|||
use std::collections::HashMap;
 | 
			
		||||
 | 
			
		||||
use once_cell::sync::Lazy;
 | 
			
		||||
use regex::Regex;
 | 
			
		||||
 | 
			
		||||
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
 | 
			
		||||
pub enum Direction {
 | 
			
		||||
    Left,
 | 
			
		||||
    Right,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[derive(Debug, Hash, PartialEq, Eq)]
 | 
			
		||||
pub struct Node {
 | 
			
		||||
    pub left: String,
 | 
			
		||||
    pub right: String,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static NODE_REGEX: Lazy<Regex> = Lazy::new(|| {
 | 
			
		||||
    Regex::new(r"^([[:alpha:]]{3}) = \(([[:alpha:]]{3}), ([[:alpha:]]{3})\)$").unwrap()
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
pub fn parse(input: &str) -> (Vec<Direction>, HashMap<String, Node>) {
 | 
			
		||||
    let mut lines = input.lines();
 | 
			
		||||
    let mut directions = Vec::new();
 | 
			
		||||
    //parse the directions
 | 
			
		||||
    let dirline = lines.next().unwrap();
 | 
			
		||||
    for char in dirline.chars() {
 | 
			
		||||
        directions.push(match char {
 | 
			
		||||
            'L' => Direction::Left,
 | 
			
		||||
            'R' => Direction::Right,
 | 
			
		||||
            e => panic!("unexpected direction {}", e),
 | 
			
		||||
        })
 | 
			
		||||
    }
 | 
			
		||||
    //skip a blank line
 | 
			
		||||
    lines.next();
 | 
			
		||||
 | 
			
		||||
    // process the rest of the lines
 | 
			
		||||
    let mut graph = HashMap::new();
 | 
			
		||||
    for line in lines {
 | 
			
		||||
        let captures = NODE_REGEX.captures(line).unwrap();
 | 
			
		||||
        graph.insert(
 | 
			
		||||
            captures[1].to_string(),
 | 
			
		||||
            Node {
 | 
			
		||||
                left: captures[2].to_string(),
 | 
			
		||||
                right: captures[3].to_string(),
 | 
			
		||||
            },
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
    (directions, graph)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[cfg(test)]
 | 
			
		||||
mod tests {
 | 
			
		||||
    use super::*;
 | 
			
		||||
    use collection_literals::collection;
 | 
			
		||||
 | 
			
		||||
    #[test]
 | 
			
		||||
    fn test_parse() {
 | 
			
		||||
        let input = concat!(
 | 
			
		||||
            "LLR\n",
 | 
			
		||||
            "\n",
 | 
			
		||||
            "AAA = (BBB, BBB)\n",
 | 
			
		||||
            "BBB = (AAA, ZZZ)\n",
 | 
			
		||||
            "ZZZ = (ZZZ, ZZZ)\n",
 | 
			
		||||
        );
 | 
			
		||||
        println!("{:#?}", parse(input));
 | 
			
		||||
        assert_eq!(
 | 
			
		||||
            parse(input),
 | 
			
		||||
            (
 | 
			
		||||
                vec![Direction::Left, Direction::Left, Direction::Right],
 | 
			
		||||
                collection! {
 | 
			
		||||
                "AAA".to_string() => Node{ left: "BBB".to_string(), right: "BBB".to_string() },
 | 
			
		||||
                "BBB".to_string() => Node{ left: "AAA".to_string(), right: "ZZZ".to_string() },
 | 
			
		||||
                "ZZZ".to_string() => Node{ left: "ZZZ".to_string(), right: "ZZZ".to_string() },
 | 
			
		||||
                }
 | 
			
		||||
            )
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										37
									
								
								days/day08/src/part1.rs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								days/day08/src/part1.rs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,37 @@
 | 
			
		|||
use std::collections::HashMap;
 | 
			
		||||
 | 
			
		||||
use crate::parse::*;
 | 
			
		||||
 | 
			
		||||
pub fn part1(input: &(Vec<Direction>, HashMap<String, Node>)) -> usize {
 | 
			
		||||
    let mut nodes_visited: usize = 0;
 | 
			
		||||
    let mut current_node: String = "AAA".to_string();
 | 
			
		||||
    while current_node != *"ZZZ" {
 | 
			
		||||
        let direction = input.0[nodes_visited % input.0.len()];
 | 
			
		||||
        match direction {
 | 
			
		||||
            Direction::Left => current_node = input.1.get(¤t_node).unwrap().left.clone(),
 | 
			
		||||
            Direction::Right => current_node = input.1.get(¤t_node).unwrap().right.clone(),
 | 
			
		||||
        };
 | 
			
		||||
        nodes_visited += 1;
 | 
			
		||||
    }
 | 
			
		||||
    nodes_visited
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[cfg(test)]
 | 
			
		||||
mod tests {
 | 
			
		||||
    use collection_literals::collection;
 | 
			
		||||
 | 
			
		||||
    use super::*;
 | 
			
		||||
 | 
			
		||||
    #[test]
 | 
			
		||||
    fn test_part1() {
 | 
			
		||||
        let input: (Vec<Direction>, HashMap<String, Node>) = (
 | 
			
		||||
            vec![Direction::Left, Direction::Left, Direction::Right],
 | 
			
		||||
            collection! {
 | 
			
		||||
            "AAA".to_string() => Node{ left: "BBB".to_string(), right: "BBB".to_string() },
 | 
			
		||||
            "BBB".to_string() => Node{ left: "AAA".to_string(), right: "ZZZ".to_string() },
 | 
			
		||||
            "ZZZ".to_string() => Node{ left: "ZZZ".to_string(), right: "ZZZ".to_string() },
 | 
			
		||||
            },
 | 
			
		||||
        );
 | 
			
		||||
        assert_eq!(part1(&input), 6);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										15
									
								
								days/day08/src/part2.rs
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								days/day08/src/part2.rs
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
use crate::parse::*;
 | 
			
		||||
 | 
			
		||||
pub fn part2() -> usize {
 | 
			
		||||
    unimplemented!()
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#[cfg(test)]
 | 
			
		||||
mod tests {
 | 
			
		||||
    use super::*;
 | 
			
		||||
 | 
			
		||||
    #[test]
 | 
			
		||||
    fn test_part2() {
 | 
			
		||||
        assert_eq!(0, 0);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue