diff options
| author | nekineki <nekineki@nekineki.net> | 2023-12-08 07:25:29 +0100 |
|---|---|---|
| committer | nekineki <nekineki@nekineki.net> | 2023-12-08 07:45:51 +0100 |
| commit | 2a6e4545a257d3ba6afeabdd0ed5c15221ff333b (patch) | |
| tree | e442803002730b8f9c7b5a1cd24d2ddedabec885 /2023 | |
| parent | 7b53b318da4d61c88f9676a49e6ef0766116bd1a (diff) | |
day08
Diffstat (limited to '2023')
| -rw-r--r-- | 2023/Cargo.lock | 85 | ||||
| -rw-r--r-- | 2023/Cargo.toml | 1 | ||||
| -rw-r--r-- | 2023/day08.rs | 59 | ||||
| -rw-r--r-- | 2023/in/day08.pzl | 772 | ||||
| -rw-r--r-- | 2023/in/day08.ref | 10 |
5 files changed, 927 insertions, 0 deletions
diff --git a/2023/Cargo.lock b/2023/Cargo.lock index 645dfd2..51c0f38 100644 --- a/2023/Cargo.lock +++ b/2023/Cargo.lock @@ -5,3 +5,88 @@ version = 3 [[package]] name = "aoc2023" version = "0.1.0" +dependencies = [ + "num", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[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", +] diff --git a/2023/Cargo.toml b/2023/Cargo.toml index 98c23a7..8500e54 100644 --- a/2023/Cargo.toml +++ b/2023/Cargo.toml @@ -9,6 +9,7 @@ edition = "2021" opt-level = 3 [dependencies] +num = "0.4" [[bin]] name = "day01" diff --git a/2023/day08.rs b/2023/day08.rs new file mode 100644 index 0000000..510ddba --- /dev/null +++ b/2023/day08.rs @@ -0,0 +1,59 @@ +use num::integer::lcm; +use std::collections::HashMap; +use std::fs::File; +use std::io::Read; + +fn main() { + // let filename = "in/day08.ref"; + let filename = "in/day08.pzl"; + + let mut f = File::open(filename).expect("cannot open file"); + let mut content = String::new(); + f.read_to_string(&mut content).expect("cannot read file"); + let mut lines = content.trim_end().split("\n\n"); + + let ops: Vec<char> = lines.next().unwrap().chars().collect(); + + let mut tree: HashMap<&str, (&str, &str)> = HashMap::new(); + for line in lines.next().unwrap().split('\n') { + let (first, rest) = line.split_once(" = ").unwrap(); + let (left, right) = rest.split_once(", ").unwrap(); + let left = &left[1..]; + let right = &right[..3]; + tree.insert(first, (left, right)); + } + + let traverse_tree_until = |start: &str, f: fn(&str) -> bool| { + let mut loc = start; + let mut steps: usize = 0; + loop { + let (left, right) = tree.get(loc).unwrap(); + let op = ops[steps % ops.len()]; + + if op == 'L' { + loc = left; + } else { + loc = right; + } + if f(&loc) { + break; + } + steps += 1; + } + (steps + 1) as u64 + }; + + let res1 = traverse_tree_until("AAA", |x| x == "ZZZ"); + + let locs = tree.keys().filter(|x| &x[2..3] == "A").collect::<Vec<_>>(); + let mut stps: Vec<u64> = Vec::new(); + for i in 0..locs.len() { + stps.push(traverse_tree_until(locs[i], |x| x.ends_with("Z"))); + } + let res2 = stps.iter().fold(1, |x, y| lcm(x, *y)); + + println!("res1: {}", res1); + println!("res2: {}", res2); + assert_eq!(res1, 14257); + assert_eq!(res2, 16187743689077); +} diff --git a/2023/in/day08.pzl b/2023/in/day08.pzl new file mode 100644 index 0000000..64d3b9e --- /dev/null +++ b/2023/in/day08.pzl @@ -0,0 +1,772 @@ +LRLRRRLRRLRLRRRLRRLLRRRLRLRLRLRRLRRRLRRLLRLRLRRRLRLLRRLRRLRLLRRLLRRLRRRLLRRLRRLRRRLRRRLRRRLRLRRLRRRLLRRLRRLRRRLRLRRRLRRLRRRLRRRLRLRLRLRLRLRLLRRLLLLRLRRRLRRRLLRRLRLRLLRRRLRLRRLRRRLLLLRRRLLRRLRRLRRLLRLLLLRLRRRLRLRRLRRLLRRRLRRLRLRRLRRRLLRRRLLRLRRLRRLLRRRLLRLRRLRLRRLLLRRRR + +RJK = (DPP, JQR) +QLH = (CXC, MXS) +TQC = (KFD, RSM) +KVM = (NJH, VTB) +PVR = (KVC, VFH) +NCF = (BPT, QSX) +DCX = (MNK, PVM) +RGR = (FCV, LCC) +DFF = (RRV, SVQ) +BVT = (PVR, JJF) +BTF = (XVM, VRP) +SNC = (HXP, TBG) +NJL = (NKQ, ZZZ) +RLH = (MTC, RTR) +NCX = (GBX, XBB) +FNR = (GTV, GXR) +HCL = (KLG, DDK) +JVR = (TRV, NDB) +SRD = (DQV, HFK) +SGC = (DGX, TMF) +DMR = (KSN, JDH) +JGN = (PDP, BLK) +RTD = (CNF, HRP) +DKM = (CTR, GQM) +BKG = (JPN, NQN) +JQD = (CBR, BLF) +CSJ = (FGG, XLT) +XSN = (QXS, GPT) +HQF = (XKG, XFN) +KQK = (MDS, VVQ) +VTJ = (QJC, QJC) +TKQ = (HVH, DCB) +HHN = (QNN, RSG) +GMH = (GQR, JRB) +QCH = (RMS, PPQ) +XJC = (BJL, XGB) +SKC = (NQK, KVP) +JCQ = (JMD, NDQ) +TKR = (JBN, FXK) +PBG = (HRJ, BRD) +FPL = (MTF, TCV) +XQD = (SNL, TJN) +FTD = (CDK, QTF) +PRC = (FDD, QSR) +CCK = (BXN, HCL) +FSB = (NXF, NMF) +MRX = (JFQ, GSG) +XMR = (DKR, BPP) +BFF = (DCX, CBL) +NDD = (QPB, TBT) +RRJ = (FTT, GLS) +PSS = (NCD, SNJ) +TRV = (FBQ, NNP) +HTB = (PJB, QKP) +LKD = (MGK, CQX) +PQG = (QQF, QQF) +TMB = (PDP, BLK) +TGJ = (SKT, FNR) +SRB = (JCQ, XMB) +FKT = (CVT, SMJ) +KMJ = (FGG, XLT) +JFF = (BLV, JQD) +FFS = (NFF, VFT) +BJJ = (JLB, XHS) +LKF = (QXS, GPT) +DQQ = (GPN, SMX) +NMG = (QVB, QXL) +LKS = (XBM, JRV) +RLL = (MCL, LNC) +JMQ = (DTJ, BKG) +BHX = (JLR, LXG) +VTB = (XQD, LDP) +SXP = (JMQ, JND) +PVX = (VFB, QJB) +DVS = (SPX, HSZ) +RLG = (LKD, SGB) +QFT = (CTQ, JTX) +FBV = (BFF, PGR) +PVM = (VSL, NFS) +HKL = (XDN, LDB) +XBM = (GKH, GKH) +NDB = (NNP, FBQ) +QNN = (MHK, MHK) +TVN = (XKT, DHB) +CXC = (DGB, NCF) +JMX = (RLX, GVB) +CSL = (QKF, DCN) +NTP = (FVP, RKK) +FCV = (VQL, SXG) +JCT = (VCC, JBG) +CHQ = (RTD, FSH) +CJJ = (NCK, DCR) +XFX = (CSC, PLL) +LDP = (SNL, TJN) +FCT = (MFM, RQR) +RRF = (BVF, HSV) +FDB = (GDX, PXT) +SDN = (JNH, SRB) +HXP = (QCH, BMH) +BCP = (NBF, BND) +DFC = (PCN, PGP) +HDC = (DHD, MHN) +LXC = (NTS, MVD) +CHM = (CNP, NSP) +DDS = (TXB, CGX) +TBB = (PSB, XJT) +CTQ = (MCD, GCP) +LNS = (DMV, SHL) +TBX = (THM, BVG) +PSB = (CNS, VMV) +NMP = (HQF, CLC) +HGH = (BCP, NQV) +PGR = (CBL, DCX) +SSV = (FMB, MPB) +PVL = (QTH, DFC) +XQP = (XGN, FVQ) +CTR = (CMJ, BHN) +NFC = (PBG, MBR) +RHD = (MCC, KTB) +KLB = (PBL, MQC) +FTT = (JDQ, LCS) +LCS = (KKK, QCX) +BPB = (FLF, XMC) +HGN = (VBP, HHN) +PHK = (JJX, SLX) +KJQ = (NBT, XGT) +QXS = (HKK, XCT) +BTR = (FRV, LLS) +RFT = (BGQ, NHK) +TRF = (TMB, JGN) +JJP = (NGM, JXT) +DKV = (FDD, QSR) +CBR = (GGB, FNL) +XVM = (DKM, KGF) +MVD = (RGR, PTF) +CRQ = (CBD, XQP) +HLL = (BGQ, NHK) +CKD = (CJJ, QMP) +CJQ = (NJH, VTB) +VBH = (RML, NMP) +DSQ = (PSB, XJT) +KMD = (KSM, VBH) +JSF = (RRF, LMT) +DFG = (QKB, CBF) +MGQ = (NSS, DNQ) +RJD = (LLN, NQX) +KGN = (LXG, JLR) +KTB = (NQT, LFQ) +GSX = (CXK, RFK) +RMN = (FMQ, DTB) +PNX = (MVM, DVS) +NNR = (XCC, CLL) +GQM = (CMJ, BHN) +DHD = (DDC, FQK) +RKT = (TQM, CLQ) +LQX = (SJH, LTV) +LNC = (FDB, QKM) +SNL = (DRN, TRG) +DPP = (CKS, TPD) +SGR = (DKV, PRC) +QDJ = (MPM, TSL) +TTA = (BQP, LTM) +SBP = (NRD, MTT) +HFK = (HGH, PCM) +PCM = (BCP, NQV) +VRM = (DPP, JQR) +QFN = (SMX, GPN) +VMV = (XGM, RHD) +HDX = (RTV, RJH) +GJD = (FQF, NCX) +JDD = (NSP, CNP) +LSN = (JFQ, GSG) +XLR = (CLQ, TQM) +QKN = (FMB, MPB) +SDT = (PRC, DKV) +NKQ = (HSD, SQT) +FDD = (QDS, FCS) +KMC = (QDV, PHR) +GQP = (XMR, QJK) +RLB = (XCH, SRN) +KXS = (MGQ, SKV) +PJB = (DDS, RDP) +PDL = (MGG, FPL) +CBD = (XGN, FVQ) +XMC = (QKV, SGC) +DMJ = (CHM, JDD) +SBH = (BXN, HCL) +JKJ = (FPL, MGG) +DTB = (MNG, HKL) +FSL = (KQH, QKT) +JHN = (SNJ, NCD) +MGG = (TCV, MTF) +CGX = (PMH, SPB) +KCG = (NDD, TTS) +TBG = (BMH, QCH) +CVG = (HDC, JXK) +RSG = (MHK, PNX) +NXF = (DBH, PJR) +RJH = (LPL, BKV) +GFK = (LXM, KCT) +HRJ = (HLT, PSR) +LTV = (GFQ, BLJ) +DGH = (VVQ, MDS) +NDQ = (RRH, PFP) +KSH = (SJJ, GNV) +SKV = (NSS, DNQ) +RQR = (LNM, FBS) +LJR = (DTB, FMQ) +HLM = (MBR, PBG) +TNT = (JBG, VCC) +FQF = (XBB, GBX) +NQX = (TNM, DHP) +SDF = (BBF, BLH) +JRB = (LND, XJC) +FGG = (BCS, PGG) +JTX = (GCP, MCD) +BLK = (LQS, CKD) +NTF = (PHK, BFS) +RFL = (RCH, NSC) +HKK = (MCV, GFK) +HGL = (NMF, NXF) +PJR = (RLL, DCP) +RMS = (RDG, DMJ) +CNG = (LTC, FKK) +XDF = (BFF, PGR) +HPB = (STC, FDS) +JJX = (VRM, RJK) +SKD = (GCL, TVN) +QXL = (HJX, PJH) +KLL = (RTD, FSH) +NFF = (RBF, SDN) +DND = (HDH, NNR) +GLS = (JDQ, LCS) +VKP = (TVF, KTQ) +SGB = (CQX, MGK) +MFM = (LNM, FBS) +FCS = (BSN, GJM) +PFQ = (CXC, MXS) +TJF = (TMP, RSC) +JXT = (NRM, MXR) +MHB = (PSS, JHN) +MGK = (QQR, KHH) +BKV = (PNL, BSR) +XLS = (SKT, FNR) +MQJ = (CRQ, FHD) +BMJ = (JTX, CTQ) +BHN = (FTK, TTM) +RTV = (LPL, BKV) +GKH = (BQP, LTM) +TPD = (QDJ, QQM) +RBF = (SRB, JNH) +GPN = (NKF, SBT) +CKN = (HSJ, HCG) +NRM = (VLK, VLK) +CQL = (JPL, HDX) +HRP = (RLG, FQR) +MCL = (QKM, FDB) +LQV = (JLD, DFG) +MBS = (NCX, FQF) +XGN = (VQX, RLH) +GNQ = (MFM, RQR) +TDJ = (XHL, SKD) +NSP = (HJS, FKT) +LND = (BJL, XGB) +LMT = (BVF, HSV) +XGT = (BMJ, QFT) +VDR = (FDS, STC) +QTM = (RFL, XFM) +SBT = (LXC, PDC) +BND = (KMC, SBN) +TSL = (RLB, RBC) +VQL = (GSX, DMT) +MBL = (SHL, DMV) +QTH = (PGP, PCN) +DNQ = (JFF, JKK) +HJS = (SMJ, CVT) +SPX = (SGT, NJM) +PSR = (SHD, PPH) +GCP = (SJD, MTN) +XHL = (GCL, TVN) +QDS = (BSN, GJM) +XNJ = (GMH, VLB) +JPL = (RTV, RJH) +QTF = (VKP, PJS) +NTS = (PTF, RGR) +KSK = (QHV, PVL) +TXP = (DTM, BPM) +GNV = (CXH, GRT) +NNJ = (NKQ, NKQ) +GJM = (PQG, QQQ) +PMH = (QSG, KRM) +NCJ = (PNV, JBB) +NHK = (SDF, GPC) +SHD = (LJR, RMN) +JNH = (XMB, JCQ) +BVG = (FKG, SNK) +KHH = (HBL, CTP) +MTN = (VFD, XTF) +LNM = (BTC, HRL) +NBT = (QFT, BMJ) +QKP = (DDS, RDP) +GXJ = (CGK, XQC) +JDJ = (JSF, SNH) +CVT = (RJD, SFB) +DVK = (FRV, LLS) +MXS = (NCF, DGB) +DQV = (PCM, HGH) +KLG = (GDQ, TXP) +RBC = (XCH, SRN) +HSV = (SRD, RPJ) +JQR = (TPD, CKS) +QPB = (MNQ, CSR) +BLJ = (RHP, LXK) +JQK = (XFM, RFL) +JBN = (XLS, TGJ) +JXK = (MHN, DHD) +QDV = (CSQ, KCG) +DHH = (PSS, JHN) +JPN = (XCN, LPB) +QQM = (TSL, MPM) +KRM = (DVT, HCF) +XVS = (TMP, RSC) +CLB = (XNP, XQQ) +TFS = (DJF, GGN) +DXZ = (FKK, LTC) +SXB = (NVV, XDT) +VKX = (DGH, KQK) +XJT = (VMV, CNS) +KSD = (JSN, BRL) +RML = (HQF, CLC) +TCV = (CKN, XVJ) +FLN = (HPB, VDR) +FDM = (SJL, KVX) +FMQ = (MNG, HKL) +NQV = (NBF, BND) +LPH = (FVN, XFS) +BQB = (KGN, BHX) +PTF = (LCC, FCV) +HLT = (PPH, SHD) +QJC = (NNJ, NNJ) +GTJ = (QXL, QVB) +XMB = (NDQ, JMD) +DCB = (HCD, MMV) +XLT = (BCS, PGG) +BDN = (QNX, BVT) +RDG = (JDD, CHM) +GGN = (TJF, XVS) +VRP = (DKM, KGF) +SSS = (CHQ, KLL) +GRT = (DLS, DND) +MGB = (GXJ, KPH) +HBQ = (PHK, BFS) +PXT = (SNC, SHB) +JLR = (SQN, BDN) +FQR = (LKD, SGB) +BSR = (GVN, QGT) +BFS = (SLX, JJX) +PPH = (RMN, LJR) +MNK = (NFS, VSL) +BVF = (SRD, RPJ) +CXK = (FDM, DBD) +KMN = (CSL, XMP) +VLB = (JRB, GQR) +NCD = (VQM, DMG) +DRN = (QKN, SSV) +MNG = (LDB, XDN) +XCT = (MCV, GFK) +QSR = (FCS, QDS) +QJB = (JQK, QTM) +DCP = (MCL, LNC) +PJS = (KTQ, TVF) +TTS = (TBT, QPB) +XNP = (BPB, GHL) +XKT = (HNS, LMD) +BGQ = (GPC, SDF) +QSX = (MCR, KMD) +JJF = (KVC, VFH) +NFH = (RRV, SVQ) +FKG = (DSB, DNG) +CSR = (SRF, DBB) +LLN = (TNM, DHP) +DKH = (JPL, HDX) +MNQ = (DBB, SRF) +TJN = (TRG, DRN) +TRG = (SSV, QKN) +DCN = (NFH, DFF) +QMK = (KPH, GXJ) +JFM = (VBP, HHN) +KJN = (DGH, KQK) +NVV = (KMN, THD) +HCF = (RRJ, PCB) +RSC = (MRX, LSN) +FSH = (CNF, HRP) +GDD = (GGN, DJF) +XCN = (LLT, KNJ) +NSS = (JKK, JFF) +GDX = (SNC, SHB) +CNP = (FKT, HJS) +DNG = (KJQ, KJK) +DJF = (TJF, XVS) +BLH = (PPS, FLN) +CCV = (DCB, HVH) +QKF = (NFH, DFF) +BSN = (PQG, QQQ) +FXK = (XLS, TGJ) +SQT = (JXP, PVX) +MQX = (NHG, XCG) +RDP = (CGX, TXB) +NFS = (FVK, HTN) +NSC = (RQQ, XFX) +HNS = (RFB, TFK) +HQK = (JDJ, FTV) +BDV = (NDB, TRV) +FKK = (JCN, PCK) +KVC = (RNF, MML) +LPL = (PNL, BSR) +NKF = (PDC, LXC) +NCC = (DKH, CQL) +VBP = (QNN, RSG) +LQS = (QMP, CJJ) +GSG = (BJJ, KHJ) +MML = (JRJ, TDJ) +QQF = (KVF, KVF) +SNJ = (VQM, DMG) +VFH = (RNF, MML) +SHL = (PDL, JKJ) +DGB = (BPT, QSX) +GJS = (KVP, NQK) +FMB = (PLJ, KXS) +DTM = (XVK, SXP) +TVS = (KMJ, CSJ) +KHJ = (JLB, XHS) +TBT = (MNQ, CSR) +XHS = (XDF, FBV) +QNX = (JJF, PVR) +QKT = (GQP, SHJ) +KPH = (CGK, XQC) +GHL = (XMC, FLF) +PCK = (HTB, RMF) +PGP = (CCV, TKQ) +XFM = (NSC, RCH) +HCG = (NTP, RVN) +LXG = (BDN, SQN) +KCL = (NNJ, NJL) +VMQ = (NFF, VFT) +DDK = (GDQ, TXP) +PCV = (QMK, MGB) +XKG = (JCG, LPH) +CKS = (QDJ, QQM) +LKR = (FTD, TCD) +MMV = (DQQ, QFN) +LXK = (JXJ, KLB) +PPQ = (RDG, DMJ) +JDQ = (QCX, KKK) +SRN = (MHB, DHH) +VSL = (FVK, HTN) +MHN = (DDC, FQK) +XDN = (HGN, JFM) +SRF = (BQB, CJV) +SHB = (HXP, TBG) +QTT = (GNQ, FCT) +PNV = (XLR, RKT) +JRJ = (SKD, XHL) +KKF = (JLD, DFG) +BCS = (QLH, PFQ) +KVP = (SGR, SDT) +XFN = (LPH, JCG) +LLS = (MCN, GJX) +XGM = (KTB, MCC) +JBB = (RKT, XLR) +GCL = (DHB, XKT) +RPJ = (HFK, DQV) +LLT = (GSK, CQP) +MQC = (HLL, RFT) +NHG = (TNT, JCT) +CDK = (PJS, VKP) +KNJ = (CQP, GSK) +MCR = (KSM, VBH) +BLF = (FNL, GGB) +QKB = (XPR, TQC) +XQC = (CLB, NPR) +MLX = (TCD, FTD) +XCG = (JCT, TNT) +FVL = (KQH, QKT) +VFT = (RBF, SDN) +JDS = (QHV, PVL) +QKG = (MKJ, SXB) +PDP = (LQS, CKD) +GXR = (BTR, DVK) +DTF = (MTT, NRD) +CJV = (KGN, BHX) +KSN = (PBJ, NLG) +SCB = (JSN, BRL) +DGX = (FVL, FSL) +BRD = (HLT, PSR) +HVQ = (NHG, XCG) +DSB = (KJQ, KJK) +DLS = (NNR, HDH) +JSN = (VTJ, RKM) +FVN = (MQX, HVQ) +FVX = (GNV, SJJ) +KJA = (XSN, LKF) +MGT = (XSN, LKF) +KDM = (FHD, CRQ) +VFB = (QTM, JQK) +SGT = (HQK, NPB) +XBB = (LKR, MLX) +BRL = (VTJ, RKM) +VRG = (CNG, CNG) +MKJ = (XDT, NVV) +QHV = (QTH, DFC) +MTT = (NMG, GTJ) +BPP = (SBP, DTF) +MCD = (SJD, MTN) +XCK = (MGT, KRZ) +NMF = (DBH, PJR) +QSG = (HCF, DVT) +PNL = (QGT, GVN) +LTM = (MQJ, KDM) +BFC = (VRG, SVF) +GFQ = (RHP, LXK) +XGB = (NHR, JMX) +BQP = (KDM, MQJ) +HSD = (JXP, PVX) +VLK = (MGT, MGT) +HRL = (PGM, LKS) +RMF = (QKP, PJB) +JKK = (JQD, BLV) +DVT = (PCB, RRJ) +BGA = (SGT, NJM) +CNS = (RHD, XGM) +MCC = (LFQ, NQT) +SKT = (GXR, GTV) +HSJ = (NTP, RVN) +FTS = (VRP, XVM) +BXN = (DDK, KLG) +MBR = (BRD, HRJ) +JND = (BKG, DTJ) +XVH = (CQL, DKH) +RFB = (NFC, HLM) +JDH = (PBJ, NLG) +PGM = (XBM, XBM) +VQM = (FFS, VMQ) +FQK = (JDS, KSK) +GBX = (MLX, LKR) +XDT = (THD, KMN) +KKK = (TLK, GPJ) +TQM = (VKX, KJN) +XTF = (JHR, PCV) +ZZZ = (SQT, HSD) +TVF = (KVM, CJQ) +FLF = (SGC, QKV) +LPB = (KNJ, LLT) +NPR = (XQQ, XNP) +HTN = (HBQ, NTF) +PFP = (KSD, SCB) +KVX = (NCJ, RJP) +KVF = (MQG, MQG) +PPM = (KSN, JDH) +PGG = (QLH, PFQ) +KHZ = (LTM, BQP) +SPB = (QSG, KRM) +SFB = (LLN, NQX) +SMJ = (SFB, RJD) +DHB = (LMD, HNS) +THM = (SNK, FKG) +PJH = (TRF, MLP) +NQT = (XNJ, DPM) +NBF = (KMC, SBN) +NLG = (LQX, HPQ) +SMX = (NKF, SBT) +KGF = (CTR, GQM) +HRZ = (RHX, KVQ) +TXB = (PMH, SPB) +MTF = (CKN, XVJ) +DBH = (RLL, DCP) +TLK = (CCK, SBH) +LCC = (SXG, VQL) +XCC = (HGL, FSB) +HCD = (QFN, DQQ) +DMT = (CXK, RFK) +VFN = (GDD, TFS) +NCK = (HJD, TCR) +QQR = (HBL, CTP) +PSP = (KVF, GBQ) +DBD = (KVX, SJL) +DKR = (DTF, SBP) +BFQ = (CHQ, KLL) +PHR = (KCG, CSQ) +FBS = (BTC, HRL) +SVQ = (LQV, KKF) +MVM = (SPX, SPX) +SJD = (XTF, VFD) +HJX = (TRF, MLP) +JRV = (GKH, KHZ) +JMD = (PFP, RRH) +KJK = (XGT, NBT) +NQN = (XCN, LPB) +PLJ = (MGQ, SKV) +VQX = (MTC, RTR) +LDB = (HGN, JFM) +CPK = (NGM, JXT) +RHX = (NCC, XVH) +LXM = (TBX, FXS) +QJK = (BPP, DKR) +PBJ = (HPQ, LQX) +STC = (BSL, TVS) +RCH = (XFX, RQQ) +FVQ = (VQX, RLH) +MHK = (MVM, MVM) +BBF = (FLN, PPS) +GVB = (LNS, MBL) +HJD = (FVX, KSH) +PCN = (TKQ, CCV) +QMP = (DCR, NCK) +MVH = (QKG, PFG) +HBL = (SKC, GJS) +PBL = (RFT, HLL) +RLX = (LNS, MBL) +CLL = (HGL, FSB) +QKM = (PXT, GDX) +JCG = (FVN, XFS) +JXP = (VFB, QJB) +KSM = (NMP, RML) +SHJ = (XMR, QJK) +KFD = (MBQ, CVG) +RTR = (MVH, RFH) +MDS = (QTT, LRR) +HVH = (HCD, MMV) +FDS = (BSL, TVS) +KRZ = (LKF, XSN) +JXJ = (PBL, MQC) +MLP = (TMB, JGN) +PLL = (JVR, BDV) +XVJ = (HCG, HSJ) +CQX = (QQR, KHH) +KVQ = (NCC, XVH) +AAA = (HSD, SQT) +FDX = (VRG, VRG) +JBG = (BFQ, SSS) +SLX = (VRM, RJK) +PCB = (GLS, FTT) +XCH = (DHH, MHB) +MTC = (RFH, MVH) +QQQ = (QQF, PSP) +TNM = (JJP, CPK) +DBB = (CJV, BQB) +GVN = (QPQ, TKR) +TCD = (CDK, QTF) +GSK = (FTS, BTF) +RJP = (JBB, PNV) +JCN = (HTB, RMF) +NJH = (LDP, XQD) +BPM = (SXP, XVK) +RNF = (TDJ, JRJ) +GTV = (DVK, BTR) +GJX = (DMR, PPM) +VVQ = (LRR, QTT) +SQN = (QNX, BVT) +DTJ = (JPN, NQN) +DPM = (VLB, GMH) +CBF = (TQC, XPR) +MXR = (VLK, XCK) +JFQ = (BJJ, KHJ) +PFG = (SXB, MKJ) +SVF = (CNG, DXZ) +GDQ = (BPM, DTM) +QPQ = (FXK, JBN) +SNH = (RRF, LMT) +MPB = (KXS, PLJ) +CMJ = (TTM, FTK) +GQR = (XJC, LND) +QGT = (TKR, QPQ) +TTM = (MBS, GJD) +THD = (XMP, CSL) +FTK = (GJD, MBS) +RRV = (KKF, LQV) +XMP = (QKF, DCN) +CBL = (MNK, PVM) +MQG = (KVQ, RHX) +LTA = (LTC, FKK) +SXG = (GSX, DMT) +CSC = (BDV, JVR) +MCN = (DMR, PPM) +CQP = (BTF, FTS) +BPT = (MCR, KMD) +RFH = (PFG, QKG) +GBQ = (MQG, HRZ) +RHP = (JXJ, KLB) +HSZ = (NJM, SGT) +VFD = (PCV, JHR) +CSQ = (NDD, TTS) +VCC = (BFQ, SSS) +JLD = (QKB, CBF) +BMH = (PPQ, RMS) +SJH = (BLJ, GFQ) +NNP = (GTS, VFN) +LTC = (PCK, JCN) +FVK = (NTF, HBQ) +RRH = (KSD, SCB) +CXH = (DLS, DND) +QCX = (TLK, GPJ) +CGK = (CLB, NPR) +FHD = (CBD, XQP) +NQK = (SDT, SGR) +JLB = (FBV, XDF) +LRR = (FCT, GNQ) +CLQ = (VKX, KJN) +TFK = (HLM, NFC) +KTQ = (CJQ, KVM) +RFK = (DBD, FDM) +NRD = (GTJ, NMG) +LMD = (TFK, RFB) +HPQ = (LTV, SJH) +TMF = (FSL, FVL) +SBN = (PHR, QDV) +DMG = (FFS, VMQ) +TCR = (KSH, FVX) +RSM = (CVG, MBQ) +RKM = (QJC, KCL) +RKK = (FDX, BFC) +BJL = (JMX, NHR) +NJA = (KVQ, RHX) +DMV = (PDL, JKJ) +PDC = (MVD, NTS) +CNF = (RLG, FQR) +CLC = (XFN, XKG) +HDH = (CLL, XCC) +GPT = (XCT, HKK) +NHR = (GVB, RLX) +LFQ = (DPM, XNJ) +NPB = (FTV, JDJ) +DDC = (KSK, JDS) +BSL = (CSJ, KMJ) +GPJ = (SBH, CCK) +SJL = (RJP, NCJ) +DHP = (JJP, CPK) +FXS = (THM, BVG) +KQH = (SHJ, GQP) +XVK = (JND, JMQ) +SJJ = (GRT, CXH) +CTP = (SKC, GJS) +RVN = (FVP, RKK) +BTC = (PGM, PGM) +FRV = (MCN, GJX) +NJM = (NPB, HQK) +MBQ = (JXK, HDC) +FBQ = (VFN, GTS) +XQQ = (GHL, BPB) +XFS = (HVQ, MQX) +SNK = (DSB, DNG) +TMP = (LSN, MRX) +PPS = (VDR, HPB) +QKV = (DGX, TMF) +GPC = (BBF, BLH) +XPR = (RSM, KFD) +KCT = (TBX, FXS) +GTS = (GDD, TFS) +FVP = (FDX, FDX) +NGM = (NRM, NRM) +MCV = (LXM, KCT) +GGB = (DSQ, TBB) +FTV = (JSF, SNH) +BLV = (CBR, BLF) +QVB = (HJX, PJH) +FNL = (DSQ, TBB) +MPM = (RBC, RLB) +JHR = (MGB, QMK) +RQQ = (PLL, CSC) +DCR = (TCR, HJD) diff --git a/2023/in/day08.ref b/2023/in/day08.ref new file mode 100644 index 0000000..5b3fa58 --- /dev/null +++ b/2023/in/day08.ref @@ -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) |
