day 08
This commit is contained in:
parent
b839a6f82d
commit
9af4235a99
|
@ -94,6 +94,16 @@ dependencies = [
|
|||
"itertools",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "day-08"
|
||||
version = "0.0.0"
|
||||
dependencies = [
|
||||
"indoc",
|
||||
"itertools",
|
||||
"nom",
|
||||
"num",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "either"
|
||||
version = "1.9.0"
|
||||
|
@ -146,6 +156,82 @@ dependencies = [
|
|||
"minimal-lexical",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num"
|
||||
version = "0.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af"
|
||||
dependencies = [
|
||||
"num-bigint",
|
||||
"num-complex",
|
||||
"num-integer",
|
||||
"num-iter",
|
||||
"num-rational",
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-bigint"
|
||||
version = "0.4.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"num-integer",
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-complex"
|
||||
version = "0.4.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214"
|
||||
dependencies = [
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-integer"
|
||||
version = "0.1.45"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-iter"
|
||||
version = "0.1.43"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"num-integer",
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-rational"
|
||||
version = "0.4.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"num-bigint",
|
||||
"num-integer",
|
||||
"num-traits",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num-traits"
|
||||
version = "0.2.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ranges"
|
||||
version = "0.3.3"
|
||||
|
|
|
@ -6,7 +6,8 @@ members = [
|
|||
"day-03",
|
||||
"day-05",
|
||||
"day-06",
|
||||
"day-07"
|
||||
"day-07",
|
||||
"day-08"
|
||||
]
|
||||
|
||||
[workspace.dependencies]
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
[package]
|
||||
name = "day-08"
|
||||
version = "0.0.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
indoc.workspace = true
|
||||
itertools.workspace = true
|
||||
nom.workspace = true
|
||||
num = "0.4.1"
|
|
@ -0,0 +1,804 @@
|
|||
LRRRLRRLLLRRRLRLRRLRRRLRLRRRLLLRRLRRLRRRLRRRLRLLRLRRLRRLLRRLRLRRRLRRLRRLRRLLRRRLRLRLRLRLLRRLLLRRLRLRRLRLLLLRRLRRRLRRLRRRLLRRRLRRLRRRLRLLRLRRLRRLLRRRLLLRLRRRLLLRRLLRRRLLRRLRRLRRLRLRRRLLRRRLRLLRLRRLLRLRRLRLLRLRRLRRRLLRRLLRRRLRRLRLRLRRRLRLRRRLRRRLRRLRRRLRLLRRRLLRRRR
|
||||
|
||||
FLR = (SXT, CRV)
|
||||
VGG = (FBP, THJ)
|
||||
VSK = (TBN, GJB)
|
||||
XMP = (PSF, QLH)
|
||||
KHT = (JPM, BLF)
|
||||
KMD = (TPH, JHR)
|
||||
TTD = (RVT, MJX)
|
||||
VKS = (DRS, QJV)
|
||||
SFR = (GFR, XPS)
|
||||
MVD = (RLP, VRP)
|
||||
RJF = (TBK, FMB)
|
||||
HFD = (JRL, QKG)
|
||||
LVV = (PDP, SCV)
|
||||
JRH = (GLG, LTF)
|
||||
PVQ = (VRC, SHR)
|
||||
GXN = (PXL, LFT)
|
||||
NGT = (LFX, TNX)
|
||||
MTF = (KLC, GXN)
|
||||
DGS = (NNC, NGB)
|
||||
SVK = (GXN, KLC)
|
||||
TJD = (NFP, LJM)
|
||||
CNM = (JQD, DVR)
|
||||
XBM = (PHK, LCH)
|
||||
MJD = (KLH, CQH)
|
||||
LDQ = (PBC, RXJ)
|
||||
BSF = (DTN, FNF)
|
||||
SXX = (CFM, DCK)
|
||||
LFL = (PRH, LJC)
|
||||
RMT = (DLM, PGT)
|
||||
VDK = (LLP, HRP)
|
||||
CMB = (CFX, VRV)
|
||||
LPC = (QXS, LHN)
|
||||
QSL = (SNC, BSK)
|
||||
XCV = (FXR, RVX)
|
||||
KMF = (VMP, NVR)
|
||||
VBM = (HFD, HFD)
|
||||
SLN = (QLM, FMX)
|
||||
SRD = (DKM, DPT)
|
||||
SCN = (DGC, NNT)
|
||||
MQD = (RFS, FBN)
|
||||
KJX = (HNQ, TFD)
|
||||
SDL = (GMG, QVG)
|
||||
RDM = (NFS, KBG)
|
||||
FCN = (CBM, FLR)
|
||||
FCF = (LXM, LHJ)
|
||||
NPR = (DCL, RPR)
|
||||
CFX = (CKQ, CLR)
|
||||
XLF = (MLJ, JCX)
|
||||
RNK = (GML, MXK)
|
||||
BNQ = (QJQ, NNQ)
|
||||
KTF = (CLD, MFT)
|
||||
LFV = (GFN, GFN)
|
||||
TBK = (SRD, LCB)
|
||||
JFS = (FPR, RMR)
|
||||
DDV = (MXH, GQL)
|
||||
VTK = (TGV, KJD)
|
||||
XFQ = (QLM, FMX)
|
||||
LFX = (TNR, DHR)
|
||||
FJN = (DRD, MNV)
|
||||
CMS = (GSK, FGT)
|
||||
GLN = (LBM, LPJ)
|
||||
VRC = (NXG, GXQ)
|
||||
DXR = (GMR, KRJ)
|
||||
QCX = (CNJ, NGT)
|
||||
DKM = (LCR, HMK)
|
||||
QNV = (XVH, NTQ)
|
||||
ZZZ = (SJH, LBH)
|
||||
SSG = (FLB, FTT)
|
||||
JJC = (VGG, QFQ)
|
||||
GBJ = (VNV, VPT)
|
||||
NSF = (DMF, KQH)
|
||||
GTL = (BKD, CFQ)
|
||||
JMQ = (RXK, BMJ)
|
||||
FNK = (QNN, JCR)
|
||||
SGC = (LPC, VHP)
|
||||
HFP = (VTD, CNL)
|
||||
HNQ = (FPF, BBS)
|
||||
JHH = (MDT, TRH)
|
||||
XXS = (PSG, DRP)
|
||||
KMC = (BRR, FTJ)
|
||||
LCB = (DPT, DKM)
|
||||
QXC = (VGL, PLT)
|
||||
RLP = (JNB, TGL)
|
||||
MMK = (HDV, XMP)
|
||||
HMK = (CTP, TGK)
|
||||
PQR = (FDC, VNX)
|
||||
PQN = (BKT, XDX)
|
||||
SMQ = (BBT, MGM)
|
||||
TGK = (NND, JGM)
|
||||
QNQ = (GML, MXK)
|
||||
JBG = (MDT, TRH)
|
||||
MLJ = (HFV, XPP)
|
||||
STB = (QXR, SCN)
|
||||
LQL = (NCV, NVX)
|
||||
BGT = (GGT, MKM)
|
||||
DLM = (JFS, JMN)
|
||||
KNP = (KQH, DMF)
|
||||
XDT = (PCS, MHT)
|
||||
GFR = (GLP, KPP)
|
||||
PHF = (FCF, NLH)
|
||||
RFH = (KSC, QRN)
|
||||
KBG = (SQT, CRH)
|
||||
RQJ = (VXF, SDQ)
|
||||
MDT = (RSL, RSL)
|
||||
KRK = (BKN, RJR)
|
||||
BMK = (SGN, TTC)
|
||||
TVQ = (LDC, JRP)
|
||||
TTH = (NVH, RJF)
|
||||
VDJ = (HCM, GHQ)
|
||||
RVX = (JKT, QMK)
|
||||
MRK = (DQF, BSL)
|
||||
QSH = (RJR, BKN)
|
||||
DLB = (PTM, CBH)
|
||||
JML = (JPL, FHX)
|
||||
FRK = (CMF, TVQ)
|
||||
DRP = (PKD, TJD)
|
||||
NDC = (FCK, BKK)
|
||||
PCD = (VBM, MBD)
|
||||
LXN = (FCX, FLM)
|
||||
SCV = (QXJ, BSF)
|
||||
NJM = (MNF, QHM)
|
||||
CHX = (VNV, VPT)
|
||||
XJC = (CXR, SGJ)
|
||||
NRR = (PHQ, PVN)
|
||||
TMN = (PQS, XHL)
|
||||
PSG = (PKD, TJD)
|
||||
GHV = (QHB, CDM)
|
||||
XPV = (BNG, KHF)
|
||||
HJF = (HSJ, QQT)
|
||||
NVR = (DGS, JTZ)
|
||||
BVV = (SSG, KRB)
|
||||
LQG = (TNQ, FRM)
|
||||
GMG = (XHX, MRK)
|
||||
DBD = (SFR, GVF)
|
||||
TTC = (DBD, GPK)
|
||||
JFR = (MJB, GSV)
|
||||
PDF = (BJJ, DSX)
|
||||
DMF = (JDD, PVS)
|
||||
NSJ = (NXV, DVS)
|
||||
XHX = (BSL, DQF)
|
||||
PHS = (NLV, SHG)
|
||||
FNL = (KDB, NCN)
|
||||
PMS = (BNK, QPG)
|
||||
JDD = (DDB, HJF)
|
||||
FMH = (JMK, STT)
|
||||
HBP = (GDC, JJG)
|
||||
JCR = (GHS, XBM)
|
||||
RGV = (KNM, BTG)
|
||||
PQC = (SKV, LQL)
|
||||
TPG = (BRK, KJX)
|
||||
BNJ = (DVS, NXV)
|
||||
FGL = (SVK, MTF)
|
||||
JNB = (PKM, SXB)
|
||||
TXQ = (HRL, NJN)
|
||||
LFB = (DQV, XHD)
|
||||
SNC = (BKP, XDT)
|
||||
LBK = (LPP, XCT)
|
||||
JPL = (KMC, SRL)
|
||||
GVS = (JHG, HPG)
|
||||
QSF = (PVN, PHQ)
|
||||
RPR = (FFH, FNS)
|
||||
VLN = (RNJ, BFQ)
|
||||
TLX = (PHF, PTJ)
|
||||
QBN = (KNP, NSF)
|
||||
BCH = (JCX, MLJ)
|
||||
HPB = (MCN, TMN)
|
||||
GQH = (MTF, SVK)
|
||||
FMX = (PTC, DGD)
|
||||
RGK = (RVT, MJX)
|
||||
VTN = (HLN, GKV)
|
||||
HTM = (JBC, NMR)
|
||||
FBP = (KXM, MQL)
|
||||
CLM = (HTM, QVS)
|
||||
TLJ = (XRB, DXM)
|
||||
NTH = (STT, JMK)
|
||||
NGB = (XTC, PQN)
|
||||
XHS = (XFX, DGB)
|
||||
VBB = (VFQ, MVD)
|
||||
RXH = (KBQ, HGL)
|
||||
PCS = (RRH, MBP)
|
||||
BNG = (PJQ, SBX)
|
||||
XVH = (DFC, RTT)
|
||||
GMC = (KJX, BRK)
|
||||
LXD = (KKP, DLF)
|
||||
GNB = (SCP, RFM)
|
||||
BRK = (TFD, HNQ)
|
||||
PQS = (SMQ, FGF)
|
||||
LKN = (SCN, QXR)
|
||||
HPV = (KKH, PMS)
|
||||
GHQ = (VBB, RCB)
|
||||
FJF = (CXR, SGJ)
|
||||
GVF = (GFR, XPS)
|
||||
DCK = (JMP, XCV)
|
||||
PKM = (HRR, HJL)
|
||||
TGJ = (CJF, NSR)
|
||||
NNQ = (BVV, FLD)
|
||||
JRP = (SLN, XFQ)
|
||||
CJT = (CVN, LFB)
|
||||
HLG = (TCH, LTD)
|
||||
FNX = (RMT, NGD)
|
||||
QXR = (NNT, DGC)
|
||||
BRR = (SQF, XHS)
|
||||
XXB = (TGV, KJD)
|
||||
FDC = (LDQ, GGD)
|
||||
XGP = (NJH, VJM)
|
||||
FTT = (MXV, DPG)
|
||||
LPP = (LFJ, QJP)
|
||||
BJL = (GTK, MJJ)
|
||||
FNS = (KMD, TSC)
|
||||
LHJ = (MJD, VCP)
|
||||
HFV = (STB, LKN)
|
||||
TPR = (QNN, JCR)
|
||||
RVT = (DFN, NQL)
|
||||
LVB = (FQT, KHM)
|
||||
VCL = (LQQ, DTB)
|
||||
GXQ = (TGJ, XDD)
|
||||
GSX = (VTM, GPQ)
|
||||
PTM = (STQ, SVD)
|
||||
NFS = (CRH, SQT)
|
||||
XFX = (RXH, TFB)
|
||||
QLH = (DVK, XRH)
|
||||
MJB = (HHV, HFP)
|
||||
QQB = (TMN, MCN)
|
||||
BKN = (FNX, FMQ)
|
||||
RKP = (HPT, SDL)
|
||||
CKD = (TTD, RGK)
|
||||
QKX = (GKP, TKQ)
|
||||
HFR = (DSM, MQD)
|
||||
DMC = (NMD, RFR)
|
||||
XPS = (GLP, KPP)
|
||||
CLZ = (TKJ, FMR)
|
||||
KDB = (XTN, GVS)
|
||||
BPQ = (BMK, MNL)
|
||||
PXL = (VCL, QVT)
|
||||
SQT = (GHH, SNV)
|
||||
FBN = (HKK, DXR)
|
||||
SRN = (KLQ, LQC)
|
||||
KXD = (QJQ, NNQ)
|
||||
HLN = (NSJ, BNJ)
|
||||
KQH = (JDD, PVS)
|
||||
BKB = (KHT, PVC)
|
||||
RNJ = (QNV, GRM)
|
||||
BDQ = (BNT, TLJ)
|
||||
NRQ = (CMB, HLJ)
|
||||
SMG = (CNJ, NGT)
|
||||
MKM = (HNP, SJN)
|
||||
MCL = (RDS, HXK)
|
||||
QJQ = (BVV, FLD)
|
||||
XSH = (KLV, NHL)
|
||||
NXK = (RJF, NVH)
|
||||
TGV = (LPT, JSX)
|
||||
XDV = (LJS, PPL)
|
||||
KVS = (BDS, LFL)
|
||||
VXB = (QFQ, VGG)
|
||||
SCP = (LTB, SJQ)
|
||||
FGH = (NMD, RFR)
|
||||
RJH = (MCR, MMP)
|
||||
VMP = (DGS, DGS)
|
||||
DQS = (GMP, TBV)
|
||||
FPL = (LCL, TFF)
|
||||
XXT = (VMC, QPR)
|
||||
QHM = (JSD, DDL)
|
||||
BSL = (NXK, TTH)
|
||||
PRH = (JHX, RHL)
|
||||
FHX = (KMC, SRL)
|
||||
SGK = (RQJ, QKL)
|
||||
NGD = (DLM, PGT)
|
||||
PVN = (BXC, LXD)
|
||||
SJN = (GJD, XRV)
|
||||
KFV = (XNG, FTZ)
|
||||
JRL = (XDM, TLX)
|
||||
RSM = (TCS, MMH)
|
||||
CJF = (BDB, GDR)
|
||||
XRB = (FQP, GSX)
|
||||
CBH = (SVD, STQ)
|
||||
BNT = (XRB, DXM)
|
||||
BCQ = (LSF, VDJ)
|
||||
VHG = (HTK, MFH)
|
||||
DCG = (KKH, KKH)
|
||||
TDH = (LMN, ZZZ)
|
||||
TFF = (XHP, LQK)
|
||||
TRH = (RSL, JDM)
|
||||
MCR = (GCK, XLT)
|
||||
KCB = (CMF, TVQ)
|
||||
HMV = (FCK, BKK)
|
||||
LQC = (CHN, FQJ)
|
||||
SNT = (NRQ, SXL)
|
||||
HXP = (FRK, KCB)
|
||||
SKV = (NCV, NVX)
|
||||
TBV = (XKQ, HCL)
|
||||
XTN = (JHG, HPG)
|
||||
SCK = (SDL, HPT)
|
||||
KHM = (HMP, SPQ)
|
||||
KDT = (GSK, FGT)
|
||||
GKZ = (VTN, QMF)
|
||||
TPH = (XXP, CKD)
|
||||
PFQ = (THX, SNX)
|
||||
GCJ = (VGL, PLT)
|
||||
MNF = (DDL, JSD)
|
||||
BDS = (LJC, PRH)
|
||||
KJD = (LPT, JSX)
|
||||
PRV = (MBC, NPR)
|
||||
KTD = (FXV, PFQ)
|
||||
NVH = (FMB, TBK)
|
||||
MJX = (NQL, DFN)
|
||||
MBV = (CFQ, BKD)
|
||||
LBM = (SFN, XDV)
|
||||
FXR = (QMK, JKT)
|
||||
CHN = (GBJ, CHX)
|
||||
GGD = (PBC, RXJ)
|
||||
DTB = (QKX, HFC)
|
||||
NQL = (JKJ, NJM)
|
||||
DQF = (NXK, TTH)
|
||||
QXJ = (DTN, FNF)
|
||||
BGS = (PFQ, FXV)
|
||||
FQP = (GPQ, VTM)
|
||||
DPT = (HMK, LCR)
|
||||
PHK = (DNF, GHV)
|
||||
STQ = (FCN, NNS)
|
||||
LCL = (XHP, LQK)
|
||||
QJP = (FJN, CCV)
|
||||
GJD = (BCQ, VBR)
|
||||
GMR = (BJX, XNH)
|
||||
JKT = (VTR, QKB)
|
||||
RTT = (PRV, LNL)
|
||||
LNL = (NPR, MBC)
|
||||
DRD = (JRH, KVD)
|
||||
SHR = (NXG, GXQ)
|
||||
RXK = (LFQ, QSK)
|
||||
VBR = (LSF, VDJ)
|
||||
BKT = (VHQ, KPD)
|
||||
QJV = (CMS, KDT)
|
||||
CPH = (NRQ, SXL)
|
||||
CSM = (QRN, KSC)
|
||||
KLV = (GMC, TPG)
|
||||
HDR = (RQJ, QKL)
|
||||
TNX = (DHR, TNR)
|
||||
VHQ = (CXX, CVL)
|
||||
FCX = (FNK, TPR)
|
||||
MBP = (BPV, NNB)
|
||||
KKH = (BNK, BNK)
|
||||
LQQ = (QKX, HFC)
|
||||
QKL = (SDQ, VXF)
|
||||
BKP = (PCS, MHT)
|
||||
JTB = (BRS, XXS)
|
||||
HRL = (HTC, FSM)
|
||||
FXV = (SNX, THX)
|
||||
TNR = (PVQ, KSF)
|
||||
GLG = (TXQ, HSH)
|
||||
PGV = (RFM, SCP)
|
||||
FLM = (TPR, FNK)
|
||||
JHX = (QSF, NRR)
|
||||
PVC = (JPM, BLF)
|
||||
GML = (VKS, CPT)
|
||||
PDD = (PGV, GNB)
|
||||
FMQ = (NGD, RMT)
|
||||
XNG = (XMC, GVV)
|
||||
LNH = (PBB, PBB)
|
||||
XFN = (HTK, HTK)
|
||||
LFT = (VCL, QVT)
|
||||
DVS = (RGV, PMX)
|
||||
VGL = (XBL, TQB)
|
||||
MNV = (JRH, KVD)
|
||||
LTB = (XXT, CPL)
|
||||
NKN = (XKF, FQX)
|
||||
FQX = (RDJ, CNR)
|
||||
BJJ = (HFR, KBJ)
|
||||
CFM = (JMP, XCV)
|
||||
FQT = (HMP, SPQ)
|
||||
PLT = (XBL, TQB)
|
||||
QSN = (GQL, MXH)
|
||||
HKV = (JBG, JHH)
|
||||
LLC = (SHG, NLV)
|
||||
SXT = (QPN, TFS)
|
||||
MBD = (HFD, VCZ)
|
||||
HMP = (CJN, SGC)
|
||||
KBF = (LML, QVC)
|
||||
HNC = (RFH, CSM)
|
||||
JMP = (FXR, RVX)
|
||||
JSX = (CNF, XKM)
|
||||
VCZ = (QKG, JRL)
|
||||
CSQ = (BFQ, RNJ)
|
||||
GMP = (XKQ, HCL)
|
||||
GLM = (PTM, CBH)
|
||||
VPT = (BGT, BPH)
|
||||
RJR = (FMQ, FNX)
|
||||
KQT = (XJC, FJF)
|
||||
NNS = (FLR, CBM)
|
||||
VKV = (KNP, NSF)
|
||||
NCV = (QFS, STN)
|
||||
XCT = (LFJ, QJP)
|
||||
VJK = (BKB, XJM)
|
||||
FNF = (LNH, JNJ)
|
||||
JHG = (VSK, MML)
|
||||
HLJ = (VRV, CFX)
|
||||
GRM = (XVH, NTQ)
|
||||
FCK = (BDQ, GQS)
|
||||
DRS = (CMS, KDT)
|
||||
DVK = (SRC, VJK)
|
||||
PDP = (QXJ, BSF)
|
||||
THX = (FGM, XVD)
|
||||
DNF = (QHB, CDM)
|
||||
GKH = (HXK, RDS)
|
||||
RFS = (HKK, DXR)
|
||||
GKP = (GTL, MBV)
|
||||
MXH = (BLG, CLM)
|
||||
PQQ = (JJG, GDC)
|
||||
RKC = (BCH, XLF)
|
||||
QVG = (XHX, MRK)
|
||||
DGC = (PNS, JTB)
|
||||
HTC = (RSF, TTS)
|
||||
FDV = (FQX, XKF)
|
||||
CNF = (XGP, BNN)
|
||||
HJL = (QJR, RJH)
|
||||
QNN = (GHS, XBM)
|
||||
BPV = (GGQ, GQJ)
|
||||
SVD = (FCN, NNS)
|
||||
XKF = (RDJ, CNR)
|
||||
XSR = (LKM, PTB)
|
||||
VTR = (SSL, DQS)
|
||||
DPG = (LFV, TLP)
|
||||
XTC = (BKT, XDX)
|
||||
QFS = (FRQ, XPV)
|
||||
RDJ = (CJT, MKS)
|
||||
CXR = (NDC, HMV)
|
||||
LML = (GLB, RSM)
|
||||
NKG = (LBK, MSS)
|
||||
CLD = (XXB, VTK)
|
||||
VXF = (NQS, JFR)
|
||||
MCN = (PQS, XHL)
|
||||
GQD = (DVR, JQD)
|
||||
FTZ = (GVV, XMC)
|
||||
SNV = (SNT, CPH)
|
||||
NCN = (XTN, GVS)
|
||||
QKB = (DQS, SSL)
|
||||
GSV = (HHV, HFP)
|
||||
LCH = (GHV, DNF)
|
||||
KBJ = (DSM, MQD)
|
||||
FRQ = (KHF, BNG)
|
||||
BFQ = (QNV, GRM)
|
||||
HSJ = (SVR, RPX)
|
||||
XSM = (SHJ, VMR)
|
||||
VDX = (XNG, XNG)
|
||||
HCL = (MJQ, JML)
|
||||
NJH = (NDP, VTX)
|
||||
LCX = (LCL, TFF)
|
||||
VNX = (LDQ, GGD)
|
||||
HPT = (QVG, GMG)
|
||||
NSR = (GDR, BDB)
|
||||
XRH = (SRC, VJK)
|
||||
CPL = (VMC, QPR)
|
||||
XHD = (KRK, QSH)
|
||||
GGQ = (PQC, RVF)
|
||||
LSF = (GHQ, HCM)
|
||||
XHL = (SMQ, FGF)
|
||||
HXK = (NTH, FMH)
|
||||
VNV = (BPH, BGT)
|
||||
MHX = (VMP, VMP)
|
||||
MST = (HVL, PLQ)
|
||||
JHR = (XXP, CKD)
|
||||
FMB = (SRD, LCB)
|
||||
FTJ = (XHS, SQF)
|
||||
VTX = (MRS, GRS)
|
||||
CXX = (HDG, KQT)
|
||||
SFN = (LJS, PPL)
|
||||
STT = (JTP, VDK)
|
||||
RVK = (MFT, CLD)
|
||||
XJM = (PVC, KHT)
|
||||
PMX = (KNM, BTG)
|
||||
NFP = (QSL, GBP)
|
||||
HRR = (RJH, QJR)
|
||||
VRV = (CLR, CKQ)
|
||||
MSS = (XCT, LPP)
|
||||
KHF = (PJQ, SBX)
|
||||
SJH = (BLH, MDV)
|
||||
BNK = (VVF, VVF)
|
||||
FFH = (KMD, TSC)
|
||||
LFJ = (FJN, CCV)
|
||||
TFD = (FPF, BBS)
|
||||
CJN = (LPC, VHP)
|
||||
TFB = (HGL, KBQ)
|
||||
TNQ = (KNF, MGF)
|
||||
NLV = (KTF, RVK)
|
||||
CBM = (CRV, SXT)
|
||||
NTQ = (DFC, RTT)
|
||||
DSM = (RFS, FBN)
|
||||
DLF = (QXC, GCJ)
|
||||
XXN = (XLF, BCH)
|
||||
TFV = (DVV, PDD)
|
||||
TKJ = (DNV, HXP)
|
||||
JGM = (QCX, SMG)
|
||||
HRP = (MMK, DDN)
|
||||
FRT = (LFL, BDS)
|
||||
CLR = (STS, SRN)
|
||||
NQS = (GSV, MJB)
|
||||
CQH = (GQD, CNM)
|
||||
PPL = (JGT, HKV)
|
||||
PVS = (HJF, DDB)
|
||||
LJC = (JHX, RHL)
|
||||
MGM = (PHS, LLC)
|
||||
VJH = (PLQ, HVL)
|
||||
LDC = (SLN, XFQ)
|
||||
TQB = (VLN, CSQ)
|
||||
BLF = (QNQ, RNK)
|
||||
HPG = (VSK, MML)
|
||||
BTG = (FNL, HMQ)
|
||||
CRH = (GHH, SNV)
|
||||
DML = (DVV, PDD)
|
||||
QPG = (VVF, CLZ)
|
||||
RSF = (QSN, DDV)
|
||||
DNV = (FRK, KCB)
|
||||
CVN = (DQV, XHD)
|
||||
TCH = (DLB, GLM)
|
||||
LJM = (GBP, QSL)
|
||||
QMF = (GKV, HLN)
|
||||
PTJ = (NLH, FCF)
|
||||
KKP = (QXC, GCJ)
|
||||
RHL = (NRR, QSF)
|
||||
PGT = (JMN, JFS)
|
||||
PTC = (DMC, FGH)
|
||||
BRS = (DRP, PSG)
|
||||
VHP = (LHN, QXS)
|
||||
GKV = (NSJ, BNJ)
|
||||
MNL = (SGN, TTC)
|
||||
FSD = (VPX, GLN)
|
||||
RMR = (RKP, SCK)
|
||||
MDV = (DML, TFV)
|
||||
VFQ = (VRP, RLP)
|
||||
XBL = (VLN, CSQ)
|
||||
NMD = (RKC, XXN)
|
||||
MJQ = (FHX, JPL)
|
||||
DPN = (PDP, SCV)
|
||||
XNH = (NKN, FDV)
|
||||
NDP = (MRS, GRS)
|
||||
KPD = (CVL, CXX)
|
||||
DFC = (PRV, LNL)
|
||||
KBQ = (LQT, LNC)
|
||||
NXG = (TGJ, XDD)
|
||||
XRV = (VBR, BCQ)
|
||||
JDM = (VDX, KFV)
|
||||
QHB = (FSD, PML)
|
||||
GDR = (BPQ, SBC)
|
||||
SDQ = (NQS, JFR)
|
||||
VJM = (VTX, NDP)
|
||||
QLT = (VMR, SHJ)
|
||||
STN = (XPV, FRQ)
|
||||
AAA = (LBH, SJH)
|
||||
MJJ = (HDR, SGK)
|
||||
STS = (LQC, KLQ)
|
||||
CFQ = (BNQ, KXD)
|
||||
PML = (GLN, VPX)
|
||||
KLC = (PXL, LFT)
|
||||
PLQ = (HBP, PQQ)
|
||||
NLH = (LHJ, LXM)
|
||||
DVV = (GNB, PGV)
|
||||
TGL = (PKM, SXB)
|
||||
MRS = (NKG, GMD)
|
||||
HMQ = (NCN, KDB)
|
||||
TBN = (FPL, LCX)
|
||||
HNP = (XRV, GJD)
|
||||
DGD = (DMC, FGH)
|
||||
PTB = (PDF, GDT)
|
||||
TCS = (BGS, KTD)
|
||||
QRN = (RTJ, XSK)
|
||||
DDN = (XMP, HDV)
|
||||
PJM = (MJJ, GTK)
|
||||
NND = (QCX, SMG)
|
||||
LTD = (GLM, DLB)
|
||||
DDL = (VXB, JJC)
|
||||
HCM = (VBB, RCB)
|
||||
GQJ = (PQC, RVF)
|
||||
MGF = (DPN, LVV)
|
||||
LXT = (DCG, HPV)
|
||||
BXC = (KKP, DLF)
|
||||
HPK = (QVC, LML)
|
||||
JBC = (FCT, JMQ)
|
||||
JGT = (JBG, JHH)
|
||||
BJX = (FDV, NKN)
|
||||
KSF = (SHR, VRC)
|
||||
JJG = (QLT, XSM)
|
||||
GBP = (SNC, BSK)
|
||||
GJB = (FPL, LCX)
|
||||
LJS = (HKV, JGT)
|
||||
LQT = (QQB, HPB)
|
||||
GGT = (HNP, SJN)
|
||||
KLH = (GQD, CNM)
|
||||
KSC = (RTJ, XSK)
|
||||
SXL = (HLJ, CMB)
|
||||
BBT = (PHS, LLC)
|
||||
MXV = (LFV, TLP)
|
||||
GQS = (TLJ, BNT)
|
||||
PSF = (XRH, DVK)
|
||||
KTC = (RFH, CSM)
|
||||
HSH = (NJN, HRL)
|
||||
HGG = (HPK, KBF)
|
||||
PKD = (LJM, NFP)
|
||||
HFC = (GKP, TKQ)
|
||||
VLA = (QMF, VTN)
|
||||
JKJ = (MNF, QHM)
|
||||
FQJ = (GBJ, CHX)
|
||||
JPM = (QNQ, RNK)
|
||||
MMP = (GCK, XLT)
|
||||
NNB = (GGQ, GQJ)
|
||||
QMK = (QKB, VTR)
|
||||
FRM = (KNF, MGF)
|
||||
GPK = (GVF, SFR)
|
||||
GTK = (HDR, SGK)
|
||||
VCP = (KLH, CQH)
|
||||
CPT = (QJV, DRS)
|
||||
BPH = (MKM, GGT)
|
||||
GRS = (NKG, GMD)
|
||||
LTF = (HSH, TXQ)
|
||||
SJQ = (XXT, CPL)
|
||||
DGB = (TFB, RXH)
|
||||
XMC = (KLM, SXX)
|
||||
SRC = (BKB, XJM)
|
||||
VTD = (MRN, NPH)
|
||||
SSL = (TBV, GMP)
|
||||
QVS = (NMR, JBC)
|
||||
KLQ = (FQJ, CHN)
|
||||
XDM = (PTJ, PHF)
|
||||
JQD = (CFN, JTS)
|
||||
BDB = (BPQ, SBC)
|
||||
XKM = (XGP, BNN)
|
||||
GQL = (CLM, BLG)
|
||||
JTP = (HRP, LLP)
|
||||
NMR = (FCT, JMQ)
|
||||
RFR = (XXN, RKC)
|
||||
XPT = (TCH, LTD)
|
||||
TTS = (DDV, QSN)
|
||||
LNC = (HPB, QQB)
|
||||
NJN = (FSM, HTC)
|
||||
FLD = (KRB, SSG)
|
||||
KNF = (DPN, LVV)
|
||||
BMJ = (LFQ, QSK)
|
||||
GLB = (MMH, TCS)
|
||||
XDD = (CJF, NSR)
|
||||
MXK = (CPT, VKS)
|
||||
DCL = (FNS, FFH)
|
||||
PBC = (MHX, MHX)
|
||||
RFM = (LTB, SJQ)
|
||||
KLM = (DCK, CFM)
|
||||
XVD = (RDM, QQJ)
|
||||
RDS = (NTH, FMH)
|
||||
RVF = (SKV, LQL)
|
||||
BLG = (QVS, HTM)
|
||||
CNR = (CJT, MKS)
|
||||
LFQ = (HNC, KTC)
|
||||
FPR = (SCK, RKP)
|
||||
LQK = (CDR, XSR)
|
||||
QVC = (RSM, GLB)
|
||||
DDB = (HSJ, QQT)
|
||||
SQV = (QMF, VTN)
|
||||
HDG = (XJC, FJF)
|
||||
LCR = (CTP, TGK)
|
||||
JTZ = (NGB, NNC)
|
||||
FSM = (RSF, TTS)
|
||||
BSK = (BKP, XDT)
|
||||
GHS = (LCH, PHK)
|
||||
SRL = (FTJ, BRR)
|
||||
BNN = (NJH, VJM)
|
||||
PNS = (XXS, BRS)
|
||||
PJA = (XMC, GVV)
|
||||
XXF = (FDC, VNX)
|
||||
JMN = (FPR, RMR)
|
||||
GHH = (CPH, SNT)
|
||||
QXS = (LXT, NVN)
|
||||
BKD = (KXD, BNQ)
|
||||
MKS = (LFB, CVN)
|
||||
XKQ = (MJQ, JML)
|
||||
PJQ = (TQP, LVB)
|
||||
QPR = (GKH, MCL)
|
||||
MFH = (SQV, GKZ)
|
||||
SBC = (BMK, MNL)
|
||||
THJ = (MQL, KXM)
|
||||
XHP = (XSR, CDR)
|
||||
HDV = (QLH, PSF)
|
||||
RSL = (VDX, VDX)
|
||||
MMH = (KTD, BGS)
|
||||
HVL = (HBP, PQQ)
|
||||
FGF = (BBT, MGM)
|
||||
RRH = (NNB, BPV)
|
||||
NHL = (GMC, TPG)
|
||||
NNC = (PQN, XTC)
|
||||
KPP = (XFN, VHG)
|
||||
VTM = (HGG, CTC)
|
||||
XDX = (VHQ, KPD)
|
||||
SPQ = (CJN, SGC)
|
||||
GDC = (XSM, QLT)
|
||||
QQJ = (KBG, NFS)
|
||||
MML = (TBN, GJB)
|
||||
QFQ = (FBP, THJ)
|
||||
VVF = (FMR, TKJ)
|
||||
JJQ = (KLV, NHL)
|
||||
PHQ = (BXC, LXD)
|
||||
KNM = (FNL, HMQ)
|
||||
GCK = (PQR, XXF)
|
||||
DSX = (KBJ, HFR)
|
||||
TKQ = (MBV, GTL)
|
||||
JNJ = (PBB, TDH)
|
||||
CVL = (KQT, HDG)
|
||||
SHJ = (QBN, VKV)
|
||||
NNT = (PNS, JTB)
|
||||
CRV = (QPN, TFS)
|
||||
PBB = (LMN, LMN)
|
||||
GDT = (BJJ, DSX)
|
||||
FGM = (QQJ, RDM)
|
||||
BLH = (DML, TFV)
|
||||
FMR = (DNV, HXP)
|
||||
FPF = (VJH, MST)
|
||||
KXM = (BJL, PJM)
|
||||
FCT = (BMJ, RXK)
|
||||
FLB = (MXV, DPG)
|
||||
SXB = (HRR, HJL)
|
||||
CMF = (JRP, LDC)
|
||||
HKK = (KRJ, GMR)
|
||||
TSC = (TPH, JHR)
|
||||
QKG = (XDM, TLX)
|
||||
QVT = (DTB, LQQ)
|
||||
SHG = (KTF, RVK)
|
||||
GMD = (MSS, LBK)
|
||||
NXV = (PMX, RGV)
|
||||
KRB = (FTT, FLB)
|
||||
CTC = (KBF, HPK)
|
||||
DTN = (LNH, LNH)
|
||||
DXM = (GSX, FQP)
|
||||
LBH = (BLH, MDV)
|
||||
FGT = (HLG, XPT)
|
||||
QPN = (XSH, JJQ)
|
||||
DQV = (KRK, QSH)
|
||||
LMN = (LBH, SJH)
|
||||
SGJ = (HMV, NDC)
|
||||
LPJ = (XDV, SFN)
|
||||
MHT = (RRH, MBP)
|
||||
TFS = (JJQ, XSH)
|
||||
QLM = (PTC, DGD)
|
||||
GSK = (HLG, XPT)
|
||||
LXM = (VCP, MJD)
|
||||
GLP = (XFN, XFN)
|
||||
BBS = (MST, VJH)
|
||||
SVR = (MCS, LQG)
|
||||
NPH = (FGL, GQH)
|
||||
NVN = (DCG, HPV)
|
||||
VSA = (FMR, TKJ)
|
||||
MCS = (TNQ, FRM)
|
||||
JSD = (JJC, VXB)
|
||||
QQT = (SVR, RPX)
|
||||
CNL = (MRN, NPH)
|
||||
HTK = (SQV, SQV)
|
||||
JMK = (VDK, JTP)
|
||||
VMC = (GKH, MCL)
|
||||
RCB = (MVD, VFQ)
|
||||
LHN = (LXT, NVN)
|
||||
RXJ = (MHX, KMF)
|
||||
VMR = (QBN, VKV)
|
||||
DVR = (JTS, CFN)
|
||||
XXP = (TTD, RGK)
|
||||
BKK = (GQS, BDQ)
|
||||
CCV = (DRD, MNV)
|
||||
GPQ = (CTC, HGG)
|
||||
SBX = (TQP, LVB)
|
||||
SQF = (XFX, DGB)
|
||||
SGN = (GPK, DBD)
|
||||
LPT = (XKM, CNF)
|
||||
CFN = (KVS, FRT)
|
||||
NVX = (STN, QFS)
|
||||
KRJ = (XNH, BJX)
|
||||
VRP = (TGL, JNB)
|
||||
LLP = (DDN, MMK)
|
||||
NBQ = (FCX, FLM)
|
||||
DFN = (JKJ, NJM)
|
||||
RPX = (MCS, LQG)
|
||||
QJR = (MCR, MMP)
|
||||
CNJ = (LFX, TNX)
|
||||
GVV = (SXX, KLM)
|
||||
MFT = (VTK, XXB)
|
||||
QKA = (JRL, QKG)
|
||||
SNX = (FGM, XVD)
|
||||
JTS = (KVS, FRT)
|
||||
XPP = (LKN, STB)
|
||||
XSK = (LXN, NBQ)
|
||||
CPA = (NNC, NGB)
|
||||
MBC = (RPR, DCL)
|
||||
CTP = (NND, JGM)
|
||||
MRN = (FGL, GQH)
|
||||
CDM = (PML, FSD)
|
||||
LKM = (GDT, PDF)
|
||||
TQP = (FQT, KHM)
|
||||
RTJ = (LXN, NBQ)
|
||||
CDR = (LKM, PTB)
|
||||
HHV = (CNL, VTD)
|
||||
QSK = (KTC, HNC)
|
||||
KVD = (GLG, LTF)
|
||||
VPX = (LBM, LPJ)
|
||||
GFN = (VBM, VBM)
|
||||
JCX = (HFV, XPP)
|
||||
DHR = (PVQ, KSF)
|
||||
XLT = (XXF, PQR)
|
||||
CKQ = (STS, SRN)
|
||||
MQL = (PJM, BJL)
|
||||
TLP = (GFN, PCD)
|
||||
HGL = (LNC, LQT)
|
|
@ -0,0 +1,119 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
use itertools::{FoldWhile, Itertools};
|
||||
use nom::{
|
||||
bytes::complete::{is_a, tag, take_while1},
|
||||
character::{
|
||||
complete::{char, line_ending},
|
||||
is_alphabetic,
|
||||
},
|
||||
combinator::map,
|
||||
multi::{count, separated_list1},
|
||||
sequence::{delimited, separated_pair},
|
||||
IResult,
|
||||
};
|
||||
|
||||
fn main() {
|
||||
println!("{}", part1(include_str!("./input.txt")));
|
||||
}
|
||||
|
||||
fn part1(input: &str) -> u32 {
|
||||
let (directions, nodes) = separated_pair(
|
||||
map(is_a("RL"), |s: &str| {
|
||||
s.chars()
|
||||
.map(|c| match c {
|
||||
'R' => Direction::Right,
|
||||
'L' => Direction::Left,
|
||||
_ => unreachable!(),
|
||||
})
|
||||
.collect::<Vec<_>>()
|
||||
}),
|
||||
count(line_ending, 2),
|
||||
separated_list1(line_ending, node_parser),
|
||||
)(input)
|
||||
.expect("invalid input")
|
||||
.1;
|
||||
|
||||
let nodes = nodes.into_iter().collect::<HashMap<&str, (&str, &str)>>();
|
||||
|
||||
match directions
|
||||
.iter()
|
||||
.cycle()
|
||||
.enumerate()
|
||||
.fold_while(("AAA", 0), |(acc, _), (i, d)| {
|
||||
let (l, r) = nodes.get(acc).unwrap();
|
||||
let next = match d {
|
||||
Direction::Right => r,
|
||||
Direction::Left => l,
|
||||
};
|
||||
|
||||
if next == &"ZZZ" {
|
||||
FoldWhile::Done((next, i))
|
||||
} else {
|
||||
FoldWhile::Continue((next, i))
|
||||
}
|
||||
}) {
|
||||
FoldWhile::Done((_, i)) => i as u32 + 1,
|
||||
FoldWhile::Continue(_) => panic!("invalid input"),
|
||||
}
|
||||
}
|
||||
|
||||
fn node_parser(i: &str) -> IResult<&str, (&str, (&str, &str))> {
|
||||
separated_pair(
|
||||
take_while1(|c| is_alphabetic(c as u8)),
|
||||
tag(" = "),
|
||||
delimited(
|
||||
char('('),
|
||||
separated_pair(
|
||||
take_while1(|c| is_alphabetic(c as u8)),
|
||||
tag(", "),
|
||||
take_while1(|c| is_alphabetic(c as u8)),
|
||||
),
|
||||
char(')'),
|
||||
),
|
||||
)(i)
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
enum Direction {
|
||||
Right,
|
||||
Left,
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use indoc::indoc;
|
||||
|
||||
#[test]
|
||||
fn test_part1() {
|
||||
assert_eq!(
|
||||
part1(indoc!(
|
||||
"
|
||||
RL
|
||||
|
||||
AAA = (BBB, CCC)
|
||||
BBB = (DDD, EEE)
|
||||
CCC = (ZZZ, GGG)
|
||||
DDD = (DDD, DDD)
|
||||
EEE = (EEE, EEE)
|
||||
GGG = (GGG, GGG)
|
||||
ZZZ = (ZZZ, ZZZ)
|
||||
"
|
||||
)),
|
||||
2
|
||||
);
|
||||
assert_eq!(
|
||||
part1(indoc!(
|
||||
"
|
||||
LLR
|
||||
|
||||
AAA = (BBB, BBB)
|
||||
BBB = (AAA, ZZZ)
|
||||
ZZZ = (ZZZ, ZZZ)
|
||||
"
|
||||
)),
|
||||
6
|
||||
);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,125 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
use itertools::{FoldWhile, Itertools};
|
||||
use nom::{
|
||||
bytes::complete::{is_a, tag, take_while1},
|
||||
character::{
|
||||
complete::{char, line_ending},
|
||||
is_alphanumeric,
|
||||
},
|
||||
combinator::map,
|
||||
multi::{count, separated_list1},
|
||||
sequence::{delimited, separated_pair},
|
||||
IResult,
|
||||
};
|
||||
use num::integer;
|
||||
|
||||
fn main() {
|
||||
println!("{}", part2(include_str!("./input.txt")));
|
||||
}
|
||||
|
||||
fn part2(input: &str) -> usize {
|
||||
let (directions, nodes) = separated_pair(
|
||||
map(is_a("RL"), |s: &str| {
|
||||
s.chars()
|
||||
.map(|c| match c {
|
||||
'R' => Direction::Right,
|
||||
'L' => Direction::Left,
|
||||
_ => unreachable!(),
|
||||
})
|
||||
.collect::<Vec<_>>()
|
||||
}),
|
||||
count(line_ending, 2),
|
||||
separated_list1(line_ending, node_parser),
|
||||
)(input)
|
||||
.expect("invalid input")
|
||||
.1;
|
||||
|
||||
let nodes = nodes.into_iter().collect::<HashMap<&str, (&str, &str)>>();
|
||||
|
||||
let starting_nodes = nodes
|
||||
.iter()
|
||||
.filter(|(n, (_, _))| n.ends_with('A'))
|
||||
.map(|(n, (_, _))| *n)
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
starting_nodes
|
||||
.into_iter()
|
||||
.map(|n| find_steps_to_goal(n, &nodes, &directions))
|
||||
.fold(1_usize, integer::lcm)
|
||||
}
|
||||
|
||||
fn find_steps_to_goal(
|
||||
starting_node: &str,
|
||||
nodes: &HashMap<&str, (&str, &str)>,
|
||||
directions: &[Direction],
|
||||
) -> usize {
|
||||
match directions.iter().cycle().enumerate().fold_while(
|
||||
(starting_node, 0),
|
||||
|(acc, _), (i, d)| {
|
||||
let (l, r) = nodes.get(acc).unwrap();
|
||||
let next = match d {
|
||||
Direction::Right => r,
|
||||
Direction::Left => l,
|
||||
};
|
||||
|
||||
if next.ends_with('Z') {
|
||||
FoldWhile::Done((next, i))
|
||||
} else {
|
||||
FoldWhile::Continue((next, i))
|
||||
}
|
||||
},
|
||||
) {
|
||||
FoldWhile::Done((_, i)) => i + 1,
|
||||
FoldWhile::Continue(_) => panic!("invalid input"),
|
||||
}
|
||||
}
|
||||
|
||||
fn node_parser(i: &str) -> IResult<&str, (&str, (&str, &str))> {
|
||||
separated_pair(
|
||||
take_while1(|c| is_alphanumeric(c as u8)),
|
||||
tag(" = "),
|
||||
delimited(
|
||||
char('('),
|
||||
separated_pair(
|
||||
take_while1(|c| is_alphanumeric(c as u8)),
|
||||
tag(", "),
|
||||
take_while1(|c| is_alphanumeric(c as u8)),
|
||||
),
|
||||
char(')'),
|
||||
),
|
||||
)(i)
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
enum Direction {
|
||||
Right,
|
||||
Left,
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use indoc::indoc;
|
||||
|
||||
#[test]
|
||||
fn test_part2() {
|
||||
assert_eq!(
|
||||
part2(indoc!(
|
||||
"
|
||||
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)
|
||||
"
|
||||
)),
|
||||
6
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue