commit 25b8bbe6203fa094f3e803a69779e4f87db9d6a3
parent d924f349626476d8aaf2adc258dafb23a2866476
Author: bsandro <email@bsandro.tech>
Date: Sat, 3 Dec 2022 06:16:49 +0000
Day 03 part 1
Diffstat:
3 files changed, 373 insertions(+), 0 deletions(-)
diff --git a/day03/input.txt b/day03/input.txt
@@ -0,0 +1,300 @@
+mmbclcsDHCflDDlCrzzrDWjPJvjPvqJPjfpqZQdfWd
+NNFLnFRNhgNQtMLSFSgwSwGJPZWLPvjpjjJGZJPvWPvJ
+BnwFNgVVhwNwVQrmzbrrCHVTmDsm
+CTsVssjPTWPbzhfbfqqpbqJq
+RRttdQlRdnNpdmwBnBDhFrGrqDGBqJJfJD
+HttgcggdNwQtgcpTsvjVPTcssjsv
+bWrpnrpPcFNbfPtwVPddVVDw
+jLgqqJgjZLhHjRqLHLjqHgftpmJVtTmwQmtGddwwDVJm
+HhzgshZLpHLjqhLLZRZpLRbbrlBNsrrNsFWcCvvFCcNN
+PCJJfJhjhzjjdBVBcd
+RnNnMHnRNtWnBSQHVbqSzFcq
+ZlnZZZNmLrNrgZmmccGJwGwmGPJs
+hFZLsjjjMzwPPjqw
+SQtTcpWWcpMSDlQpDCQJqbHzdSzPzJvPPwqqvH
+tVfpGWGDVlCGGDCpVWppVcrZFMrnmnLfsrBrnngLmMBh
+PFPhCmpfhSMWnmgrtgMW
+RRQdGQvTQRzQDGQTQcRqTTQLvsntnltvrWZlsWlZftntrMtt
+NQTzfGfzcdTBhPJSNJbCCVhJ
+sbtqfrqNfcdqsJrfhzQmzhpvzvpQmpNG
+SHsSDsZVHBHnRZDBZRWSVDnwFhzvphggwGhQzQhgwzmmPzmg
+jjHVHBlHljMsJjbbCcdttc
+NccBbvbNZbbvBGPVTGhhlCZCPg
+tdWHQtLLMrrdWQRqWrMrMrMPsTPThDlTssFFCFCVTDtCDC
+zzWmMQQLVQrWrbBczNnwNbnpnN
+THGhBHgHThvnHRrQRpMNSwZSMrwD
+szsCzWljNfVFFVllPPzzVWJMJZQMJbpSrwQCCJMDZbbb
+WzlfFlflfcmfsFPVfWVVhnNgchHndHgdTnqdNHTh
+zPhDwsWgszftMNfPjjLL
+RTRbbJFHSrqRRrHRrjGQBnfjQQMjLnmNnF
+ddpNSNNpSdWsvpllWzsl
+FgDgbSMnhhntCLCC
+HlqzJgPfJJgmrthhrtTLqL
+fjfQgJPGVjwGJcFMcSvdScWjMD
+pnFwRPlVVlLSwpGbvSmZHmbbdbHm
+sCzTQtzrrQMzpthTdvbGHdvdHNsZqqqZ
+ChTTWhWBWCDrrTrjCrhtLwwLFgfLFgjnpfpwLnVg
+MRDfBDMJsQdmGWsM
+pFPqwswhGzWSCwGN
+jphpbgbqgFnqjjnthLtJsZfJRHfllfTllDLflJ
+sdbLCqnbllplrdrsqbZHRPRBcBcBZBcHcZrM
+JJFwDDQmzfmhmWhJhwFWbMbcNBNRBBzbNPHcMHPj
+DFWVQVGGGbpGClllqLSl
+mRmFhZRsmFJfFRzwRrFrqmRFtNLLDTPccVqVtGTLDnPccPDN
+SBddBlZMjpQvvBbZvVDTtDTDDVGnLTMPVT
+dCHWlbHbdbllsRCCgFwrrZCJ
+hwvwFHhlTLwpLDQhpHwTwBLSfvzSZZsvVsqCGqzZSfCvVG
+WNdtmjPjcWdWJWntcWbjzmFzrrVrzsGzsVsSVrZZ
+PbJPntMRbbdJbcNPcNFjnhlwwgpDHRBpggTlQThhpQ
+mJvRGHfWmvWJJVmZZnZVffpglGggrTLNzLwNLrszzNpz
+FqFMMShqjcMcqPbbjPthNgRggPgLwPsgLgszwNpl
+DFQqQMhRhDRmWndDnJvmWW
+jVzfvzSVpnnNSGjjVpNlSNDzqBBmWCBtWWtfFFCCmPmJCCJW
+HLrRLhwrMZbHrWqWBhGPCGBFJW
+wHHMRMQRQrcQRTTcHrwwRcQbDnpvnppzGSnvnSNzDSNTpjnS
+qzrgfppGzPDJHfbZbHZn
+vTsMvMTclhNlFlFhdhdqHHmHJSJDVJnJFFwJHHDn
+slccWTTTcdCcCqRQPrzgBWPPRz
+thfHHdDwbnVzwwdthZlqjZmmTmjfZcfMQl
+sGFGJFFvGpFPCJvLPGPgZlpmlTMcmlmZrmMjcr
+sJGLSWRSPBBCCPRFWPsNBNwMNNVMNwBzzMDhnh
+RwJMwdbzMGWbLtLVQpPl
+gqNfBmBjNmcCqjqjQllWhhQlgDQtpWlh
+cfccjmcNmHrHBmCBcTMGtTJtZzrTvddRGR
+vbbvqMhcrqMQQLHHvFvHHvpPlnPLfVfPnfmwsNwwwlnVls
+ZdBZZgDRDzBRJWBzzDZjDDNWNnNnPfwNPwmSwlnCnfCW
+JgRggTDtZmmbbFqrvT
+lSgzfSzgGcNfDPsbMpspbPnnrrVV
+FmWFBFQHBJJBmmWJFHWFrwtsVrMbnrVVwwwpWMMp
+FFmmJmvZjQBRQRRQZQBvNNglRhDNDffDSDSMGlDD
+VQPBCZVfHQZGRVVpmzPFmgSgbSPTFb
+NcwLjcWnFhCpLvCF
+tNCDtsqltDwtWdncJZVJVRMGdBQffHZH
+pTzgPsLQfMLqTVFLGbVbbFVJVF
+ZnjgjvSwNNbFJVwN
+jWcCnWHWRvWRHHnWRWjvdZnZtspMqfzrMqfQtTPQgfPzfzcM
+CTqHMNSSVnpjNSTFzMwPdslwnlPccbblgcbd
+WDLqvLQRfLBgbJPwlWgdPd
+QRBqqDmZZRBGGfCTpCCSMSmzjSpz
+bPlRhmnPhTwhrvrlRrjgLjgsLpszFldgFlgF
+tGHWfcQHWfLZnsLQnjpn
+cVGtCtGGcNWcWtBStqnWrwmvmbmJwJPwbRBhRRMb
+BjVTVfBsLlLjLcBcZDRJpnJRDPRJqlPRqJ
+SzbQMQzFgfFzmMSrbzGpqqRDtqmnvDHtvppHDm
+CrSQSdgrWdbFQCWggjWZTfBWcwBcTVBjTs
+RtqdCqCTbRfRbbHR
+FhwWWqgGJJgJHLHPFFsDbsFP
+MrpmmwqhMmJMwpvlNvtlTrvtZSSr
+VscvcmcmbhDrRMCCJlqnSlJnSljR
+FWdwWgpZgdBLTgTWFwZBgWpjbCNqPptCSlNCStnSJJNPPJ
+FdFWGgWTQGGbGvvDHDHzMD
+WhhBJrBqBchcQBBqcqqGRZRlrtStlSlRszlzSSRl
+fHdwgdjbNCbCCHNgPgHNPNplSRtQtltlRDZsQfZsZMRQMR
+jQbQNwVNvWFJvqcV
+bjbmmgSjwTWqWwWqcw
+sQGfPZQDPqMMWWWd
+fqBDfqqZZGHGDsNLjtmlttpgBllpJt
+ZDmCWtftfWBLfRDWwbhqcNNtqwjtjwqt
+SnTTsnlPMTlSSsGMMSddSbHjhwJwwjPbcvHwLwcqjj
+GrFGzSgnTzLgDVfQfQrrDDfm
+PngprCCmcBDssRFBSbFRRs
+fjwHtjfNWfGwHfdtjGMdWSSdQTsQRLFSSslPSFTRlS
+jGjMwMffWHNZfhwnDzqCpZDgrqCcPr
+qzGPbzbDZGSPvpvrTvQsQwLWWNLj
+tFddBhgnVnMMhBhLJWLwjQMwMrMLwT
+BHFtVHgtmlhRRZmSTDTpSq
+ZwzLWWWvWdSJdJQwQLzBqqbbhhCcNzchqCNPhb
+rHfDRfHGfHsGTPPmhmrrNhjmNg
+GlfsfRTfsfRtsstfDVHpGsPSFQJSWQMJwdSLwQWpZZLd
+vnvJvpJtQwDBTljHlLHhDL
+zzGqMwqMqbfRfVGzFmLmLTLddjmTSRLBBB
+zGfrbqzwNvPPcCtr
+jwCwSgvPSmCwSqwgbCRQGvsRVnddGZdflsfB
+MhzHLWpMWHHzNzMccDHdnZVZRZRGQnGlGRGLsZ
+nccNHTzWHDcMWHcphpptDrcDJmSgFTPjgPFjTjgSbqJSJqbg
+bVhPWqBBbdbdPqVVqhSfpcmFsfwLnmmjnfBFmn
+TDWDGzgRvrNJJJrzzzGspwpjncsncFmwFmsNfw
+vMDgDJRWgDJtHDJMMPQQMdQlqdlhZZQbbC
+SpdpQqLwrDcmPhggcS
+ZHCZstHMhjGmtPDc
+NNnnRHMZNzTMHZZTTsZMvvRhJJwWzBVLVQJJqWwVhwJpdJ
+mrlMQlQPPPhhCbZRNpRZcffmFmgc
+VvJVJqDqvqjDqvtVttVSHTTHLLcggBNBBSRRFfRLncfFLpBB
+jHVHvdDHtJjtDWjwMhWwhwwwlNswPr
+MJvzvFLhbTnJCvRwWSTmSWWWmRpc
+tlVlNqBsVNNBQPrWgqmcgfwpcWpdcg
+ZBjHPsttQrPrrVsBQpVJzhZhvnnbMMLvFJJZMJ
+hBfJffJJNhnDlmQdnmSGcd
+sQrCpRsPCrwFZQprpQCzljdjMMjMGGdGSmgSFFDS
+zZpzQpwzHRPPTrQwCpRzWZHqLVvtBJvbBtVJhJLhHtLbVv
+DsPnQGnnwlVJbSsb
+HCfCfTDMTfHvCWMZDcRVVSwpbtlhVZbhhpVllp
+TmCMTvfjRCCvcrgNNPQDmNzrLF
+ghwNtnMMRTZtwTphjjBQfLJjfJFdSBTL
+lldzbqzrCrfLJJBBbSWj
+DCvlvqvshNhRndGs
+rWwWWDJWWrFLdRWtRhFZTCbCSqThFTCbmm
+BgMvSzvMpVpBlQNQVgfqhhGCbGbThQZTcbZTCs
+nMpfjVMnzlgRSrnHnwdSDH
+blFhFgFgPLvjDwNvWPnD
+qMBzMCCzZMzJHRrzMFZsnFjQdZnvvNvvWQ
+FzpMpGMRrlSSghLhtG
+hDlVfDdSTjTJwjMTZT
+HgnqtGgQRgRHGtrgqgSZJCrwBZZCrZwWJWjMWZ
+zqRbGNSbbGRRQGRQFzddfVDLVhhfhddV
+JwhLdLNLbwmJggCbbbhjHnDQNZWQWQjWZZPlHQ
+GStzfBFzBMGMftpGcFFQDDjDQfZPfnnmDPfZZj
+FqMBtFstpcTMBMSBGSBtqMhrwJLLTCbLhJbrhTCmrChv
+WwWnTNVBNvWwBngdSqdRJJzncLSLpc
+HPMZlGZQGtQjPdpqScpdjP
+GltlGDDCMMplHCDphtbCHDwmWNBgVgvWhrmWssTBwWWV
+clNNclslcLVWBNlGcVvdSHQvTMHZZSdsdQHM
+gGhfpRwRZHMdJgZJ
+fnDrpDtDrrWGcWVW
+zdVzgdPSWRsHVzPsRRPHRHRRntnQrbDmfDfwfQwwZwfnbgMD
+qNCJvjNLqjNhBBGjBvchhBCqffbffDGMnbwtfnbmQwQnZQMt
+jccqJBvCjqvLTLJhJZpsPdSVdPszPRFssT
+lDLvltDpvSpqGjVVMljGjW
+zrdnswzcSzCgrdnBBjVcBBcjWTVTGb
+PZgFdgHHnrdNDPvvtfNQSJ
+GlLFbFNFtzcvddVpJVfGsCCC
+PWhhMgWTTnhQrqMHTWqwddCVjSwQJddpBdQffp
+WqJZDHPWgJrHnPqhnnqLbzzcLmbFDNmcbRzbbN
+vtDcSfcWfmfTSGwvGDwTvFZVppsszCsVVVFjVzSVSM
+NrrLPhdBRJLbPhrrRJwhBFZsFVzQzszsZzMCZjsJQF
+glgwPqPhrRqPqBdNLwBrLRtnGHnDGmDqHWfGWfGcncHH
+BtSfgpgvQhlSlwzZ
+VHRmVzMPdPVRmcdhQwQwhClNNNCb
+PcPMRWrVRRHTMDRVLPVzBnnJprjppBJtJftvpBfp
+RpgBRVpLgBpDFCCPPVGvPSVVvb
+dHrMdlWwwljjrlHrqmWjmWlGNvNSBBNhhSCSbSvNtNvQGd
+TfmjqrwqHmqHrqlHwHpgfZFBzJgpZnpDcDBZ
+NWTdFWlSMMMWTzVzdQfVpVDwwf
+RHrrGrLqJLBqgpDgQfwfffHz
+cssRRsBjvrGRjLBLrZcBvBqWPQNnlWTmSnjFllWMnCTFll
+DCCDbHDhgbtCLHFHCQdQdSVfbNMdnfcSMS
+ZZjPsqRZJlJlGZPTTqqRwJjZQVnMszVfzdSVScQQSQcNQNfM
+mlGJJqmZjBZPhLBrgrWHFnDL
+wLpCpDmmLwplgwVLwLwVgLLbWWJvJRTsRvbbJWCRsfbssv
+FHHPFZnnhZQrqTTlSJRSrlfvrv
+llZlPQFcZZHchjhjPqnjNFqNwggmDDwVNBBDwtpGMVDwDwVp
+CctttjCrftNrBZpPgpgbNqdq
+JhMwhMTGhMVhwDDMJJHGJJJBldWggWglddlbqlbPHbfqgf
+DvJRMJVVJMTfJtnrnRjCSRFnrL
+snDPGSQPnSSQQFwFFdzWFvmCVmmnjmCJjHjbZZhHZp
+clgrgrMrRfqRlNggmhmHrhvVbpCjCVvV
+fNgcBgqqLMqRqgLggtcTftBFdDFWQzDSQWPPGwWpwtGGsP
+wSJWDCbwVdQfbffHfZZr
+glgTBzzPSFhLFRvRQnZspZQpnvRp
+qTLqglLNFqBqVMJqwwMVcS
+rCWNCsrGrGGHrwQQHrfNDfvgLmmvMmLLMpmLvLPpPgww
+djcdVdqJJcqqBstdBczbStThPPMPghvSpRgmlvghlmLpLp
+qtjdBqzbTTtzTJTzVnbBdsNfDHZGGGDDnGfNDHDHFZFD
+mlzzVHZmzvHflTJHqlJcZTvdcdCCPnddFGhPdBGhMFGCGc
+QDRrWSprdqqCqDhF
+NWtQNRrgWjpLjLsrRrQpfwVVqvwHzvvmVszlvlvm
+DmDDtBDStSLcjLBDhhhmfnNFNlJJMFWFHSMWFpJNHp
+PgMCgVgsCvVwRVRCwvgTzCMRWWwdnWHpNHFwWJJnHdHpprnp
+RgZvvMbsbPCRGRTVPGmfBqDDqmthDQcmcZDc
+WrfWpwwCwpdWCMBzqbtpjVbqzVqp
+RvQQSFJNFZNNLPGbMMPqGtGPzF
+DRvmNhZvJZmNmLcDZQcQNRfnnTMwrMHnfTrTCslsclCn
+httbcnSsgtVMsnssnzghmmHvNmlHVLBHBLrVGGLN
+QFpjZqpqWddZjjDWPWPwjFpfGLBfBBrrNLlBBgGrLCLmrfBB
+QRjRjwjwDhbRTJnhgR
+FTBTZqFVJnVTTPBTVmFbNjRffzrRrNQrPNQbzh
+tCWwHMLCLDstlzdjwbzbQhRl
+GvtChDChvtGSnZqnTVvBVF
+spnFVspFPScprWrGvTpTWpvW
+CgMqCqPLfqBBJGHlMrrJrWWl
+ChjqhCtgdLPSQhQsRnVQ
+bCQVZCJcrSSStrWTdhQqhzzMdhMz
+lPDwNfgpDfBNgfnlDPRDpLWRhLbMjzWqMqWsMLLhLz
+wpNPgPwwBDfvBnfgBfwglHDCJmtFGFmGSmCVrVCGbrCcFv
+zNMJCHVJQmNLQFhZ
+PPRPdGcRdPPjfjflqdjPDPTZQrhTFZFrmQZQBGZCFmLL
+CcWfjjgWtjtMJWzVnSJVzJ
+LjhDjVCVsjNfMsMQ
+SdRpGSndZnlgpdSFtrQMtqNZJtwrMfQQ
+cdRpcpnggRSmWpcLDHCCHfhBmPHTCV
+zpmsJlptmfNwwFswGHThRcTqqHqhhWCWzh
+SLgLMMgnPbSLPbPMDqZZcTWCnZWtRcWCZC
+MbbvQtMVSLVrDMvSMSvSlwNsFNJspJFfNNmJrGGf
+wvcQjfjQvQDJvwNwRdpRScCHbpdMbSpl
+rfrZzrzWWmzlRpMMdpzd
+LqrmFrVhFJjNfFfw
+fVflVfmjQtZhzdrdlN
+HwLLJvCcpcbRvDwpDvDCpqtTPPMNWTzTrHZTMPzPMPdH
+LbvbJqgcqbpJLwvbbbmsmgVGmQmnjdSfSVjV
+FngtfmfTTSFjFDnfjDbwnGzzGBGzbVRwVcwz
+WWMrLLZLvZMWsrCcjzBGcpzLcGcVcB
+NhMWllrsNZNrWZWhjCmmSmfgSTFDHTJfFSNq
+lpqpqlhTSZqfZlwthPHsHcdHPhsCHLrP
+zVDTjMgFbscczPbz
+jRRmvmngNngqTZBqNlftTJ
+wrMrJZPPrNZPZzhzMFPlDqSllsLSbWDWlWqNbb
+VpGftgghtgQfVBgdnpBBngtWDSRbbSqltbRblDDDtqSlqS
+gVggVgpVHTpmndffdVQVTVggjMwwjjMCjJFhPvZMwHvzMzjC
+CtQPCFVlljWrNhTmCgLL
+zsZbsnsqbMznDGNrrTqTLqWRHghN
+zsMMGMSssSSzMGGMcvDGJFphFwPPvPvQfJppwQfj
+njfVlRDDfDwHSfwVwSLnQZqGBbGsnZBnbGqZMbbpGG
+zvddNNdWFgTPFgWNvNgcZqZbbqMMgBpsZrRZpgGG
+CPchdcRTcNvvTWcmTNDSSfjwSDHCfQwlJLHl
+LPmccvvFzzLvvQSzlFvFSSQDDtDfdDVdnDTBDsVTjDndlV
+CbgNZWgZrbbqhrgTnVjjCsGdBfCfTs
+BhwRrNrpQvLzvJSw
+DpGFVsprFpTBJjsnJnnhdjWh
+fbHCcbVHCgfMLwcqfLwgNdqhjRhnJQQdtQWnnSSJJj
+gCZNVNzbHbfNHcHNgfCMLHHzPBDPvPDrlvDrDlvpmFTFBF
+tsBQFgFpFBfsmtLjtgmtrQvCddSwSCwwbRvbwdLvwvRG
+nqPZnMznTZHZlZPfGCHfbHwNVwdRwC
+MPWqqzhZmBWFQfFW
+FNMTTwqwNpVWPgZFFQ
+crScdztJtcccSzWtzzzbStZQRZVVVHZVRgRQPHQhhjSZ
+lCDCCdJJdbCdbcJzrcnrJWbnLLlvMMTLNwwMvfvwvMmNBNMG
+WHsJMlBHCscDPDPtPBRDrL
+jmTvgnqdsbPmSrrPVrwL
+pdTgjgqbTqQFdjjQdqTZzCcJsZzQzcfsCCHMMl
+QqMQGbMGGGzSsQSqCPcCPrCRNNlSZllc
+vDHdmDWTdmwphhDdJwWvHdDCZPZVllPVRPRZNPVcZbTBZN
+pmWHDmpmLgJvhvLpmvdvLWbsMgfsQGjqjtsnGfGqzGzzzQ
+tFvMtFtFMvDDtMvLTpffQWWSGTsDTlSS
+jqVnBjHqhPHbnhqPqWllfpfSTplQPQPGff
+bbjHVHdjzqBznqVHBHzzqVFMJNMvmJtvtmcQFMZQFdJL
+dcldCJQnldtTMdsccThhDDDDFhwTqDRwHR
+ZbGzmgZSBpPPmmbNbZmgmNPPRqFzzVVhrwVHwRVHrVRHRRrR
+bSSNmhPGWWZgQtLWtlCdJCMd
+ttGBGNNgBgVBltlTJGJZpZlHSHCHfDSWpRWWpS
+LhcLrcFFqdhLFLqvwMdhcPWpHHSSZWjjjCDwSSSfpWpD
+fPMrqMMnqMFMbqcfnPMMBsgNttgggBmzJzbmGtbb
+fjFhHHHmfjtLjrFmPhLbCdzBCpPCJQpJJGzJCp
+RcDTnvlVqRnvnvRNcSzCJGJGCSJJCCdQqw
+NTlMZVVlVVVlRTDTNjgGLfhrmgLFfZFGhr
+GmbVGWttmpmbbqDWgVGGGtWNvNCCsHLLFsvHMHHLFnFn
+wQQSdDTfSTsLCNnFwvFv
+dPDBTBjzDftcBqBVbGBg
+LmsfRLwCfZslcjljcjDjwN
+gdRSrHHrSbdrggBzHBShHlqVvVDvcNvlcccjGlGjqB
+zgTnSFFJdngddTZTPTWmspWQWWPR
+RMZMtdsVCsRdddbsVcfcqgNfNDqGqGfzPzmf
+BpwQrJvrjnSnQpBBBJCJjBBQlzvmDPzmDmglPzPgDNfNmNgz
+LjLTnSpwjQTrnnLCBJLQjhstbMhsRtTdtMHMtbtsZd
+PfrPHmrCRmRhcHCcmCfhhmWMLVpwVqFvvGGLVpQSwwSvSFFP
+sJnjsgsDDdjjjdTglTgDBsBnSLdvwSqpQQbwQSLLLFSpQpbL
+tBlngnqgqZggTZWfCRZmMCHHmM
+LGGPQLDLPWmQLVdVdLLGbdvMNjfvHNFNNBbZnNMlHlBf
+CshzsJBqTTwhttzCJzRtcNcMljnnnMjHlFnMcvnHfM
+gqJsCwzBrQWDSgGmSS
+FWVzVJjmbbJVpPwjjJDQsQNDgtcrWtddDQMg
+TqRqCfGGBTzgTzDNNs
+qRffnhhGvvvpwbvFzp
+gLmMTpTCmRhgTLhCCZBSScJFQQQclWWMQJSJQW
+rvfbDGjGssqbbrRSJJWclqcSwzwScc
+PsDfGfVRjfTTTZNBPTZT
+hWqrPzzMhrfmfdNtdZLNrnGndn
+SwvwSFslbbjRsspQwsRwzcnbnNdTnZDbGctZdTNtNt
+wvJJFsvpSSvJFjlHjzplQwJhCfVVhmBmVWhHWmWVWqBqMW
+GjQtgjhPhGgsQjgtthrrvBlvljCrpCdlqBMb
+RFDHDRFRczzlbqlbvqvHdb
+DDFcRWTWFbSwRWbGtSGtgPfGGSPPtg
diff --git a/day03/main.go b/day03/main.go
@@ -0,0 +1,67 @@
+package main
+
+import (
+ "bufio"
+ "fmt"
+ "log"
+ "os"
+)
+
+func main() {
+ if len(os.Args) > 1 {
+ day03(os.Args[1])
+ } else if len(os.Args) == 1 {
+ fmt.Printf("usage: %s inputfile.txt\n", os.Args[0])
+ } else {
+ fmt.Println("No input data")
+ }
+}
+
+func day03(input_file string) {
+ fmt.Printf("day 03 input filename: %s\n", input_file)
+ input, err := os.Open(input_file)
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer input.Close()
+ scanner := bufio.NewScanner(input)
+ var sum int32 = 0
+ for scanner.Scan() {
+ same := findSame(scanner.Text())
+ // unicode rune to fantasy scoring
+ if same >= 97 { // lowercase
+ same -= 96
+ } else if same >= 65 { // uppercase
+ same -= 38
+ } else {
+ log.Fatal("Invalid rune")
+ }
+ fmt.Printf("%v\n", same)
+ sum += same
+ }
+ fmt.Println("Part 1:", sum)
+ if err = scanner.Err(); err != nil {
+ log.Fatal(err)
+ }
+}
+
+func findSame(in string) int32 {
+ strLen := len(in)
+ if strLen % 2 != 0 {
+ log.Fatal("invalid input string")
+ }
+
+ comp1 := in[0:strLen/2]
+ comp2 := in[strLen/2:]
+
+ // only 1 misplaced item per rucksack
+ for _, rune1 := range comp1 {
+ for _, rune2 := range comp2 {
+ if rune1 == rune2 {
+ return rune1
+ }
+ }
+ }
+
+ return 0
+}
diff --git a/day03/sample.txt b/day03/sample.txt
@@ -0,0 +1,6 @@
+vJrwpWtwJgWrhcsFMMfFFhFp
+jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
+PmmdzqPrVvPwwTWBwg
+wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
+ttgJtRGJQctTZtZT
+CrZsJsPPZsGzwwsLwLmpwMDw