tadd day 3 part 1 - aoc22 - advent of code 2022 solutions
 (HTM) git clone git://src.adamsgaard.dk/aoc22
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
       ---
 (DIR) commit d542900c3f9dd47037e95ba4525cd280933dccec
 (DIR) parent 6759117bc4ae6e546eda4f5cca25727cbf23e411
 (HTM) Author: Anders Damsgaard <anders@adamsgaard.dk>
       Date:   Sat,  3 Dec 2022 10:29:19 +0000
       
       add day 3 part 1
       
       Diffstat:
         A 3/aoc3                              |      19 +++++++++++++++++++
         A 3/input                             |     300 +++++++++++++++++++++++++++++++
         A 3/mkfile                            |       9 +++++++++
         A 3/testinput                         |       6 ++++++
       
       4 files changed, 334 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/3/aoc3 b/3/aoc3
       t@@ -0,0 +1,19 @@
       +#!/bin/awk -f
       +function val(c) {
       +        if (n=index(items, c))
       +                sub(c, "_", items)
       +        return n
       +}
       +{
       +        items = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
       +        n = length($0)
       +        s1 = substr($0, 1, n/2)
       +        s2 = substr($0, n/2+1, n)
       +        n1 = length(s1)
       +        for (i=1; i<=n1; i++) {
       +                c = substr(s1, i, 1)
       +                if (index(s2, c))
       +                        sum += val(c)
       +        }
       +}
       +END{ print sum }
 (DIR) diff --git a/3/input b/3/input
       t@@ -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
 (DIR) diff --git a/3/mkfile b/3/mkfile
       t@@ -0,0 +1,8 @@
       +run:V:
       +        ./aoc3 <input
       +
       +test:V:
       +        # 16 (p), 38 (L), 42 (P), 22 (v), 20 (t), and 19 (s)
       +        # correct sum is 157
       +        ./aoc3 <testinput
       +        
       +\ No newline at end of file
 (DIR) diff --git a/3/testinput b/3/testinput
       t@@ -0,0 +1,6 @@
       +vJrwpWtwJgWrhcsFMMfFFhFp
       +jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
       +PmmdzqPrVvPwwTWBwg
       +wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
       +ttgJtRGJQctTZtZT
       +CrZsJsPPZsGzwwsLwLmpwMDw