day 8
This commit is contained in:
parent
966e905d29
commit
c53cbecb7f
|
@ -42,6 +42,10 @@ version = "0.1.0"
|
|||
name = "day07"
|
||||
version = "0.1.0"
|
||||
|
||||
[[package]]
|
||||
name = "day08"
|
||||
version = "0.1.0"
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "2.6.4"
|
||||
|
|
|
@ -9,7 +9,7 @@ members = [
|
|||
"day05",
|
||||
"day06",
|
||||
"day07",
|
||||
# "day08",
|
||||
"day08",
|
||||
# "day09",
|
||||
# "day10",
|
||||
# "day11",
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
[package]
|
||||
name = "day08"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
|
@ -0,0 +1,752 @@
|
|||
LRRLLRLRRRLRRRLRRLRRRLRRLRRRLRRLRRRLRLRRRLRRRLRRRLRLRRLRRRLRRRLRRLRRLRRLRLLLRRRLRRRLRLRLRRLLRRRLRRLRRRLRLRRLRRRLRRRLLRLRLLRRRLRRRLLRRRLRRRLRRRLRRLRRRLLLRRRLRLLLRLRLRLLRLRLLLRRLRRLLRRLRRRLRRLRRLRLRRLLRRLRLRRLLLRRRLLRRRLLRLRLLRRRLRLLRRLRLRRLRLRRRLLRRRLLRRLRLRRLRRLLRLRLRRRLRLRRRR
|
||||
|
||||
GLJ = (QQV, JTL)
|
||||
JSJ = (DKN, GQN)
|
||||
MGD = (BPL, LQC)
|
||||
VSK = (SPH, DDH)
|
||||
TSB = (MKP, TKX)
|
||||
HPD = (GKG, XMX)
|
||||
BLZ = (HGN, KRR)
|
||||
BMQ = (JXC, HFC)
|
||||
GDG = (BVJ, NBL)
|
||||
LST = (PVJ, DPR)
|
||||
QQQ = (RLV, SNJ)
|
||||
TMV = (XGV, KCL)
|
||||
NPZ = (JRD, NHL)
|
||||
DDH = (NDR, XPN)
|
||||
SFQ = (TKD, SQH)
|
||||
RNK = (TJN, NFX)
|
||||
FRS = (SCJ, FDV)
|
||||
RST = (BSQ, MHQ)
|
||||
DSM = (FRX, DMN)
|
||||
GBN = (VBL, XRK)
|
||||
GLH = (KNN, PKP)
|
||||
JRD = (LDP, RNH)
|
||||
SPV = (JNR, FRK)
|
||||
PMD = (FXP, BKL)
|
||||
MDV = (MGD, FHM)
|
||||
MGG = (KMN, QPL)
|
||||
FNX = (FKG, NLT)
|
||||
FPH = (QXS, PBR)
|
||||
DKP = (QFT, QQQ)
|
||||
XVH = (PVP, GBJ)
|
||||
SSP = (BHD, KRM)
|
||||
JVR = (RHB, LDJ)
|
||||
HCX = (RNK, LGT)
|
||||
LRX = (SFN, GXD)
|
||||
DXN = (NQX, KNL)
|
||||
GNT = (GHV, DKG)
|
||||
QVF = (NJN, FSN)
|
||||
QHQ = (FXN, PNP)
|
||||
CHX = (DHN, BQB)
|
||||
GQD = (TLQ, XXG)
|
||||
RMF = (RVF, KKR)
|
||||
JHN = (NRG, RCC)
|
||||
MBG = (XPV, MSB)
|
||||
XJN = (SQT, XXJ)
|
||||
JNR = (VTP, XSF)
|
||||
NXD = (DKP, MKJ)
|
||||
LSS = (KHS, BSV)
|
||||
SQH = (BLH, VCG)
|
||||
TLM = (DCG, BQL)
|
||||
HTG = (TLF, KRB)
|
||||
GGM = (KLV, PTG)
|
||||
PVJ = (BHR, TRH)
|
||||
PRP = (QLC, JPQ)
|
||||
CVC = (KVJ, FTM)
|
||||
RMH = (RPD, FFK)
|
||||
MRL = (KFK, LJK)
|
||||
VMG = (LSX, FPH)
|
||||
DKQ = (XSM, CXK)
|
||||
QBD = (BGB, GPS)
|
||||
RFV = (QCG, NJD)
|
||||
FDN = (QFL, DXN)
|
||||
RMV = (NCJ, PMZ)
|
||||
BCJ = (MDD, TMG)
|
||||
BMB = (GLH, MKK)
|
||||
DLQ = (JKX, VGS)
|
||||
NBL = (GFQ, PRQ)
|
||||
NVG = (SCS, JTS)
|
||||
CBX = (MXQ, QSM)
|
||||
HFJ = (NXX, VRX)
|
||||
FMQ = (KDV, HFJ)
|
||||
DSK = (BND, GFJ)
|
||||
TRM = (MMX, BTG)
|
||||
XKS = (GXD, SFN)
|
||||
LDJ = (TFQ, CJK)
|
||||
LFP = (TFS, LST)
|
||||
PQS = (PJR, SMD)
|
||||
MTA = (JPD, MVX)
|
||||
FMM = (GPC, BVB)
|
||||
NJD = (JMG, DPL)
|
||||
VQJ = (KRM, BHD)
|
||||
PXP = (BPB, JJK)
|
||||
JDM = (HHQ, JXD)
|
||||
BJK = (SRN, DRL)
|
||||
MRS = (RPT, SQF)
|
||||
RCC = (DRD, SPP)
|
||||
XPG = (XRK, VBL)
|
||||
JLR = (LJQ, XDP)
|
||||
KLV = (SKX, SKX)
|
||||
JBB = (LRB, RRT)
|
||||
NDP = (KMS, DDJ)
|
||||
XML = (TPD, VKQ)
|
||||
TPM = (PKJ, PGR)
|
||||
DGQ = (JFK, TMB)
|
||||
XTL = (MPK, CTL)
|
||||
VSH = (BNH, HJR)
|
||||
PVG = (SPV, KCS)
|
||||
CCQ = (LQB, VTK)
|
||||
PLS = (HPS, CVC)
|
||||
GMQ = (CTG, QHQ)
|
||||
PNP = (VSK, JCV)
|
||||
JPD = (KKV, FQP)
|
||||
PRL = (KRB, TLF)
|
||||
NMT = (HXL, NHV)
|
||||
DLP = (KXR, BXQ)
|
||||
NFG = (DSR, HNX)
|
||||
BPB = (BTM, MGR)
|
||||
JPL = (NMT, QMD)
|
||||
HJG = (XJD, HHX)
|
||||
BBK = (VVF, SBN)
|
||||
GQL = (XNX, CKR)
|
||||
BND = (SQB, KFG)
|
||||
VRF = (JKS, LGG)
|
||||
PXG = (QMD, NMT)
|
||||
FKG = (GBS, JLR)
|
||||
NCJ = (NFG, CQH)
|
||||
CVM = (LFD, NPZ)
|
||||
GQN = (SMM, PQH)
|
||||
LJQ = (LXQ, KVG)
|
||||
PFK = (HHQ, JXD)
|
||||
KLQ = (JNB, DKQ)
|
||||
QRP = (SCB, HCM)
|
||||
LRB = (RMD, KLN)
|
||||
XPP = (GMK, LKL)
|
||||
LFD = (NHL, JRD)
|
||||
TVK = (TMV, TJF)
|
||||
MQD = (HTG, PRL)
|
||||
MKJ = (QQQ, QFT)
|
||||
QLF = (CHX, XSR)
|
||||
MPP = (XMK, QFP)
|
||||
HQQ = (PCS, PDC)
|
||||
NXX = (BTN, KBJ)
|
||||
JBQ = (GGH, FJL)
|
||||
BGB = (JSF, MNP)
|
||||
BRD = (VMF, NTR)
|
||||
HCM = (RHX, KJG)
|
||||
NKP = (GHV, DKG)
|
||||
XJK = (TRS, DGQ)
|
||||
GPS = (MNP, JSF)
|
||||
NCM = (VMJ, CSC)
|
||||
LSX = (PBR, QXS)
|
||||
VLF = (MTL, GVK)
|
||||
XFT = (XGS, CRL)
|
||||
HLR = (FMM, QLH)
|
||||
FFR = (XXX, BGX)
|
||||
MRB = (XJD, HHX)
|
||||
TVS = (MTL, GVK)
|
||||
KNL = (KDN, HQQ)
|
||||
PNV = (SQF, RPT)
|
||||
HVB = (BBB, LLG)
|
||||
RGX = (RLK, MSX)
|
||||
MKB = (HNP, NGM)
|
||||
FKL = (XMK, QFP)
|
||||
LXQ = (GNB, TQH)
|
||||
CQF = (NGF, NQF)
|
||||
BSV = (KFX, HNH)
|
||||
SVQ = (PXP, XQM)
|
||||
BHD = (XVH, GDN)
|
||||
QQB = (PCB, PCB)
|
||||
DCG = (GRH, RGX)
|
||||
RRT = (KLN, RMD)
|
||||
KDN = (PDC, PCS)
|
||||
RHJ = (VTK, LQB)
|
||||
LVR = (VSH, QGS)
|
||||
NHT = (LQS, DMB)
|
||||
PBR = (TCF, JCC)
|
||||
GBJ = (MLT, XNB)
|
||||
BJB = (XPR, MBG)
|
||||
PQH = (MCH, LMB)
|
||||
MPM = (BSV, KHS)
|
||||
SGB = (TKF, PMD)
|
||||
XQM = (JJK, BPB)
|
||||
TLQ = (FGM, CRC)
|
||||
FXP = (BCJ, TDR)
|
||||
VDG = (VMJ, CSC)
|
||||
XGV = (LHS, LTS)
|
||||
JKP = (PXG, JPL)
|
||||
KFQ = (TSB, RNB)
|
||||
NHL = (LDP, RNH)
|
||||
TRS = (JFK, TMB)
|
||||
PMM = (RHC, KMQ)
|
||||
QMB = (PPJ, CNG)
|
||||
MKH = (DDJ, KMS)
|
||||
NCG = (XXX, BGX)
|
||||
DBG = (SND, HMN)
|
||||
GVK = (TQD, JHN)
|
||||
KKM = (KKL, PBT)
|
||||
HLP = (JPQ, QLC)
|
||||
GPH = (JKG, DKK)
|
||||
XQP = (GLH, MKK)
|
||||
HRF = (BGB, GPS)
|
||||
BXQ = (BDH, GQT)
|
||||
NDR = (KKM, LRR)
|
||||
HQR = (RGL, RMX)
|
||||
PCS = (DTB, LDS)
|
||||
LQB = (GMQ, HRQ)
|
||||
KKR = (KTV, CMB)
|
||||
NGM = (KFQ, BQJ)
|
||||
KLN = (XFT, JRL)
|
||||
HRR = (RHJ, CCQ)
|
||||
XSF = (CKX, PLS)
|
||||
BTG = (GDG, JDS)
|
||||
PBT = (NVG, DVP)
|
||||
CPP = (VSH, QGS)
|
||||
MLN = (VGS, JKX)
|
||||
JRF = (SKN, RMF)
|
||||
KHS = (KFX, HNH)
|
||||
DDP = (QJG, XKJ)
|
||||
FGM = (TVK, TNS)
|
||||
QJH = (XSL, QXP)
|
||||
TNX = (NBV, KLQ)
|
||||
JVC = (FBR, PFT)
|
||||
XPV = (TLM, PPK)
|
||||
PCK = (KBG, TGJ)
|
||||
HRS = (VKM, JVF)
|
||||
DKK = (NHT, ZZZ)
|
||||
TJN = (KTL, QLF)
|
||||
THT = (JJQ, LRJ)
|
||||
JNB = (CXK, XSM)
|
||||
CRL = (VXT, TBG)
|
||||
RVF = (CMB, KTV)
|
||||
GQT = (PBB, CVM)
|
||||
QGF = (MGT, SKV)
|
||||
SCJ = (CQF, KRQ)
|
||||
SCM = (DPB, PMM)
|
||||
KNN = (XLQ, VPB)
|
||||
PPK = (BQL, DCG)
|
||||
LPP = (HJG, MRB)
|
||||
RRM = (RXT, PBZ)
|
||||
DCT = (FTF, HVB)
|
||||
PQP = (PBQ, HVR)
|
||||
NTV = (SCM, GKN)
|
||||
XXX = (LSS, MPM)
|
||||
BKP = (LXL, LXL)
|
||||
BLH = (QLV, SFJ)
|
||||
SPH = (NDR, XPN)
|
||||
CVF = (KDV, HFJ)
|
||||
XDK = (RHJ, CCQ)
|
||||
NQQ = (NTT, FVL)
|
||||
TQF = (XCV, NDX)
|
||||
VRX = (BTN, KBJ)
|
||||
KFX = (XLN, FDN)
|
||||
DMN = (TPT, JRQ)
|
||||
VVF = (TPQ, CDH)
|
||||
XPN = (LRR, KKM)
|
||||
LQC = (TMX, LHQ)
|
||||
XXT = (TLR, DDP)
|
||||
PBB = (LFD, LFD)
|
||||
GKF = (CHM, XTL)
|
||||
SNJ = (NSR, KVD)
|
||||
FKS = (PPL, PSM)
|
||||
BJZ = (MVX, JPD)
|
||||
JSF = (GQD, GQP)
|
||||
BFM = (QXR, MVF)
|
||||
QSD = (JHV, JKP)
|
||||
XSR = (DHN, BQB)
|
||||
SVM = (PKJ, PGR)
|
||||
XXJ = (HGF, MPG)
|
||||
KRB = (QMB, VNX)
|
||||
XJD = (SFQ, SGF)
|
||||
HGN = (KBF, LXS)
|
||||
TKF = (FXP, BKL)
|
||||
KHB = (TPJ, CGD)
|
||||
JFK = (JJX, DMH)
|
||||
PMT = (HGC, HJQ)
|
||||
NBV = (DKQ, JNB)
|
||||
FMN = (BJB, HSV)
|
||||
HPS = (KVJ, KVJ)
|
||||
GLT = (LXL, NFN)
|
||||
PSM = (PMT, CKP)
|
||||
RSM = (JRF, PDB)
|
||||
KVD = (PFK, JDM)
|
||||
CSQ = (HJG, MRB)
|
||||
PKJ = (HDR, TJQ)
|
||||
LRJ = (JSJ, BFS)
|
||||
KFG = (KKT, CQR)
|
||||
TPD = (THT, KBB)
|
||||
KBB = (LRJ, JJQ)
|
||||
XGS = (VXT, TBG)
|
||||
RHX = (XJK, QND)
|
||||
QPL = (DDN, STH)
|
||||
BQB = (XJC, SBH)
|
||||
KCL = (LHS, LTS)
|
||||
XPH = (KXR, BXQ)
|
||||
QNA = (NHL, JRD)
|
||||
KVJ = (KHJ, KHJ)
|
||||
QJP = (RNK, LGT)
|
||||
QFL = (KNL, NQX)
|
||||
KFP = (HLR, LCV)
|
||||
QLV = (PMX, BJK)
|
||||
TLR = (QJG, XKJ)
|
||||
NLQ = (XML, BDS)
|
||||
JXD = (MQD, GBH)
|
||||
LXP = (HRR, XDK)
|
||||
DJS = (GLJ, RNF)
|
||||
FLS = (FMB, MRL)
|
||||
HXL = (BXS, FDM)
|
||||
NQX = (KDN, HQQ)
|
||||
PGR = (TJQ, HDR)
|
||||
CGD = (DGS, VKN)
|
||||
KRQ = (NQF, NGF)
|
||||
JSB = (PNQ, DHV)
|
||||
MBJ = (JCK, QRP)
|
||||
MXQ = (DRG, DSM)
|
||||
HMN = (CBP, CPG)
|
||||
JTL = (RST, SPD)
|
||||
DKG = (GQK, XMQ)
|
||||
NJN = (TVS, VLF)
|
||||
LTS = (JCB, TQF)
|
||||
XNP = (JVF, VKM)
|
||||
RTG = (XXJ, SQT)
|
||||
KNT = (LRB, RRT)
|
||||
SFL = (LXP, CDN)
|
||||
GXD = (MMT, CNX)
|
||||
SMC = (XTL, CHM)
|
||||
JCB = (XCV, NDX)
|
||||
DQT = (RBJ, QGF)
|
||||
TFR = (MKH, NDP)
|
||||
HTP = (CSQ, LPP)
|
||||
JKM = (VVK, SHX)
|
||||
LGG = (RPH, NTV)
|
||||
NSR = (JDM, PFK)
|
||||
QFT = (SNJ, RLV)
|
||||
SQF = (GRG, RSX)
|
||||
SFD = (FFK, RPD)
|
||||
SCD = (SNC, LGQ)
|
||||
CXK = (VDN, SQM)
|
||||
LDP = (NLQ, DGV)
|
||||
CDN = (XDK, HRR)
|
||||
HFC = (QBD, HRF)
|
||||
LGT = (NFX, TJN)
|
||||
VKM = (QJP, HCX)
|
||||
HGF = (SCD, TKT)
|
||||
VGS = (SGB, VXD)
|
||||
MGL = (FTN, LBF)
|
||||
FDM = (DLQ, MLN)
|
||||
FTP = (HJL, JQG)
|
||||
TCN = (MRL, FMB)
|
||||
NGR = (QPL, KMN)
|
||||
NDX = (DMX, LTG)
|
||||
GVJ = (JDG, PCK)
|
||||
MVF = (KVR, TQK)
|
||||
MXJ = (FPQ, VBV)
|
||||
RNH = (DGV, NLQ)
|
||||
RPD = (RFV, PGG)
|
||||
JKG = (NHT, NHT)
|
||||
XNX = (JDB, DQT)
|
||||
DRL = (GCM, DSK)
|
||||
TCF = (TCJ, SVQ)
|
||||
LCL = (NJN, FSN)
|
||||
MJM = (QSM, MXQ)
|
||||
JJK = (BTM, MGR)
|
||||
SPX = (JDG, PCK)
|
||||
QLC = (DHJ, PVG)
|
||||
GPC = (XKC, RTT)
|
||||
TJQ = (XPG, GBN)
|
||||
HSV = (XPR, MBG)
|
||||
JKS = (RPH, NTV)
|
||||
XDP = (KVG, LXQ)
|
||||
JDS = (NBL, BVJ)
|
||||
TQK = (NCR, HTP)
|
||||
BLX = (TFS, LST)
|
||||
KRR = (LXS, KBF)
|
||||
XMQ = (KHB, MMC)
|
||||
KBG = (DBG, MQR)
|
||||
LRR = (KKL, PBT)
|
||||
LFV = (HVQ, MNJ)
|
||||
HGD = (MNL, PDJ)
|
||||
GLB = (NDP, MKH)
|
||||
CMB = (VDG, NCM)
|
||||
TKD = (VCG, BLH)
|
||||
BQJ = (TSB, RNB)
|
||||
QBT = (MKB, RKM)
|
||||
GJQ = (BTG, MMX)
|
||||
SGF = (TKD, SQH)
|
||||
RMD = (JRL, XFT)
|
||||
DDJ = (HRS, XNP)
|
||||
HNP = (KFQ, BQJ)
|
||||
FQF = (MNJ, HVQ)
|
||||
PJT = (FRQ, KFP)
|
||||
RKM = (NGM, HNP)
|
||||
VBV = (LVR, CPP)
|
||||
RBJ = (SKV, MGT)
|
||||
MPG = (SCD, TKT)
|
||||
BHR = (BRM, FJC)
|
||||
VTP = (CKX, PLS)
|
||||
PBQ = (RQC, HGD)
|
||||
RMX = (FTP, NGJ)
|
||||
SMP = (KRR, HGN)
|
||||
KBF = (RMK, BMQ)
|
||||
LSL = (JSB, VPL)
|
||||
KRM = (GDN, XVH)
|
||||
DHJ = (SPV, KCS)
|
||||
XNB = (QFH, PGQ)
|
||||
TGJ = (DBG, MQR)
|
||||
LHQ = (FNX, KFF)
|
||||
GCM = (GFJ, BND)
|
||||
MJQ = (BBK, KVM)
|
||||
NQF = (SSP, VQJ)
|
||||
VPL = (DHV, PNQ)
|
||||
HHX = (SFQ, SGF)
|
||||
FJL = (MGL, XKH)
|
||||
HNH = (FDN, XLN)
|
||||
RLK = (LCL, QVF)
|
||||
SND = (CPG, CBP)
|
||||
CNG = (DJS, HVS)
|
||||
VDN = (QBK, MXJ)
|
||||
BRM = (SMC, GKF)
|
||||
VTK = (HRQ, GMQ)
|
||||
MVX = (KKV, FQP)
|
||||
TDR = (TMG, MDD)
|
||||
SQT = (HGF, MPG)
|
||||
TMN = (HVB, FTF)
|
||||
GNB = (BFT, QXK)
|
||||
QXP = (MJM, CBX)
|
||||
GQK = (MMC, KHB)
|
||||
QGX = (NDB, QSD)
|
||||
TMX = (FNX, KFF)
|
||||
BLD = (NBV, KLQ)
|
||||
RHC = (NXK, PJT)
|
||||
XJC = (QKG, QKG)
|
||||
GBH = (HTG, PRL)
|
||||
TPT = (TRQ, XXT)
|
||||
FTF = (BBB, LLG)
|
||||
QJG = (FKS, PQG)
|
||||
FVR = (LXP, CDN)
|
||||
XCA = (FVR, SFL)
|
||||
VMJ = (KHP, MDV)
|
||||
NTT = (LFP, BLX)
|
||||
DMB = (TCN, FLS)
|
||||
CQR = (LRX, XKS)
|
||||
JFR = (TMN, DCT)
|
||||
TRQ = (DDP, TLR)
|
||||
BXS = (MLN, DLQ)
|
||||
LLG = (LSK, XMD)
|
||||
CBP = (RHF, BRD)
|
||||
PFT = (SMP, BLZ)
|
||||
TNS = (TMV, TJF)
|
||||
DHV = (VFX, VVR)
|
||||
PPL = (CKP, PMT)
|
||||
QND = (DGQ, TRS)
|
||||
VBL = (MGG, NGR)
|
||||
FHM = (BPL, LQC)
|
||||
KKT = (LRX, XKS)
|
||||
LHS = (JCB, TQF)
|
||||
LXL = (LJH, LJH)
|
||||
BLT = (GGH, FJL)
|
||||
JQG = (XCT, FRS)
|
||||
KCS = (JNR, FRK)
|
||||
SKX = (JKG, JKG)
|
||||
VKN = (NMS, QBT)
|
||||
DSL = (FMN, PJN)
|
||||
TPJ = (VKN, DGS)
|
||||
CKR = (JDB, DQT)
|
||||
LKL = (QLQ, NXD)
|
||||
SMM = (LMB, MCH)
|
||||
FSN = (TVS, VLF)
|
||||
KMS = (XNP, HRS)
|
||||
MTX = (LGG, JKS)
|
||||
CHM = (CTL, MPK)
|
||||
HRQ = (QHQ, CTG)
|
||||
QCG = (JMG, DPL)
|
||||
TQH = (QXK, BFT)
|
||||
JXC = (QBD, HRF)
|
||||
JVF = (QJP, HCX)
|
||||
TJF = (KCL, XGV)
|
||||
XDS = (QQB, QQB)
|
||||
KJG = (QND, XJK)
|
||||
CTG = (FXN, PNP)
|
||||
BBB = (LSK, XMD)
|
||||
DMH = (NHF, JKM)
|
||||
BGX = (LSS, MPM)
|
||||
RHF = (VMF, NTR)
|
||||
KHJ = (JPD, MVX)
|
||||
SCS = (FNJ, RSM)
|
||||
VFX = (LXV, XPP)
|
||||
XLQ = (RMH, SFD)
|
||||
HDB = (HVR, PBQ)
|
||||
PTG = (SKX, GPH)
|
||||
NTR = (LDG, LKV)
|
||||
KKL = (NVG, DVP)
|
||||
XKH = (FTN, LBF)
|
||||
BDS = (TPD, VKQ)
|
||||
QKG = (FBR, FBR)
|
||||
LDS = (HQR, BJC)
|
||||
KKV = (MPP, FKL)
|
||||
JRQ = (TRQ, XXT)
|
||||
MNP = (GQP, GQD)
|
||||
BTM = (GJQ, TRM)
|
||||
RPH = (GKN, SCM)
|
||||
TQD = (RCC, NRG)
|
||||
FQP = (FKL, MPP)
|
||||
VFV = (QQB, HPB)
|
||||
XSL = (CBX, MJM)
|
||||
GKN = (DPB, PMM)
|
||||
PBK = (QBH, GQL)
|
||||
HPB = (PCB, RRM)
|
||||
MCH = (RTG, XJN)
|
||||
KSL = (FVL, NTT)
|
||||
TCJ = (PXP, XQM)
|
||||
RNF = (JTL, QQV)
|
||||
BXA = (NFG, CQH)
|
||||
KVK = (PRP, HLP)
|
||||
NGF = (SSP, VQJ)
|
||||
PJN = (BJB, HSV)
|
||||
SFJ = (BJK, PMX)
|
||||
CPL = (LDJ, RHB)
|
||||
MKP = (TRJ, BFM)
|
||||
RPT = (GRG, RSX)
|
||||
PRQ = (XPH, DLP)
|
||||
DSR = (KNT, JBB)
|
||||
VPB = (RMH, SFD)
|
||||
QLQ = (MKJ, DKP)
|
||||
FNJ = (PDB, JRF)
|
||||
SBH = (QKG, JVC)
|
||||
PDC = (LDS, DTB)
|
||||
QFP = (MJQ, HFK)
|
||||
CTL = (RDD, KVK)
|
||||
LXS = (BMQ, RMK)
|
||||
VKF = (QBH, GQL)
|
||||
HJL = (XCT, FRS)
|
||||
KTK = (LDF, HPD)
|
||||
RMK = (HFC, JXC)
|
||||
MGT = (JFR, HXB)
|
||||
XLN = (QFL, DXN)
|
||||
FRQ = (HLR, LCV)
|
||||
FMB = (KFK, LJK)
|
||||
NFX = (KTL, QLF)
|
||||
LMB = (RTG, XJN)
|
||||
JDG = (TGJ, KBG)
|
||||
MNJ = (GVJ, SPX)
|
||||
VMF = (LDG, LKV)
|
||||
SRN = (GCM, DSK)
|
||||
JCC = (SVQ, TCJ)
|
||||
NGJ = (HJL, JQG)
|
||||
XCT = (SCJ, FDV)
|
||||
FFK = (RFV, PGG)
|
||||
NFN = (LJH, RMV)
|
||||
GHV = (GQK, XMQ)
|
||||
HFK = (KVM, BBK)
|
||||
MNL = (GLB, TFR)
|
||||
BPL = (LHQ, TMX)
|
||||
LJH = (NCJ, NCJ)
|
||||
FDV = (CQF, KRQ)
|
||||
PBZ = (SFL, FVR)
|
||||
MSB = (PPK, TLM)
|
||||
GGH = (XKH, MGL)
|
||||
MPK = (KVK, RDD)
|
||||
VVR = (XPP, LXV)
|
||||
NMS = (MKB, RKM)
|
||||
NXK = (FRQ, KFP)
|
||||
BSQ = (JCS, MBJ)
|
||||
XMX = (DSL, CTX)
|
||||
NHF = (VVK, SHX)
|
||||
MMC = (CGD, TPJ)
|
||||
GQP = (TLQ, XXG)
|
||||
TRH = (FJC, BRM)
|
||||
RLV = (NSR, KVD)
|
||||
DKN = (PQH, SMM)
|
||||
MSX = (LCL, QVF)
|
||||
SKN = (KKR, RVF)
|
||||
LSK = (PNV, MRS)
|
||||
RDD = (PRP, HLP)
|
||||
DRD = (JBQ, BLT)
|
||||
GBS = (XDP, LJQ)
|
||||
TFQ = (BLD, TNX)
|
||||
QGS = (BNH, HJR)
|
||||
LJK = (CVF, FMQ)
|
||||
NCR = (CSQ, LPP)
|
||||
HJQ = (SVM, TPM)
|
||||
JCS = (QRP, JCK)
|
||||
KTV = (VDG, NCM)
|
||||
MMX = (GDG, JDS)
|
||||
HVS = (GLJ, RNF)
|
||||
XMD = (PNV, MRS)
|
||||
VVK = (XDS, VFV)
|
||||
FBR = (SMP, SMP)
|
||||
XKJ = (PQG, FKS)
|
||||
AAA = (LQS, DMB)
|
||||
LCV = (FMM, QLH)
|
||||
PPJ = (HVS, DJS)
|
||||
DGS = (QBT, NMS)
|
||||
PFG = (LDF, HPD)
|
||||
HVR = (RQC, HGD)
|
||||
QXK = (BMB, XQP)
|
||||
BTN = (GHD, JXP)
|
||||
DPR = (TRH, BHR)
|
||||
KVG = (GNB, TQH)
|
||||
GFJ = (KFG, SQB)
|
||||
JCK = (SCB, HCM)
|
||||
QSM = (DRG, DSM)
|
||||
XPR = (XPV, MSB)
|
||||
RNB = (TKX, MKP)
|
||||
RHB = (TFQ, CJK)
|
||||
PGQ = (VRF, MTX)
|
||||
CDH = (GNT, NKP)
|
||||
BVJ = (PRQ, GFQ)
|
||||
LTG = (QGX, LVL)
|
||||
XJR = (QXP, XSL)
|
||||
JCV = (SPH, DDH)
|
||||
GDN = (PVP, GBJ)
|
||||
HNX = (KNT, JBB)
|
||||
SFN = (MMT, CNX)
|
||||
RGL = (FTP, NGJ)
|
||||
VCA = (KRR, HGN)
|
||||
ZZZ = (DMB, LQS)
|
||||
GMK = (QLQ, NXD)
|
||||
LKV = (VMG, SDQ)
|
||||
PMZ = (CQH, NFG)
|
||||
KBJ = (GHD, JXP)
|
||||
PNQ = (VFX, VVR)
|
||||
TPQ = (GNT, NKP)
|
||||
SPD = (MHQ, BSQ)
|
||||
XCV = (DMX, LTG)
|
||||
BVB = (XKC, RTT)
|
||||
BQL = (RGX, GRH)
|
||||
JTS = (RSM, FNJ)
|
||||
SPP = (BLT, JBQ)
|
||||
VXT = (CPL, JVR)
|
||||
MTL = (JHN, TQD)
|
||||
KMN = (DDN, STH)
|
||||
RQC = (PDJ, MNL)
|
||||
FTM = (KHJ, BJZ)
|
||||
RXT = (FVR, SFL)
|
||||
QXR = (KVR, TQK)
|
||||
HJR = (QJH, XJR)
|
||||
BFS = (GQN, DKN)
|
||||
TKX = (BFM, TRJ)
|
||||
DGV = (BDS, XML)
|
||||
DRG = (FRX, DMN)
|
||||
VNX = (CNG, PPJ)
|
||||
CSC = (MDV, KHP)
|
||||
KMQ = (PJT, NXK)
|
||||
DVP = (SCS, JTS)
|
||||
LDF = (XMX, GKG)
|
||||
QFH = (MTX, VRF)
|
||||
RTT = (PQS, GBD)
|
||||
KXR = (BDH, BDH)
|
||||
SMD = (GHT, GGM)
|
||||
TMB = (DMH, JJX)
|
||||
KHP = (FHM, MGD)
|
||||
TLF = (QMB, VNX)
|
||||
FRK = (VTP, XSF)
|
||||
KTL = (CHX, XSR)
|
||||
GRH = (RLK, MSX)
|
||||
QMD = (NHV, HXL)
|
||||
KDV = (VRX, NXX)
|
||||
LGQ = (VKF, PBK)
|
||||
FVL = (BLX, LFP)
|
||||
MMT = (NQQ, KSL)
|
||||
CKP = (HJQ, HGC)
|
||||
STH = (BKP, GLT)
|
||||
QBK = (FPQ, VBV)
|
||||
CTX = (FMN, PJN)
|
||||
HHQ = (GBH, MQD)
|
||||
JHV = (PXG, JPL)
|
||||
FJC = (GKF, SMC)
|
||||
TMG = (PFG, KTK)
|
||||
XXG = (CRC, FGM)
|
||||
BDH = (PBB, PBB)
|
||||
FPQ = (CPP, LVR)
|
||||
BKL = (BCJ, TDR)
|
||||
GKG = (DSL, CTX)
|
||||
LVL = (NDB, QSD)
|
||||
BNH = (QJH, XJR)
|
||||
TBG = (JVR, CPL)
|
||||
CQH = (HNX, DSR)
|
||||
VXD = (TKF, PMD)
|
||||
MGR = (TRM, GJQ)
|
||||
PDJ = (GLB, TFR)
|
||||
HXB = (DCT, TMN)
|
||||
XSM = (SQM, VDN)
|
||||
HDR = (XPG, GBN)
|
||||
GFQ = (XPH, DLP)
|
||||
XKC = (PQS, GBD)
|
||||
SBN = (TPQ, CDH)
|
||||
RSX = (LFV, FQF)
|
||||
PVP = (XNB, MLT)
|
||||
LDG = (VMG, SDQ)
|
||||
LXV = (LKL, GMK)
|
||||
TKT = (SNC, LGQ)
|
||||
SHX = (XDS, VFV)
|
||||
GRG = (FQF, LFV)
|
||||
QQV = (RST, SPD)
|
||||
CNX = (NQQ, KSL)
|
||||
DMX = (LVL, QGX)
|
||||
CRC = (TVK, TNS)
|
||||
JXP = (FFR, NCG)
|
||||
BJC = (RGL, RMX)
|
||||
BFT = (XQP, BMB)
|
||||
SKV = (JFR, HXB)
|
||||
JDB = (QGF, RBJ)
|
||||
XRK = (NGR, MGG)
|
||||
FXN = (JCV, VSK)
|
||||
JJQ = (JSJ, BFS)
|
||||
DDN = (BKP, GLT)
|
||||
QBH = (XNX, CKR)
|
||||
MLT = (PGQ, QFH)
|
||||
SNC = (VKF, PBK)
|
||||
FTN = (HDB, PQP)
|
||||
DPL = (LSL, FXH)
|
||||
TFS = (DPR, PVJ)
|
||||
HVQ = (SPX, GVJ)
|
||||
JJX = (NHF, JKM)
|
||||
KVR = (HTP, NCR)
|
||||
MQR = (SND, HMN)
|
||||
MDD = (PFG, KTK)
|
||||
PCB = (RXT, RXT)
|
||||
NLT = (GBS, JLR)
|
||||
GBD = (SMD, PJR)
|
||||
NHV = (BXS, FDM)
|
||||
GHT = (KLV, PTG)
|
||||
SDQ = (LSX, FPH)
|
||||
TRJ = (QXR, MVF)
|
||||
HGC = (TPM, SVM)
|
||||
MHQ = (JCS, MBJ)
|
||||
CKX = (HPS, HPS)
|
||||
SQM = (MXJ, QBK)
|
||||
PQG = (PPL, PSM)
|
||||
JRL = (CRL, XGS)
|
||||
NRG = (DRD, SPP)
|
||||
GHD = (NCG, FFR)
|
||||
LBF = (PQP, HDB)
|
||||
MKK = (KNN, PKP)
|
||||
CPG = (RHF, BRD)
|
||||
SQB = (KKT, CQR)
|
||||
VKQ = (THT, KBB)
|
||||
KFK = (FMQ, CVF)
|
||||
PJR = (GHT, GGM)
|
||||
FXH = (JSB, VPL)
|
||||
JPQ = (PVG, DHJ)
|
||||
PDB = (SKN, RMF)
|
||||
JKX = (VXD, SGB)
|
||||
DTB = (HQR, BJC)
|
||||
VCG = (QLV, SFJ)
|
||||
KVM = (SBN, VVF)
|
||||
QXS = (TCF, JCC)
|
||||
CJK = (BLD, TNX)
|
||||
PKP = (VPB, XLQ)
|
||||
JMG = (LSL, FXH)
|
||||
FRX = (JRQ, TPT)
|
||||
KFF = (FKG, NLT)
|
||||
DPB = (RHC, KMQ)
|
||||
SCB = (KJG, RHX)
|
||||
DHN = (XJC, SBH)
|
||||
QLH = (GPC, BVB)
|
||||
PMX = (DRL, SRN)
|
||||
XMK = (HFK, MJQ)
|
||||
NDB = (JHV, JKP)
|
||||
LQS = (TCN, FLS)
|
||||
PGG = (NJD, QCG)
|
|
@ -0,0 +1,156 @@
|
|||
use std::{collections::HashMap, fs};
|
||||
|
||||
fn main() {
|
||||
const FILE_PATH: &str = "input.txt";
|
||||
println!(
|
||||
"Welcome to AOC2023 day 8, first we will read the file {}",
|
||||
FILE_PATH
|
||||
);
|
||||
let contents = fs::read_to_string(FILE_PATH).expect("Should have been able to read the file");
|
||||
|
||||
println!("And we parse the file!");
|
||||
let (instructions, map) = parse(&contents);
|
||||
println!("First thing: {}", calculate_1(&instructions, &map));
|
||||
println!("Second thing: {}", calculate_2(&instructions, &map));
|
||||
}
|
||||
|
||||
fn parse(input: &str) -> (Vec<char>, HashMap<String, (String, String)>) {
|
||||
(
|
||||
input.split("\n\n").nth(0).unwrap().chars().collect(),
|
||||
input
|
||||
.split("\n\n")
|
||||
.nth(1)
|
||||
.unwrap()
|
||||
.lines()
|
||||
.map(|line| {
|
||||
(
|
||||
line.split(" = ").nth(0).unwrap().to_string(),
|
||||
(
|
||||
line
|
||||
.split(" = ")
|
||||
.nth(1)
|
||||
.unwrap()
|
||||
.replace("(", "")
|
||||
.replace(")", "")
|
||||
.split(", ")
|
||||
.nth(0)
|
||||
.unwrap()
|
||||
.to_string(),
|
||||
line
|
||||
.split(" = ")
|
||||
.nth(1)
|
||||
.unwrap()
|
||||
.replace("(", "")
|
||||
.replace(")", "")
|
||||
.split(", ")
|
||||
.nth(1)
|
||||
.unwrap()
|
||||
.to_string(),
|
||||
),
|
||||
)
|
||||
})
|
||||
.collect(),
|
||||
)
|
||||
}
|
||||
|
||||
fn lcm(a: u64, b: u64) -> u64 {
|
||||
(a * b) / gcd(a, b)
|
||||
}
|
||||
|
||||
fn gcd(first: u64, second: u64) -> u64 {
|
||||
let mut max = first;
|
||||
let mut min = second;
|
||||
if min > max {
|
||||
let val = max;
|
||||
max = min;
|
||||
min = val;
|
||||
}
|
||||
|
||||
loop {
|
||||
let res = max % min;
|
||||
if res == 0 {
|
||||
return min;
|
||||
}
|
||||
|
||||
max = min;
|
||||
min = res;
|
||||
}
|
||||
}
|
||||
|
||||
fn calculate(
|
||||
start: &str,
|
||||
instructions: &Vec<char>,
|
||||
map: &HashMap<String, (String, String)>,
|
||||
condition: &str
|
||||
) -> u64 {
|
||||
let mut label = start.to_owned();
|
||||
let mut steps = 0;
|
||||
for c in Iterator::cycle(instructions.iter()) {
|
||||
if label.ends_with(condition) {
|
||||
break;
|
||||
}
|
||||
label = if c == &'R' {
|
||||
map.get(&label).unwrap().1.clone()
|
||||
} else {
|
||||
map.get(&label).unwrap().0.clone()
|
||||
};
|
||||
steps += 1;
|
||||
}
|
||||
steps
|
||||
}
|
||||
|
||||
fn calculate_1(instructions: &Vec<char>, map: &HashMap<String, (String, String)>) -> u64 {
|
||||
calculate("AAA", instructions, map, "ZZZ")
|
||||
}
|
||||
|
||||
fn calculate_2(instructions: &Vec<char>, map: &HashMap<String, (String, String)>) -> u64 {
|
||||
map
|
||||
.keys()
|
||||
.filter(|key| key.ends_with("A"))
|
||||
.map(|label| calculate(label, instructions, map, "Z"))
|
||||
.fold(1, |a, b| lcm(a, b))
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
const INPUT1: &str = r#"RL
|
||||
|
||||
AAA = (BBB, CCC)
|
||||
BBB = (DDD, EEE)
|
||||
CCC = (ZZZ, GGG)
|
||||
DDD = (DDD, DDD)
|
||||
EEE = (EEE, EEE)
|
||||
GGG = (GGG, GGG)
|
||||
ZZZ = (ZZZ, ZZZ)"#;
|
||||
const INPUT2: &str = r#"LLR
|
||||
|
||||
AAA = (BBB, BBB)
|
||||
BBB = (AAA, ZZZ)
|
||||
ZZZ = (ZZZ, ZZZ)"#;
|
||||
const INPUT3: &str = r#"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)"#;
|
||||
use super::*;
|
||||
#[test]
|
||||
fn test1_1() {
|
||||
let (instructions, map) = parse(INPUT1);
|
||||
assert_eq!(calculate_1(&instructions, &map), 2);
|
||||
}
|
||||
#[test]
|
||||
fn test1_2() {
|
||||
let (instructions, map) = parse(INPUT2);
|
||||
assert_eq!(calculate_1(&instructions, &map), 6);
|
||||
}
|
||||
#[test]
|
||||
fn test2() {
|
||||
let (instructions, map) = parse(INPUT3);
|
||||
assert_eq!(calculate_2(&instructions, &map), 6);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue