aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksa Vuckovic <aleksa@vuckovic.cc>2023-12-09 04:09:31 +0100
committerAleksa Vuckovic <aleksa@vuckovic.cc>2023-12-09 04:09:31 +0100
commit023e428b2669b13b769a946341c08f1a8006a31d (patch)
treec4cf655d7d959b00ca095a34307a9e57a8d85234
parent55d33c8c29861ecadedcd2fde903bbf34a0bce55 (diff)
day7+1
-rw-r--r--Cargo.lock83
-rw-r--r--Cargo.toml1
-rw-r--r--input/day8.txt728
-rw-r--r--src/day8pt1.rs36
-rw-r--r--src/day8pt2.rs72
-rw-r--r--src/main.rs8
6 files changed, 924 insertions, 4 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 625450a..1b13802 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -15,16 +15,99 @@ dependencies = [
name = "aoc2023_rust"
version = "0.1.0"
dependencies = [
+ "num",
"regex",
]
[[package]]
+name = "autocfg"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+
+[[package]]
name = "memchr"
version = "2.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
[[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 = "regex"
version = "1.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git a/Cargo.toml b/Cargo.toml
index 0cd0fb9..a010327 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -6,4 +6,5 @@ edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
+num = "0.4.1"
regex = "1.10.2"
diff --git a/input/day8.txt b/input/day8.txt
new file mode 100644
index 0000000..2e64b41
--- /dev/null
+++ b/input/day8.txt
@@ -0,0 +1,728 @@
+LRRLRRRLRRRLLRRLRRLRLRLRRLLRRLRRLRRRLLLRRRLRRRLRRRLLRRRLRRLLRRLRRLRLRRRLRRLRLRRLRRRLLRRLLRLRRRLLRRLRRLLLRLRRRLRLRLRLLRRRLRLLRRRLRLRRRLRRRLLRRLRRRLLRRLRLLRLRRLLLRRLRRLLLRLLRLRRRLRLRLRRRLRRLLRRRLRLRLRRLRRRLRLRRLRRLRRRLRRRLRRRLRRRLRRLLRRLRLLRRLLRRRLRLLRLRLRRLRRLRLRLRRRLRLRLRRLRLRRLRRRR
+
+FPF = (PTN, MPT)
+DGM = (KXM, PRM)
+FKB = (JLC, MBX)
+XCJ = (DCJ, TSH)
+JVH = (VCH, SMV)
+BXL = (HLB, NVF)
+GVD = (FSQ, MFD)
+CDJ = (SMM, HHS)
+BGM = (FHB, LKH)
+FBP = (HHS, SMM)
+LTK = (TCV, GQX)
+LDM = (MRM, JKJ)
+RDK = (KBL, GHP)
+BJB = (XBN, BXG)
+KST = (BGX, VFS)
+VKM = (MFR, CJP)
+CSG = (GGJ, JHH)
+JFS = (QCG, XFR)
+MDV = (FPQ, NRX)
+QHF = (PJP, QHX)
+DHM = (LJC, PDS)
+MMV = (CHS, FXX)
+CQP = (LFN, GSD)
+RDT = (NVG, NVG)
+XFN = (HFM, LTK)
+MFD = (RKJ, XGN)
+DTD = (JBV, JBV)
+KJG = (PCC, PPR)
+GLH = (JRN, BLK)
+KBV = (MCQ, MCS)
+LQF = (KDR, GFC)
+GGB = (JGL, RRM)
+BQX = (QKQ, NSG)
+SVS = (SQL, FXL)
+GMC = (BHG, GPC)
+KPZ = (HLV, RVH)
+RQB = (TDV, XPN)
+GVR = (SXD, QRB)
+MNX = (DLT, CMJ)
+QDM = (TKN, VDH)
+CCB = (KPR, QCK)
+BVF = (QJX, FKK)
+TJB = (HKV, BCP)
+BHC = (SSN, HHH)
+NTN = (RPT, PVF)
+NDP = (BJQ, MGH)
+PJP = (NTN, FSR)
+BLL = (MTQ, SNQ)
+RNP = (RTD, PGM)
+PVF = (BMP, LPM)
+QFL = (NNS, GLR)
+VRG = (GGV, DMG)
+XRX = (TTR, LXS)
+MBH = (RHX, GKF)
+CXD = (LFN, GSD)
+FFK = (LDG, VHS)
+NHM = (BLM, XQD)
+TNB = (KSS, FSB)
+VLX = (KCF, VXL)
+DDF = (TNK, FBS)
+GQR = (BGM, MGR)
+BPQ = (FHD, MJT)
+KPR = (SDL, NMQ)
+CNL = (QFP, XPV)
+HVA = (BRQ, XPL)
+PHF = (LHF, HVR)
+TNZ = (XCM, BFL)
+NDJ = (GCQ, RTL)
+HCT = (PQT, VVB)
+JNH = (GVV, JMC)
+CNV = (SDP, NQR)
+GGV = (RHT, SLG)
+PRX = (FSD, KST)
+BLM = (KKQ, CSG)
+JRN = (GGK, GBF)
+DJK = (GQJ, JKB)
+RVH = (FXJ, JVN)
+RXF = (CHG, GDT)
+MBX = (KJM, XFN)
+HLV = (JVN, FXJ)
+XDG = (HJM, KCT)
+LPM = (RCG, RHG)
+GLP = (XDM, XNC)
+HQP = (JXQ, XPT)
+CXF = (SCV, PHF)
+QJT = (FJN, GHV)
+MPL = (HSQ, FKN)
+SDP = (LCQ, GRV)
+CDQ = (JLV, LLD)
+HHA = (BFL, XCM)
+GPS = (VLX, CPL)
+BXZ = (KSN, VKP)
+PGM = (LJV, CDQ)
+PKG = (VQF, FXC)
+XPL = (LBN, DMV)
+BJJ = (TVV, MNX)
+HLB = (SNN, HNH)
+CDV = (TNB, FSN)
+FXC = (CLF, HSC)
+JFM = (LSR, CNL)
+CMV = (DHQ, DJR)
+LDN = (BCQ, JMS)
+XNC = (JLS, KXS)
+SNN = (NGM, MFJ)
+CND = (RDL, GJJ)
+SKT = (FCM, MRC)
+QRB = (BCG, HRR)
+XNK = (LJC, PDS)
+DGK = (KBF, SRB)
+LNL = (FSD, KST)
+PCM = (PDL, JFS)
+BSV = (LSR, CNL)
+SMX = (TKL, QPF)
+XMS = (MDB, PKP)
+XPT = (LDM, PKV)
+RLB = (XFT, PKM)
+VVV = (NRX, FPQ)
+MGB = (LNN, NKR)
+SFJ = (LFT, QDM)
+MFX = (GLP, RPN)
+DLX = (SQQ, NHM)
+XQC = (HQJ, NPC)
+GHF = (VNG, TGQ)
+LRX = (GDT, CHG)
+SHV = (SRM, DVJ)
+TQS = (PRD, HGV)
+SQK = (QNB, PSJ)
+CHS = (MXK, GCR)
+VDH = (FMX, XMR)
+DGN = (LGT, PNQ)
+RMM = (CFK, RQD)
+RQK = (FSN, TNB)
+SLH = (BDS, BBP)
+HVR = (NTS, NQG)
+PSJ = (JFK, XXM)
+GBD = (VMR, KJG)
+FRH = (MNX, TVV)
+THH = (GHF, MNF)
+XTP = (VPC, BQQ)
+VMR = (PCC, PPR)
+PPQ = (GJJ, RDL)
+VHK = (TXT, DDN)
+JCG = (CCD, BXL)
+LCQ = (MPF, NDP)
+KCR = (PFH, DJK)
+LHL = (LGL, KCR)
+JMC = (RBG, CGH)
+JPM = (XMS, CVR)
+CLF = (HDT, DHR)
+FSQ = (XGN, RKJ)
+DVJ = (VHD, XNM)
+KCT = (SKT, QLK)
+XFD = (HXR, JVH)
+BVA = (GPT, RSD)
+MGR = (FHB, LKH)
+PXV = (MJJ, VBK)
+FNG = (TQS, HHM)
+GFD = (XRG, JCS)
+SST = (PHP, JGC)
+KJV = (DMG, GGV)
+PQM = (TTX, RMM)
+XRT = (KBL, GHP)
+JLV = (NKV, BLL)
+FKS = (CBR, RLJ)
+HMD = (JNH, GXG)
+FRL = (KQX, DDB)
+TRP = (LXT, HMC)
+TNK = (FRN, FRN)
+KDR = (PRX, LNL)
+XTS = (NDJ, HFB)
+HVM = (FMG, FHN)
+CHH = (TMD, MNM)
+HHM = (PRD, HGV)
+PJC = (FCC, VJD)
+TSH = (RPR, CVJ)
+GGJ = (NFK, NXD)
+DMG = (RHT, SLG)
+QPT = (QFL, PFN)
+DDN = (RHP, NSS)
+XHJ = (BPQ, CSM)
+NNM = (KHG, SRF)
+LFL = (TMN, JCG)
+NKV = (SNQ, MTQ)
+TMH = (LGT, PNQ)
+CCD = (HLB, NVF)
+GSD = (MRB, TFS)
+RHG = (VXH, MXS)
+LFT = (TKN, VDH)
+BJV = (DST, PTK)
+CGD = (PKG, ZZZ)
+VNG = (BJV, HDX)
+HJS = (GPC, BHG)
+FRN = (VKP, KSN)
+MRC = (JKK, CMV)
+BQQ = (NBF, PJC)
+KSN = (FNJ, GVR)
+QNB = (XXM, JFK)
+RSC = (JCB, JCB)
+GCQ = (XGH, FKB)
+SHS = (JBV, DDF)
+LLR = (XHJ, PGB)
+RSA = (RVH, HLV)
+DMX = (GSH, SST)
+HRD = (HLK, DJG)
+LHF = (NTS, NQG)
+JMS = (FKS, HPB)
+SRB = (SRG, GSF)
+LHN = (HLK, DJG)
+DTM = (RXM, VHK)
+PNP = (SNC, LPF)
+MPF = (BJQ, BJQ)
+SCV = (LHF, HVR)
+BTV = (GLH, PNN)
+NJG = (RXK, NXB)
+NGM = (THG, TXQ)
+FXL = (XRX, MBV)
+NHJ = (DSX, NNM)
+RBG = (DGK, LFQ)
+HGV = (HTS, RNP)
+LDF = (KRB, NXC)
+PMR = (GNH, CHQ)
+DVM = (MNM, TMD)
+FBS = (FRN, BXZ)
+BMM = (XSK, DDK)
+GGK = (MXH, JNG)
+NXB = (LHN, HRD)
+PNN = (JRN, BLK)
+PSV = (LLR, KXX)
+KGK = (TJP, QMM)
+CVG = (VLX, CPL)
+QNF = (XPB, PCM)
+HTS = (PGM, RTD)
+FJN = (DTD, SHS)
+JXB = (CLX, KPZ)
+DLT = (JGH, SFD)
+SFV = (HJM, KCT)
+GSF = (DLX, CHL)
+TKN = (XMR, FMX)
+LJB = (QJT, FVJ)
+QFP = (NXL, DGP)
+PKV = (JKJ, MRM)
+RHX = (RDK, XRT)
+KDP = (FKN, HSQ)
+RLJ = (BGF, JRP)
+VQR = (FDK, RLB)
+XNX = (HGQ, HGQ)
+DSX = (KHG, SRF)
+PDS = (VQK, KNJ)
+GKX = (TKL, QPF)
+CHQ = (XSM, HMD)
+KXX = (XHJ, PGB)
+MDB = (VVV, MDV)
+BCG = (XJX, SQK)
+KJM = (LTK, HFM)
+HRR = (SQK, XJX)
+GXD = (JFM, BSV)
+SCR = (JDN, QRS)
+GMK = (FPF, CTM)
+KXM = (PDJ, MFX)
+DKQ = (GCL, QFN)
+DJR = (FGV, PSV)
+GQX = (DFL, LQF)
+PTK = (TRS, TMC)
+BLK = (GGK, GBF)
+RSD = (XDG, SFV)
+SVT = (PXV, XCL)
+XFT = (BJJ, FRH)
+LSR = (XPV, QFP)
+BCP = (NMB, NXM)
+KGP = (RDT, FNB)
+DHF = (PNN, GLH)
+JHH = (NXD, NFK)
+DGP = (GKX, SMX)
+KSK = (DKP, RXT)
+KRM = (PQM, DCK)
+XJX = (QNB, PSJ)
+JKK = (DJR, DHQ)
+CFK = (DGN, TMH)
+PSS = (HNP, STL)
+MFR = (PMR, RJS)
+JNG = (TQQ, HXB)
+MDG = (VCC, HTF)
+VCC = (DGM, MKH)
+TQQ = (FCQ, SCR)
+DMK = (GXD, GFF)
+GHV = (DTD, SHS)
+HLP = (NNH, TQN)
+BGK = (QHJ, BQX)
+VKN = (DPT, FNG)
+STL = (DPP, NMX)
+QFS = (MGR, BGM)
+HSC = (DHR, HDT)
+FPQ = (NSL, RQN)
+QMM = (CDJ, FBP)
+PDL = (XFR, QCG)
+PDJ = (GLP, RPN)
+FSD = (VFS, BGX)
+MPT = (DKQ, RSQ)
+MHQ = (NTL, TKG)
+MPC = (NQJ, NQJ)
+DST = (TRS, TMC)
+KHD = (CLX, CLX)
+BNT = (MFR, CJP)
+VJD = (GPS, CVG)
+DLG = (JCS, XRG)
+MCD = (CHH, DVM)
+VSG = (XPR, TVQ)
+MSX = (VQR, KXQ)
+VMV = (VQR, KXQ)
+QCG = (NHJ, NMH)
+RPN = (XNC, XDM)
+NVG = (RSC, RSC)
+GDT = (LDC, QPT)
+GMX = (RJX, VRM)
+RDL = (MBH, NTF)
+XXM = (JSC, MHQ)
+SRF = (BGK, NQF)
+XNM = (SGJ, XCJ)
+RPT = (LPM, BMP)
+GPT = (SFV, XDG)
+JCB = (BFL, XCM)
+QKQ = (FRL, GGT)
+MTQ = (LQB, XPG)
+CHG = (QPT, LDC)
+FMS = (FJX, GMX)
+MBV = (LXS, TTR)
+JFP = (XPN, TDV)
+JFJ = (HNP, STL)
+GKF = (RDK, XRT)
+LDK = (QCT, TVX)
+CLX = (RVH, HLV)
+TXQ = (DFR, KQF)
+XGH = (MBX, JLC)
+KFB = (SHV, MRV)
+RSV = (GSX, TPK)
+NKR = (KFB, TFN)
+FCQ = (JDN, QRS)
+RQN = (TLC, GFQ)
+FSN = (FSB, KSS)
+QDQ = (VBQ, GSM)
+FFC = (DKC, DMK)
+KBC = (BHQ, TRP)
+PHB = (VCC, HTF)
+GBH = (FFC, CGL)
+TTR = (KBV, LJP)
+MRB = (DHG, QNF)
+SDL = (PSS, JFJ)
+TMC = (BXK, RSV)
+LXT = (GGB, MDT)
+LQB = (BNT, VKM)
+RXT = (GBH, SSD)
+SSN = (CRH, XTP)
+MRV = (SRM, DVJ)
+FJX = (RJX, VRM)
+FQB = (MNF, GHF)
+DKC = (GFF, GXD)
+MGQ = (LDK, RVG)
+DLK = (FPF, CTM)
+FHN = (HKK, BVF)
+BFL = (LJG, XQM)
+PKP = (VVV, MDV)
+QHJ = (QKQ, NSG)
+BCQ = (HPB, FKS)
+LDG = (VMV, MSX)
+BFH = (RXT, DKP)
+XPB = (JFS, PDL)
+HDX = (PTK, DST)
+NQF = (BQX, QHJ)
+DPT = (TQS, HHM)
+DCK = (TTX, RMM)
+NPC = (KGP, QJG)
+BCD = (NXB, RXK)
+HDT = (HPM, FTQ)
+FHD = (XNK, DHM)
+NNS = (XFD, MBT)
+GSX = (VRG, KJV)
+BXG = (BFH, KSK)
+VVB = (QDQ, JXC)
+NVF = (HNH, SNN)
+KRB = (JBH, JNJ)
+FXX = (GCR, MXK)
+JXQ = (LDM, PKV)
+MTT = (DLG, GFD)
+HXR = (VCH, SMV)
+MNM = (SPQ, PNP)
+QJG = (RDT, FNB)
+JLS = (KRM, LBQ)
+CJK = (TJB, VDD)
+TXT = (RHP, NSS)
+FXT = (JMS, BCQ)
+NSS = (LRX, RXF)
+VJQ = (RSC, MXR)
+XXH = (LNN, NKR)
+NSL = (GFQ, TLC)
+XSM = (GXG, JNH)
+HFM = (TCV, GQX)
+JGC = (NDL, JPM)
+HGQ = (GPT, RSD)
+CHL = (SQQ, NHM)
+VBK = (GKG, XTS)
+MBT = (HXR, JVH)
+FNJ = (SXD, QRB)
+JBH = (HCT, SGG)
+JRP = (FXP, VKN)
+VRM = (MPC, GQP)
+BBP = (JCL, LDF)
+GXH = (RXM, VHK)
+MXR = (JCB, TNZ)
+BSD = (CCP, GBD)
+QFN = (MPL, KDP)
+LNN = (TFN, KFB)
+SQQ = (BLM, XQD)
+MJT = (XNK, DHM)
+GSH = (JGC, PHP)
+PQT = (JXC, QDQ)
+RVG = (QCT, TVX)
+DHG = (PCM, XPB)
+LKJ = (HQP, HHG)
+XHB = (SJL, DMX)
+GKG = (HFB, NDJ)
+PGB = (BPQ, CSM)
+VBQ = (CVS, QHF)
+JXC = (GSM, VBQ)
+QCK = (SDL, NMQ)
+PFN = (NNS, GLR)
+RXK = (LHN, HRD)
+BVX = (GMK, DLK)
+LPF = (MMV, LQK)
+SMM = (SFJ, KGR)
+SJL = (SST, GSH)
+HMC = (MDT, GGB)
+VQF = (CLF, HSC)
+NRX = (RQN, NSL)
+CBR = (JRP, BGF)
+JLC = (KJM, XFN)
+TMD = (SPQ, PNP)
+HXB = (FCQ, SCR)
+SBQ = (SQV, NCH)
+LGT = (MGB, XXH)
+HSF = (TJB, VDD)
+JBS = (MGQ, NVQ)
+DKP = (SSD, GBH)
+HSQ = (SVT, LKV)
+GPC = (HVM, TGC)
+TVV = (DLT, CMJ)
+BHG = (TGC, HVM)
+CGR = (LDN, FXT)
+PFH = (GQJ, GQJ)
+FCM = (JKK, CMV)
+RRM = (KJP, BMM)
+FCG = (MDG, PHB)
+MCS = (HLP, DNV)
+BXK = (GSX, TPK)
+VQK = (HJS, GMC)
+LDH = (XPR, TVQ)
+DXN = (GMK, DLK)
+GFQ = (RQB, JFP)
+PKK = (BBP, BDS)
+BBR = (FXT, LDN)
+BJQ = (KHD, KHD)
+RCG = (MXS, VXH)
+HPM = (KJF, CXF)
+QJX = (CDV, RQK)
+NMB = (RKC, GVD)
+JCL = (KRB, NXC)
+GXM = (BBR, CGR)
+NMX = (XNX, SQP)
+NXM = (RKC, GVD)
+QMT = (MDG, PHB)
+DMV = (LTG, SBQ)
+FTQ = (KJF, CXF)
+TCV = (DFL, LQF)
+MFJ = (TXQ, THG)
+VKP = (FNJ, GVR)
+XQD = (CSG, KKQ)
+SRM = (VHD, XNM)
+SLG = (LRJ, JFL)
+JCS = (CQP, CXD)
+LJP = (MCQ, MCS)
+NBF = (FCC, VJD)
+DFL = (KDR, GFC)
+NFM = (XBN, BXG)
+CMR = (PKG, PKG)
+JVN = (XHB, MCC)
+RKC = (FSQ, MFD)
+JKJ = (BSQ, LJB)
+BGX = (MMD, FMS)
+THG = (KQF, DFR)
+RKJ = (CVN, FFK)
+LQK = (CHS, FXX)
+CPL = (VXL, KCF)
+JSC = (TKG, NTL)
+DNV = (TQN, NNH)
+LFF = (HQJ, NPC)
+TVQ = (SSF, GXM)
+NQR = (LCQ, GRV)
+TMN = (BXL, CCD)
+XDM = (KXS, JLS)
+CJP = (RJS, PMR)
+HKV = (NMB, NXM)
+SPQ = (SNC, LPF)
+HQJ = (KGP, QJG)
+GXG = (JMC, GVV)
+KSS = (CND, PPQ)
+LJG = (DTM, GXH)
+BHQ = (HMC, LXT)
+FGV = (KXX, LLR)
+KCF = (LKJ, NTJ)
+PRM = (MFX, PDJ)
+QKD = (FXL, SQL)
+DDB = (CSB, MCD)
+VHH = (CMR, CGD)
+LLM = (BVX, DXN)
+PTN = (RSQ, DKQ)
+GSM = (CVS, QHF)
+CVN = (VHS, LDG)
+RHT = (LRJ, JFL)
+JFK = (JSC, MHQ)
+NTS = (QFS, GQR)
+TQN = (DHF, BTV)
+KHG = (BGK, NQF)
+ZZZ = (FXC, VQF)
+VXL = (NTJ, LKJ)
+VFS = (MMD, FMS)
+LBQ = (PQM, DCK)
+KQX = (CSB, MCD)
+FDK = (XFT, PKM)
+NQG = (GQR, QFS)
+KXS = (LBQ, KRM)
+JDN = (HDL, CCB)
+TKL = (HSF, CJK)
+XRG = (CQP, CXD)
+BMP = (RCG, RHG)
+KQF = (KGK, LGN)
+HLK = (MTT, PFT)
+NFK = (MRS, CNV)
+HNH = (MFJ, NGM)
+FKN = (SVT, LKV)
+VPC = (PJC, NBF)
+DDK = (SVS, QKD)
+DCJ = (RPR, CVJ)
+NQJ = (CMR, CMR)
+LGL = (PFH, PFH)
+RTD = (CDQ, LJV)
+FVJ = (FJN, GHV)
+BDS = (LDF, JCL)
+NSG = (GGT, FRL)
+RXM = (DDN, TXT)
+JNJ = (SGG, HCT)
+SRG = (DLX, CHL)
+TGC = (FMG, FHN)
+FMG = (BVF, HKK)
+NTJ = (HHG, HQP)
+KNJ = (HJS, GMC)
+QJB = (CCP, GBD)
+NXL = (SMX, GKX)
+VHS = (MSX, VMV)
+CRH = (BQQ, VPC)
+GFF = (JFM, BSV)
+GLR = (XFD, MBT)
+XPR = (GXM, SSF)
+LLD = (BLL, NKV)
+KXQ = (FDK, RLB)
+MXH = (TQQ, HXB)
+RQD = (DGN, TMH)
+FNB = (NVG, VJQ)
+MGH = (KHD, JXB)
+JGL = (BMM, KJP)
+KJF = (SCV, PHF)
+SXD = (BCG, HRR)
+TPK = (KJV, VRG)
+TJP = (FBP, CDJ)
+MKH = (KXM, PRM)
+HJM = (SKT, QLK)
+GHP = (RFL, KBC)
+LGN = (TJP, QMM)
+LJV = (JLV, LLD)
+NXD = (CNV, MRS)
+LKH = (LLM, BNK)
+CTM = (MPT, PTN)
+SNC = (LQK, MMV)
+PNQ = (XXH, MGB)
+FMX = (BSD, QJB)
+QQL = (HHH, SSN)
+QLK = (FCM, MRC)
+CMJ = (JGH, SFD)
+FHB = (BNK, LLM)
+TKG = (FQB, THH)
+XPV = (DGP, NXL)
+RHP = (LRX, RXF)
+BRQ = (LBN, DMV)
+NDL = (XMS, CVR)
+LDC = (PFN, QFL)
+DPP = (XNX, XNX)
+NMQ = (PSS, JFJ)
+SGG = (PQT, VVB)
+FSR = (RPT, PVF)
+AAA = (VQF, FXC)
+JFL = (BJB, NFM)
+XFR = (NHJ, NMH)
+HHS = (SFJ, KGR)
+MLZ = (RSD, GPT)
+MNF = (VNG, TGQ)
+FXP = (DPT, FNG)
+MRS = (SDP, NQR)
+MDT = (JGL, RRM)
+MJJ = (GKG, XTS)
+PFT = (GFD, DLG)
+TVX = (BCD, NJG)
+NPA = (VKP, KSN)
+TDV = (LDH, VSG)
+GQJ = (PDM, PDM)
+NTF = (GKF, RHX)
+GGT = (KQX, DDB)
+LFN = (TFS, MRB)
+CSM = (MJT, FHD)
+NVQ = (RVG, LDK)
+PKM = (FRH, BJJ)
+PDM = (BRQ, XPL)
+JGH = (BHC, QQL)
+SSF = (CGR, BBR)
+GVV = (CGH, RBG)
+FSB = (PPQ, CND)
+LKV = (XCL, PXV)
+MXK = (SLH, PKK)
+SQL = (XRX, MBV)
+LRJ = (BJB, NFM)
+VXH = (LFF, XQC)
+HTF = (MKH, DGM)
+CTB = (LGL, KCR)
+HFB = (RTL, GCQ)
+NTL = (FQB, THH)
+SFD = (QQL, BHC)
+HNP = (DPP, DPP)
+TTX = (RQD, CFK)
+MCQ = (HLP, DNV)
+CCP = (VMR, KJG)
+TFN = (MRV, SHV)
+JKB = (PDM, RFZ)
+TGQ = (BJV, HDX)
+PHP = (JPM, NDL)
+RJX = (MPC, GQP)
+CVJ = (LFL, KLG)
+KJP = (DDK, XSK)
+QPF = (HSF, CJK)
+SNQ = (XPG, LQB)
+BGF = (VKN, FXP)
+KLG = (TMN, JCG)
+CGL = (DMK, DKC)
+XCM = (XQM, LJG)
+RPR = (LFL, KLG)
+LFQ = (KBF, SRB)
+RJS = (CHQ, GNH)
+HDL = (KPR, QCK)
+FXJ = (MCC, XHB)
+XPG = (VKM, BNT)
+DHQ = (FGV, PSV)
+SQV = (QMT, FCG)
+DHR = (FTQ, HPM)
+FCC = (GPS, CVG)
+NCH = (FCG, QMT)
+QRS = (HDL, CCB)
+XQM = (GXH, DTM)
+SGJ = (TSH, DCJ)
+KBL = (RFL, KBC)
+NXC = (JBH, JNJ)
+BSQ = (QJT, FVJ)
+LTG = (NCH, SQV)
+SMV = (JBS, MDQ)
+GJJ = (MBH, NTF)
+GRV = (MPF, NDP)
+HPB = (RLJ, CBR)
+TRS = (BXK, RSV)
+GCR = (SLH, PKK)
+HHH = (CRH, XTP)
+GNH = (XSM, HMD)
+RSQ = (QFN, GCL)
+HKK = (QJX, FKK)
+JBV = (TNK, TNK)
+TFS = (DHG, QNF)
+RTL = (FKB, XGH)
+HHG = (XPT, JXQ)
+PPR = (LHL, CTB)
+SQP = (HGQ, MLZ)
+XBN = (BFH, KSK)
+CVR = (MDB, PKP)
+RFL = (BHQ, TRP)
+QHX = (FSR, NTN)
+VCH = (MDQ, JBS)
+GCL = (MPL, KDP)
+KKQ = (GGJ, JHH)
+GFC = (PRX, LNL)
+PRD = (HTS, RNP)
+GQP = (NQJ, VHH)
+LJC = (VQK, KNJ)
+QCT = (BCD, NJG)
+KBF = (SRG, GSF)
+NNH = (BTV, DHF)
+SSD = (CGL, FFC)
+VDD = (HKV, BCP)
+VHD = (XCJ, SGJ)
+RFZ = (XPL, BRQ)
+KGR = (LFT, QDM)
+MDQ = (NVQ, MGQ)
+MXS = (LFF, XQC)
+PCC = (LHL, CTB)
+TLC = (RQB, JFP)
+CVS = (PJP, QHX)
+BNK = (DXN, BVX)
+CSB = (CHH, DVM)
+XPN = (VSG, LDH)
+XSK = (SVS, QKD)
+LBN = (LTG, SBQ)
+FKK = (RQK, CDV)
+MCC = (SJL, DMX)
+NMH = (DSX, NNM)
+MMD = (GMX, FJX)
+LXS = (LJP, KBV)
+XMR = (QJB, BSD)
+DFR = (KGK, LGN)
+DJG = (PFT, MTT)
+CGH = (DGK, LFQ)
+MRM = (BSQ, LJB)
+XCL = (MJJ, VBK)
+GBF = (JNG, MXH)
+XGN = (FFK, CVN)
diff --git a/src/day8pt1.rs b/src/day8pt1.rs
new file mode 100644
index 0000000..ece5fd9
--- /dev/null
+++ b/src/day8pt1.rs
@@ -0,0 +1,36 @@
+use regex::Regex;
+
+pub fn main() {
+ let txt = std::fs::read_to_string("./input/day8.txt").unwrap();
+ let input = txt.lines().collect::<Vec<_>>();
+
+ let instr = input[0];
+ let graf = (&input[2..input.len()])
+ .into_iter()
+ .map(|s| {
+ let re = Regex::new(r"=\s*|\(|\)|,").unwrap();
+ re.replace_all(s, "")
+ .split_whitespace()
+ .map(String::from)
+ .collect::<Vec<_>>()
+ })
+ .collect::<Vec<_>>();
+
+ let mut cnt: u32 = 0;
+ let mut trn = "AAA";
+ while trn != "ZZZ" {
+ for cvor in &graf {
+ if cvor[0] == trn {
+ if instr.chars().nth(cnt as usize % instr.len()).unwrap() == 'L' {
+ trn = cvor[1].as_str();
+ } else {
+ trn = cvor[2].as_str();
+ }
+ cnt += 1;
+ break;
+ }
+ }
+ }
+
+ println!("{}", cnt);
+}
diff --git a/src/day8pt2.rs b/src/day8pt2.rs
new file mode 100644
index 0000000..506a6b9
--- /dev/null
+++ b/src/day8pt2.rs
@@ -0,0 +1,72 @@
+use num::integer::lcm;
+use regex::Regex;
+
+#[derive(Debug)]
+struct Indeks<'a> {
+ trn: &'a str,
+ do_kraja1: u64,
+ do_kraja2: u64,
+}
+
+pub fn main() {
+ let txt = std::fs::read_to_string("./input/day8.txt").unwrap();
+ let input = txt.lines().collect::<Vec<_>>();
+
+ let instr = input[0];
+ let graf = (&input[2..input.len()])
+ .into_iter()
+ .map(|s| {
+ let re = Regex::new(r"=\s*|\(|\)|,").unwrap();
+ re.replace_all(s, "")
+ .split_whitespace()
+ .map(String::from)
+ .collect::<Vec<_>>()
+ })
+ .collect::<Vec<_>>();
+
+ let mut cvorovi: Vec<Indeks> = vec![];
+ for cvor in &graf {
+ if cvor[0].chars().nth(2).unwrap() == 'A' {
+ cvorovi.push(Indeks {
+ trn: (cvor[0].as_str()),
+ do_kraja1: (0),
+ do_kraja2: (0),
+ });
+ }
+ }
+
+ let mut cnt: usize;
+ for i in 0..cvorovi.len() {
+ cnt = 0;
+ loop {
+ for cvor in &graf {
+ if cvor[0] == cvorovi[i].trn {
+ if cvorovi[i].do_kraja2 > 0 || cvorovi[i].trn.chars().last().unwrap() == 'Z' {
+ cvorovi[i].do_kraja2 += 1;
+ } else {
+ cvorovi[i].do_kraja1 += 1;
+ }
+
+ if instr.chars().nth(cnt).unwrap() == 'L' {
+ cvorovi[i].trn = &cvor[1];
+ } else {
+ cvorovi[i].trn = &cvor[2];
+ }
+ break;
+ }
+ }
+ cnt = (cnt + 1) % instr.len();
+
+ if cvorovi[i].do_kraja2 != 0 && cvorovi[i].trn.chars().last().unwrap() == 'Z' {
+ break;
+ }
+ }
+ }
+
+ let mut a = 1;
+ for cvor in cvorovi {
+ a = lcm(a, cvor.do_kraja2);
+ }
+
+ println!("{}", a);
+}
diff --git a/src/main.rs b/src/main.rs
index dfe1351..1749ed4 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,7 +1,7 @@
-mod day7pt1;
-mod day7pt2;
+mod day8pt1;
+mod day8pt2;
fn main() {
- day7pt1::main();
- day7pt2::main();
+ day8pt1::main();
+ day8pt2::main();
}