diff options
| author | Aleksa Vuckovic <aleksa@vuckovic.cc> | 2023-12-09 04:09:31 +0100 |
|---|---|---|
| committer | Aleksa Vuckovic <aleksa@vuckovic.cc> | 2023-12-09 04:09:31 +0100 |
| commit | 023e428b2669b13b769a946341c08f1a8006a31d (patch) | |
| tree | c4cf655d7d959b00ca095a34307a9e57a8d85234 | |
| parent | 55d33c8c29861ecadedcd2fde903bbf34a0bce55 (diff) | |
day7+1
| -rw-r--r-- | Cargo.lock | 83 | ||||
| -rw-r--r-- | Cargo.toml | 1 | ||||
| -rw-r--r-- | input/day8.txt | 728 | ||||
| -rw-r--r-- | src/day8pt1.rs | 36 | ||||
| -rw-r--r-- | src/day8pt2.rs | 72 | ||||
| -rw-r--r-- | src/main.rs | 8 |
6 files changed, 924 insertions, 4 deletions
@@ -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" @@ -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(); } |
