diff --git a/input/day_3.txt b/input/day_3.txt new file mode 100644 index 0000000..1524f4b --- /dev/null +++ b/input/day_3.txt @@ -0,0 +1,300 @@ +ZTmtZvZLTFNLMQMNRvZncdcHwcScJvcdHnVfwV +zqjqrzqjCqrjtqWhqChqrznhcfdfVnVSVgcffcgJcSgd +rtDGpzjjqjlrGsWqBWFRsbTPFQMTbRNRFmbs +FFlnlnVlmQqcBVhBRrSrGSwVdRJbztSt +NPPNsffWfNztRZSJNG +WpgpTTHDpgTDDpMLPGgMHslmBmmHcBQnFmcqhmnjlqQm +VlVNLlPQhtnDRPnP +QgqTffzZqgvgzWmqqZmGcDthtRFvnnFnhJtJJDDt +WGTBzSqBQTQmZBWHswpNbswLbSNCNl +PFzFQDdLjMzzQDhnDNmwZmqwRsmRRmMVNM +GtSbbtlttvvtBvtHBmqqNqVVwsVgCmRw +brlvctHfrlrqvGvcTpjDdFnLDhdfjLhQpn +fTqzgFrcmzTrTNgMzFzTrgtbMtVMVPSLVbvSStRttPVV +lsHnlQhplQpsHhlDJsswNwZPZZVNwvnSZSVvVS +BJpsGWhWQQHdGHlpWpfgrmqgNBmTTBqzTrzr +PLPPrDNHDBnrWNBmjDmjbqqgzjgjQC +GJpFwpvFFsJpwvwwGwJZJRptzdQSSZTmCjTQmTSQjjZSggQQ +ffwGGtJGCfLcNMNNfNLW +nlTzllGwlQHHGMSrrhQLcvbcghgcvL +fFNpttBRFFRNtJJnfNWmqbhhZrZrcjgpvLrvrvcvbr +JBftFFsVRWtNWRsmWtRfftGHGPDDCnTDHSCwzwVnwGSw +LsrZLbLmPSTZtPcc +zpnpljpdwhRpfNLlPWPtTPcnMWPcctTV +qlhNNjldqdpgqdfhjpphdsgmmrDBBJJQgHrmDHLQJb +ndDrsBbpqspHCjzVBCHjMj +LWFcQFQtVVdcCMHC +RLthwTWLTSLwTllRLLlLNlPpPGfrGnqDdGqsZqsZsZhb +jHnJLJrcBbrRHJpnLBBjdHbjfgvGwstwWwdsWWshfhFzFfhv +PZDQMNTMQwtgvGTGhf +lqlPPQZQVSQCPSCPDmLppjqRqHngLHjRgLnL +MfQrhdzNMfMPsNNmPmqPLCLCVLBnbP +WVtcVvJJVjvFZZmgGjnjLBjmnnHB +FFtcZRpWJcSDTwlVMhMDwrrDzM +bSMbrQGZwwqbrbGMdTQGMwQdfFBLDLHLHssDgsHHBJDsFfwL +lpPPCccvVPvccPzcWLDJFJBsBzJJHsqHjg +tnqlPlVlNvNZZSSrGGZb +NlBBBBBwmwcMgLwLVVLLLscHdnMDdbHJCbdvJbPdDDJHvn +ZRWQWSfGhtSjqZhffZhhRjtdvPFHvCJbFdCFFDdHJdPb +fpqGhQWWZRhfqRSqrpGllLcVLmscgrLwBmgCzN +wHHHwDNCzZwzZfpzwsswzfzvnvnMDMgMhMGGFGRVdMnvcF +mLtttqTPBtSJTSBQWlmcMvVdclnvhFggdGhRdn +QBLPSLQQWmLtTBtBSjZfsbwbHzpjGzHfpzzw +zDPBqBPqwzzsqlTzzPzqjttNbCPJVtPCbrvjvCZP +MFhMhGfFfGpWWpHhFfRpHjVNbDbJjVMjrVvVNtMtbt +gfRSmpggSFRgfGRphFGgfgBSBTqzSsdlTLqdsnsDBqLw +QTTdWZZZTrhCZrjhVt +SBJJNRRvvRpwwspNSpTPjCMVhhtCjGThjBjB +fJJpvRRwNRSwvzRzRvzSgSRNqFTFDbFmqncQTbdFfnbDQnLW +wSjwwjWhbhhjWjdqSVpqSndvMdmM +NTvPBrZgPPHDFrFHGvZHRBqVBpCQVRRdmpRppdqM +TgDHZPsNTWbbwsjtvw +HVRPRwJVppQNpGmvMvmqqq +WcttbWsWsdDdbFDSSWclZGvFLMvfvjfzNvLGzLmfqv +tglcmSldWlBQBThRQBhg +LDGGfPFLGsfFnGLfMzfJVccNzmcmwm +qggSRgtjgCRtdtNZCJMCcZwTZVcm +RBbHbbRRnLBDDrvN +pThhMtMtTsWspWTnGjpsVHPdjdjvHdgVvLDVVSjd +JQNrrwCFrSRLRVLnSN +JQcJFCfcnfQmrbblQqlthGqzpZpGTBMWTMqtst +DzVmzDDgsNdHHLGJhJppPPllqSgbql +jrBWjcQMCRchPShwSblpbW +ZjRrSCtnnrtBQTcrSZmGtGFFNDHmHVVmVtzz +GSbGbrTGRRScMlVFjfbqqjdF +tvDmZhtNtHDttBhCmHDJHNwlpjslMwfflvpqldsFpMlf +HdBhLDhJDLWWLDCSQGcrQPGccLTGcQ +tNzrCdJBrrtQdtgQdlQQtrnMZhMTqzHqqTFZZFqTHFMV +bwbsRDvfwfsfcfSFqMmqDqFVNMNVVH +PRvfbSjNvPWPlLllLJ +MjMRRNRMjZtGVGpBCMMCDV +vwfhFzhvcJQQwJlQSddzQwFWGqcDpCDqBqDTcGZTTVTCWG +dvFJzrfZJhddLNLPHsrtRbPr +BmbsFNBhszGgGtGl +MSHVwdSwZflGlcqqpM +QvwZCnnnSvZdCSWrNmDlPPBPDhPmjW +MDwpRzRwMzMsdVSjdMWWMQdW +gmlftnDtHnHHVWSWBjWjWgvW +HbtrhbbGRNDpbCDz +cjVGqQqVqBFhDtvB +ZnTTfTffZZmDhBtJZG +fNzbpzlHTlgHNzlRTlRNbHrWwrCwWSSdQddNjwVcjGSd +WWrPMhwhnjpSLCpDlSSW +sNGBGdmTbZNGsmbstNLZGZDBRSlqSRCfRSCqRRDDqCqp +NvvcGtsLdTNZmLTmdJPcnnMFjFMcrVJhMF +wMRQMSQZHznRsqRbWp +ddgDDhfDrrDdjthHmdHrzpbVCVWFpfVqCWpWqpFs +hdvNdHtjMLJZvJwM +nWzZtWzHzZWgQHMNLDMDfDBfQbdD +MCPmRGGhqdmNjbDN +FRPlMlRChCvFggWZsHsZHn +ZGhhjdgwgcZHsPnRnSnbWscn +tltlfMQQQftDFJpMQJsWJWJsnWBnRSBbrBWP +lfLDpQMFMNfLjGjPPgZzwh +HcmvWcqnHLLPDzPPHM +MGGSfdJRdCglfrLjrjrLzLPzlF +CsgRgfwgdCwhsssJBBwvcnQnQNMvQtQm +nrVbwgnSTSgSnrZpjpWWqmWNHlqqpV +BcBPhSdsDlHNtNlJNP +RLFCQLQRRsBDDcRdGDddhCRDfwzvSCnzrbfrMfMgznwwfbZv +HJLzLNwBNzNJLzBJztRGzQVnDgwsjbgwssZwnDZbDQ +PhvlSvvPfMRlDbDsggbSjQSg +mFfhMlMrfchvPPpFTPvMvPzLBHWRHJNtzJGzzHpzBtCC +FLsgSLzLswdFgLBbWZnJDWHcmZnnBjHM +rpbrrqfqpvCbqqQQvvpClblRDHmjmmjJJZZnWMJmmJmmcRMc +qTppQvCfhzSVVTzbdL +ThTJtlqfDrDtffwqRCFCCnLwdnmpzRdF +WPQSSFsGMgQZWvFQgZgZQcCdmmzLMLCpNzCCddmLzdzm +cvVPGPQQGsZsgGPjVFccbHhThJHhDqfhDDjHqDrr +CgnCCnPMnMtGHDbMFQ +zLpwpRTwwRwhRchHwmqmGvvGbqmTmNQqvq +sHdhzlwrRVrdLzRrprrfjgfjVBnBCfSBZZgPfJ +SPMdWwWPrZwdrrWrSPLFDfgbQDfwDFfFglDQ +qLGBtGLpjzqmvQbvvpDvfFpR +jhLqqHBLGjtLqSZCssSTZZMshP +MhJCpPDpRRFRzQQNNqbcZjNZmVhjNm +LLSlLnGDmNqLbNjb +sfBngrBSTTSnSGHlTsHBGsBpFFdRdQPDCFPWRMzzdQWM +ZQtmgtWfPcgPgcsb +pvMhFThpHVTvPbcFcFJLJDsd +MTVHchVVHjHHTcpjMVBjjnQnGqQZnlqBmrWQQBffQQ +HfcRNJpJfhCmpGSqqGNjsjBnQl +tTdPwwtLTrrTVPSnQsbGPsnnlFllFQ +VvvTSTwWMrSZVwwrrmRmczJchHcHCZhRzD +wfRwhmLRnvrHqHhV +bJlBHlWlHMBPJzDlzMMJJSBlFnrGVrqspGGvpVGPVpGsVqvp +DWdStDMztCCHgZCtmZ +MHdsznVDDfcjcjDcdDjmMSCQwQpCpFCvqSZQqFzQpQ +lhJnLJJnTNrWTRqvqqPrFwZvwqQp +NghhtJBtnWLRTNjmcMDtjdsMfGDH +jgsvPffVmHfDqPSrNwnQwnwNhSvw +PZbGbCdcGdRCGtntQLQQLLwtpLNw +RbcPFBRFcdZBBJDBmTHjsD +dTTFJdzhmmmQpzVz +jtNLcctGGjtfrnVMsNQNQVVWnv +GcrcrfLtDggLftDFhZFdJFHJBVFBgZ +TTbqTgqCqZCrwmhQnnmrgh +MhpfsMLhfmrznLrQrF +RsStRMtjpHMfDtWsWsNDppsqlZqBlhNlbcNdTPClPqcvBP +lRhZPgnpRGZlSrmsLSvSzLVl +wwHdHCfDQCJHdwdDMdHCcDsLmNVvzVsWrcVNcVzLbrLz +dMCCwCtJdwDQJMtjhnvhpPhRZBhR +pBqMZfDffmBnvnNmPt +rhwLHCChrLPCMNWMCNmW +GSMVRSVwHLMRJDQJTZlJZR +sfstzPGRRBSngMfQLNNqgWLQLZZNgq +scVDjjjCDTVhHlDhHdvvjwjHrZmWQmJmrJJWqNqLJbrcQqZq +VvHlVHldTjvhpVplhVThhwjlPFSzPfGzpGBnsRffRRBPPGGF +WNFNfnWTSLSJTnWShTvVZCnvrdPrZvddVCrt +QwsMjppcpHCPdHsvPZ +lcwMGgpcGbzQpMgQwbDjDQZSJTRfShffWNJSSNFFbhSb +JDNgTgqDTggQbQGbZDWbJmVJrPVfPjlPfPwlljJC +FZzHFSznZZtptHzcSmCVrwfPVcwwVrCcdm +nMSStvnZFSHpLLtBtMzHnMWQvNhgDgGNRGNhgqRWTgqg +SJcrhvbBLBLrDpllvnwHQRnllHnQ +ffsjfMMZfVdCCgCfgTzmzslRtwFwFtTnqqHTJRQnqRqq +CVPgmdggVjCJSrhrbrPrrSLW +LPtcLtgddLMRRCMRpTBRrZnppvvGRvBw +WNNJjDjqSjJSqWqzNqzlSlBTGGFvrppSrwTFpn +qbNDWNNHbJqVtctwVmsfLCLP +FvSSLMqgvVSQjQfgwpwWpj +BthszRPRRNbNtzmHRbHNRNPfwJGcsswWQpffJpfsJcQFwJ +bBtzPmRrbBRHtNCzPhqdCLFMLSSvdnvCTnML +VPHWJPDjVLDDjDSFDJhgdnNGdbblzTzNjlnNbl +ZprsRZMQwwmGZsvtQZgTfggqnbfdTzrbqlTd +GZMtsscmsRZswwBQHBhDDJJPPCPWSWCJ +mNDNNmmVMSVgGgGGqsqGLhQqsLGhLq +nZBTZpJPhCpnnrsqbbcfczJfFccz +HpBZZRPRHjnPPjrHnRtCZnBdShDVlMDNDgVmtmDdVDWSdN +tBftztmztGBBCBSGHBmhvHHcchbshhThpbLJHJ +wwzMrrMnQdldVdMvJTcLNnphphbLJv +ZzwPVrWQlwrdStGGCWqDSSGW +QwfrQPvhwPfzQrvWWpQpvVGGTDGsjbgNNcbfsGTsDFgG +CtddSdZMRRdnJhRnHtZtlRMbGGDjDgggjNTZDNgTGFgGjc +mdmdCnHhVWmLmwwL +zLcWSWFcPJLWrWLSZrJLjVjHtjVsrdtstHdtVQgg +nChlwwnmhlCNqhhjHMgDjVVdwMjdtd +CNnBmNNThhhdhCdlBGGlGvNpcJbJLSbcZzcFJzpJTWPbzc +LdPZTPVpLCVTtCNsNsfFnlDC +SMwqcqcWQMbMhWQzBnsNfsFwrnnNNlrs +WMMWhvQRNNNjvLgZ +DWFGzrtfsZHZZMLt +pNwNzNCNTpppmnvNMTLVjHLBLLjMRTLH +PPdlPmJJNNClDdcdDDfWhzrW +nSJVSHQQnwLThnhrML +ddsjfRdGZjmGjRTwwTZhwrMwWwtb +qCdfRdMmgssPfjsdjdPspBzQpScSSCBpzNBQzcQz +fJnmRMJrlrmRmTRmbqssWVdqNVQdswdNNb +GZggFHGhHHgHSFvtHPPPsfwgwNsVqjqNpNjNNssN +PPSPDDBPBmBMlLfmLr +BdqdCBqqCVPVTZBrlJcTcTJTcfcbwwmcgv +WjGGLzLMhpWQmRGhpHfbhcDhHHHhgcsbJD +tQzSGjWRzWBntntrZmVB +clfLQLgfzfTLDMwNrNrrNDGCGG +tmbpFtBvvmvdQQdFQwMJCG +SnbtnqnSbnQQsBqzgLgVsLZTLTPfVg +QnQBQQBVzqqzpmfgBpnqSDFPjhhWsFVhlsFFsDstFs +MGGrTHcvRTTrrrCDpjvWtFPlFlsvjp +bZbpTpJJBBQmBmJf +dNVgDdVtPcNPhgTLPLpTPlnTHHRn +WrvjvwjWwfwWjGJsrwBjQJjTQLbnSTTmpTRQSTClHTbLmn +JqWWGvBJBwGJfJJGvwqZZddFtDFhgDqZhHNM +VwJcNgbfvfJbfcmGLZfPhZLfZGTDhP +CnnrlBlprsBnzQFntnZLqDhZZqThWGtWWSPL +FllFdCjzlsCzjJNJGGJwHHVg +fTbVBmNJCJRVbTmbfJFHsDjQHDHQjnQRsvDn +cLWcrGtttddMPhrPhPtPrtzsnSQQBvHjFpFSpDHsMjnvjD +PrPgPdhGWLrrqgdqcVCffbNblBwfVmwqwC +gmBfbmlbBDqrdfrDcJ +PwVWrQphQWWhQsJFcMPqzDdcJq +QWCSSHpSQWCttQpCRCHNSlZBtrmBZTjvGgZjmBZjBn +JrnhMPvtVtPVHJGrBrQwTmQmRGGB +pSSZCFClCbbSLbljZlSlFFszzBwcZNwTzQNDmBwGTBNTBz +ldsCCjpFjCqdLgsFjpsLFQgtnfqtJvnMtnvhWnHHMnnVWV +hzNHzHjWNzwHjjhprpGvGgvGvvpv +PLBVVRPDLdrgCdMrdrdC +FmBTqTmLPrsFqTBDcTTVtNNJztqWQNQtWWtJqNNz +fFffFvFBgHQWHdvfGglBWbqbPSSbSwVntPhZwwbS +jJCMzNMCjNCLNMjjphPSPqhbqnwPZLSqZh +rNpJJDzpcNMzzdBnGcQTccBvgv +FRFMwsrzVtwstgbCHHJJPgNb +hfZGhZDnnTTHTCCNzJjH +hppDvznmZphZQVFQwFVWlRqFls +jrjrgdHdFBZsBlcCGghWNgpgbCCp +QwJJqQQMLwPTwLMMwzvzwwzhCWbvcNcCChWpchWbNGfFff +qqFQJTmwJSPjZsrlnBjdHm +QfffRppWfHpQSrWVpSGmGMMccSjBjmmGmc +qdzLvbwzwdsWwnFdBBcBhMjMDvBBcBhc +bPdZPqddqzFsZVRptZZQHVWNpN +BzBQQHNjTSzzJDDFZFgJDJ +qLvCnLpfCpqCnLJhntRglFncDrGrllmZFZlDrc +JpqvfhRhLddfpbbtsdJWjHSwHHTNSQNPTVHQTb +qVQCCVlQZWgHZMqgqWlrtScFwrmtmcJqSSsSJS +MzdnddpNLzhRpzbzNPPBbPScjcnmrwSFjSjSJFtrwjcF +ddTzRMPLdLbvhBRdLWGQClVVCWQZQDTGGf +DHHTsldDNdPnVDCRDCNHllHwcMpprSMpRmphhRWhrhmzSS +qJLBqQLvJLQgftgPjJrhrMMWSmWMmMrrSqrc +FjfFftgLBjJPBLQZGvvZtNClnTTNGCdHTbCCNsnslH +jHHNsNqhjsShsshdRRCDMfMbCWHBrGGC +TJQFmnpgmTpBDCgCMCDZCGDC +FwpQzwQTmVvwTJmFJzTcQSdhBNztNPNjSlqLhBNhSh +vBCfSDcRMfRcRHSRRZZtPwrWWNtdSmrNVGSdwm +gbLnTzqTbjhGqFzgWrtttQtrPQTtNPmP +zbhjzglgzzlBGcsflsCl +jNHDNNHjVGVDNQFDTQSFZzDQTd +vvLwhbnpvPPgClwnfFTmTZQgffFFtTfc +LrhrLvwrnJvhCHVVRZNMjsRJVB +ShfcBWfvdhhJBBVwCJjHTRNwRVNC +qQzlDqMDDDslPqGVLTNZVpPwTRZZpV +bgbDbsqzsDTcfrgFFdgg +vlRHvvHwvMMMTTlvjmRtBjSJmSnDnpdrpSSrJJnDQrLp +cPfCgZZzNzzcGhNszcTPNZLrnVSJpJhDrrhSSQSpDDQn +FbTgbGcgNgcFbPFHMqvjjRtjRWvFvt +fZTnqfFFDNglcjdjZcfLGQJBwrGGQwbGQTBBJz +VhvfvsPpWRChmphvRGBbBLGhSbLrBQBSwb +pCsCsHvsstPsfRMMMtmDqFjngdFZqDHFnNFFjl +PVVwffMlfGWMDDSwfDwVpRpsZRjBHgpSsjJSpBSp +TdnFbqTFdmbjctcqcbRBZtJJZgsBzBBzvgHJ +bNmbcqnnbNFLChCVCfjDfWlMjVDPCr +JBLLjBQccLLJhcBDDlSrdFDsVhrVsR +HgNWCgqWGbvCRRZvGWvZmszsSlrWdSdFrWzSldDF +qvGCZGHggRNHvGTgvLnBjpjjPJwTPjLcJj +GCGwQrwBZMZdGVdLzbqbbp +TRfTTCtgcDmhtDmsTDVSbvpLdNpzNVRqVdVL +CfDJjscgTcsjfhtFZljPZWZMWPlZjQ +WsrjjfRfjjZjwjWjBpDpVpVhMBsMMSBT +JgmqHnCHHPCCtCJgSZMgZppDTgzvzZMz +HCGCGqqqCtmnHnqLFHWjlFrWRRbfjZccNWrR +BJBfSfPLPvdhvrbbvpDsHgDTzgpdzgZpgN +cVcmRnCWCqGngHpZsZsTsqNN +jmGCVwWjjnWFMjGwcwmrLJbBJPbLSrPPTbFBTr +SPZmmtlmqjZlZMwhlrtggqGGcCLCpfGLgqdCqF +FBBVDVTVDJfgcddLCDdp +zzVHvVNTbWJJTTRbVWBFJbWHmwmSPlMjPSShjlhMhhrrml +GJZJZTsnhsDJtVZdtsZJZrBCQpLjQgBnrQgjCjQQQj +RPSfqcRShHbFcPSfBqLLprBCwrQQQCqg +zPzPRHbFPcRRRHPclMhSfvfZsJZVTTZsJNVMGWGVdGTWWD +lCZrCLWCwVllGzWPPBMTFpsbGdsTpsbNMgFb +RDjtjHcHjcHctDRtjnhtnHTgMqTMqhTbdbdZbgFqZdMN +vfDmvfjtmvtcHmjZfSRZHQzBLrVLCJLJLfJBPzVJlwPw +JMTHVZMWNSCwCwMS +nsddQbDCnQQdDBPdCQCSvwpDvwffhfSvpmppvp +BssqBFtqRHgTqVRC +cWTTthtrgrzpCdCddtpz +SSSLNJLGLSLfCJfJFQCJzQ +swMPMZVMMSlMSZMqVSSHznzcqgzWTHgTnhbnrr +RJjjgMjWShPqchtbVBPV +DDddwCnZMHLLvDnfLrvvbVbbBtpwVBVPwtVpbcbb +zrvnvLrlZCHrfZZLffHZHHTsTmsQgFQSFTMjjQlFTRmR +zhTTMLRVTzLbVqwVRJgDQQsSCgCDNgsZCpqp +rrmrBmmWrWnHjWnGWrnGnhDHSQgNSpQsCgSNgtNtDDHZ +fBrGPGmGPBcTMfLhJVTc +TbTCjTBSbCncHsDZDZPhZbzv +rMwplFdlWWJMJzhhpGtHtvHSSP +fMMfwWdWrNfJNdlVgMcTLTmLffjTqnLScCjL +SwhTllwJDwqqBWLBbNtfhjBB +mvllZMmRMZGFZRfctLWtWttzfNLR +MGvHMCGpVnFGlgvVFFnpnGmmsHrDJJdSsqPqJSqDJJdTTDqD +QTTcqJZJhHSpShhFpFzjDDwwsFzpdg +NBMnBvmBPvwrqvgvvqgD +bNNGmWmbbClQTQRqchhQbf diff --git a/src/day_3.rs b/src/day_3.rs new file mode 100644 index 0000000..6249221 --- /dev/null +++ b/src/day_3.rs @@ -0,0 +1,33 @@ + +pub fn part_1(input: &str) -> u64 { + let mut priorities_sum: u64 = 0; + let backpacks = input.lines(); + + for backpack in backpacks { + // todo this should be .chars() or something + let items: Vec<&str> = backpack.split("").collect(); + let items_per_compartment = items.len() / 2; + let first_compartment = &items[1..items_per_compartment]; + let second_compartment= &items[items_per_compartment..(items.len() - 1)]; + + for item in first_compartment { + if second_compartment.contains(item) { + let mut byte = item.as_bytes()[0] as u64; + + // this is kind of diabolical + if item.to_string() == item.to_uppercase() { + // reduce by some lesser amount? + byte -= 38; + } else { + byte -= 96; + } + + priorities_sum += byte; + + break; + } + } + } + + priorities_sum +} diff --git a/src/main.rs b/src/main.rs index dff206f..6fee6b2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,11 @@ mod day_1; mod day_2; +mod day_3; fn main() { println!("Day 1, part 1: {}", day_1::part_1(include_str!("../input/day_1.txt"))); println!("Day 1, part 2: {}", day_1::part_2(include_str!("../input/day_1.txt"))); println!("Day 2, part 1: {}", day_2::part_1(include_str!("../input/day_2.txt"))); println!("Day 2, part 2: {}", day_2::part_2(include_str!("../input/day_2.txt"))); + println!("Day 3, part 1: {}", day_3::part_1(include_str!("../input/day_3.txt"))); }