From c9ff0203bf280a31349d4479663314efcc1c9bfd Mon Sep 17 00:00:00 2001 From: Yanick Date: Sat, 3 Dec 2022 14:52:19 -0500 Subject: [PATCH] part 1 --- 2022/03/input | 300 +++++++++++++++++++++++++++++++++++++++++++++++ 2022/03/part1.js | 23 ++++ 2022/03/part2.js | 2 + 2022/03/sample | 6 + 2022/03/test.js | 29 +++++ 5 files changed, 360 insertions(+) create mode 100644 2022/03/input create mode 100644 2022/03/part1.js create mode 100644 2022/03/part2.js create mode 100644 2022/03/sample create mode 100644 2022/03/test.js diff --git a/2022/03/input b/2022/03/input new file mode 100644 index 0000000..712656e --- /dev/null +++ b/2022/03/input @@ -0,0 +1,300 @@ +fzmmmfwDWFzlQQqjCQjDGnqq +tJHJvLJVVttNsvTtTvgHHSVwCsQRQQZCZZMqQMQBnqBMQs +LgThNJhNSgTJVgvgtghPhbpfWzfbwfPmpprb +lDLnSnLZRjmWrlhrFF +PffQJNqJbPZbpmjrrCVNFmCh +qzbcbqfMfZMTfQTqqzzTPPLMHgBBBtHRStvgHRDBnSRL +WPZfJlZZCMwwZPWCwWzVHQhsshVSsfNQHdvQNN +FLGDGGnGdVjQQQDQ +ccFFbggLnRcLFRtFBmnJzdZZzZBMpwJlZMppMp +RZsnCZssCnDccJCnfcQfHTdzMzhdLdMTqdRqpRLwqq +tNrGNrrvGhTThQqw +rrFStPgrFWWgvmPgQjtmNtmJcfJcsJsZblDZfbfHDFHnfl +RdTfgbbPbJWDDqRvsDsmVG +NSQZLQZHpFGLqnLszrJm +ZMSNMHhNZMMSQwhQJWPBJCbhbcgtgfcJ +qZfqPvLnnZGpGpCJlvsMsMlHJJHB +mTWFFFTTtVSJMzzjWgSH +RbVdtdFtcrmbRQDDVHDQTbDNwLPLfnqZnhZhQnNwfNqnnn +nhHfSGHGThhZjnhrrSnsSczdzlfzzdQQVzRNFNcFdl +JJvCDvmCbtvpvbMmDvLbCJpmqdVVVcMcNGzRcNFcRRzRclQd +vwDCwtLmwLBDJmCHHjHHWGZHBnsnnj +QWTMqZhThbTbLwtGBrQfQQNr +jdzSSccVPPcgcLrDBtDVwCfNNC +vcBgcmssccplTnnTqsMhWW +FlcwZhBhGZhFJnGtZZFwlGsWRLHdWqMzPjWRLTLJHHjdWq +vfmrmbpfpMfzjHjfdM +VCSmVpmrNDMZhSMcsFnh +nHqQVtVZGGwwwnSF +fMBBBWCsCfMMbWfbsGmGzFjQGQFCPhFQhF +fbcsWpJRsWlcNVLtqtLLQcZQ +rgNJdfNJpgpJVMMVfmfVJgCtCTqqqzwTqrBsTswcCCss +lFLHGWLvHQFhnQFhbFnbHWWPBtwqzBPTcsPTswZCPBGCTC +QQtbRtLhtjgdfMRMDV +jTRhJpGhQPfPLsDhWh +wVVMbqbHwVwwMplHWfsfNmWcSLqcLmSs +lVCZlHnwHdRpRGvZTBGJ +csppppDDbGLbSqndFHHNdHsH +lVTlgWgjzCzfgvfggZWWlnHPPBHrSCqBmrSBrHHBnF +QFgvFfjTvZjzlvVTWljvTtMbLcccbRRMbwLMMLQLbw +tjhLjLJzpJpwjsqqfQqNrNfRnsRR +WvwGBPwWZZrnbBNrNnnC +PDvGVTgvTMGvZTGTPvWDZVJjljtLzhtmLlJjwJVJLm +WbzpSNswNWszwSLgSNMcrrBfPJJcfsHMrvMv +CFllhlGFDVFRCmhQDlDTBBcvgBCTcHPHrfrHTJ +qGRgVFhDDZmDnDqhgQFGqzwtzSjddwZbzwpLNzjpdS +FlpZrQSJJmQpSpqlQgbbRZCgGCZdDdbNdd +WswHfjfnhWPFDsFRDcbBbR +WjHvjjWTfTvHFjzvPnPtttVTTJVLtJSpmtlltp +tnjrnnnnhNlPBtbbcWpZScpjbZSz +wmsFqfqqqGHTLbzpLLbgzMcH +FGJqsmQGRVFwwQJschPdhPrBndBhtPhrQQ +dRdJRfTnCRNlJjPBDmBJsbBDzm +wSFWSgGVSLwpFhpLhQjzgPzbtDPDbPBsztrP +WMGvVMLLBCclNHHRlM +gfSffQBDBtZvwwpWDHcbwb +JnCmmJCRmztsVPJRFjFchcGGWFWcGcHFvGLvHF +VCPzJnsPVCjtPjdMsMdmVmMBfgTZBTMfSfZSSlfNNgSSfg +lwHJSVZHWWVwJQwbbVVtwWVVdpdPfRfgDLPZLTZLDLgRDTZL +hhBrBqRcnhsFFfddmdmmCmmppn +MNNBBRRshNHbtVMzQJMM +NBsSNtLNTtNsvlTBBRLgFSCbFmbHFCFhgcghSm +WJWWDdVzDZJjDJQcCDHmmhCnmHmHFm +zQVdQZQwqVQHjqzWWWdHpzMwGMBlGLLtTvRvRNsMwwNN +ZCztttSjGSqRZgRPDNQQNr +hLvmHshLmLcFwwhhwLqMVRRRJQQVNnRJMVRDNNRr +HFhTpFqqLcssmqmFftblBSjCjStjbGWBfj +crffjHDfrQfnfpLPgbgP +TmFvFCmFTFFCtNsmMsRvlRTpPbLGMnGSngPppShGpbdgGJ +vmslmwTNmtstzFsCvRFrHBrDZzcQnWqcDDHqQB +LQLPVLGdGrRPRhHgwMhllhhs +ZbSZTNqSZfNqNCtSSmTttbpSWMlzWlslpWHsWgJWhwJzBMlz +bqjqqFFjHqTTTZTmSNbfmdrFQnDdcvVDGQDvvVnQnr +mQdcdsSThlccSWhMgDnQnFtjQPtnjPNvtR +zzsGwzrrHGBfZJGrJpDtNHFjvNvDvVRvNRtV +wZBCGrbrszTbThcTcLcb +gJDDDDcPQgQfNFPhhZGDDcZZSLVtlCqzsMlzqpszlsVtFSql +bBrdwHTrHWTrTtzLlSMCCCprCq +dnBwRvmnbmBvTpbnbWbTjZPQJhhchmJcmcQPfmGNcJ +sjMGBLWGZjsLjJTBCCbvNrBCHC +mpcRfDSSdqDdlRqdwRvFrHFbrHJFJVvDVrTb +qvlgqwpcSQSfLjjhzgnMzsnP +VgmLHHNRNVLNhsNgRHLltjjbCWnCWZbldntW +GGMFPJqPwJGTvvCCdqdqlqCj +rGwGrMQzJQBjJwTVHgDQDHcsfhVhVg +pblwGBlFlWwwlgCSFwbLvQZFvzvZhzvmQTLLzJ +HfqccHzVDNqLmmPmPPQZ +MNtrVdDjHtrzGBdbGWCblw +NNhnnLdnnfhdhVjvThvqVvCj +tHtHBzBGWHBWGtPBSvvpGZVbSsTFjSqqVbscgjCjqqSC +HBtzJHzzpDZpzMWpGPtWHvZwQmNLlmQnmNdfMmNRmwmlwd +QzGqGwmbfTdPBgRRcgmMPC +NtNZhljrNjrSrtltWlCJCJJfcVVRcJcRgPjf +NlWSZZWsHhWWlprSSvZWHrWfQLLQbLGfQpQzzTFQbwzQdd +gcwcSnccnwLRRSzcBQRvZZdvtNtvRbQJQv +CqrCrrPsVstvbfDfbb +TPlPVhWFFMGMnMjbcT +gjjHGvcHgsgbSRQbRFWbjC +ttnBTNSSfwBLzplWPPdlLlMPlMCQ +TBZpDtmnnZNvhJDHggqqgS +zfqzzGwMbllcJFqm +NpHgpRZrRpSrSZLghlTjchNlNbhFmchb +RHLWHgLBggZpHpgHRZrLgZLQCMzCfDWGMCzMQQGvPmvvfC +bBWWlFFBBFdVMLfvsfjrtBvTrr +qZsgNZzcwfjZrfPf +gcnNNcDncsDGzggDnNRJnzHhmlMVSSbhVVVmMbbhVmMlGl +dNNRQszqRhPNfddWltvDltMMNlnncv +ZjZbpgpSpjpJgpCCpbFlTnSDTlzclDnMvnnMlT +GCJpjbgzJCpwZwrHZrgHsRBwBVRRsqdqPhLBQqsP +mnnVCcwGwnsVJntmfnBtBhTDzpzzpDWbDbsLLzpWDz +FcHQdZSRHbhZZWWhrW +dNljMlPPHdMPvRlHMRdjRRNBnwJfCVqwqqffCfCwtcBV +ZGtGzBBGjvdZvLWLcrPVcZcsNVNmVpcH +MnlgngCJMgJbhfDbCDPrHHVcNNrVpbVpVmmcVq +lSPhlClftSSBvdGS +jFhGqVCcPMMdGFqczBltzrtglrsrjBgB +wWgwvfDZvnpmnHwHTfNpDbtRWbzltRlSrRlbBSbbzt +fHJvJvvTwwJPhCccgQCM +BrrrBVgNppDVBbTgDvqWdWZqWqwNmNNHvH +sHsHnHlcJjFwMMFFvGdPvv +HllCQCJQJsnjgtVTbBgpQrSr +JgLPLwbhBrCbLBCJPFFlPFZRTNTZFRqlRq +pmffSWvDcfSfGmvsNHZsTRsWllssbT +vDddMmScdStfzGcpzzwhJwJwnCbLwwLLCwht +sWSSvmsZsdZPWdLPRRsmSrrnlnvJjfnggfrgtfjnjr +VWWWBhhHBBHtljMMfJHrrt +WWqpWVqQqLNGRNZP +QHjjGVBQpffpjqppQsSsQHWJcVVgJFWcFTWgNLggFPNc +bzzmbzzZnZztFTNJWRqmqcgJ +zDZlqMtbwhCBBfppvHDGvf +BNTdfWJmzHNHHzzTdLCfCfCswQjRjljVsh +FbGnrFnrPGSSvGPFZFFPGClLQpjQRwLjLplQhRlsrQ +GbnvvgvPFwbwcnZMMGSFvFHdNHmTBNJNmmmDTJDBmWcT +rBhRPrjJrRtTHtWHWcjc +SDdGqmhdFSqblLGlHHfHWl +DSSmFqhsFqFdzqFgwsVnvBQPPQPQVrnRsJMR +NZcgQdmSwZgdPFPVNFPqqVVF +hlhhjMhGjLhLDGDhCBJDCrRFRrqqpLPfpfPRVPprPm +MlhjlMDDJTCmZddQQSTcTT +zRddrwzwNhrzrtCLtLfsLrqflC +MbSDZvVwGZpJwvHvBVfsqtjqlsPPfsqsfclb +vJpvJvZTVgTdTgwdTn +SZMsTTScDMqwtDDJ +VWrbzFvnrvFQQtnhzdPFmfwGfqmGPfDwmfPJ +rrLbrnVrLvVQpLHSHjsTBBjZBt +bSrpbWpPpfzPRWrWvhJgddrcccgFnFss +ljGNTCtMNLGQjNMjQMGtZJDDggcldcFcvhdFddnhhF +vNCmQMjmvGzpRPPzzmfw +BrbdcqcdSZRLQltNDqFpCpHH +jnTzWsWjWjwTQnzMvFlCzNDhNhDCFGpHpH +wmmvjVQMvwmsQMMwnsTPgVfgJcLcgfSbbBdBbJSdbSBS +bJFbMdcmgFSFgmggJFcGwjRdzPWZWGDDGGRwGD +hrttffCVVCTVlrttQwzRzwWTqRGDGwjTvG +rfLChHhlpHrfHlnWlpWCpQVcMSmMmSJMmggbmMSMLFNSSs +JRMBJfMJQJTcNNdD +LHsLmspghmmpdwwwcwRCpPTT +ttLLlRSlqjrMqFtZ +VjtHVHtvVqttCdnGpHtplcshglNgprrlMhrcNghw +WTWRvRWFZQLWDvDWzwscNfcflcshlshFlw +WQmBQWPTVGnJPnvn +cpRwjcQwVfQzQPQl +BZgGDBZBsgWBDDJzlhfhJVmzVfmThm +FqWDDGrGDFNqFrDZFnplNHnSwtnSRwRplN +VMLVRhRLRfhfgGdfVdZWRdTHNqHCDTrSJNBBBgJNQgND +swlcpsFPcPwzpSlTTDrNrQPQqQBBrH +zsppFscsscmbzsFsbsZbMfRZdVdVMbVSWhLG +NjcjHFjrHHFpjGtVtGWVZW +fwPlsJqdndPnwJfQdfllwNtWGdtWMMbtbmbGWbMWGN +CPlwnCwnwqClTJThTDzzFcHNSShrRh +llqlsNsPNTpDNTDNNf +cnvcWFjSrMSFnvWHTzTggHCcllzLpg +wjJSSrFrrMMJGrFFFGjGvJnFswsRwRdmBdZbbqqsPtQqPZls +jlclpqjcRqpjzjnVPgTmBmjCrC +vGvsFNGGMZNvdGshQNJvJgbVMrnbrHVBgBTTbBBPBT +SvJNGhvvvFdfQvFshSpqPqLzRRPctRcLWwlf +LWSSqLVBbNqqLrWHLSHzWbbqQfFgZtmtJCQZzgtCFCQCCnJQ +PlldGDGdjGsMPhssjPmQZFJQQZQghChZQJgv +jwMcMpsPRRdsRjPwNpTWBLSBqVqTNJWT +hWnMWgTffWFbMLfHnFMNfHgjtBSNRzjBBSzSBBcStdzBtz +VGrVCGcVJswvPqJQjtQppBzpSwdjpt +ZqqsCrmmsfmWcHhngg +vnNnssMcZnlnlMFMsnFcZMGqJCbLbNLNqgLbgLNTCpLgwC +hmjzBzHmRSfBfmqgQwpQQJbQJmwT +WVVtthRtRdsdqtddZd +LhZBLfZpmcsFpFzm +vTRRwTRRPnCTwlFgmsczzLmgLvFs +HVVVNCPPHTTtClRVNSnwLTHSQHBMMHrHWBhrQbJhWMMbZbJZ +WPTnnDPjvPlChhJPcgCC +DRQdBqsDQHQLHsBSmVLBcbwgCClbgCGlJghgmhgw +dHMHQDVVRBsMWTNfWfzWzf +PlgFPFFJGgJhhMGZwGbpBtQjjjStBttptlSb +TTcDzmHvdvnDDzdTVnTDmSspWspQLpWmSsmqppsWtb +CHVdcHvdbrwJCMPRGJwP +BtBfcPfBhBGDhwHMlCmrNSCM +dQdzLFTQnRnQVvgLnNlrCCpFrJCNrHJrwm +zRVLZQRRvQGbwtWfbGZb +PPcWcwMmCwwgnphCCLpjHp +TtZsJTzzJSSSZJsdJtTrpblhRlHHHMngpLnnjHps +ZDrvdFZtJqtStrZfMcGDVwfwffmWmP +wCwSzzsHChhMVMhCPsSVLFWcdcWGPccRdjFdJjDR +wBTTlBfgTlfpQQltmfgGGctRdGJJJFDJDDWdDt +TppwnmlnQQqnlpqlmmwqlpphHqrVrZZSzshzShqzsrZVqs +CCqCTgmdMCCCMMsWgqqnTCmJDGJcGGJfrGNGrSrrQpwFFSwG +vZbDZvhDbzHzwNzwNGFNpNGc +ZjBRVHPRtRLjLMWsCDlmgMdBmW +MMsstRChwbChqRBqDrJNpNDsHdlNlJdr +vLmPLfGGGGcTmFfTSgvPCvpZQlHHZpdrFJplQdZHQdHH +GgPLmvGVSPfmfcfgBtjwCRwwjBbtVWbh +LPPgFPccLPRswfsHfJgDsH +bpbpTnCCrnmCtjBnTfDshHDwQVTwsDhQ +BbrjnjnWCbBWZbPWzLDzDWdNlMWS +pnncvLbcppBHgBRpddGd +MtJfjVMtMmFJDjWSjVWzGdGgNQRBzBGNBMCGNB +ZdDdsJFdDmtJmLTbwcvcbcnwZv +FGsfFdNdhfbDdbhbLMhbNNTPJVCCZTLJnCRVJLPCRTVR +qHjsczptHpmgHZBBVVTrrPzrBP +lmpSlcglQtqWtcWjpQQfWsGDMhGFwdbGGNWhDv +hNNNjMFMwthjFfvZBjFFvNSdnzSGGdGmHzHgGWSfHWSR +ppJpcCVslpQJpJJDWHCHmRHHWWGSDn +QbsrJQTQJVJNMNnZTZNZvZ +NmRNLtGNmfcRrtDtrJCnWHJD +blSzzSBssgfslWCCCJWFWHrsZF +zTzbPBhMlTVSzMlMldlgMvvvvMLGcQRmqLLfvRwQ +nnZsfsPLLfZfHLWdsZWZHdmcSpTcGmNScJTRGsTJmNcF +gqVqDMgBlDbwwCqVbQFpTNFcTRSJNSrqqTSm +jlMVMjljQBjMwhLfWWzhhfhZtmLH +bfHwMvzwFBNpRjfZ +nddcVJpGVpGqPVBBFBmhBhmsNRJs +DWcPgPcPgnqCPlWWVWGMwbzwvQSSLbvgLpHHMz +NMVqtdPVHgVlrfVrpnjCwNjjpCpNNpCb +zhSvfWWzRfRLfvSpQjwbmmmvQvwwCD +LBRRTRcLJSgqqMJlVVft +GpgNzzSMGpGTrgzgMzJTrPgzjRwBdBlBbLRBjdBwVbLRVbSR +sQWCfQcflhtQQcWCmsmlsbLnRdwqqBmmbBVbLVLwnB +fCtQWFWDZFCQhCctFDsftNpzPPzZJpgJJNTgNlPZgH +DqLtMSDLLttjdDSRdjZtdpdqVWFslFWrqWPqhwhfFwwCFw +CvTbNvvTJNGHnVJwPfwFFFwsrh +cQBzGBHnTQGgcNtdMMBpDBtCdtLL +QsNDfdDNQsSTtrQZQtJJZC +lLvRWMVMLzWbRjvVgVVGvmTtCrZBrTFFbmJCmsBCrr +lljvlgpMGgRpsjsRlGGsMdqDdpDqNqfhqqSdncpqdP +sVSJVmmtmsCCwschrbNMbcBs +ZgLLfqvzzqgfdqHQLnTLfQQFhFMrhbNGBwgGbMlNcFclwN +LTzqZrHHQvjLHnHdQTdTQvZQJjCpCJDPmCRRtCpStRRmVtmm +ccQVcVHwnnDqNqSWNnVvqwcgJblgRslgmdGlssmGbQdddb +rpFtPrzrMFZvZTLPpglhdssFshssJhsggG +pTtLtBMjZLfHvNWqcBHf +PZnSjnnsVfjfLLff +crvccpglrtHfNbzbHLzmGN +lptTLFFpdgvttFWltTclplDvhJMSMPhJPhChShPBZBMJhPMT +mPSPdnhznPdhSmPGchJdFDtBhghgFgWpFBQhTBMg +rHNNvbqHHHwZwMGMWtgtQMZQFQ +wRqqRffvvNHwrHqrNqLvCrqvmPnzdsGJsSsSdSsLPVVPnjsn +CzlngWpClJlzRJpDnpmzCndrhBcrhwcsBcLsNcsmLdQQ +qqSjqFGTFbPFSPTVjcBcBsDdQrwBVLrNcc +PtDDtZTvGDvFCMzZlRJCfWfJ +vtQDpvpvVvvcSFrrljZZsVjFrV +RqcTTRddRrlsjZrwrT +zmbdRdMmMgbPDcGhGmnDpcQn +gZqJRZRZdltFVGZQDZwV +MCMSRHCMRHBBVtVCGwDCFGtD +jcHsTMBNSSrBMjmMrcTMpRqpJggllnprqzRPzdlP +mWSWHdmHWZWjBnGs +TvchwtTfcTvhzwVGNtdrbjnnBnsnNr +JTdwghvMzwfdcMVJqPmQFRPpCDJRJFFC +DsHDCrszvvhHsshvsrrsgwdPpdLFgWLpbRpWFfMjWjWF +BVJPJmPmGZVnfbVfMWpdLMWb +cNGtnttqmJHNvNzDPPHN +gpjmMQMrfmMntCSCNmSNCm +vDRqphDhzHSdtqdCNH +LFLLcbJRJLppFQlpMFfF +SnSdvchzZZczndNvwcwnQrGfqrTTfhhTDgRGGLQQ +lVWHWMmWmttsFBMLLqLTRRRqqDBGTf +bsFPbFFssmFjWRmjVFjHbczvpZCwvwZccndpvzpzCP +jzngbHrlHQllcbcTCtHGWtftGCHqWC +JJgmsJRwFqChLGtqGs +SmJmSmDdSPRwSMppJdPPwVvvzNQvjrNMNjMZZrQgZNgQ +PvPlPcZPZFllzNzCDdhhdHjrpHNjHBHB +VmgWtJWrqbQmqGDBdGQjjhBGdG +tmbgggbgnMWnStttgnfnTzrCfPvFnccnPclT +RQQbdSRdpprQSNVqqqfrffjvnjnJnhnVvHhBhVjJtjJz +WGgGgLmLgGZMPDBhDJDHjMBFnD +WPPwPGwlLgZwmWlslCLRNbrsTrfRrNNQqsspBT +dNNpHpchLppdccTNtZZTRRPSSnwPPSbSnhhrhnSJ +qfqsFsqffgQMznJrPznbMrrB +vglfqQCgDgFjglCDCjLZpTHNPHttdcZVVN +FWtDHDStZwrFCDwrgWPFDsWQJZzlMdpZzlNpNjdjjQzNzj +BqnVGVcbTmGfHLGVzvpQpvJvQlflMdJp +ThRRchnHqLTGbFCCCrrSSFhFCs +wJrwdZPnJwqPbJPCnjFZdvHtMvsLsTsDtHsHDDqvpH +RWzNRWjRfgjNMMLvcMcLNt +WGGRQzzRmRmVQSgwrwJjjCbJhnbShJ +cjngcvcwbMwWnbMWjbgvnsjPftsqfthqsBtsJJJJBt +HrGFmDDzpmLTHpDsPfsBNBPfzZNPqN +DDVmDplDrpGSVSTTHGlpLnPwCRnWcvWCdPbbMvcVdW +BVRlBfPBffWswVWQsfwBNNPMFMmmGFZGnWZGtztrzMZMnz +HqSJchHTHbTgHhGhvmRzFmnFtzRF +RJqHTpgDLJDSqLJJPNVjsfPwBVsVLlfN +NDrBlSmrFBlbbJllmtHHwhNNhZztqHVRzQ +CMTCGLcvvtfCdCcCvCnMTMcTzjHwVZVRLjRRjQjRHRwzwjVH +dfGdgGMGPggnvfvgbtDtlSJPDSFJPslJ diff --git a/2022/03/part1.js b/2022/03/part1.js new file mode 100644 index 0000000..a7d31f2 --- /dev/null +++ b/2022/03/part1.js @@ -0,0 +1,23 @@ +import * as R from "remeda"; +import fs from 'fs-extra'; +import path from 'path'; + +const readFile = (year,day,file) => fs.readFileSync( + path.join( year, day, file ), + "utf8" +); + +export const sample = readFile('2022','03','sample'); +export const puzzleInput = readFile('2022','03','input'); + +export const solutionPart1 = R.createPipe( + text => text.split("\n"), + R.filter( R.identity ), + R.map( line => line.split('') ), + R.map( line => [ line, line.splice( line.length / 2 ) ] ), + R.map( line => R.intersection(...line) ), + R.map( line => line[0].charCodeAt(0) ), + R.map( code => code > 96 ? code - 96 : code - 38 ), + R.sumBy( R.identity ) +); + diff --git a/2022/03/part2.js b/2022/03/part2.js new file mode 100644 index 0000000..31477e8 --- /dev/null +++ b/2022/03/part2.js @@ -0,0 +1,2 @@ +import * as R from "remeda"; + diff --git a/2022/03/sample b/2022/03/sample new file mode 100644 index 0000000..f17e726 --- /dev/null +++ b/2022/03/sample @@ -0,0 +1,6 @@ +vJrwpWtwJgWrhcsFMMfFFhFp +jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL +PmmdzqPrVvPwwTWBwg +wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn +ttgJtRGJQctTZtZT +CrZsJsPPZsGzwwsLwLmpwMDw diff --git a/2022/03/test.js b/2022/03/test.js new file mode 100644 index 0000000..95bdb5f --- /dev/null +++ b/2022/03/test.js @@ -0,0 +1,29 @@ +import { test, expect, describe } from "vitest"; + +import { + solutionPart1, + sample, + puzzleInput, +} from "./part1.js"; +import { solutionPart2 } from "./part2.js"; + +function expectSolution(result) { + console.info(result); + return expect(result); +} + +describe("part 1", () => { + test( 'sample', () => { + console.log(JSON.stringify(solutionPart1(sample))); + expectSolution(solutionPart1(sample)).toEqual(157) + }); + test("solution", () => { + expectSolution(solutionPart1(puzzleInput)).toEqual('TODO'); + }); +}); + +describe("part 2", () => { + test.todo("solution", () => { + expectSolution(solutionPart2(puzzleInput)).toEqual('TODO'); + }); +});