A 03.go => 03.go +70 -0
@@ 0,0 1,70 @@
+package main
+
+import (
+ "fmt"
+ "os"
+ "strings"
+)
+
+func priority(item rune) int {
+ if item >= 'a' && item <= 'z' {
+ return int(item - 'a') + 1
+ } else if item >= 'A' && item <= 'Z' {
+ return int(item - 'A') + 27
+ }
+
+ return 0
+}
+
+func part1(lines []string) int {
+ sum := 0
+ for _, line := range lines {
+ compartmentSize := len(line) / 2
+ first := line[0:compartmentSize]
+ second := line[compartmentSize:]
+
+ Loop:
+ for _, i := range first {
+ for _, j := range second {
+ if i == j {
+ sum += priority(i)
+ break Loop
+ }
+ }
+ }
+ }
+
+ return sum
+}
+
+func part2(lines []string) int {
+ sum := 0
+ for i := 0; i + 3 < len(lines); i += 3 {
+ first := lines[i]
+ second := lines[i + 1]
+ third := lines[i + 2]
+
+ Loop:
+ for _, f := range first {
+ for _, s := range second {
+ for _, t := range third {
+ if f == s && s == t {
+ sum += priority(f)
+ break Loop
+ }
+ }
+ }
+ }
+ }
+
+ return sum
+}
+
+func main() {
+ bytes, _ := os.ReadFile("data/03.txt")
+ content := string(bytes)
+ lines := strings.Split(content, "\n")
+
+ fmt.Printf("Sum of priorities is %d\n", part1(lines))
+ fmt.Printf("Sum of badges is %d\n", part2(lines))
+}
A data/03.txt => data/03.txt +300 -0
@@ 0,0 1,300 @@
+GbccTtTSGGbgrcWBGGrdgTnVQnCmNpCJlNnNPVfClcnN
+vMzvZhzhwDLVmQnClwwNQp
+FRsZFzjQFsqRzRRjDZbdtTgdHBBWGrdBdHHs
+HCLTmbCLgzNBNPSSlT
+JJGMWRJMrrdwWWGjGWMLRGLjBzNQsBzPPfflzDPBsBffDrQz
+pwJdLMjdMddWjLtwZWMMwGtHhnvnCnhvqVFFZnvbgbqVCZ
+tvMCDCSVVvDDBQFRbqWMMsWgFWgc
+BLLPTpBmfLPrHLLfLsbhRqbzRRcRHgqssR
+dfdNLmPTdNZmZdZPfpmTJLPPSvQjtSGVwQSDJSjSwDQBVCGw
+wZWTWNFqzwZbWNpSgGMVMtTHsgGs
+nlnPnPvLQjzdtsjBHBMMGSHg
+LdnrrLnhRdLLmLDRPvmdQnJDJWNqcCqZJZqfFqfcfzcq
+vPTbfWggzvGVqjsVqV
+dDcJHZcZHmMFQQMshsjcRqVChjNtqh
+dDHJDmFnrJmQFnBdMdQHJdZZlWTTPPjTLWbTzLWlTTfwjzBT
+VfmDHDfZzfLcZLLLHBFQtRJTcdjgdTgFjjtR
+WRPhMlGSshPRGgvFMtddTjjCQt
+SPhWPsbNWShsWllswGpzLmzfZwmZfqLVRrDBZB
+MtZgRgJJbbGjgDDgbjRjRbGcNdWwncBFdLBBMhFBQwnWnw
+vlpsNVsCzzfHpvTpzlSSSvppcQdfnwnWhndWndwfQLhnhcFQ
+pCsCCTHVvSzvPvHvzpPVTVHHRJJDgJZjJjqNmjZmDtJRZPNR
+GTGTbhhPjJJjBhhZsGzmfHSNsmHHgSdL
+FcFpMDFDRFfsRHSjmLjR
+CpFjqcCjwjnpwhTPTWBQZZTb
+zdzzwDlnTDQQQQnqQqqsFqnrSBSprbpjNJJBJPPdpJfbZb
+hgMcRVGMtHgRcNSPrpfgfjJpBp
+CLRHVHhtvtvGPWFFDqPDLnqP
+jssjjjHCSGCMNJTWWCJT
+DvcvBtVrrDSNWcMfLRfM
+ppDZSpBhBvBmvDHnFsHHPnGPGbQp
+VVVLsLWnjVVBGgScjtBjjLLgmJdPmJmfmhmGmmmNmJGhPNJP
+QbqlZqQTZvMHmshvFhPfffFp
+CsTRrQrwbCbrZqQTQlRjtDBSBtwBjgVWLBtgBt
+FLsSFRTPscHZmGRGGc
+npNNptgttCNpgLbnQMgnQnMNqVhGqZrmrmmqrmcrqmCVZwqH
+WMWbtpjLgnLNvSfPPzjvjPdv
+FcFFhZlhlMrHlSFSrHZMJZSVmmLmVLLCsBtLBCzCBVDRcV
+PMGPbndvGfGstLzDCmLB
+NwjPqdvPpvgddqgwHrZhJlTlThpWJMZp
+SdjStScTWTwwvwwfjRhQPQQQDlLBGpLrPrLrLc
+gCqJbNsVsNMgzMJnnqzNlCLGGlZZPrLLlLLtpPDl
+JsFJFMmbJqqnJbhSHdjWwjtmHWvS
+zBFDGGbNzDWRbDccsWslHlWWsJcS
+zMVqTwzPfVfVMwmlcZTZZlSmTlmc
+MrMvMCnrMVMCPrPnDFFGgQdFgRdzznbd
+rJtJnrnSShJgcCsjjNNMSSDzRmzm
+HWDWPBPDBfFVBffqplvlmNlQllvzQNQqlN
+FVGHHFVbwBpBPwFFGfBpHVDgrcJCbZcLdCgtcCcJLJrd
+MGHGGFFqbFTGmFwLmQsQflFN
+WcvBdpjhdZdNwdZwLZ
+vWtgVcpvjthtNcjntDhhpSJMSqHzqTzqCVHTSqHPGT
+cVHZfjfZMcrSDQMJRCBCQw
+PtGddtslsWQDBdwCDDdw
+WsvTFnshPTGhGhhlPNGTCnsjgFVfmgfHZfVHgcHZVVFmFV
+JFFqfJBgrHBffVHlsBFqfWNgjTtztNnttWWvWNwzwt
+hGZbcBcZZSQmZLQRTbvNttTzjtTvbpzv
+cmmhRchPZhZSSmdmGPDDdJdBVMffHlqlslfF
+qWwTNwNHMHNNMRqMdRMQQMHLmmvzrTmrzPvzJvZvZlvzjZ
+FphBpnBhVBSFvLljzZPpmrPL
+nGsBbssbcbdlwggdNl
+RLSRTLSFFFLPSWpzzTJdzsQpbd
+DvqqcwVMDDcfrrnwDcwnvCdpQQphJhJjhdhpzsJhMQ
+fGcvDZffcGGZDHGrGrtJRPlPmJSlPLRgNBHg
+QlFFmGQFDQrrWlRlWGrnQVCLNvvPwLCwBvCcCcJCLCCm
+tHtfsjSMCNPwzvCf
+MjqStqMHsMSgjShjTttgphsTlrbDWGDrGlRTlNDbQrQRWRbD
+QbChcCJCbHQCjbGCjQfsdsrtTqrfTLrcFftd
+DwRzVzzZnzZRwvgRhRWtqsLLWtRdqLLdqd
+NMwMzBVVPPSGQhBl
+ttTPHWdrJjCdjnFMtLLtLNvQltLh
+pSDBwZRBBsgfDGGsGpBVMFPQQlFMFQQFQfNvLNfF
+PsppZzBVzwgDwBwwgpSSBssWjqrdCnjjHdmCTHznWCJJWn
+WcdHdPcdZrLPDPBQDg
+pMjMMqfmJlqNflMlFNRfLBwnLzTTTDJJwDTTGTLJ
+hlhbqpbNNbVVdbZtSB
+RDBWGRDnzBWBJDNBttSLlclldtQQcTTLFF
+rTPVjZZsCZrVhdFMcgLgwFSgQh
+PsjHVffbsTCHrCvTPfDJGJHNzzNJWnnnmzDB
+LQdFgTLdQjVsQFTRBjMZrmBjWGMGSW
+flvJJlJpbNnppCpMGGfBBZSZRfFmGr
+NNbNDNlbDpHlbDDplvzvnCbzqsQPFQsTTccsqdQqLgdHLwQw
+DnGDNDTFdFwDzCZZRmhThCRRRv
+SgrPLrrLsBPbHBCmtVZVCdCcctHH
+rSbgBrsqgsPppMBqfpPsLpPGlNGGDwNFNJWDldlllDwJMG
+PWbvNWvpvJPnWDGqDjDczj
+QwfFFVVQSMlDlQfFZhsHrBrhHHTcjnczqjzqrG
+mwMSgfmDmSSFgfFNbmLpbRbJbvbRpC
+lsggLLLDGldGTGBBhNTCwRwVnJnNCCnbRV
+QQpWrpHtrHrpNRRJNtfbJCVR
+PvQQFPzccvBglclNscls
+NsszMMNGWLcWBhMF
+gTtwvbqfnDTdpvqDftpnnntDZvLFQFBLmRWFRhJZJhLLBRQB
+DwrpDbngprPWGllSNrSS
+nCqdLPZPMMZLNvtGhRmGhGPmtW
+TSrVZVSZVwFTgSVtrtchvWRRrtWtcr
+gjbjBjgTjfgfVfHHppBLMnqLMDnqClsZJLLD
+hrqShCPCpHHBVBGWQFVQGFGnzQDf
+tgvZsbwsbcMbRsgccjDGFvGFfWJLLzFFQJ
+TTZmMcgmbmWZMctbbtsHrrqqSHHrCrPBBSCPrT
+HHHNZLGLpBpRSvWlGlqhPghqDGnnFr
+QCNCMTJdjMjdjsQTbdQmmCQDngFqnggPFcPcnPFcDqcbDn
+MNJfzNsfJdJjdzwMNjjTJttSHVStRtZVwHvWRWtZHt
+DSbvDdDbbwHgCSgZPwpbPgmTTJhsTTChqTJssQssFmJJ
+zzjMNNGMMRcNNhvnvFqmtJJv
+WWffvlVrcGzGlcjLvfrVRLHgHgpDPSbPpwwHbWbBbPPH
+FCCjjFlFtCjzlpTHtJsQTTcpTT
+DWLhWSgDWWdSWLwmmpHHQTHcBTBvvwHvHl
+mgGRhrLLgWqnjrfCNlzP
+cLsslBlsqNNTHlTVNbLZZLRCQbZZdQdpbP
+JGfJhhwfwBBSJPRdZddpZRQbfR
+hWmWGgDhJrFhBcWsssWHvHll
+lmmvlJFtMHFtQzVSRbPGzLJRgG
+BcTcrNBrrwwqDBqNqwcrhLpLPVzRhPRPPPgSGVPLbS
+TrDqcnsTcsmnvHtdGtMW
+CcnDQpSDcnFcPBrmbPQGBsGB
+gCtCfRZTBWbjPRbr
+qgvHqgJhMfZTtvHgfTghJgMJDpdppFSLLCcSDvLLcdDwvLcw
+ffFgGRMWSTGcnDgllDDpDp
+dvSdHBrVSLNVLjdlsllcsDqpsZ
+SHHHNrLJLvtNQJVvmMfGRGGRCJWJRwzWMh
+JNpNDfDBDHVzwHHzpzBWVBPsvsFNCbmbqsFFNsjCmvsmNC
+rnnrtLhnrrQZMvtFbWmqtllcFb
+GQRdGQLLhMSQhZLZdgdwwHzPDzSVWzVDwJDVpz
+LdcGjgdcrMDSFGVfnnGG
+HNsCCQFCPvFFBJnnSBJVfDVJwf
+HHFRqHPpNppmQPcpLjzrdgtbgztT
+GlZZbclGZsDvlGhsShRnCnMQtjtQjnCQsQRM
+PggFVcdFNFNNVVFLPdPdrwpWBMMnqMpnttJMnjMnQqtqQtqq
+FdgcdcLwfTmSGTmhlbzG
+RGvhGrLhhRhlpChZrGSprBdPPHJJSBgSSHqBWBBffH
+mQmjmwtTMTVLzHnTPWffPHHJBf
+jMmmwMcVcFLFrlRshZbCrF
+SnNgNgBlNZSZdZtMrlnSnnQtjpwFwpvFJwFqpwSbqjjqGRpv
+CLCcWHLhLTzsDPcCWMLGpFJbGFwsbvGwJwjpRv
+zMCTPhmHWzfhQQmndNllNrQg
+dbdBdZrQsrdrGslrrSpLvwHmlTmmwScTHv
+FgnJqLDLWqNnNpppmpCSSmCJTw
+NNhhnRNfzMhgnMDFfGdGLbBVVdQRtPVZGt
+BBQJNTTzTcfRhtjhffqDDWCC
+vZnsLsVLSvPwPFFnwPlSPgZWqGjChgWCCWWCMCgGMh
+srLLnLmlPwrrPwmwwvlRqzQRJBmppQTTQpTdBN
+PLDpZGpWbNGWLDfQmsQDwwsmhm
+vTzMMbgCfgHQsmQt
+VMlRznlzVnTcFzbMcrpJcNrJdjdpZrLdcZ
+SftvFcDSvDHsFtctMSvbdjbpqpRRpRTJrMdrrb
+QzQZWZnQgQZwBBwsJdqPjdjrnTpJjs
+NGmwmgszhZwwGGgZGmggWLVSVHlNVVtDcDltFVVVlVHt
+WCfFBfBHHjHHjgHBjJFVcVRwQMbVrRhrJbRRJM
+sZMsDqzZPRrRrVswdc
+vvTzDzpDTvpDvZPvSnNZZlSHMCHjjFtWmlttlCjmCF
+hJZwhrvhBJRrPQPwRRZLllgLqfcqpTggpcTWMTff
+HHDzMztbVgTzNpgf
+nGbmtjDMFjDjCHbbbHHHdBQQPBrZvJQRwvwRPZQJGs
+NNSrMSHRqWpWNNrNMvLffTBBDmsvcmcJLM
+lwPPhcddcGPlBDTDlmDvJJsv
+bZhzCdPGGFzVVPwVwbNtcqHrpnpZptSZqRrt
+GvvSWhmhWBNcBDNc
+FzlRRTljjRTjRRmZfbflRTlFFrrMrcBcDVqBVsNDDJsMFr
+bttRfzfRHzjlmlnCbTtzbRShgwHGGvppLdpvwLLGLLhd
+MHGMWdBFFNsFFHpWSFddMmqVmVBggmlVfbVffjgZml
+hcJsTTscvsLDzDJmqVgfqbqnbmfJbJ
+PvRTzsPwLcwCprSdwdNW
+qfJnJdLpJzrcqCrCzcGfpRSSVBPRSjSSllTNRBdTRS
+DbsbtggsbbsghhgvnWWSlVjPSjmmPBtjPNlTmS
+vHHHHDHvZHQvWbWsZDgWhDwWzpfGfzfcpFJzczwFJrfffnGC
+sQvsRQsFZvfpGhjhQqjpZvjGJHgngPBNHnCBJBCmSBmBNG
+HTHwbtdTDDnCTPTT
+zwMlVdzbzLzMWvQZRQZfZZlHsR
+QhzWwRBPHgFrWWrH
+SDgJCCDCsVpMMqTtFpfpqG
+gJNCCddSZNSlljQzPPNBzR
+dLzVVjfLGCCdRPrdmBtwWttr
+NnbNsbTHJnbHbSHlNQsNtwrJRwBMMBhrPJWZRRtM
+QSslpFvpSSsQPFCDqqgzcjCj
+fcpGshsfNcNZsmRjNqCtnFgbCgHrrggmrn
+QvzBlBBQBdJTBzBwVVMgbrwwLFtLtgLFHCHrbF
+dlQQMBSSTPZfPcfssZNC
+gNGVMzVpVVTdPDWdRdNT
+BfjbnCBjBzffHrbrzBDddQWTZZQTTJTQTHHS
+zrFncfBjcjnrrlCLwFgpmvFmwGmVLh
+MbngccTfWgbWcTTzZghmLshhLRttpthRDLtf
+CdFdJHCJjBvBSCNCNJBjjdjpsPDwDtwvptRPmLmzRwhhLR
+qJSCCBFHQBFFldrVZZbggnGTzcZQ
+lPrpppllcwwpHprppNdfLbQJnWdLJnncdN
+tSjjjSSDGgghRbbSTfTbTFTLQn
+jCBgDMbBMGghZzCZmmlrrpwp
+FhCDFvvPwCjcLhDjhnvjnsdfZTlflQlflLsppdQfld
+zPNSmmHrSSHWBNSMMVGzfGfZTZQZzdpdRGZR
+WSNVVMMVtHSVbMNWBHqmwcvhcgwgvwtPvgtPDjtw
+jSSSjzZMmgSzzwmZBtHcHmtNdncHtnpNcn
+VsLsRsJJsTfRVfLRLJlfLlWqNbDcddncvpvbdvcnpqdpdtHq
+GQQTsJGGJLlRGJFWffWLhgZwrZBZFZrhtBjrjjZw
+ZfzJPvPnLvRJRfZLDfjfrBcqrgsgDBrcrGgslsms
+SNhpqSNhpVTNQSMNgWmrlccVGBBmwrBw
+QHHFhhNdTNHHfZPFqtqPRtjq
+PMZSPSZZGMspsLhLRqRVzfGjvF
+tcwwgcgbcbCrtbbtmQQcCqRffFLhRgqjFjRfhFqhqz
+CLQtcbcmwmbdrbBrlrCwQTsTPsPsZNBPNWJpZWpTss
+lMTrcHrhChWnRzJrznnr
+DDJbPwjLJpfBQjPVBpbsGVGVWnZnsqnZsnzsqZ
+wJQLbpPJDLfgPbDNCHNlghNCMhcNcl
+tlVZhlVWtnBltVtssZBBbPbcpdPwbPWfvcbLvbbb
+NwCTFNFDNdSNPpLpfN
+CGwRjwDjzFFGRGjjFRjlBtZqMzVVtVqhMZMBZn
+HhFdMFHhgrdjcZtZjr
+zvvQQvzwzDMjZTjtcrTDtt
+BwMwSvQSVlzQlMQzwzNgGHPGGHFCCCgGhsHLCS
+zMVtBhhVhhDhtzBtMTTfDrPbmRRmPbQmrQbNQGRQtR
+vLlJHgnLpDvHHvHvmPbSQbQRGmJmPRrb
+pspwHClCwqplsHqDsMMTFWsWfjzszf
+CmmjLwWSWGCHCjwSmStJBgQcccBhwgQtgthQ
+WZVFTpqWsMsZpFddzszbVzJQBnRtrQthchdBgtgRtdrc
+bbsMTWsMVsZqNZMpqWDqbMsCjvlCfjGCPlLLPLCmSCfCLN
+VzsjjVGhpjJrJHCppprt
+WtMnqtWdSQDtMRSnLNHHwHwQvrJrJCPN
+tTtWSScTddBqdRMmlsbFBfhVBhfjjF
+gLMWzdTgLFQHdlMgMRwcwhqqvPcPhVFRDF
+tBnGrSCZNZCrtGBsSNGtBPhcgfchqqDPwVPRvNRqwN
+CmrgstjZngtBzbjJlQWWHjjM
+qttwGWHtVPzJJPqbmb
+NrRvfTTghNrpLrrpLTrNrRrhvJmzmzlbbVVbdbdZlDdvzMPb
+rfcprNcfgpLrVNnnCcnnscstFGCF
+ZZhTfggZsbshGrfshMrNMCSRMMWqCqMNRq
+TVTJPDTFccqMCcJw
+BBLBmLTLDHFvsQpfgnZhbQvG
+ffSrFvVVmVCQSfVDFzDvDDmmnGWCRqGRWNNqlttnRsNtGnWW
+PgZQgPJJpTpTHRGtNRGWqZMWWR
+wdTdwgbPJTJgTgLSFBbrQvSrFrVS
+ppssshsscCVCHhVWVpznnQRBnZnBbzczFPRS
+dqqfJGWttfWGlwwPSbFbZnRFPFtFZS
+wGwdGdddLfGgMTJfwLMlJMpTCChjHhjTHpjjhmsDHmHW
+PZQBhRPQBQrWHFHqHFHCqh
+STQSvvvppzSVHJJFWjHC
+TTgTvbsbszcNnnvbncvRGPBRtRgQrDPLfftPPR
+dMltttpQhmQVZdmhsdrvNCHvlWbHWvHCWrlr
+PzzLTGpGPDzFBzqFGFqFvHWHvRJbbrbWvCvjJCLv
+BpqTBzpzfGGTTPZtSddtQmVffSst
+bwHbRZldhQQfDWWGDjBf
+CzvgpsNMsvCvFvpszpnMsFgBTDBDWPnPVJJZZDJnfjDTff
+CpcLsFrMZbhRcdmt
+HgjpWlhzpWjhWTQPFdPBRQzTMQ
+JsfwrqLttwJVLGhRQGGPBd
+CttfrqDmDDtCsbZCHjhZHSHNlgcW
+QSdCWlCRhWRdlrlZrDssZsGDbv
+pjPrpjqFNrZNGnBbsNDG
+wjjVHjfLQRCgdLrC
+PjMpRdBdjMSGsjpdprqtwCrNGrrNlthhrG
+WQzDzLZDgzZcqlqqrtJclJnh
+zbWHQHDfDWZHfLZHfffWVZpRSPpdVvBSPMqVMPjdvspS
+TMBJLTJlFHBjFFtMGngpvvpgvQmtNSNngv
+bVhsZswRCbbVZWVfVZwVSpmSQPPvNHwPHmgmSSNN
+dCCVZZcbWVVcCbbfsLrdjFMJdDDHBTMrjr
+vNWcTWnCqNCPPjhhHsQrfgszrTJRQsfRQD
+wLdwMBLFBBQJpszJBqzB
+lLwVmMSmttVMlSNqcbcbSbNcvHbh
+PVfJfDWrPVPPLcPPFWcjPrqlqqQsljRpplqBQpRvSQvs
+NdggMTCChMgdChNmdtTbtmsQSRhQslhlpFRpFwllwQvw
+CdnGzbGbgMGMdTCZZDDJcZFDDnWrPH
+fsshhnfLZSvcVbdcZVJj
+RCCSmDFFpRqHQDgWvbGjgjDdbG
+pFmFtCSBCSMBBLwrPsBPNlNB
+fWWcwbbwbWfGCPgPfvbwgvgcQQqQLsGLJQTZHHrZRsrLqlJs
+VnszmsDBpMFpzNFlrlRLRRHZqRHr
+VpdzDMNzNDjpsdzdnzDcPCwtWCjhbthvfgtgwP
+SPQtSWDLLltQQctHLSBSWHlWgFwhMRsgwggrFJPgdgwwGJhJ
+nCqmfVqfVjTznCMhsGRRRgGFMffw
+mCnNTVzVvjmqNtlDtbttDlBM
+LjctjtppFWmgthgs
+nBrNvzTqlDJlbbZgvmhMZVZb
+JJrnTrrgGDqDPwwSPHPpfjRdPc
+sTQmCmmVqmJHSTjGdMMfMNNvNHvc
+rFbzlLLWWPzwlWrlbwzrWbRvdfFjdjpvjfFNNMccphCvhN
+rrWzrwzPBBBCZTJgZg
+gffvjftWddzZtbvdNvgZLwBBMJLSWMDMDDBRWRmS
+PqPqpqcCnCpVqlClTQQmPMDwPRJJBLLLhS
+VCGqlHmmHsjtHNsZ
+mmMlVllWmhmmBzzLGMWlBmpstptPRRZpPMFJSpRsFRFs
+DgjnndQcNTCCCDNcdSRSdtZPfwfwJSJJ
+gQjCQqQjHNnjDCgHNcZGZLhHzrLVLGzlrGmb
+JfwfJpBgJSMphZqtqDDG
+QcQrssrGCcMCVcMc
+RnljPRnPjWbGRbjnjbvmSzwHfHgwfJHzdLFSwBFW
+sBjbHCBCnjvsJCHBsbvwwJGfRNFFFfFGTcrVFffNHRTP
+zDqdpqMgMtgzthgDtQmzGPTVSTVrVGTFSVFFqNRF
+zDLdphmmLhMhDhQdlzgLLbjCnWswWWlrZJBswCJJZl
+FMNrQFgrVwmrpJMwMTMPflbsHPTtlSbftSjCbC
+zGnGnhnGzDqRLnZLHNHbbbHDlltNSjCl
+nzddcRzzBnRRvRRhvnQFpmpgggJVcVmMQmgN
+CCpMlhwwpJpdBlsdcjvtZDFrtmRqmDrsmv
+gzVPbjSPfSPTTTPnWVSbbvDQZZDZrFWDvFDvmvQQmZ
+LTbLTPgnTzLVPNNGnNTgVNPlGdHHCphMwHMwjMphlpjccl
+rMMrqcrmJqJqmCsTPWWGGPzPlPPrGL
+fnwqwwZwRnVlWWnzWBWlDP
+jvVHvqfpJmhtHJtH
+NLMVQjRNTJCTJtZTJc
+DlGlGHvFHGDgcFCtfhCJFtZc
+DBHGGGSDvGDPHWBGdBbSvgWDNVMjLLRnmNmjPLNPNcRQVnjj
+tsGdTJdJtNllzjGRzm
+HZvvDLLWqbBBMRMRNjVhHRmn
+vZDCvqqgBDZZjbZDrWqBvpdpFpcdpCJcPTSJJtptpP
A data/test_03.txt => data/test_03.txt +6 -0
@@ 0,0 1,6 @@
+vJrwpWtwJgWrhcsFMMfFFhFp
+jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
+PmmdzqPrVvPwwTWBwg
+wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
+ttgJtRGJQctTZtZT
+CrZsJsPPZsGzwwsLwLmpwMDw