day3 part 1

This commit is contained in:
Ruidy 2022-12-03 19:20:30 +01:00
parent 96e7b21aac
commit b8d574b907
4 changed files with 383 additions and 0 deletions

48
day3/README.md Normal file
View file

@ -0,0 +1,48 @@
# Day 3: Rucksack Reorganization
One Elf has the important job of loading all the rucksacks with supplies for the jungle journey. Unfortunately, that
Elf didn't quite follow the packing instructions, and so a few items now need to be rearranged.
Each rucksack has two large **compartments**. All items of a given type are meant to go into exactly one of the two
compartments. The Elf that did the packing failed to follow this rule for exactly one item type per rucksack.
The Elves have made a list of all the items currently in each rucksack (your puzzle input), but they need your help
finding the errors. Every item type is identified by a single lowercase or uppercase letter (that is, `a` and `A` refer to
different types of items).
The list of items for each rucksack is given as characters all on a single line. A given rucksack always has the same
number of items in each of its two compartments, so the first half of the characters represent items in the first
compartment, while the second half of the characters represent items in the second compartment.
For example, suppose you have the following list of contents from six rucksacks:
```
vJrwpWtwJgWrhcsFMMfFFhFp
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
PmmdzqPrVvPwwTWBwg
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
ttgJtRGJQctTZtZT
CrZsJsPPZsGzwwsLwLmpwMDw
```
- The first rucksack contains the items `vJrwpWtwJgWrhcsFMMfFFhFp`, which means its first compartment contains the items
`vJrwpWtwJgWr`, while the second compartment contains the items `hcsFMMfFFhFp`. The only item type that appears in
both
compartments is lowercase **p**.
- The second rucksack's compartments contain `jqHRNqRjqzjGDLGL` and `rsFMfFZSrLrFZsSL`. The only item type that appears
in
both compartments is uppercase **L**.
- The third rucksack's compartments contain `PmmdzqPrV` and `vPwwTWBwg`; the only common item type is uppercase **P**.
- The fourth rucksack's compartments only share item type **v**.
- The fifth rucksack's compartments only share item type **t**.
- The sixth rucksack's compartments only share item type **s**.
To help prioritize item rearrangement, every item type can be converted to a **priority**:
- Lowercase item types a through z have priorities 1 through 26.
- Uppercase item types A through Z have priorities 27 through 52.
In the above example, the priority of the item type that appears in both compartments of each rucksack is 16 (p), 38 (
L), 42 (P), 22 (v), 20 (t), and 19 (s); the sum of these is `157`.
Find the item type that appears in both compartments of each rucksack. **What is the sum of the priorities of those item
types?**

0
day3/__init__.py Normal file
View file

300
day3/input.txt Normal file
View file

@ -0,0 +1,300 @@
DPstqDdrsqdDtqrFDJDDrmtsJHflSJCLgCphgHHgRHJCRRff
BcBGcQzVBVZcvznTTTvZcGTpCRRRfRCggLflHlhhCZpZCj
vGQnQvnzTzNTTbVnzGBqMqwqDLdPtMmbwqqLLM
wLRFRqvFsFRjfrHddbdbjzdH
lcsnSJPSSVVlGmGrHzbbrGNrdzbz
mSmlnnPlmJmncVDSlSZSlmLBCvtwBvtLCqqswsDBCTWW
pfqPrPgmmhvqdlsdWq
nfjHLJfZcLbVtQWWtndhls
CzJJFLzRzfDwrmggpC
CWfllmlCDFlZZqMfmFBWmWLJVRLVwNNtRVGPpwtGpqbJ
jHndndndcjhscnhHNtRbVtLbGpJbRRcb
HSrvnQzQSMDlLzBCfg
BQRVbgQQBJBbBtVBSSSRWMQbdNvvRPjZjCCdPLNZNNsNCCzd
HwpFpnlGpGZWGvjzPd
FTDmFrrwDpFMtmQVQQcWgc
VhbPshVDPDFWhWsgDNMMbVtmBjwBffpwBntnmnqfnswt
QzzGrTZZdrdlTcCLpRBnmBRRjBCqtptt
rJdGlmLTJdJrvZDbSbDSWDNbFJgD
qrcqTBHTcHgwWWdHRjdWBglBbGPpGvvPbszGzsbPpQfPLwPz
nFVmjhMjFJCSJsQQPQLbLpzCPQ
SnMSVVZSJMNMZNDVFtJtNRBdqBrWrRHWZTllrrjgHq
ZqdqcrPqqrwnQqnrZqjVcqrQwwmNbzNzwbNLzvFbHLbNmBLF
LCDsCsRTfLTDszzNbsbNNHbs
gLfCgShfCgMPlPrVcqrQgn
QSNSLDQDLfqqPwwBNLqgqJMMmmRRCTzHnCHhRzHmfCmh
lGvdbdWdVvsVszpDhHmmlnMpTC
ctbdtVsbbvvsbWZFdVQJqPtgLQBDBwBQPJwJ
dggSSDCPddRWPnSSPWRDgdSrTDsDQDTzQGGTMbsMMVsQfTfV
jmBvtFpBcBhhjljZHphztMsCbsTTCbzsqGqsfz
hccpLmhFlcwCrPLrCPnL
MMHZnGrCfJnfCPggSSGGSSSgLW
qhFhRlDFDlqFsgdvJdWdDdcSvp
wVlhqTbbRNFqswlVVRNbZfHCrntMBrTTZnJMCfnn
sHGZscVGHJMtmRrqzRqqqTqt
SjvvNgjLShWWhhSQNWqmrBzlRllTTgBqnRmq
LNQWLfWhSQvLdCddWWPHMcbHHrJcDGFZCJssFM
mSDjSVQbVGbmqDVbHmqqJTZzPHTHhhRJhwsRPcRJ
tFfFFttFdsNntfpMMppJWwZTzJczJcZPzwWcdJ
vNtgCrpgNptptgCCbbmjbSbvsVjSsjGG
VCQlZJCTPRWsBsjTTT
wvNrnbbvnhdNhLMfGsrGpRFpGpjp
dwndHbHbbLqwwhNcLsqSHSCHJClQtJSttQDPSJ
ZlrvrdvpGBBhlDrshdqJHRPHqPTJzRPPqw
tcftfSgFFgcgLPmPmpnqFwJRHP
pWLCcWNNNNttMNgZvlsvrBrsrjWDjB
wgdCJgDMDwMCwDMCMJsJJfpffVpVfbfrrrrgjgllZp
QFRhvttRthtQzzmpBWbWzWZSVpbSpl
btRttRLttGNqvbFHLwCdDcMwnPPJDnDD
VhmMNllLqGLJQNhRfZHgSPfgSPTqZj
sBwDcwBtsdzvvHZRlPRjDZTgPZ
pWvvBBcBCdzNLVQVWQlNlW
NsSppvSjSPNBNLJJLh
fCGtqQbZZGZQZTbtzbqbCZThddcMBddlJGhdlBMcddgLlJ
zZFTqwLtTRFqTQwvmprnRVSsDrnvVR
FttFTzzvlVHFzTjpbvzbFSDDdVGhdqLGWGJdVDDfsLqG
cmBNCRnwsCcBPMfLLfJGcWhWqfdh
BwPmZZMmZMCsnrwMrmbHHbjbSvSbjvrlHpzj
sZQHCBFHQQQPGQCCHCHwsHFshhtSnnqjbRSSPngnhbRjqVPn
mzLvmDvNNWvNvrzzrMTzJNjqndqbnSnnRgTdtjdbjhTt
WzzWDlJLzLDvMWJJlMzmLJWcpHFQBpBgBHGQGBHfwwBfQQlG
gdpFrdrmrDsqqswdtccgWWCMlChSbhqSlCzBlSqh
TTvjrfjNJPnRQNTQjvNnCSWBVBVbClPSVSbSVhSh
HRvnfTfvjjHZTDsmcHDsrDsdmp
bFChjhbpbjqsntjtns
vdWcfMHfddvrlNMNdWWTNgBqDngBBZBBQZshgSfgnD
JlwrlrlhlcJWcWMwhWNVFpLzwPbbLRFPppVLzm
DtBtgLvgcHzllsTwzSTg
vhhjZrCrZdVdZVSwPMwwTTMGwT
nmpfqrnZJbqBBvRc
nMvSLvWSWPVPvWnSLShFLBjVbpNVGGbVQbbNcBcBBc
sTzJsJszbbQbdQJb
DsDrwTtsCTFhLQSShRwh
RNFQhTQqHNNGRsNqQFNsHhFCwwPLwPqwzfPrrPBwpJSJJw
vMMMblZjddlvWbjbBBfbwCrPPLJppwCL
jDmvcDBlBdjVglgddmvDQRNFtFRGtQhstHNsGFHV
rhLHmZnMrRsZSstZLLtZnhSCNbbmPJVcblTNNTlccpNTjJTj
WFgGddGFFgFDddMblpJjlTJTPc
QGWqBBfWgBqWwFwzMGvzDqSSrHnCHsrssCRZrfRhHLfH
HHzcWqNPmZcqFHPZGBdMRBMDlllWpRDJMl
tTgSvPhbMDJlbJQb
SCTtvtSPftswjvPhTgffVqmGZLmqmCCcqZzZHFNznF
QNpppRrdZvdgzpQZNpgRRgbSwmDDvFGGqwJSsvSGSqGG
HchWBMcBVnnWcHPjHhWcjHTqJFDGMSSqDMwJJbGwSsGGSb
tcCVcBjPjhnWlFrCFNZflQNr
HsVMrqrPqvvgprSrLG
THJWBJDwRFvBgGSzgF
DmhfHnmQncMNVMqPqbcd
SqZmMJqvHJBhHJLp
wsgTVTSsPssjjFVrTrFlhLhCFlBBnHplHLLHfF
zgggdwPrRrsrjjgRwVwdwdQTmvMvZqDZbWqqMSNWNbGQbGZN
fBDBfLZnTLZVVmmDcQMDDV
jPFtJFpHpJqfJFrptwrJdRWRWNpQVmQRMWNVVVNVvQ
zHwJgtFrTlslfghf
wMwTttCCTTSTfBmPzPVZnPZLVVtbnN
ldRRRlRHggGcvcRbZsNzvBVWnnPBWv
hdlJHgpcJccJhQdJrcrhwFMpDqCwCMBqjSqjqpTC
fJfnwJJnnHJgJHTgjsjDccNjcbgNjm
VdLqRRqGVqpRrPpppMBjDNmDctdsBlNjmZdZ
PDQvPQSvpGDrTwfJzzfFnTnS
MnHvnHHMRMzPTlDLPPRGcl
dFnfhFVwhdBPBfGWlPcP
JNrQFsnVtwsgvNzvmMjpzS
BZVPFpNpcNZpmRRPpzcVNhLLnssDjjDGnqjjLDFDjq
mMJbJvtJQQHlJDGCDnjvChDSsv
MQwWJHdQwWrJltQrgfNPmfBcBrpBpZ
ZWZqDsZZqWsWvWLPwPbpHjdtSbSjSCSPPSCp
MFVNMLmFmNzcTTrFrLbjdjbpCdCSbTCShRSd
czNzLrznlGNNrMzMwDlJwJWDwJwqJDvW
GlgchGGVShlQcQfDhzZrNFnFNFNjFzNFcn
dwCtpwHTtPTWpdFNfJJzRzvJNR
tLBBmWHftBttPbLwCHWTsSSQVglqgMsMBDSMGlQS
RDDDGhGfvPPTTPTThn
ZFLMmjpCpfMZzFqmqsCmPjdVBlVBVnWBPNTVbnTV
zHqJMCzLvftRQQHG
nTcbnvPsvdvFzpczVZmMGg
BCCJwSDqhQLJmMMpzGZVFVFB
qhrwJwrJrrzJNqwWLsTTnlTlbnsvbstWsW
vHRbqPJZvRPZhShJvTZllZtgzwlfBGBlsm
VdQjVVCssQVrWrQmTBgBzglmgCBGml
NnpQNpcFpNWshPRLsbSFsH
cVGmVZVwVVMLdvcRttTdbB
ppCQrwzHBtLrttLb
hsFJQzFWCpCqjZGVwlhlPP
HDGRzgWhgfzVWfRpspwRwbwStSwt
ZBPPPmmmTMQMPcZrBmSptSbbQCwtlsNqCwjC
TTLMMmZvPTrMZvFMmcmvrTccDDnfGHJgJhHhnhnLfVhSWDJz
pNrpjzthZPnGrzzWbJLLLbbJZwgSvZCV
MQsFFFDTfMNfRFfBFMdBdwLSvgbSTVCqTgVbbTLvwV
BQlQDMFccQsNmWpPGhpcjr
CTgGRCRglLlLTllL
vMJmhPJcmPBMvhqPDnNNqlWnwDWqsRQs
hcBfcJRPFfvvRvJZBrfMPZdpbSSGtSdtdgtzzSZzbV
NQLzNzzJcrLrSgZSSGgZrR
bTsjqHvcmTHvjgZGDvDpGZRfpg
WqTVPbdnMlLJncQC
hZLBrqLGLMbzLLBhfMMrnnNJlnNnlnJJNNdCJdzN
TWTsWqvtvpTSgRHpVFdjgjCPdgJlCFCFnF
swSTsTwpTVRmVRRRqMDMfqfDwLfbrhLr
NTQHWNQWrQwSTDWlcPPBHZBZbPgZJZ
nmfjCRCfRhndJcjBbcbcbg
nsppRfssfzCnqgzTzrwTwQVTWM
mFjQmDGmbbGjmChrCwdQBHCHWh
qvZZnPvvnngMpnlqpMZnpsTgWHTRCWrVdVDBWRhHBrhHDHhd
vqZgnnqgLvqlPllpnjGDjmNjNLfftftLFD
rfGsjsMNnFMMFddMsttDMgLHGlmJLCPPmHHGmHPlmm
vZcbhQbrRbVZPJLwPTgCLlgb
hchzSBqzQvphnWnrjFdWMqff
WmfPWfVsfqszRDqPqgpvHhvdwddGMmGghM
QtTrtTcSBjtQCctStrTrzhpwjGvGHhngwMHGHvMv
TtTQlQFcSSJlcccBbltQQTTRsPZDsWzRFzWFzPNfsssLPs
QpNNMrjcNMccGNdvLBBlBsBjnsnF
tTSqbbbqCtWWCTWSVTmmCJPwVwnwvFPnsPVnnPfddlvf
HmhJTZWqHqCJJJltqpNGRgzZDcQNrgzDGM
HcLVRhhTRsLRRVjslTscqNQmVNQQgQttqNwNZtmw
nJdBJJhfFPSCbJBJBMbzFbFgmNmtgmvgNgnntNwZQQNNmw
bMbPzJbzCBPrJfdfbBbdCrGHlLTTpWjsGhGTTRTRlc
sJCCpQJQCrfCfnSCrT
vmqgNggzgmZqmPShqBhThfhDhjDhhB
RZNzHRzZSQwHwHVVWc
jtVtvVHgvjJbHjjQPMZdCcwlMdNbdFlNlc
WppSBDzGfBzTBqQWwCFMlwZMwMcZ
zBfnqpRGnSSqTfqpTpSnnHQsjJgQvPJshHtHVh
qJMRMcPPVzVhmsDWfhWT
BglQBNlgZtQBHLHHBnTjWSWmFmwDmWjSsnmF
BdHvgHBvBtZbTpJRPCdcdpGrGJ
pcGcWGWlvQZpzmDbgFmz
HqqnddDdddjzTTggjZgFtT
sHqRwrRsJswLHrMLLRJdqNVVrGffPGWcvSSWlDfGfc
lttTbgRvqvtQRhjLzGjLVh
JJfrHfrdffZJQmZhLLZVVwFj
sBjCfSNNTTqnCnqD
qMtWjSrHftGfjqrJGMqzVzFmBBrzQQwzgBVQVQ
LDChPbThbTcTpCTcnPPQPQzVPvvzQBBWgVBQ
ZLspppLpdZZttdHttqdWMf
htJcJhpMQQWjhNWdJQSCFCTvFBPCTDlMmDCFlM
jjbbsfjwZbLGVVqHCFPvmvDmClTfmP
zjVVRwZwnRJtnNQt
PCPVSzLMMRqGwgMmHmQmDQ
slrrbZZgsfcdsgdhrHFGQHQFwvfwFwDGTv
NclhgpctrrNjllcZdcrpZnPPqzLLSSLqJLtJWCWzCn
PBLSBPVBwpTVppfT
lZCqQQtCQGPJJPtPHHwTwZTTZpwHsfRH
mCtGFDqFGDGQjPGqjJMMlqPgdWgSSgBWWcWzLdgvMzgBMg
cLBrfchhFBcnrgvqvPGvvwSS
QpzpstDDZMwDZqwh
WzpbWTjsbhpQtjThsjJFRNLnfLbfRLRBLlFB
ngnWWqnfgqtfsrWftqsrFWPSdSSdRCTHRSwpRGTfGmSG
VhJhVczJQcvbvvlhBpvlPdmlwHRTGHSRPTSCRGTd
zVcBcMhzcVcvMJJJDpWrsqrtrWLWsgZZFtFD
fbccrJlrffTwJDJTtBtB
hRNNFddsgsFPLLRVVwthMCQTtBwrtT
jrsPGLNjsqPlvGbZbcvScz
HFPmmgQrQzFgrLVPPrLFPNDJNJzzcGbJTbsSzbGGNc
MtvCMhJBdnMhwfhlwnfBfMDCDSjGbqDNGNGqGjDDjsDC
wwnhhdtBBptwdlhlRntRldJFVWRFPmWZFmHRZZmFQPRWmm
WrHNNTBNTTTBwHHcSTrBnSzJPFnpJfpLVfpDVdJLFJLFdD
hRthQvhRQlQmDpfVJFdLlLLj
hMZZbCMvgQgBTBGNGDcWbr
HvQjMRMTzjsCQzHTCFfVVZLPVvfLfPVpZg
GtlbBtSGlSbDdStrhSFCPVDgZgLLgPpPJWPF
rmwSbcbcdbrbGljQjCzCCwnHRqQT
bbgNSHPPgnmMMZtNcMpp
VFzFDFVtCBFDCVFdMlhZMhdhmhmplwZL
JVtBjGRFRttFCGDFGJJDQQgSgTWPPfSSfWbQnHvPWW
NvdBpwNvGNFvpBGGBmLFblrtVTwDttlhtlblfQbQ
SCMMsWCMSRZCqsmWcRWgRRsVtlrtrQbtQftThrQTQtqrtQ
WRscMgZJJCJWzZgSWNLFdBNHGzpFGmBFFG
qghqRVzhLNRLqzLhVztgQdLFdrccCnSpcZdSZcTS
DwvmHDJDsmvDGmHbQBlslMDDCrTCnppTndrdBrFnFTSdCCnZ
GGwJHlGwwvMHJljwwDMVtfhtWWhzqVPPjfQRqz
BsDMPrqPzsDwwCLGmqjpjm
VfFJQlVQcvfwJLJCJppLNp
vfcSHCglCgbgbbbFvSlvQfPsrsZrPzZzDWWStPhtZPDP
gjMsnFgbnllbjMfSZBHHtpHvvvFwhv
DDRZDLdVCLNLJwBCShQHHwwBzv
DNJNTLJRTqWmjWZnjrlmjW
ZTSVSFZCLTnvzfzqvnNL
PfPcJljfMpvtlnztvQtw
PsJMMMWpGcgMHMfjRBThrgrTbBSBFdVSTF
GccBRWjgtQqsTcVQcw
JhJCMJHPLffMChlfLCLHMMrDQsQqDVQsqTDbVvGqDhhzqD
dHGlfnCHlJrNmtdptggpmW
wnDDSBCSBSDLzLLmHLrlwlmpTTqzGJJfpjfjNpfqbpbdpG
MMRhFWWRvZPZRZQhFZMVhVSNqjqpNQffJjbjfbjdTJbp
VMMsWcZRWgMPvRSrSHmsrrtwSHnr
TQchPTgjBcNgPHhhThtNzQdzdsCmRDJnzCCmCdCm
vllVwrfvbSBVFSbVGwlrFGlqRCDzRJCJdzvJRzsdLDDLsdCm
VrMrqSWbfqWbBhhpWjNTttpjjP
rsfvSHHcvwrMPtcQZgnDhGdvJzngLzzJLJ
lWmVlfbCCNFCpBCmTpFFJgzhDLGhmRGhLhmGdgGR
pNBfflVTNpfWTWbWWbjNVqBsscqsqrZSwMwZrMPZSZrZrs
PJPHPJmhhHhlHPQgCndngTbWnqCWDGTD
tSwccFpFqwMcFbGFWvnnWvCW
MwLwLMSwpNBBtctSctfhZHJQhhqmlRlZRNPH
GNzdZhVGvtGZVVgGgtfHHWhpLPPpLWpWWnHf
RjwqRcDTvCrWJWWnlLnnqn
DbrDDwwBwjjsrbDTRTBmwgZmgGgmdttvQvQFSQGFtg
jRgcZRfhmHfZjPZRgHffLFTzzddBTBBFzLDZzBTF
VtsJwSbcStlwMqbtwbvWBWddGGdrFDDWJWrzTT
VwsQQvlbVbVlbNllVwbMmmpnjpfChfQpnhfcCCnH
dFnFjWjTQTFzFWPWPgqhRQRqgVhRqfRqQJ
bStrbpmNGHSrBDmrNBtHBhMVLLqLqVVglrllPVLgPg
tSsbBDmBbbGmmSHDbtmHbtNCjnzscZccjnPcTcdzWcvjswFz
lFCjDhqggMlDvMhFDgqFFzHHwHwwwTpLBwmwqmmpBpwT
GPdPnStGncQGNStZPpBmVZmRmfzTRmVVfL
tWtNdPWzsbtMDCbrCbrjrv
BJHMgLlcMTBLCtbqmMDGppmmMM
ZFPsrrdvwrNvrdNZsvhrrzzRSmJRbJSmbztsmpRSSm
NwhfPZFNdFQPVQdvZFNgjglJLTCQngQWllBcTT
jGlQQvQvpRQRGfnPLfcfGTnP
BMqmdBVBwmFdVMFZdcTPqgLnnggTTLSzPS
FVtMMVcbZVrcZMQCHjHWJJCJDvrW
rPPwVwbpRbbVlllTLCTRqTLL
dNdZssBBCBszHsjhDTQgqLDvlTgDZgll
dSsCNNHMdsdWWWmpGfmPFS
rzCLrsjgZjwcwSZc
wNBNRJpRltHNWWRHBlGlJtRcTZSVBmZDVqZTfBVVTDTVTD
NWPtGJPNGWHvpvtwvWgzQvdvQQzhnsnCvCLM
HHbJhzddMPbPgnDWbZ
BLnjLNvBrrcvvvwnwLrnqrgpPRgRNCWgZDPPpDgRpRWp
jtsBqScStfJQnnVF
QVFSVgQFZZQlQqQSlgQpRppSbRTSTppJJbRpLb
cGwCDwjrnrGvzBzGnwwvDBjnpLbsLTTqRPbsJPMJMWpPns
tcGzrCdtGdQmVZqVNQ
RtTRhncVMTVccShRTctLdfPdJpLPqJhZphHpJs
BzssCmFNWWqWwqwPLH
svzvvsmmFBmsggrGlGMVSMtMRRncSQScRRRl
rmmqrQQwLbbGrrGr
cNJzzzWtWmLCGGbLWWbv
cVtMppchzMBVMcNJcMsRwqZFMlgmggmRgg
mQsQBHFMrbddbRqH
NzhcQNfNNtzvWwZdSrgbrprPrwLbgb
zcJVhTtNNcvcfVZmBmQMGMMljTCmlB
FlldqjSlCgfvPFfvFF
rbnDtVBMbprTsbVVcTDTrpMcmNwgHPgghTmNfLwvfPNLwhdT
drMppdnbbtQDBtbnsBbcrrtbSqSSRCjlQZWllllSRlWRGCCC
nqdCsqbbwdsrHFVJHcwFTc
jPPjtWjPWgRltRLsBRrNpHFDHVFWVVJNNHrD
fgllPGQjBffLjtzSsqvbSSzGvnhS
zsVBzMfHHnzlwwVlqcJJFT
ZzRLvLDzQzTmlWlqWRWF
GbQQvpGvSSpjdQjSQZpQZGLfrgBCsHzrdtCsnfCBHsBgdH
zBLbLWzqqwLMnMZTnHlnsHTvFlFHNT
fjhdcrjjdVdrGSmmdfccGclPvlvPTlGHTFgNvNgqFFvg
pmmcrcRrjSVJchqVccjpRwZMDwCJQBbLDCCbwBWLzL
TDMBgBgLlcjBfMfcVJVmGnnJjvPVCPVv
zzptqHstJqFzzdJJZNvNpvNpnNvGnNZm
dHszrWQhdzHQqdztwQBLSfglfDbfJlJTLg
VTmvrldtGGwmlvmGDHlLnFDCCplFQHLH
ssgjzSzzJCQSSFVVQF
WsRWhgVqRtfvwcddhc
bdlDwznhnNlffMcPTPfzzQ
srCRGRrZCmVTBfBBfTQcZb
brSrrGvRVvWmRsrHrWSbjNJwdDFhnNlwtlnSdnhN
QQqqRfdQQSdjgPmZfBmmPgRhphphJtLmJhTJJhVbTtLhTb
vvlNGzDDDcslcsGDlWHtCFVpcCbThFTtbJFtCh
DrMGlzMVwNGWsWMHDMvlzlMfZdQdQPZfSZRfdrPBfqRZgj
qVHfHNJCHVvvFFbfFlHHnCQQDhLnhhhPZrZnPZPn
mSMszWRMQmhqrnZL
GjtzjSSdRGSjsRtdRMttgGgsqqFNfFcGVvVVvlbHFFGFVFwb

35
day3/main.py Normal file
View file

@ -0,0 +1,35 @@
from string import ascii_letters
test_dataset = [
"vJrwpWtwJgWrhcsFMMfFFhFp",
"jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL",
"PmmdzqPrVvPwwTWBwg",
"wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn",
"ttgJtRGJQctTZtZT",
"CrZsJsPPZsGzwwsLwLmpwMDw",
]
def priority_shared_items_sum_1(data: list[str]) -> int:
return sum(process(line) for line in data)
def process(rucksack: str) -> int:
size = len(rucksack)
a = rucksack[: size // 2]
b = rucksack[size // 2 :]
a = set(a)
b = set(b)
item = a.intersection(b)
return ascii_letters.index(item.pop()) + 1
def read_data() -> list[str]:
with open("./input.txt", "r") as f:
return [line.strip() for line in f.readlines()]
if __name__ == "__main__":
dataset = read_data()
res = priority_shared_items_sum_1(dataset)
assert res == 157, f"{res} is not the right value"