Day 8 2023 aoc part 1 solved, part 2 naive attempt that is very much too slow
This commit is contained in:
9
advent_of_code/2023/8/Cargo.toml
Normal file
9
advent_of_code/2023/8/Cargo.toml
Normal file
@@ -0,0 +1,9 @@
|
||||
[package]
|
||||
name = "main"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
nom = "7.1.3"
|
||||
800
advent_of_code/2023/8/input.txt
Normal file
800
advent_of_code/2023/8/input.txt
Normal file
@@ -0,0 +1,800 @@
|
||||
LLRLRLLRRLRLRLLRRLRRRLRRRLRRLRRLRLRLRRRLLRLRRLRLRRRLRLLRRLRLRLLRRRLLRLRRRLRLRRLRRLRLLRRLRRLRLRLRLLRLLRRLRRLRRLRRLRRLRLLRLRLRRRLRRRLRRLRLRLRRLRRRLRLRRRLRLRLRLRRRLRRLRRLRRRLLLLRRLRRLRLRRRLRLRRRLRRLLLLRLRLRRRLRRRLRLRRLLRLRLRRRLRLRLRRRLRLLRRRLRRLRLRLRRRLRLLRRLLRRRLRRRLRRRLRRLRLRLRRRLRRRLRRRLLRRRR
|
||||
|
||||
NNN = (TNT, XDJ)
|
||||
GKJ = (TQD, PDP)
|
||||
VPC = (TST, FDJ)
|
||||
MNG = (GQS, RVK)
|
||||
JQF = (LLK, BQH)
|
||||
HPS = (XDJ, TNT)
|
||||
VSD = (GNK, HJS)
|
||||
VGT = (KXR, FMP)
|
||||
GQB = (GTX, HLC)
|
||||
PLJ = (QCS, TVN)
|
||||
BXM = (GMB, LBC)
|
||||
XJQ = (NHG, NQD)
|
||||
NKX = (KBJ, GTS)
|
||||
PKT = (XFK, SKR)
|
||||
HJB = (LRX, KQG)
|
||||
SNM = (PLN, CJT)
|
||||
LQD = (MTK, KMS)
|
||||
KTN = (SSC, KPL)
|
||||
LVJ = (CQJ, GPP)
|
||||
GSV = (SNM, JKK)
|
||||
CPH = (DCQ, FCP)
|
||||
TDV = (JFD, HKH)
|
||||
SBS = (NFC, CGC)
|
||||
DBG = (GST, LGH)
|
||||
LHS = (GHG, TRD)
|
||||
BPP = (DLF, NJT)
|
||||
TNT = (VNX, PTR)
|
||||
VTN = (XHM, NMQ)
|
||||
BRD = (KLF, HXJ)
|
||||
TJT = (BVD, PFN)
|
||||
GNK = (NMT, LLX)
|
||||
DVH = (GQS, RVK)
|
||||
KRJ = (QSP, TTQ)
|
||||
KQC = (TNX, MDC)
|
||||
XVS = (LRC, DLC)
|
||||
XLP = (XCH, BJQ)
|
||||
KQG = (LKK, TVP)
|
||||
QHB = (JPL, JPL)
|
||||
RGV = (SXB, FKH)
|
||||
GSK = (JQN, THB)
|
||||
XDT = (GLG, XKD)
|
||||
XCT = (MMN, XDM)
|
||||
KLF = (NPB, RRB)
|
||||
XLT = (QRB, VHB)
|
||||
HKS = (NNN, HPS)
|
||||
NMT = (MSL, VXC)
|
||||
PML = (NHN, FQH)
|
||||
FMQ = (HGC, FBH)
|
||||
JGG = (XTB, XTB)
|
||||
KMC = (PPS, SVT)
|
||||
GLG = (SPG, KFK)
|
||||
QJN = (HJB, QCP)
|
||||
SGH = (FDV, QPX)
|
||||
DFM = (BFX, PNS)
|
||||
CSK = (MDQ, GFX)
|
||||
MXG = (MXC, BJV)
|
||||
JTX = (SQN, JBK)
|
||||
KFN = (VQM, PFH)
|
||||
SFJ = (KDF, NKB)
|
||||
JNK = (DLK, LHV)
|
||||
DTG = (XHQ, DSR)
|
||||
SHC = (FQV, HKK)
|
||||
DBM = (VDP, PGK)
|
||||
PNC = (LMH, RXH)
|
||||
HXJ = (RRB, NPB)
|
||||
MKS = (KMX, FKS)
|
||||
NPA = (TPC, SNK)
|
||||
LJK = (FPF, SHP)
|
||||
LBH = (HQB, TTC)
|
||||
JML = (LTN, SFS)
|
||||
MXS = (FDL, SXH)
|
||||
HHV = (VRL, JVC)
|
||||
NQD = (KVJ, DXM)
|
||||
HMA = (TVC, RBX)
|
||||
BCP = (SQD, RGD)
|
||||
SLP = (CQF, HXG)
|
||||
KGF = (RPN, PKQ)
|
||||
TGG = (VQM, PFH)
|
||||
HQD = (MDV, GND)
|
||||
BJX = (LCN, QMG)
|
||||
NBQ = (NSV, VJR)
|
||||
BBX = (KHG, FDC)
|
||||
SSQ = (BNQ, MXX)
|
||||
TST = (MJB, TDV)
|
||||
JQL = (SDG, DLJ)
|
||||
TVN = (SJM, KMC)
|
||||
XHD = (DDG, RSG)
|
||||
GQA = (NQS, CNH)
|
||||
QFL = (QSQ, VVN)
|
||||
THG = (FBM, VQX)
|
||||
QLZ = (RBX, TVC)
|
||||
TPM = (DQN, MGG)
|
||||
QXV = (MTK, KMS)
|
||||
VNX = (PTP, VSD)
|
||||
STQ = (XDC, JFR)
|
||||
XVQ = (PJM, MRN)
|
||||
XTT = (BHF, RBR)
|
||||
LQS = (DBB, HNR)
|
||||
KXG = (FKS, KMX)
|
||||
XCP = (MXK, DBX)
|
||||
QRV = (JSK, STC)
|
||||
VVG = (DRF, QNR)
|
||||
FTC = (CSK, FPC)
|
||||
GFV = (VSK, GFQ)
|
||||
JSM = (LNC, XTF)
|
||||
LJC = (JFG, XBK)
|
||||
TQD = (XJQ, MFM)
|
||||
HJS = (LLX, NMT)
|
||||
CBP = (PTX, LGD)
|
||||
LGT = (CTD, CTD)
|
||||
HMP = (FQJ, KGC)
|
||||
MSL = (MSD, BFL)
|
||||
QPX = (QFH, JMK)
|
||||
KBH = (MGF, TMH)
|
||||
XMT = (MXC, BJV)
|
||||
XGR = (KPF, DLH)
|
||||
RGH = (MBM, KNT)
|
||||
CDP = (BLG, NVN)
|
||||
BLG = (TQC, DTD)
|
||||
MSD = (RVP, RQP)
|
||||
KXT = (CVM, JQL)
|
||||
MRN = (MNX, PNC)
|
||||
RLG = (BNP, VNR)
|
||||
PSH = (XQG, SLP)
|
||||
XTF = (NTT, VGT)
|
||||
KVJ = (JVX, HPJ)
|
||||
PGF = (KRJ, CRS)
|
||||
VSV = (NKQ, PJG)
|
||||
TLV = (QHJ, GFG)
|
||||
BNP = (NFR, PGR)
|
||||
XQG = (CQF, HXG)
|
||||
KGC = (FKF, KCS)
|
||||
HQF = (QPX, FDV)
|
||||
PFN = (JGX, FMQ)
|
||||
HFD = (DBG, CBD)
|
||||
KQZ = (HXJ, KLF)
|
||||
HPM = (VSV, LTR)
|
||||
FGX = (SVR, GQB)
|
||||
SGJ = (THB, JQN)
|
||||
NKK = (QHB, QHB)
|
||||
FLF = (RLC, MXP)
|
||||
SRV = (QHM, LQS)
|
||||
NPB = (BPG, CVQ)
|
||||
VNR = (NFR, PGR)
|
||||
FNF = (TXL, CXT)
|
||||
PTB = (QXQ, BDK)
|
||||
BXN = (HQF, SGH)
|
||||
RGT = (MGN, GFN)
|
||||
FSP = (VRK, QNN)
|
||||
GHT = (PML, HTJ)
|
||||
CBD = (LGH, GST)
|
||||
LMH = (TJC, DNN)
|
||||
PTP = (GNK, HJS)
|
||||
XDC = (GHT, JTR)
|
||||
HTJ = (NHN, FQH)
|
||||
XFK = (NKX, HTV)
|
||||
PBP = (CJJ, GKS)
|
||||
KMX = (XSJ, PMK)
|
||||
CVQ = (FKX, GXP)
|
||||
SFV = (MXS, FLR)
|
||||
BQH = (VMH, PKT)
|
||||
NFR = (RTX, SBJ)
|
||||
KCS = (XGR, JXT)
|
||||
GND = (SFJ, DGL)
|
||||
DTF = (JCC, LVC)
|
||||
KLM = (XLP, QRQ)
|
||||
VQV = (DNC, SST)
|
||||
NKF = (KFN, TGG)
|
||||
CJT = (LDP, QKM)
|
||||
NPF = (TNC, LXF)
|
||||
MHK = (MLX, NHX)
|
||||
LGD = (DLP, CNJ)
|
||||
MLF = (QKK, QRK)
|
||||
LQB = (NKJ, SHN)
|
||||
SNS = (KMV, HCG)
|
||||
VPN = (HFV, LNX)
|
||||
XTB = (XLT, VRF)
|
||||
LNX = (HFB, QVF)
|
||||
XGF = (NRN, KCF)
|
||||
PNS = (JNQ, MCT)
|
||||
BJG = (DNC, SST)
|
||||
PQN = (SCL, VPX)
|
||||
NGQ = (DGT, RLF)
|
||||
GGX = (LQS, QHM)
|
||||
VVT = (MHK, LTJ)
|
||||
QJH = (XTF, LNC)
|
||||
BBP = (FNX, RTK)
|
||||
DDP = (JBR, KLD)
|
||||
GDV = (KXT, BJT)
|
||||
GDT = (CFB, PSH)
|
||||
LGH = (CRK, SCF)
|
||||
JNB = (DXQ, FBK)
|
||||
DLH = (XJD, GDT)
|
||||
NCQ = (MXP, RLC)
|
||||
LXP = (SPR, RTF)
|
||||
GRQ = (FNX, RTK)
|
||||
KBJ = (DNB, TDP)
|
||||
LXK = (CTD, JML)
|
||||
DBB = (TJD, FNF)
|
||||
RBR = (JTX, XKN)
|
||||
GPD = (LXN, PLD)
|
||||
JNM = (QRM, MSV)
|
||||
LNC = (VGT, NTT)
|
||||
GVT = (VVN, QSQ)
|
||||
KCD = (GFB, MFL)
|
||||
HDG = (VFQ, DTF)
|
||||
RGD = (GGX, SRV)
|
||||
KJK = (SRJ, QGV)
|
||||
DSL = (MNG, DVH)
|
||||
DSR = (VQV, BJG)
|
||||
NHB = (HPS, NNN)
|
||||
JVX = (JRT, GDQ)
|
||||
TGB = (DCG, VXK)
|
||||
MXN = (PST, GBF)
|
||||
CTP = (XGM, SFV)
|
||||
BPG = (GXP, FKX)
|
||||
HRT = (LXF, TNC)
|
||||
SST = (HDG, VJS)
|
||||
PDP = (XJQ, MFM)
|
||||
BDK = (TFM, GRM)
|
||||
PPS = (RQV, BXN)
|
||||
SSS = (TJQ, GNQ)
|
||||
TXL = (QRV, PPH)
|
||||
RRQ = (RXF, PGF)
|
||||
PSX = (LLM, FXM)
|
||||
FBK = (JDQ, DSX)
|
||||
JLR = (LSM, NXT)
|
||||
SPR = (DTG, RKQ)
|
||||
PGC = (TJT, HXC)
|
||||
LLD = (LHS, RLV)
|
||||
NRH = (XBB, FGX)
|
||||
SXH = (HMP, LSK)
|
||||
JVC = (MLN, XKM)
|
||||
MGF = (GGT, XMS)
|
||||
TTS = (TNX, TNX)
|
||||
FCP = (PLJ, KND)
|
||||
LRX = (TVP, LKK)
|
||||
VKJ = (PGN, XPX)
|
||||
VRL = (XKM, MLN)
|
||||
RQV = (SGH, HQF)
|
||||
CRS = (QSP, TTQ)
|
||||
BJC = (FCJ, TSC)
|
||||
CSP = (BNM, FLN)
|
||||
XHQ = (BJG, VQV)
|
||||
CRK = (DKC, QQQ)
|
||||
HFB = (BVM, VMP)
|
||||
SQN = (QJN, KKV)
|
||||
DGK = (FVX, RGT)
|
||||
HTP = (HCF, HFR)
|
||||
RFT = (NMF, DRL)
|
||||
TRJ = (SHN, NKJ)
|
||||
XJD = (PSH, CFB)
|
||||
FQJ = (FKF, KCS)
|
||||
VHB = (KDM, DSB)
|
||||
SKR = (NKX, HTV)
|
||||
LCN = (TLV, FMC)
|
||||
MTC = (PST, GBF)
|
||||
QRK = (XNR, SPD)
|
||||
TCK = (MDK, BCP)
|
||||
DNN = (HHV, MVS)
|
||||
JNQ = (PBP, VDG)
|
||||
NKQ = (MKX, HVD)
|
||||
FTV = (MNG, DVH)
|
||||
SJM = (SVT, PPS)
|
||||
KCB = (NKK, CNF)
|
||||
KJN = (PRV, BVK)
|
||||
PRV = (SVP, FTM)
|
||||
HFV = (HFB, QVF)
|
||||
NFC = (FVC, TBN)
|
||||
LMC = (QRK, QKK)
|
||||
KNF = (CHN, GFV)
|
||||
XNP = (SGJ, GSK)
|
||||
QQB = (MLF, LMC)
|
||||
CVM = (DLJ, SDG)
|
||||
RSG = (LBH, TLD)
|
||||
PGR = (RTX, SBJ)
|
||||
VTD = (QGV, SRJ)
|
||||
LBC = (PRH, CSP)
|
||||
RKX = (NHL, XMM)
|
||||
MXK = (XJN, PTB)
|
||||
MJD = (DLC, LRC)
|
||||
GDR = (FCX, KNF)
|
||||
VXK = (THG, BPN)
|
||||
GPP = (NRC, DHQ)
|
||||
SDN = (FKH, SXB)
|
||||
KJH = (BJX, VHX)
|
||||
RNQ = (DNX, GPL)
|
||||
VQX = (RXP, SSS)
|
||||
PPH = (JSK, STC)
|
||||
KKV = (HJB, QCP)
|
||||
ZZZ = (FGX, XBB)
|
||||
PTN = (KCD, HPQ)
|
||||
GMP = (KHG, FDC)
|
||||
NTT = (KXR, FMP)
|
||||
GBF = (KXG, MKS)
|
||||
VPX = (JFB, HSN)
|
||||
SVG = (BPP, RPK)
|
||||
PJG = (MKX, HVD)
|
||||
HNR = (TJD, FNF)
|
||||
XBB = (SVR, GQB)
|
||||
FBM = (SSS, RXP)
|
||||
RTX = (QJQ, KJN)
|
||||
MSV = (KQH, LRF)
|
||||
MGN = (LGT, LXK)
|
||||
QDH = (CFV, DHZ)
|
||||
NPR = (GDR, DCF)
|
||||
HSN = (VLG, QNC)
|
||||
PTM = (VGG, CQX)
|
||||
VCP = (BCL, XDT)
|
||||
LBP = (MPD, MPD)
|
||||
NRK = (NNL, XKC)
|
||||
QCT = (BBL, SVH)
|
||||
RPL = (MMH, CDP)
|
||||
RXH = (TJC, DNN)
|
||||
DGL = (KDF, NKB)
|
||||
GTQ = (PGF, RXF)
|
||||
FXG = (BGH, MTH)
|
||||
FQH = (VCJ, HPM)
|
||||
LTN = (SCP, SCP)
|
||||
JMK = (LPX, JNM)
|
||||
SCL = (JFB, HSN)
|
||||
TKV = (XHC, HQD)
|
||||
BDT = (TTS, KQC)
|
||||
MXX = (SKB, LPC)
|
||||
RPN = (QJK, BXM)
|
||||
MFL = (NDC, TPM)
|
||||
DXM = (HPJ, JVX)
|
||||
QXM = (LHS, RLV)
|
||||
QHM = (HNR, DBB)
|
||||
QRB = (KDM, DSB)
|
||||
JMG = (PLD, LXN)
|
||||
QSQ = (BNS, XNC)
|
||||
CXA = (XLT, VRF)
|
||||
MXC = (LQD, QXV)
|
||||
CNJ = (QQP, PXV)
|
||||
BPM = (BRD, BRD)
|
||||
BFV = (FCJ, TSC)
|
||||
KPL = (RPL, HBT)
|
||||
JJR = (QNN, VRK)
|
||||
KHG = (VDS, LKJ)
|
||||
DRC = (HFR, HCF)
|
||||
DLF = (RFT, STN)
|
||||
GKS = (QQB, RLT)
|
||||
TBD = (LFP, PQN)
|
||||
XNC = (QBD, DDP)
|
||||
TGC = (JNB, JXF)
|
||||
KCF = (LBP, JHT)
|
||||
NKB = (CCJ, RGH)
|
||||
NPH = (JQF, QJC)
|
||||
BJQ = (LJC, QMT)
|
||||
GTS = (TDP, DNB)
|
||||
XSJ = (KTN, VXJ)
|
||||
QXQ = (GRM, TFM)
|
||||
FCJ = (FKJ, DSK)
|
||||
FPF = (CQH, HML)
|
||||
VCJ = (LTR, VSV)
|
||||
QJK = (LBC, GMB)
|
||||
PMK = (VXJ, KTN)
|
||||
FXM = (BNT, VVG)
|
||||
DDG = (TLD, LBH)
|
||||
MDB = (FDJ, TST)
|
||||
BSF = (VXK, DCG)
|
||||
BVK = (FTM, SVP)
|
||||
RTG = (JSH, LKD)
|
||||
BPN = (VQX, FBM)
|
||||
BJT = (CVM, JQL)
|
||||
DFS = (BCP, MDK)
|
||||
GRM = (MDB, VPC)
|
||||
TRD = (NRK, HPF)
|
||||
FKH = (XHD, SNT)
|
||||
LXF = (BDX, TKV)
|
||||
JBK = (KKV, QJN)
|
||||
JBP = (BNP, VNR)
|
||||
PKF = (BJX, VHX)
|
||||
DLK = (DGK, XST)
|
||||
TFM = (MDB, VPC)
|
||||
VDP = (VVR, MHR)
|
||||
RDP = (VJR, NSV)
|
||||
PTX = (CNJ, DLP)
|
||||
DCG = (THG, BPN)
|
||||
BCV = (LTJ, MHK)
|
||||
FKJ = (NBQ, RDP)
|
||||
PHK = (KGF, SBX)
|
||||
JDQ = (PTN, RFF)
|
||||
TNC = (BDX, TKV)
|
||||
KCJ = (RPK, BPP)
|
||||
DLJ = (FTC, TGF)
|
||||
FQG = (GVT, QFL)
|
||||
LFP = (SCL, VPX)
|
||||
PBG = (KNC, PFX)
|
||||
QCP = (LRX, KQG)
|
||||
NRC = (GPD, JMG)
|
||||
PHH = (DGT, RLF)
|
||||
XCH = (LJC, QMT)
|
||||
VXJ = (KPL, SSC)
|
||||
TNX = (BPM, BPM)
|
||||
PTR = (VSD, PTP)
|
||||
NDC = (DQN, DQN)
|
||||
SVT = (RQV, BXN)
|
||||
NTJ = (SHC, QCM)
|
||||
SHM = (SNM, JKK)
|
||||
TLD = (TTC, HQB)
|
||||
MMN = (JNK, RRS)
|
||||
NPC = (MTC, MXN)
|
||||
NMF = (QBM, CTP)
|
||||
CQX = (NRH, ZZZ)
|
||||
BNT = (DRF, QNR)
|
||||
BJZ = (CNH, NQS)
|
||||
KFK = (XCT, PPG)
|
||||
SDG = (TGF, FTC)
|
||||
CBB = (HFV, LNX)
|
||||
VFQ = (LVC, JCC)
|
||||
LRF = (KLM, JGL)
|
||||
TTC = (JLR, GFT)
|
||||
PFH = (SHG, XTT)
|
||||
RLT = (MLF, LMC)
|
||||
XPJ = (JPL, BJZ)
|
||||
PKQ = (BXM, QJK)
|
||||
TNS = (GDR, DCF)
|
||||
FKX = (PKG, QQL)
|
||||
MJB = (HKH, JFD)
|
||||
JTN = (JSM, QJH)
|
||||
QTG = (NRN, KCF)
|
||||
MPX = (CHR, TGC)
|
||||
JKK = (CJT, PLN)
|
||||
LKK = (DRC, HTP)
|
||||
RXF = (KRJ, CRS)
|
||||
QNC = (LFB, FQG)
|
||||
RKQ = (DSR, XHQ)
|
||||
LCX = (PGK, VDP)
|
||||
KSG = (LLD, QXM)
|
||||
RPK = (NJT, DLF)
|
||||
KDM = (KSG, PLL)
|
||||
TVP = (HTP, DRC)
|
||||
DCB = (NKK, NKK)
|
||||
DQN = (STJ, STJ)
|
||||
JSH = (TRS, GKJ)
|
||||
LDP = (XGS, LJK)
|
||||
QRM = (LRF, KQH)
|
||||
VGG = (NRH, NRH)
|
||||
LLK = (VMH, PKT)
|
||||
VSK = (PHH, NGQ)
|
||||
JFB = (VLG, QNC)
|
||||
BCL = (XKD, GLG)
|
||||
RTF = (RKQ, DTG)
|
||||
KPF = (GDT, XJD)
|
||||
DHZ = (SNK, TPC)
|
||||
LPC = (DCB, KCB)
|
||||
KDF = (RGH, CCJ)
|
||||
PLL = (QXM, LLD)
|
||||
XHS = (FXM, LLM)
|
||||
BHF = (JTX, XKN)
|
||||
RRS = (DLK, LHV)
|
||||
FFL = (HKS, NHB)
|
||||
VRF = (QRB, VHB)
|
||||
LSQ = (MRN, PJM)
|
||||
SCD = (MXK, DBX)
|
||||
SPD = (FXG, RDX)
|
||||
CFM = (PQN, LFP)
|
||||
QKK = (SPD, XNR)
|
||||
LVC = (JJR, FSP)
|
||||
RLV = (TRD, GHG)
|
||||
HKK = (SSP, XNP)
|
||||
JCC = (FSP, JJR)
|
||||
JHT = (MPD, SCN)
|
||||
RVP = (XVQ, LSQ)
|
||||
HPQ = (GFB, MFL)
|
||||
JRT = (VTN, SKP)
|
||||
DTD = (TGB, BSF)
|
||||
PKG = (SKX, DGB)
|
||||
VMP = (RLG, JBP)
|
||||
DSX = (RFF, PTN)
|
||||
QRQ = (BJQ, XCH)
|
||||
LLX = (VXC, MSL)
|
||||
SVH = (DFS, TCK)
|
||||
XNR = (RDX, FXG)
|
||||
QKM = (LJK, XGS)
|
||||
MMH = (BLG, NVN)
|
||||
SKB = (DCB, KCB)
|
||||
JXT = (KPF, DLH)
|
||||
SVV = (BCV, VVT)
|
||||
KLD = (MHM, PVJ)
|
||||
QNN = (SVV, NQK)
|
||||
FCX = (GFV, CHN)
|
||||
BNS = (QBD, DDP)
|
||||
SHP = (HML, CQH)
|
||||
TJD = (TXL, CXT)
|
||||
BQF = (FCP, DCQ)
|
||||
MKX = (SNS, CCN)
|
||||
JKF = (NPH, KGL)
|
||||
LFB = (QFL, GVT)
|
||||
DCQ = (PLJ, KND)
|
||||
SVP = (VGX, JCR)
|
||||
PGN = (XMT, MXG)
|
||||
NVZ = (VRF, XLT)
|
||||
VBR = (BDM, LXP)
|
||||
GTX = (PHK, DSN)
|
||||
BDX = (XHC, HQD)
|
||||
JGX = (HGC, FBH)
|
||||
BBL = (DFS, TCK)
|
||||
KNT = (BBX, GMP)
|
||||
TLP = (LXH, TKF)
|
||||
TDS = (CBB, VPN)
|
||||
CTD = (LTN, LTN)
|
||||
HCG = (RRQ, GTQ)
|
||||
VRG = (TTS, KQC)
|
||||
RLC = (TLP, FQX)
|
||||
FBH = (DBM, LCX)
|
||||
SCP = (TVC, RBX)
|
||||
CGC = (TBN, FVC)
|
||||
JFG = (NQP, GDV)
|
||||
BVM = (RLG, JBP)
|
||||
DCF = (KNF, FCX)
|
||||
BJV = (QXV, LQD)
|
||||
QBD = (JBR, KLD)
|
||||
QFG = (BBL, SVH)
|
||||
RFF = (HPQ, KCD)
|
||||
QJQ = (PRV, BVK)
|
||||
FMC = (QHJ, GFG)
|
||||
PXV = (STQ, VHK)
|
||||
VVN = (XNC, BNS)
|
||||
NHG = (DXM, KVJ)
|
||||
SSP = (SGJ, GSK)
|
||||
QMT = (JFG, XBK)
|
||||
VRK = (NQK, SVV)
|
||||
SNT = (DDG, RSG)
|
||||
RRB = (BPG, CVQ)
|
||||
DXQ = (JDQ, DSX)
|
||||
FMP = (SHM, GSV)
|
||||
VMF = (FJX, VBR)
|
||||
NKJ = (GKP, SBS)
|
||||
XGM = (FLR, MXS)
|
||||
SKX = (NLH, RTG)
|
||||
XMS = (FDP, PRK)
|
||||
SPG = (PPG, XCT)
|
||||
QNR = (MPX, SXC)
|
||||
MDC = (BPM, CTR)
|
||||
SMR = (TJT, HXC)
|
||||
TBN = (FJS, TDS)
|
||||
BGH = (NPF, HRT)
|
||||
VDS = (XHS, PSX)
|
||||
RBX = (CDJ, PBG)
|
||||
VLC = (CQJ, GPP)
|
||||
SVR = (GTX, HLC)
|
||||
MDV = (DGL, SFJ)
|
||||
GMB = (CSP, PRH)
|
||||
QSP = (TBD, CFM)
|
||||
GFQ = (PHH, NGQ)
|
||||
HXG = (BDT, VRG)
|
||||
PPG = (XDM, MMN)
|
||||
MSH = (SHC, QCM)
|
||||
CHR = (JXF, JNB)
|
||||
RDX = (MTH, BGH)
|
||||
VXC = (MSD, BFL)
|
||||
DLP = (PXV, QQP)
|
||||
MXP = (FQX, TLP)
|
||||
TTQ = (TBD, CFM)
|
||||
GHG = (HPF, NRK)
|
||||
SNK = (BQF, CPH)
|
||||
MGG = (STJ, QDH)
|
||||
CCJ = (MBM, KNT)
|
||||
NNL = (KBH, LKC)
|
||||
LKD = (GKJ, TRS)
|
||||
GFN = (LGT, LXK)
|
||||
QBM = (XGM, SFV)
|
||||
STJ = (CFV, CFV)
|
||||
DSK = (RDP, NBQ)
|
||||
TSC = (FKJ, DSK)
|
||||
NSV = (LQB, TRJ)
|
||||
FKF = (XGR, JXT)
|
||||
DNX = (NTJ, MSH)
|
||||
NLH = (JSH, LKD)
|
||||
CFV = (TPC, SNK)
|
||||
DRP = (VBR, FJX)
|
||||
BDM = (SPR, RTF)
|
||||
TGF = (FPC, CSK)
|
||||
CNH = (VXD, LFX)
|
||||
BFL = (RQP, RVP)
|
||||
XHC = (GND, MDV)
|
||||
CJJ = (RLT, QQB)
|
||||
HPH = (XMM, NHL)
|
||||
PRH = (FLN, BNM)
|
||||
JCR = (THT, VCP)
|
||||
VHK = (XDC, JFR)
|
||||
NQP = (KXT, BJT)
|
||||
CDJ = (KNC, PFX)
|
||||
SCF = (DKC, QQQ)
|
||||
JBR = (MHM, PVJ)
|
||||
TPC = (BQF, CPH)
|
||||
FDC = (LKJ, VDS)
|
||||
KNC = (XCQ, VKJ)
|
||||
VQM = (SHG, XTT)
|
||||
KND = (QCS, TVN)
|
||||
MDM = (GPL, DNX)
|
||||
FJX = (LXP, BDM)
|
||||
BDV = (XTB, NVZ)
|
||||
LBM = (KFN, TGG)
|
||||
XKC = (KBH, LKC)
|
||||
QVF = (VMP, BVM)
|
||||
SHG = (RBR, BHF)
|
||||
DNB = (SVC, SSQ)
|
||||
SCN = (JGG, BDV)
|
||||
SXC = (TGC, CHR)
|
||||
XSL = (KCJ, SVG)
|
||||
TKF = (VLC, LVJ)
|
||||
LKJ = (XHS, PSX)
|
||||
VHX = (QMG, LCN)
|
||||
HGC = (LCX, DBM)
|
||||
MLN = (HFD, KVM)
|
||||
XDM = (JNK, RRS)
|
||||
RTK = (PKD, NPC)
|
||||
QQQ = (DSL, FTV)
|
||||
VJS = (DTF, VFQ)
|
||||
LLM = (VVG, BNT)
|
||||
MFM = (NHG, NQD)
|
||||
NQK = (VVT, BCV)
|
||||
NHN = (HPM, VCJ)
|
||||
SKP = (NMQ, XHM)
|
||||
HXC = (BVD, PFN)
|
||||
LSK = (FQJ, KGC)
|
||||
FPC = (GFX, MDQ)
|
||||
STC = (RBF, PTM)
|
||||
CTR = (BRD, KQZ)
|
||||
BNQ = (SKB, LPC)
|
||||
QQL = (SKX, DGB)
|
||||
NHX = (RKX, HPH)
|
||||
QHJ = (GRQ, BBP)
|
||||
XCQ = (XPX, PGN)
|
||||
HTV = (GTS, KBJ)
|
||||
JXF = (DXQ, FBK)
|
||||
JTR = (HTJ, PML)
|
||||
JHB = (JSM, QJH)
|
||||
CQF = (BDT, VRG)
|
||||
GNQ = (QCT, QFG)
|
||||
TQC = (TGB, BSF)
|
||||
SFS = (SCP, QLZ)
|
||||
MDQ = (MJD, XVS)
|
||||
DLC = (TMM, DFM)
|
||||
FLN = (RGV, SDN)
|
||||
PVJ = (QTG, XGF)
|
||||
JFR = (JTR, GHT)
|
||||
PGK = (VVR, MHR)
|
||||
TDP = (SSQ, SVC)
|
||||
RLF = (RKP, SKK)
|
||||
HJN = (NHB, HKS)
|
||||
VJR = (TRJ, LQB)
|
||||
VGX = (VCP, THT)
|
||||
DSB = (PLL, KSG)
|
||||
FTM = (VGX, JCR)
|
||||
MHR = (LBM, NKF)
|
||||
JFD = (CBP, HLJ)
|
||||
HKH = (CBP, HLJ)
|
||||
FDV = (QFH, JMK)
|
||||
NHL = (RQG, JKF)
|
||||
CQJ = (DHQ, NRC)
|
||||
HVD = (SNS, CCN)
|
||||
PLN = (QKM, LDP)
|
||||
THT = (BCL, XDT)
|
||||
FDP = (SCD, XCP)
|
||||
TJC = (HHV, MVS)
|
||||
QCM = (HKK, FQV)
|
||||
TJQ = (QCT, QFG)
|
||||
HFR = (KJH, PKF)
|
||||
RQG = (NPH, KGL)
|
||||
SRJ = (TNS, NPR)
|
||||
LTR = (NKQ, PJG)
|
||||
XST = (FVX, RGT)
|
||||
MBM = (GMP, BBX)
|
||||
KVM = (CBD, DBG)
|
||||
MVS = (VRL, JVC)
|
||||
SSC = (RPL, HBT)
|
||||
QQP = (VHK, STQ)
|
||||
CHQ = (SVG, KCJ)
|
||||
BVD = (FMQ, JGX)
|
||||
FNX = (NPC, PKD)
|
||||
FJS = (CBB, VPN)
|
||||
PLD = (FFL, HJN)
|
||||
TVC = (CDJ, PBG)
|
||||
DBX = (XJN, PTB)
|
||||
MDK = (SQD, RGD)
|
||||
JPL = (NQS, CNH)
|
||||
VDG = (GKS, CJJ)
|
||||
HQB = (GFT, JLR)
|
||||
GQS = (VMF, DRP)
|
||||
PST = (MKS, KXG)
|
||||
XGS = (SHP, FPF)
|
||||
XDJ = (VNX, PTR)
|
||||
MHM = (QTG, XGF)
|
||||
SHN = (SBS, GKP)
|
||||
LFX = (FLF, NCQ)
|
||||
BFX = (JNQ, MCT)
|
||||
XHM = (RNQ, MDM)
|
||||
LXN = (HJN, FFL)
|
||||
HPJ = (JRT, GDQ)
|
||||
NVN = (DTD, TQC)
|
||||
KGL = (QJC, JQF)
|
||||
MCT = (PBP, VDG)
|
||||
QFH = (LPX, JNM)
|
||||
FVC = (FJS, TDS)
|
||||
DRL = (QBM, CTP)
|
||||
LTJ = (MLX, NHX)
|
||||
THB = (JTN, JHB)
|
||||
SBX = (RPN, PKQ)
|
||||
KMV = (RRQ, GTQ)
|
||||
MNX = (LMH, RXH)
|
||||
LKC = (TMH, MGF)
|
||||
TMM = (BFX, PNS)
|
||||
TMH = (XMS, GGT)
|
||||
LPX = (QRM, MSV)
|
||||
STN = (DRL, NMF)
|
||||
RKP = (CHQ, XSL)
|
||||
DNC = (HDG, VJS)
|
||||
XMM = (JKF, RQG)
|
||||
GFT = (LSM, NXT)
|
||||
LSM = (SMR, PGC)
|
||||
FKS = (XSJ, PMK)
|
||||
MPD = (JGG, JGG)
|
||||
DKC = (DSL, FTV)
|
||||
HLC = (DSN, PHK)
|
||||
KMS = (BJC, BFV)
|
||||
NJT = (RFT, STN)
|
||||
JSK = (RBF, RBF)
|
||||
HLJ = (LGD, PTX)
|
||||
QMG = (TLV, FMC)
|
||||
GPL = (NTJ, MSH)
|
||||
RQP = (XVQ, LSQ)
|
||||
GGT = (FDP, PRK)
|
||||
XKN = (JBK, SQN)
|
||||
FVX = (MGN, GFN)
|
||||
GST = (CRK, SCF)
|
||||
MTK = (BFV, BJC)
|
||||
CCN = (KMV, HCG)
|
||||
TRS = (PDP, TQD)
|
||||
NRN = (LBP, JHT)
|
||||
GFG = (GRQ, BBP)
|
||||
XBK = (NQP, GDV)
|
||||
CXT = (QRV, PPH)
|
||||
FQV = (SSP, XNP)
|
||||
GFB = (NDC, TPM)
|
||||
VXD = (NCQ, FLF)
|
||||
XPX = (MXG, XMT)
|
||||
SQD = (SRV, GGX)
|
||||
GKP = (NFC, CGC)
|
||||
AAA = (XBB, FGX)
|
||||
KXR = (SHM, GSV)
|
||||
DGB = (RTG, NLH)
|
||||
PJM = (PNC, MNX)
|
||||
QGV = (NPR, TNS)
|
||||
CFB = (SLP, XQG)
|
||||
FDJ = (TDV, MJB)
|
||||
DSN = (KGF, SBX)
|
||||
FLR = (FDL, SXH)
|
||||
JGL = (QRQ, XLP)
|
||||
JQN = (JTN, JHB)
|
||||
MTH = (NPF, HRT)
|
||||
PRK = (SCD, XCP)
|
||||
VHA = (KLF, HXJ)
|
||||
VVR = (NKF, LBM)
|
||||
CQH = (VTD, KJK)
|
||||
DRF = (MPX, SXC)
|
||||
FDL = (LSK, HMP)
|
||||
PFX = (XCQ, VKJ)
|
||||
HPF = (XKC, NNL)
|
||||
LXH = (LVJ, VLC)
|
||||
SVC = (MXX, BNQ)
|
||||
GFX = (XVS, MJD)
|
||||
DGT = (SKK, RKP)
|
||||
XKD = (KFK, SPG)
|
||||
XJN = (BDK, QXQ)
|
||||
KQH = (KLM, JGL)
|
||||
VMH = (SKR, XFK)
|
||||
CHN = (VSK, GFQ)
|
||||
LHV = (DGK, XST)
|
||||
HCF = (PKF, KJH)
|
||||
CNF = (QHB, XPJ)
|
||||
QCS = (SJM, KMC)
|
||||
GXP = (QQL, PKG)
|
||||
SBJ = (QJQ, KJN)
|
||||
DHQ = (GPD, JMG)
|
||||
VLG = (FQG, LFB)
|
||||
GDQ = (VTN, SKP)
|
||||
NMQ = (MDM, RNQ)
|
||||
XKM = (KVM, HFD)
|
||||
BNM = (SDN, RGV)
|
||||
MLX = (RKX, HPH)
|
||||
QJC = (LLK, BQH)
|
||||
HML = (KJK, VTD)
|
||||
SKK = (CHQ, XSL)
|
||||
FQX = (TKF, LXH)
|
||||
PKD = (MXN, MTC)
|
||||
NQS = (LFX, VXD)
|
||||
HBT = (CDP, MMH)
|
||||
LRC = (DFM, TMM)
|
||||
NXT = (SMR, PGC)
|
||||
SXB = (XHD, SNT)
|
||||
RBF = (VGG, VGG)
|
||||
RXP = (GNQ, TJQ)
|
||||
RVK = (DRP, VMF)
|
||||
174
advent_of_code/2023/8/src/main.rs
Normal file
174
advent_of_code/2023/8/src/main.rs
Normal file
@@ -0,0 +1,174 @@
|
||||
use nom::{
|
||||
bytes::complete::tag,
|
||||
character::complete::{alpha1, alphanumeric1, multispace1},
|
||||
multi::separated_list1,
|
||||
sequence::{separated_pair, tuple},
|
||||
IResult, Parser,
|
||||
};
|
||||
use std::collections::HashMap;
|
||||
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
enum Dir {
|
||||
Right,
|
||||
Left,
|
||||
}
|
||||
|
||||
fn parse_input(input: &str) -> IResult<&str, (Vec<Dir>, Vec<(String, String, String)>)> {
|
||||
use Dir::*;
|
||||
let (input, result) = (separated_pair(
|
||||
alpha1,
|
||||
multispace1,
|
||||
separated_list1(
|
||||
multispace1,
|
||||
tuple((
|
||||
alphanumeric1::<&str, _>,
|
||||
tag(" = ("),
|
||||
alphanumeric1,
|
||||
tag(", "),
|
||||
alphanumeric1,
|
||||
tag(")"),
|
||||
))
|
||||
.map(|(start, _, left, _, right, _)| {
|
||||
(start.to_string(), left.to_string(), right.to_string())
|
||||
}),
|
||||
),
|
||||
))(input)?;
|
||||
|
||||
let result = (
|
||||
result
|
||||
.0
|
||||
.chars()
|
||||
.map(|c| match c {
|
||||
'R' => Right,
|
||||
'L' => Left,
|
||||
_ => unreachable!(),
|
||||
})
|
||||
.collect(),
|
||||
result.1,
|
||||
);
|
||||
|
||||
Ok((input, result))
|
||||
}
|
||||
|
||||
fn create_network(network: &[(String, String, String)]) -> HashMap<String, (String, String)> {
|
||||
let mut result = HashMap::new();
|
||||
|
||||
for (source, left, right) in network {
|
||||
result.insert(source.to_owned(), (left.to_owned(), right.to_owned()));
|
||||
}
|
||||
|
||||
result
|
||||
}
|
||||
|
||||
fn solve_1(route: &[Dir], network: &Vec<(String, String, String)>) -> u32 {
|
||||
use Dir::*;
|
||||
|
||||
let network = create_network(&network[..]);
|
||||
let mut current_node = "AAA".to_string();
|
||||
let mut steps = 0;
|
||||
|
||||
let mut route_iter = route.iter();
|
||||
loop {
|
||||
if current_node == "ZZZ".to_string() {
|
||||
return steps;
|
||||
}
|
||||
|
||||
steps += 1;
|
||||
let direction = match route_iter.next() {
|
||||
None => {
|
||||
route_iter = route.iter();
|
||||
route_iter.next().unwrap()
|
||||
}
|
||||
Some(dir) => dir,
|
||||
};
|
||||
current_node = match direction {
|
||||
Right => network.get(¤t_node).unwrap().1.to_owned(),
|
||||
Left => network.get(¤t_node).unwrap().0.to_owned(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn solve_2(route: &[Dir], network: &Vec<(String, String, String)>) -> u32 {
|
||||
use Dir::*;
|
||||
|
||||
let mut current_nodes = network
|
||||
.iter()
|
||||
.filter(|(start, _left, _right)| start.ends_with('A'))
|
||||
.map(|(start, _left, _right)| start.to_owned())
|
||||
.collect::<Vec<String>>();
|
||||
let network = create_network(&network[..]);
|
||||
let mut steps = 0;
|
||||
|
||||
let mut route_iter = route.iter();
|
||||
loop {
|
||||
if current_nodes.iter().all(|node| node.ends_with('Z')) {
|
||||
return steps;
|
||||
}
|
||||
|
||||
steps += 1;
|
||||
let direction = match route_iter.next() {
|
||||
None => {
|
||||
route_iter = route.iter();
|
||||
route_iter.next().unwrap()
|
||||
}
|
||||
Some(dir) => dir,
|
||||
};
|
||||
for node in current_nodes.iter_mut() {
|
||||
let target_node = match direction {
|
||||
Right => network.get(node).unwrap().1.to_owned(),
|
||||
Left => network.get(node).unwrap().0.to_owned(),
|
||||
};
|
||||
*node = target_node.to_owned();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
println!("Hello, this is Patrick!");
|
||||
|
||||
let input_text = include_str!("../input.txt");
|
||||
|
||||
let (_, (route, network)) = parse_input(input_text).unwrap();
|
||||
|
||||
println!(
|
||||
"There are {} steps required to reach ZZZ",
|
||||
solve_1(&route[..], &network)
|
||||
);
|
||||
|
||||
println!(
|
||||
"There are {} steps required to reach only nodes ending on Z, when starting from nodes ending only on A",
|
||||
solve_2(&route[..], &network)
|
||||
);
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn test1_part1() {
|
||||
let input_text = include_str!("../test_input1.txt");
|
||||
|
||||
let (_, (route, network)) = parse_input(input_text).unwrap();
|
||||
|
||||
assert_eq!(solve_1(&route[..], &network), 2);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test2_part1() {
|
||||
let input_text = include_str!("../test_input2.txt");
|
||||
|
||||
let (_, (route, network)) = parse_input(input_text).unwrap();
|
||||
|
||||
assert_eq!(solve_1(&route[..], &network), 6);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_part2() {
|
||||
let input_text = include_str!("../test_input3.txt");
|
||||
|
||||
let (_, (route, network)) = parse_input(input_text).unwrap();
|
||||
|
||||
assert_eq!(solve_2(&route[..], &network), 6);
|
||||
}
|
||||
}
|
||||
9
advent_of_code/2023/8/test_input1.txt
Normal file
9
advent_of_code/2023/8/test_input1.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
RL
|
||||
|
||||
AAA = (BBB, CCC)
|
||||
BBB = (DDD, EEE)
|
||||
CCC = (ZZZ, GGG)
|
||||
DDD = (DDD, DDD)
|
||||
EEE = (EEE, EEE)
|
||||
GGG = (GGG, GGG)
|
||||
ZZZ = (ZZZ, ZZZ)
|
||||
5
advent_of_code/2023/8/test_input2.txt
Normal file
5
advent_of_code/2023/8/test_input2.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
LLR
|
||||
|
||||
AAA = (BBB, BBB)
|
||||
BBB = (AAA, ZZZ)
|
||||
ZZZ = (ZZZ, ZZZ)
|
||||
10
advent_of_code/2023/8/test_input3.txt
Normal file
10
advent_of_code/2023/8/test_input3.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)
|
||||
Reference in New Issue
Block a user