From c71ca99eaa193461342b4c9d68f7f3b16b9eae44 Mon Sep 17 00:00:00 2001 From: Tyler Hallada Date: Sun, 8 Dec 2019 01:42:29 -0500 Subject: [PATCH] Completed day 6 part 1 --- day6/Cargo.lock | 6 + day6/Cargo.toml | 9 + day6/input/input.txt | 1778 ++++++++++++++++++++++++++++++++++++++++++ day6/input/test.txt | 11 + day6/src/main.rs | 106 +++ 5 files changed, 1910 insertions(+) create mode 100644 day6/Cargo.lock create mode 100644 day6/Cargo.toml create mode 100644 day6/input/input.txt create mode 100644 day6/input/test.txt create mode 100644 day6/src/main.rs diff --git a/day6/Cargo.lock b/day6/Cargo.lock new file mode 100644 index 0000000..6c022ed --- /dev/null +++ b/day6/Cargo.lock @@ -0,0 +1,6 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "day6" +version = "0.1.0" + diff --git a/day6/Cargo.toml b/day6/Cargo.toml new file mode 100644 index 0000000..5a5824a --- /dev/null +++ b/day6/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "day6" +version = "0.1.0" +authors = ["Tyler Hallada "] +edition = "2018" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/day6/input/input.txt b/day6/input/input.txt new file mode 100644 index 0000000..a73b313 --- /dev/null +++ b/day6/input/input.txt @@ -0,0 +1,1778 @@ +KWT)W4F +TKX)NX9 +4K2)BRZ +6FT)G8R +F83)5PC +DRJ)8DZ +89K)VFY +2BT)1M5 +19Z)DRJ +YVX)S7H +7L1)PVG +NSS)GJ8 +XTK)85X +63D)V7T +RTP)D27 +1JM)VV1 +9KT)3F7 +K9C)X1S +VS3)FSR +9N5)5LX +C4F)KP1 +WNX)YG3 +FXY)2ND +VGF)Y7M +BTD)4VJ +JSC)H7Q +VL5)1RW +8PL)FMY +D27)KYC +M71)CB3 +93X)Y2S +KVH)65Z +PQJ)D6D +RVD)FVL +SF3)3L5 +G6V)HYT +2SY)PS2 +D9S)TKX +G1W)K7C +GD5)KL6 +F1V)HLT +Z2D)DTP +TXT)2TZ +DGM)4L7 +91Z)4R4 +165)LSN +LZN)MW4 +Y5C)3YZ +6YW)BL6 +P31)NV9 +JB2)5LJ +DFJ)5LV +STY)GP6 +9H4)7ND +16L)8VF +4BF)YRT +DWS)GWQ +ZDY)X5S +P5X)FH1 +WQ6)KNC +PLQ)P7H +PVG)4HL +21F)TR7 +GKD)HZR +TR9)DDC +C46)23G +24H)WDX +XP7)Y3L +WSK)P2M +YM4)7DN +R9L)J3H +2LB)G5L +SPM)NVJ +KFM)TXT +C9H)HPL +WGN)9VZ +WFZ)7JR +SNF)BJG +WTF)3KX +HG9)HHG +Q2R)535 +513)49V +9X6)X8G +ZDM)C67 +ZKL)H8W +CXH)DKQ +DDF)XT5 +XPG)CC8 +119)7RG +8J2)D8Q +Y3S)BSP +Q9W)PKR +BVJ)BP2 +G9S)SPM +7KP)RVW +RRT)ZZH +T14)1YX +N1S)22L +YVT)TLC +DWS)W5Q +CWG)M3P +HX2)GBG +HWP)JCH +Y83)7GW +5V5)RQV +NWQ)1XC +KW2)K27 +9B5)WT4 +MT6)2LD +J96)BSF +FMH)8JC +TL6)2HP +G8D)K7T +QBX)ZNV +STY)VQ8 +3YJ)TRP +KFM)67Q +PKR)8KL +9XQ)YXW +X4K)59D +Z4W)FGS +MT7)NG6 +X3H)2FW +4VJ)Q5M +4QG)846 +QJC)Y1L +46N)Y3S +KKQ)84B +V18)47B +2QL)VKN +662)JV4 +FP7)1XP +KFX)GZV +1D3)XDX +DTP)V8R +P96)FTY +CZ7)FXL +CST)9HD +WY6)NQ3 +8VN)5C2 +XGG)T9C +L83)RZ7 +ZP7)CP5 +C6V)S56 +MNK)R53 +5BH)ZJ6 +BLT)683 +H2H)2JS +QNF)8W1 +3QD)84Y +NG6)238 +QKY)HHD +5MY)1MR +419)HGT +7TY)VYV +TC5)2KB +VGH)65G +4VL)VHX +6XH)PMQ +BWP)6K3 +HB9)G88 +MCF)YPC +PBN)TK7 +BMS)4X2 +6K2)PLK +3ST)RBF +5VP)F16 +7GW)LWH +9Q8)MLW +JH8)S4Z +CQ4)TC2 +2KG)55W +DV1)F6D +WP1)123 +SGL)WL1 +N5P)6JJ +1M5)YK2 +NPN)QRN +B1Z)PRH +WLP)SGC +7BC)H5W +S4T)19Q +RBH)XQZ +79H)NT9 +BP2)2VW +FQD)6Y7 +65G)LT4 +Q3G)1JY +Q68)5QQ +LGW)QVZ +W2K)C4Z +F87)S97 +SFQ)XPG +6W3)NFG +ZK8)2R2 +HZR)N4B +ZNV)GFB +QKG)XQ7 +XQT)F8X +BX2)P4D +5LX)D1B +LXT)M8W +85X)S82 +X2G)TMB +2LX)MVG +9X3)ZDH +NM3)Q2R +XVS)GBV +BWP)Z66 +YKR)NWR +1JY)44H +919)JKS +FWK)YVX +YTM)MQB +SX9)B94 +R3W)QBX +9PN)XPX +FTY)MVK +2KQ)CNW +Z5J)W31 +GBV)QFT +QZB)62Y +BT3)4BK +3F7)QKQ +9HD)7MJ +NPP)92Q +JWV)RMV +XZT)SBD +1XF)PNB +LB5)ZSX +2YQ)TBQ +KPQ)M65 +DRJ)5ZS +3QL)3RG +LZL)N9C +PJM)89K +F5R)NFF +PNB)2BT +MZX)NBF +DBW)WL4 +WYK)NRK +C4Z)SD7 +7M8)1HF +VCK)MFG +9W9)BXJ +P2B)7T7 +5JL)FRT +QKQ)GVS +Q6S)D9S +6SC)VG2 +4FH)TW4 +JBL)ZG1 +QP8)DTX +M65)DV1 +H54)LQ3 +L1C)64K +MVK)HB9 +TJD)ZP3 +QL7)5RG +QWK)YTT +LQY)CHG +5BG)12J +1HF)Q99 +ZJ6)Q5V +1MR)6TP +SVJ)T4Y +PRD)BXP +1F9)GFJ +X1S)9H6 +RC1)CMZ +Y1S)KLK +WPB)G95 +XLL)BQB +HGV)PQG +VLJ)7L1 +MQB)3ND +4SM)6MX +F53)919 +WV6)XC4 +4H5)RZB +3Y7)YX6 +PTX)D1M +PGY)YPM +C7P)G1W +HWW)S1T +4VJ)N9Z +51X)Y83 +LS4)WDS +54Y)R8L +2W8)M95 +G4B)814 +277)41P +MJL)58Q +6K3)SGK +Z5T)QLH +HZL)W5S +N5X)7NZ +34K)W6F +7J9)1N1 +P4D)MY2 +QHH)Q6S +D8V)Z94 +N13)QJR +X5S)XCS +VMK)6WF +W6D)YXG +LM5)YSB +4MR)J2F +FQC)N64 +5MZ)1MZ +89Z)B16 +WGM)46N +HHV)5HF +GH1)4Y8 +BD7)2LB +LBB)6XH +272)P8J +CLB)YQT +9W5)VKK +8MH)X3F +S36)HDD +LYM)NCH +1JK)55M +432)8M2 +4YQ)PQ7 +JJF)WY6 +SVM)PLB +ZNV)5BS +XCS)7ZY +S56)TQD +FMX)MZB +KMH)GHG +1XP)R9L +42L)YW3 +R4P)Z8W +HQD)3J1 +BYP)7FJ +TTQ)9N5 +H4M)NWB +DSN)1FF +3R8)73M +RQH)Y9B +8PY)GD5 +DCC)JMN +S4Z)2MR +VQX)F2R +TL6)22K +8DD)Y25 +R1Y)KBT +PMQ)6PR +8NZ)YOU +ZG1)9YR +Y17)TG5 +NFG)GJ6 +8YD)X4M +VCK)C6F +Q5X)SPH +23V)C9H +YJV)X3H +QCC)KQW +G8R)Z9V +429)DH4 +L1W)RKK +PP3)BJX +BRB)DFD +RXQ)7L9 +62K)3VC +93J)KQ2 +WT4)DVP +VWZ)4SM +8TK)32R +271)SFV +C67)4RS +LKT)SX9 +G5Y)DPG +G4M)XDM +ZSX)MG2 +W3X)589 +YP7)2QL +XCD)8Q8 +T9Z)V1P +L33)LY3 +H9K)NKC +MPR)QXD +6BD)V5Q +MXX)1DV +MMT)J1T +N64)FNK +TQD)JBZ +H5W)YYS +8SL)LFR +VZP)DW5 +ZBW)F1V +CK9)FXS +TY9)TQ2 +NWR)TY3 +6WF)4S1 +QGY)9RF +R39)MHJ +19H)HGV +NS2)N13 +8Y5)HT5 +QG3)1MG +HYT)S26 +72X)HSX +CQ7)5Q4 +2KL)5HD +D8Q)RFH +KNJ)YDV +PQ7)WVW +CBH)Y64 +4WS)8R5 +TW4)LGW +X37)S7J +KH2)HYF +RFY)L76 +DNK)GWF +HW9)ZKL +LLD)8QF +4L7)662 +MG2)YMK +GFQ)24H +123)Y8L +LPD)7MZ +5PC)112 +ZZW)6BD +L4L)KV5 +VFY)DDF +Y1D)4BF +3H1)R7V +DKQ)S3W +TXZ)TTQ +4KZ)DSN +8R5)HGW +4XR)8C7 +DDY)QQD +GRQ)P3P +YN8)MLK +Y1L)K77 +Z6F)G87 +4F1)WP1 +3RN)2MJ +GFJ)NM4 +P2M)C38 +MPY)QJC +3H2)DZ2 +SBW)JPD +PWZ)B1J +6R4)MC6 +Z94)191 +BLB)J96 +N8P)L1W +JQC)C11 +RBQ)QFD +4PL)KPQ +C3V)4Z1 +J2M)LZN +GXL)B1Z +63B)QX2 +WYD)KDC +FLB)RG7 +DYS)26Z +L7Q)9W5 +DN7)ZBW +18W)H2H +CHN)V4L +ZMG)GKD +XC4)L91 +DKQ)6RJ +V2B)93X +77K)TD6 +Y8L)GYD +PDM)BGW +CXJ)2YQ +RTT)7J4 +1TL)CXH +NL4)XLL +9NJ)RGB +NX9)PYQ +2DL)S36 +L9N)KPC +JJ8)VGH +58Q)8M4 +12J)MXR +1BG)2W8 +9N9)9LV +TDD)NL4 +46G)8Z6 +112)KZ1 +WF7)19Z +H2S)CSJ +CNL)1ZK +FVD)D5R +V8R)H9K +11G)CCJ +K27)DYS +2JS)RP2 +Y64)ZTY +22L)BMS +N9T)MFH +VKC)Z4J +T6R)B1D +TG8)HHK +GJ6)MT7 +J7F)1L7 +CV7)WMC +47Q)DNP +M13)9BL +DYF)VFQ +LBP)NPD +7KR)72X +7MJ)GP1 +TD6)122 +3W8)KSK +QJR)J9G +5PK)MMT +YPM)K1D +Y5Y)DN7 +1XC)PLQ +PHG)FLB +7NZ)DWS +F6V)L7Q +RQV)YP7 +8V6)X39 +H7Q)PQJ +NR6)L4L +B94)W9G +3KG)P2B +XDS)4TX +6RQ)LWK +WBW)63D +9NW)P7S +YHL)3SK +S7G)8P3 +VYV)KCC +W5S)3XT +5C2)Q2Y +PWP)7BL +35W)MPP +8DJ)5C1 +H9T)P9C +KCC)Y93 +6YW)4N1 +PZN)8PK +LWH)Z2S +2V6)TPH +PMC)NPW +C4F)MXX +P1J)1M6 +CNY)QSZ +KPS)CNY +V2N)KPD +NLW)6DY +SNF)QJX +71H)MPR +TNR)KBJ +DZW)3VW +9YM)F9T +QBS)4P4 +MGS)WZR +1T8)F42 +C6F)R1Y +QW6)253 +8PK)79J +S7J)KNJ +1YX)CGG +NFY)8SN +CZK)YZ9 +6QJ)5LK +J9M)3JX +RDX)WDZ +T2G)7M8 +43S)QGY +DDC)JFC +HM4)QLV +1FT)1TL +XDX)SYG +4QS)HW9 +24H)CHM +NS9)3KG +STW)52W +9RF)H89 +G75)142 +WDZ)SJQ +599)GD6 +919)JD4 +FRT)HZ7 +JB2)NCV +V1P)V2B +22J)1F6 +K53)HT8 +V2T)JJ8 +2CJ)111 +GLD)FDK +5SG)1KF +KQW)8TR +5PK)DBF +4P4)8PY +PP3)DBW +XDQ)2KQ +4GY)KMG +DPY)GTY +N8P)QP1 +4TX)HWP +6GY)PF4 +SGC)Z5J +6MS)TXZ +T77)L2Y +2D4)2CJ +J7R)165 +CDJ)LXT +3YZ)QW8 +3FK)5ZW +HSZ)1CN +CNY)5VP +ZVK)3FX +XS4)CTN +XBD)7YV +D1M)9VP +3X7)Q3G +LD5)VFM +QVZ)HB3 +F65)2HZ +2ZH)5PB +SLX)QNF +QD8)MNK +JPG)SL8 +Z2S)TKZ +61N)QD8 +GWF)F53 +V69)4VL +1DV)D43 +6LR)DGM +CJL)CXJ +HWY)5SG +WQ6)LK1 +YQV)W1L +WH5)MB2 +RVW)KFM +CHM)SLX +2KB)HWW +H5N)7J9 +MP8)7RB +3TL)JSC +MXR)P54 +CXL)LD5 +TC2)D87 +XRR)WRG +T5C)47K +J4N)CYS +945)79H +Y9B)YKZ +W6W)M71 +VGF)NPY +JKS)P48 +ZDF)FTK +RMD)BZ8 +4K2)W6D +GD5)98Q +6RJ)TFM +BVZ)T64 +142)LQY +WVW)FF1 +7BL)7R7 +Y71)NPN +B7R)97R +Y8V)XS4 +94R)6RQ +1MG)KVH +H3C)97J +BL6)2KL +LNW)VSR +3F4)WQ6 +53B)7XH +873)LGT +WLY)L6D +V88)8V6 +RG7)16N +238)JPY +JJ1)6KF +J1T)PBN +DK7)QH9 +V7T)75D +YPM)D15 +C2G)K9C +3QL)R6N +F6D)NXF +H8P)5V5 +R7V)QSQ +LK1)RG8 +YYS)DYF +DPG)LPD +589)DZQ +2HZ)3WY +WCD)1RP +VGX)2KS +GK5)NS2 +T5C)THM +LCP)LFF +FF1)QDM +QP1)VPH +JG9)71H +FDK)YD8 +D5R)3RN +CP5)X2G +9VP)ZDY +L65)1B3 +2BY)L8T +YZ9)L53 +2MR)1BW +PJM)VK7 +CKH)7B6 +MRD)9B5 +X46)VH5 +8P3)MCF +W5Q)RZM +KV7)CXL +4V6)21R +5Q4)CHN +B16)G9S +PS2)KFG +HT5)J9M +4TX)9D3 +S2J)T5C +59Q)SYR +7J4)Y8D +1CN)94R +ZV2)5M2 +6JJ)SCD +PPH)1JK +44H)CKH +TFM)YCW +7FJ)277 +TX7)JRM +WL4)6VB +22K)JJ1 +PYQ)TKJ +NYJ)PPT +C2F)8H5 +RBF)CL9 +8BB)Q1C +YSV)L93 +GR6)4H5 +TWH)659 +PQ6)9NJ +J2M)TG8 +1MR)ZJZ +VW3)PPY +P7H)JB2 +Z8W)ZDF +BZ8)6W3 +5MG)DQ3 +FXS)4KZ +TKZ)M41 +TB5)H54 +QM2)54Y +B1J)5D7 +FNK)H99 +4QG)NLP +YTT)5JL +713)Y72 +YCW)4YM +X21)N87 +MPP)HL9 +LT4)GNP +1MJ)SM1 +NWB)W4M +RT5)TTD +97J)C95 +5PB)PX5 +CJV)WNX +6JG)734 +9VZ)NQJ +4HF)YQX +VFM)SKQ +1JC)NYJ +7RG)6BS +9KT)1GZ +5HF)HCW +9CB)VQX +2XV)JWF +QN3)FNG +1N1)NSS +PQ6)14Y +DH4)6SC +DNK)GXL +45N)KFX +846)WGM +443)PQ6 +XZM)9PN +SGC)233 +YGJ)HQD +1BW)Q5X +WV9)BSL +BMR)MSW +6BF)81L +19Q)QM2 +JX4)XP7 +17G)KPY +5C1)16L +JG2)DK8 +R53)Y4H +S1T)9H4 +ZHP)3F4 +2FP)NC6 +QG3)6MW +6DY)NJ9 +4L6)D8V +PWH)SBW +8YK)5HX +KW7)4GQ +SW7)2D4 +7P1)JG9 +ZTT)ZPR +GVS)HKG +Y71)WHJ +1GZ)X46 +QDM)FBM +NX6)MPY +NGB)2DL +6JG)279 +T5H)RHT +6S4)9PQ +NWW)2ZH +P5X)X21 +W3Z)BLB +PLB)XTK +QSQ)LYY +NWB)ZV2 +2R2)ZVK +7XP)KXY +PPT)P2L +LW1)J3X +PWP)61N +9VX)Z16 +VPH)Z6S +G9S)V88 +PR2)ZHQ +2N4)YPY +HGW)599 +Z5Z)RC1 +9N5)CW7 +726)3ST +3SK)5MZ +BKR)TWB +5Y4)YHR +CWY)52X +21R)V2N +ML8)P1J +G4F)6YW +F1V)18W +VL5)FVY +XDS)BF9 +NT9)W2Z +17W)M7J +1NJ)862 +RBF)V2T +KTL)VZP +71F)XVS +CYS)T46 +9TY)ZDM +R4M)Y1D +64K)WX7 +S3W)XBV +1Q3)8DD +H3V)454 +HL9)8XN +KBJ)T9Z +RSF)L38 +819)JT2 +TK7)MTZ +VK7)HK3 +HVJ)KV7 +VBJ)WH5 +NQ3)DK7 +YXW)FZ1 +7R7)8HY +5M6)S4T +77D)4DC +8Q8)DKN +GKL)GRQ +FZ1)CDJ +LQ3)YX5 +HG3)2XK +1B3)Y8V +QW8)4QS +GD8)6KB +JWF)YVT +2FW)63R +NPS)97X +MLW)CWG +63R)WT2 +L66)W2K +BJX)TXW +TC5)L65 +GBV)KN7 +1RP)YN3 +PX5)NW1 +X39)GN6 +DJQ)7QS +TNR)XBX +QFT)9KT +7L9)SNM +XT5)MK1 +31D)X7Y +NX6)26R +24S)YSV +DZQ)TX7 +F48)4V6 +L21)9HC +MVB)5X5 +KQ2)6XW +Y7D)5G4 +2XK)PPH +3XV)WB7 +H99)TFK +YXG)TL2 +9BL)JPG +L6D)D39 +SYG)FQC +2ND)T2G +9X4)8WS +3KX)Y81 +7M9)MJK +KXY)P8Z +454)9Q8 +LT2)TDV +FVW)FJ5 +TF7)9PH +RHT)6BF +MPY)YS9 +NSS)J5N +Y8X)JBQ +HHG)4YQ +G88)DX7 +1H9)R25 +RZ7)LH1 +NV9)55X +8DZ)RVD +4KW)TR9 +Y9G)QDK +J2C)DJQ +VLB)CCX +H8W)PDM +HHD)5Y4 +M9T)Z4W +26R)9CB +B1D)BXX +YWH)CXG +TDK)JGY +LH1)Y71 +49V)FXC +NRC)BD7 +N4B)L83 +253)G4B +V5J)19H +GLD)JQC +73M)5FV +HQ3)YHL +T46)2NS +CW7)2YD +HMB)QG3 +DNP)RDX +ZS8)BXK +91G)HVJ +62M)8VN +2VW)PWZ +39H)CBH +Z6W)6HQ +G95)SHK +1FF)DX9 +8HY)8PL +8RK)3FV +9G5)ZHP +B24)XZ5 +YSB)NWW +GVQ)H36 +YDV)JJF +RBB)45N +KJK)NX6 +16N)LYM +3VC)17W +XYN)CJV +JBZ)7KB +NM4)YKR +GYD)91Z +FNG)YJV +RZM)TS9 +MSW)7BH +NPY)VQZ +NCZ)BKM +8H5)C48 +CL4)7S3 +6PR)71M +PLK)2FP +TXW)713 +NC6)6TM +VYZ)XHS +WB7)CWY +WX7)WF8 +ZD8)726 +KS5)QXZ +YDW)BVZ +KNC)THZ +GWQ)GH4 +9DF)LQB +J3H)QHC +1ZJ)WFZ +WT2)CFW +X7Y)9MV +GD6)H9R +C64)GVQ +P2L)KWT +K53)JBL +7T7)9NW +RD5)1MJ +TKJ)82P +MW4)2DD +KVH)WF7 +MFH)3QL +BF9)L34 +CXJ)87W +CPS)Z4L +959)38Z +Y3L)L7R +2YD)T6R +NL3)BLT +68C)13Y +SGM)N5P +J2F)SAN +Z4J)RXQ +6BS)PWH +3Y7)31K +58B)9N9 +DTP)C7P +38Z)1D3 +5DV)Q26 +C95)LM5 +QSQ)KPS +SJQ)QHH +8QF)7M9 +4DC)4MR +LSN)H5Q +Z83)N11 +R4G)6MS +BP2)4QG +47K)PWP +F3L)2LM +MB3)BRB +PPY)DLQ +K1D)DZW +DLQ)S4K +8C7)DPZ +GN6)3TL +Q57)3FT +Q99)63B +ZHQ)MGS +59D)PHG +111)LT2 +JGY)V69 +BGW)4PL +HT5)11G +PX8)HM4 +CGG)5PK +DDF)2SY +ZZH)RZ3 +1LW)SGM +S7G)RT5 +YQF)LB5 +GP6)8MH +7ND)B5L +Z66)2C6 +N1C)DFJ +6ZY)VS3 +P45)5F8 +V4L)PRD +Q56)JX4 +5HX)RSF +FJ5)7CW +HK8)1CZ +LFF)5CB +HT8)8DJ +Z6S)QKY +GHG)KFD +C3C)4K2 +K7T)5NQ +7MZ)P5X +3Q2)K72 +MB2)N1S +ZJZ)DYY +YG3)LYL +T1Y)JSP +FHZ)KR6 +G5Y)6PF +NPW)745 +ZBP)CPC +3RG)4QJ +HSX)85G +TTD)P45 +RZB)4DS +Y4H)478 +Q5M)9GK +G5L)ZJP +FXL)WLY +8G6)C2G +X9R)YQ9 +FMY)1NJ +VH5)77D +PF4)CQ7 +FVY)TWH +535)77K +F9Q)FXY +SBD)L4W +QCM)V5J +M42)XMH +77K)R3W +WL1)CL4 +RFH)XCL +3MV)HMB +X96)9HT +32R)KW7 +J5N)1T8 +GJG)C64 +P2B)J2M +13Y)ZZW +TDK)3H1 +X7L)4J9 +BQB)1DJ +PN4)FMH +TL3)1LW +23S)Z83 +J34)3X7 +4QJ)Q68 +DHD)QTM +9FX)PNN +CT5)HG9 +CB3)16K +N9Z)6J3 +SXJ)1LL +JSW)ZS8 +BXP)1H6 +BSL)9X4 +5N1)NFH +K77)WYN +443)4L6 +8ND)2R8 +6J3)HHV +W7Z)272 +L83)WTF +R3C)8ND +6RH)2KG +48Z)5P9 +41P)46G +4VL)8V9 +5F8)CZK +Q1C)K84 +CJL)X37 +XQ7)GR8 +846)429 +5ZS)9G5 +5BS)PMC +F42)419 +47B)G4F +BJ7)8Y5 +SYR)T1Y +CMZ)3FS +K7C)432 +763)1BD +FBM)F83 +MMV)WPB +RKK)D7R +HDD)6R4 +GRQ)MRD +H3J)RPL +W4M)GQQ +RYB)5BG +5LK)VLB +NVJ)SW7 +CBH)QXM +W2Z)NPS +Y8D)J4N +5QQ)5KF +KV5)17G +YKZ)6RH +SPH)WGN +5RD)VKZ +7KB)WCD +L53)R3C +C38)JG2 +JPY)DHD +3ND)53B +HJG)B7R +GH4)GSJ +Y44)24S +Y81)3W8 +4P1)3Q2 +F9T)873 +3GQ)8J2 +Z39)MJL +GQQ)9X6 +QSY)ZZX +HH4)JWV +6J6)8SL +H9R)Y1S +P8Z)SFQ +8JC)ZBP +M41)59Q +2MC)9YM +454)F4G +NBF)V18 +H2P)PXB +7NZ)47M +TQ2)PJM +1BD)FMX +233)Y5C +5HF)SF3 +J3Q)CST +8KL)JH8 +84B)P96 +2KS)3R8 +8V2)C2F +5ZW)P6C +YBR)JTN +XQZ)YGJ +5X7)CNV +31X)7FF +8MH)D93 +JBQ)G4M +YMK)TF7 +279)QWK +KFD)YJJ +T2M)PGY +M8W)HZL +31K)VLH +RGB)VTV +TLC)RR7 +JTR)XCD +BLT)CP9 +R6N)4WS +HCP)Z39 +Q26)HCP +8V9)G4S +1H6)X96 +D7R)TFC +WKM)LBB +WHJ)MGR +JPD)KST +5KF)C46 +W1J)XJ8 +JHP)NDJ +P6C)BX2 +NFF)QBS +P9K)KWF +YS9)W7Z +GTY)CT5 +QRN)6JG +RR7)NFQ +Q2Y)WKM +5D7)1BG +JCH)ZCK +NFQ)D3N +N8T)FP7 +JRM)763 +2B6)453 +71V)4P1 +CNW)513 +8X2)HH4 +QTQ)G6V +KPY)RBH +VKZ)CNL +4YM)QZB +SHJ)ZS3 +HGT)HZ8 +K9Z)2V6 +41V)H2S +TP3)6Q6 +MVG)WV6 +1F6)Y49 +W31)4HF +KKQ)BJ7 +TRT)HJG +QXM)TJD +JV4)34K +DZ2)B24 +MGR)QKG +KN7)XBD +BXL)KKL +TG5)YWH +ZJP)RBQ +R4V)T2M +DR3)N8P +KL6)R4G +K7T)VMK +3J1)G8D +RMV)443 +451)PR2 +4D3)Z6W +TY3)75X +J2D)3YJ +WDS)3X2 +PG8)271 +S1N)YCX +M95)CCM +NJ9)Y92 +VTV)6K2 +KNM)9JN +82P)RTT +8J7)31D +4J9)MP8 +4RS)89Z +RDK)DPY +745)RTP +XM7)NPP +QLV)4H2 +VQZ)BWP +9DR)XTY +Y92)819 +FTK)NQT +67Q)NGB +8VF)TL3 +9TY)KW2 +NW1)LCP +VLH)W2L +BXJ)22J +CCM)XPT +VRH)R84 +6MW)X7L +3L5)MT6 +2C6)Z2D +LWK)4FY +RVP)SS6 +8XN)TL6 +FSR)5MY +NKC)51L +M42)RQH +SJ2)BMR +ZS3)L66 +KMG)5MG +SPH)DR3 +D6T)2LX +JT2)H4M +8TR)VW3 +ZTY)4XR +QXZ)8X2 +VHX)DNK +7JR)338 +P9C)ZQV +QJX)2MC +79J)1ZJ +5M2)9B7 +QX2)TP3 +14N)JM4 +GZV)6LR +KKL)XM5 +THZ)FD6 +7QS)H2P +9H6)VLJ +WZR)3QC +S97)31X +5C1)LNW +WYN)SVM +4X2)C57 +4GQ)D6T +XN8)QSY +26Z)QW6 +X8G)62K +XHS)L33 +KTY)F65 +LXT)F9Q +CP9)NCZ +YCX)WBW +NFQ)4X4 +CCM)X27 +TWB)91G +MFG)KH2 +VKN)3XV +XBV)SJ2 +P8J)V7V +P3P)CPS +G7B)8NZ +FCH)KQP +ZCK)HK8 +FQV)6QJ +F8X)4XK +8SQ)3GQ +2HZ)K5V +JWR)F3L +GYD)LZL +VSG)T14 +34K)PTX +4WS)VCK +H89)RG4 +S1T)Q56 +XX2)Z5T +H5P)LCG +PQ7)RRT +CNV)YGQ +6DY)M13 +F16)6TJ +HB3)QL7 +LB9)KKQ +HPL)XN8 +XPX)6Q1 +2Y7)3QD +MLK)4KW +GFZ)WSK +8SN)GR6 +6TM)4D3 +3FV)G5Y +PNZ)QK1 +ZMG)882 +MJK)9X3 +QTM)FQV +453)N5V +P54)MVB +MTZ)9VX +KV3)SHJ +HZ8)MY9 +4FY)959 +C48)M42 +882)9DR +55M)NL3 +CWM)51X +QGY)FRF +XQZ)Y14 +X3F)BKR +JKS)8G6 +6KB)FVW +2R8)KTY +PXB)M9T +QH9)6S4 +YX6)VKC +KS5)LKT +HK3)4GY +97X)9XQ +ZP3)NFY +HH4)JC6 +31K)PX8 +19Q)W3Z +763)GFZ +DYY)BXL +RZ3)5M6 +L38)Y2L +QYS)93J +QHC)TB5 +QLH)V1B +D43)YDS +JM4)1J9 +Z4L)Z6F +D93)68C +1RW)8TK +7YV)K7L +JD4)RD5 +5Y4)L97 +TP3)Q9W +SKQ)DQD +X4M)VRH +CTN)MMM +DB7)QP8 +VG2)1F9 +LK7)LS4 +RZ7)4FH +LHK)K9Z +7B6)3HB +659)6ZY +1CZ)9W9 +NPD)PNZ +WRG)Q57 +H5Q)BTD +MZB)QN3 +S7H)NS9 +6QF)2Y7 +C51)HG3 +5RG)QTQ +7SW)LB9 +NRK)CJL +D15)F48 +KBT)5N1 +YQT)MZX +GJ8)J7R +4Z1)S5G +2QD)5DV +4XK)DCC +23G)YNX +1CN)H3J +DX7)8WD +COM)DLS +5P9)8YK +GFB)DB7 +1LL)S8D +BXK)H3C +HCW)FHZ +2N8)C4F +7BH)VGX +8VX)CLB +H2H)YTM +S5G)FFJ +122)1BY +MY9)1TR +1TR)WXH +M3P)XZM +BJG)C6V +L97)QCM +FFJ)SVJ +KQP)945 +TR7)RDK +S4K)3Y7 +GBG)TC5 +8Y5)TY9 +7S3)KJK +K6W)S5N +J3X)TNR +98Q)DDY +DFD)2QD +QSZ)43S +BRZ)PN4 +N5P)LLD +62Y)S1N +TQW)W27 +X27)9FX +DQ3)W1J +WJ1)8BZ +4Y8)L1C +92Q)HVG +T64)J7F +RKK)S2J +8M4)GLD +RCJ)2N8 +HQ6)3MV +L6D)C3V +71M)Q4M +TL2)SXJ +1NC)QYS +P48)1S7 +TXW)GYB +FXC)W3X +85G)XQT +7CW)F5R +52X)298 +Q4M)WLP +RG8)XQG +9W9)BVJ +TDV)4MF +NLP)N8T +W2L)1JC +QXD)L9N +KSK)ZPF +HM4)GJG +HVG)FQD +D1B)CK9 +KFG)1H9 +9DF)6J6 +HHK)ML8 +H3J)42L +TBQ)HJ8 +6Q6)71V +VG2)PG8 +KYC)YQV +Y93)T5H +RG4)RTX +814)NRC +VQ8)KMH +YNX)H5N +JM4)JHP +CSJ)DYJ +LY3)5RD +YW3)TDD +MHJ)GFQ +N11)CV7 +TX7)GD8 +ZQV)RMD +5NQ)8V2 +XTY)2BY +BXL)1JM +FK4)7TY +XQG)P31 +XBX)7KP +LYY)T77 +71H)P9K +D6D)L21 +TFM)BYP +L93)YM4 +BQZ)NLW +2XV)4F1 +K7L)VSG +CL9)C51 +H9T)LGC +XDM)Y17 +VV1)3FK +6RQ)JTR +1ZK)SGL +ZKH)X9R +SGK)Y7D +NQT)C3C +3XV)G7B +9D3)48Z +5LJ)ZP7 +SB3)GY1 +1MZ)H9T +NXF)MB3 +Y7M)6H3 +WZ8)SNF +MN9)N5X +3VW)ZMG +HKG)GRY +3X2)6QF +N87)6QS +QLT)3H2 +DKN)ZTT +6PF)2N4 +JSP)21F +298)MN9 +J9G)HQ3 +YPC)ML6 +9JN)BT3 +HJ8)BQZ +8W1)H4F +FTK)58B +DW5)39H +KDC)MH7 +L7R)G1G +FGS)RBB +4S1)YN8 +NS2)FK4 +683)JSW +PZN)R4M +YX5)VL5 +BKR)NDV +S26)NWQ +P4D)7BC +8V6)2B6 +3WY)KV3 +41S)J34 +MJL)71F +L8T)8J7 +DPZ)W6W +SD7)R39 +DVP)X1L +KPC)ZK8 +4H2)PRP +6H3)XDQ +TFC)8YD +JC6)GKL +W6F)ZD8 +111)G75 +9Q1)451 +XCL)XYN +B5L)TDK +FRF)47Q +XJ8)Y8X +BKM)FWK +5HD)F87 +51X)LK7 +1BY)Z17 +GSJ)1NC +WDX)KTL +7L9)41V +C11)3MQ +2FV)Y9G +L34)35W +N9C)HQ6 +GR8)DYB +YDS)KS5 +S82)CWM +XBD)STY +NQJ)XZT +MK1)LBP +YPY)S7G +3JX)PZN +BSF)RCJ +KQD)J2C +RPL)1Q3 +WXH)J3Q +75D)1XF +6J6)6GM +Z17)XDS +3HB)FCH +Y49)H3V +P6C)2X7 +Q35)GH1 +MY2)JWR +2DD)41S +V1B)GJ1 +YK2)KQD +9B7)7SW +VFQ)PR7 +6HQ)J2D +P7S)Y44 +F4G)YDW +1S7)XX2 +S5N)WV9 +D3N)X4K +QFD)5JG +6VB)7P1 +Y14)PP3 +L2Y)LHK +V5Q)H5P +L4M)9Q1 +MC6)BFQ +14Y)Y5Y +QDK)CQ4 +CHG)7KR +LFR)F6V +L76)RYB +M7J)1Z9 +QQD)6FT +J2F)K6W +GP1)VGF +H36)P6P +YQX)Z5Z +SS6)6WG +16K)Q35 +NFG)XM7 +6KF)M7Q +R8L)FVD +M7Q)VWZ +6WG)N1C +3XT)858 +F2R)K8V +T4Y)5X7 +KP1)XRR +NCV)HWY +PNN)14N +W9G)CZ7 +2LD)9DF +7ZY)PCK +1J9)HX2 +6GM)7XP +DLS)NM3 +DX9)H8P +T9C)TRT +SL8)2XV +CCJ)5BH +7FF)TQW +PR7)SB3 +NGB)MMV +4S1)N9T +DYB)911 +JBQ)R4P +N5V)GK5 +9LV)KNM +YHR)23S +TS9)ZKH +1KF)Q4H +LYL)STW +SNM)WZ8 +8X2)WJ1 +HLT)8SQ +WF8)119 +LGC)6GY +WVW)XGG +YD8)2FV +THM)WYK +PRH)FTZ +6Y7)8BB +8BZ)R4V +FH1)YQF +KST)L4M +L91)QCC +CCX)VYZ +YQT)QLT +S8D)NR6 +Y72)HSZ +87W)RVP +DLQ)1FT +2TZ)9TY +2KB)YBR +K5V)VBJ +ZVK)RFY +ML6)DLV +PS2)23V +6MX)WYD +5FV)8RK +5D7)8VX +NWQ)62M +QK1)8ZN +S7J)K53 +451)LW1 diff --git a/day6/input/test.txt b/day6/input/test.txt new file mode 100644 index 0000000..183242d --- /dev/null +++ b/day6/input/test.txt @@ -0,0 +1,11 @@ +COM)B +B)C +C)D +D)E +E)F +B)G +G)H +D)I +E)J +J)K +K)L diff --git a/day6/src/main.rs b/day6/src/main.rs new file mode 100644 index 0000000..bdf905f --- /dev/null +++ b/day6/src/main.rs @@ -0,0 +1,106 @@ +use std::collections::HashMap; +use std::error::Error; +use std::fs::File; +use std::io::{prelude::*, BufReader}; +use std::result; + +const INPUT: &str = "input/input.txt"; + +type Result = result::Result>; + +fn read_orbit_map(filename: &str) -> Result>> { + let file = File::open(filename)?; + let reader = BufReader::new(file); + let mut objects: HashMap> = HashMap::new(); + + for line in reader.lines() { + let line = line?; + let mut parts = line.split(")"); + let mass_name = parts + .next() + .expect("Invalid line, no mass part.") + .to_string(); + let orbiter_name = parts + .next() + .expect("Invalid line, no orbiter part.") + .to_string(); + + objects.entry(mass_name.clone()).or_insert(None); + objects.insert(orbiter_name.clone(), Some(mass_name)); + } + + Ok(objects) +} + +fn get_orbit_count(orbit_map: &HashMap>, orbiter: String) -> u32 { + match orbit_map.get(&orbiter) { + None => panic!("Incomplete orbit map"), + Some(mass) => match mass { + None => return 0, + Some(mass) => return 1 + get_orbit_count(orbit_map, mass.to_string()), + }, + } +} + +fn get_orbit_count_checksum(orbit_map: &HashMap>) -> u32 { + let mut checksum = 0; + + for orbiter in orbit_map.keys() { + checksum += get_orbit_count(&orbit_map, orbiter.to_string()); + } + + checksum +} + +fn solve_part1() -> Result { + let orbit_map = read_orbit_map(INPUT)?; + Ok(get_orbit_count_checksum(&orbit_map)) +} + +fn solve_part2() -> Result { + Ok(0) +} + +fn main() -> Result<()> { + println!("Part 1: {}", solve_part1()?); + println!("Part 2: {}", solve_part2()?); + + Ok(()) +} + +#[cfg(test)] +mod tests { + use super::*; + + const TEST_INPUT: &str = "input/test.txt"; + + #[test] + fn reads_orbit_map() { + assert_eq!( + read_orbit_map(TEST_INPUT).unwrap(), + [ + ("COM".to_string(), None), + ("B".to_string(), Some("COM".to_string())), + ("C".to_string(), Some("B".to_string())), + ("D".to_string(), Some("C".to_string())), + ("E".to_string(), Some("D".to_string())), + ("F".to_string(), Some("E".to_string())), + ("G".to_string(), Some("B".to_string())), + ("H".to_string(), Some("G".to_string())), + ("I".to_string(), Some("D".to_string())), + ("J".to_string(), Some("E".to_string())), + ("K".to_string(), Some("J".to_string())), + ("L".to_string(), Some("K".to_string())), + ] + .iter() + .cloned() + .collect() + ); + } + + #[test] + fn gets_orbit_count_checksum() { + let orbit_map = read_orbit_map(TEST_INPUT).unwrap(); + assert_eq!(get_orbit_count_checksum(&orbit_map), 42) + } +}