~macaptain/advent-of-code

b3d22b272fb74e6776ed0d5558bd2fff2e6bf6f5 — Michael Captain 2 months ago da2ffcd
Complete 2022 Day 3
A src/main/advent2022/Day03.kt => src/main/advent2022/Day03.kt +29 -0
@@ 0,0 1,29 @@
package advent2022

fun priority(item: Char): Int {
    return if (item.isLowerCase()) item.code - 96 else item.code - 38
}

fun solve3a(rucksacks: List<String>): Int {
    return rucksacks.sumOf { items ->
        val (c1, c2) = items.chunked(items.count() / 2).map { it.toSet() }
        val wrongItem = c1.intersect(c2)
        check(wrongItem.count() == 1)
        priority(wrongItem.first())
    }
}

fun solve3b(rucksacks: List<String>): Int {
    return rucksacks.chunked(3).sumOf { elfGroup ->
        val (g1, g2, g3) = elfGroup.map { it.toSet() }
        val badge = g1.intersect(g2).intersect(g3)
        check(badge.count() == 1)
        priority(badge.first())
    }
}

fun main() {
    val input = input("day03")
    println(solve3a(input)) // 7980
    println(solve3b(input)) // 2881
}

A src/main/resources/advent2022/day03_input.txt => src/main/resources/advent2022/day03_input.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 src/test/advent2022/Day03KtTest.kt => src/test/advent2022/Day03KtTest.kt +25 -0
@@ 0,0 1,25 @@
package advent2022

import org.junit.jupiter.api.Test
import kotlin.test.assertEquals

internal class Day03KtTest {
    val rucksacks = listOf(
        "vJrwpWtwJgWrhcsFMMfFFhFp",
        "jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL",
        "PmmdzqPrVvPwwTWBwg",
        "wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn",
        "ttgJtRGJQctTZtZT",
        "CrZsJsPPZsGzwwsLwLmpwMDw",
        )

    @Test
    fun solve3a() {
        assertEquals(157, solve3a(rucksacks))
    }

    @Test
    fun solve3b() {
        assertEquals(70, solve3b(rucksacks))
    }
}