added solutions for 3.2, 4.1, 4.2, 5.1 and 5.2

This commit is contained in:
2022-12-08 04:31:07 +01:00
parent 16721db1bd
commit 909b83978d
8 changed files with 3453 additions and 2 deletions

View File

@@ -0,0 +1,300 @@
tdltdtmhlRNCBcwmHr
WDzDPnvvGnsWLWpGJJHRzCCRZNBRrRwMNwHH
DsDsQnJDnWsJnJvrQDPJddgShFQhjljqhggbdbbt
LqvbLLTdvlfdqTLtbvDSRHPhHmRSnndHnHRM
jswsGgzwsNgNWNwGJzVrgSHnhHHDmShmmGShnMDPRn
JMNWzVwMpjpLpTfTLLTf
HnQBjMjPQmRMmJCmBPGSFTSVWcNNGQQGGGTV
dgstqdtsbwrzddvrvdwqzhrWSFllDSWGDWFGDNsDDWSTHT
gpqZwwzHZhwzMJBmfZnnJLCL
PJHbTPCmLdTtLtRtBvzBrWffft
hnpTqhMncpFDppDqqNVFVvWzvNWNvfBfzs
GwZccTpgnDSDDZQdCZbbClbCmm
bnZnRZZZRlpGBbfRJjBbMfhCHwfsHShschMsHCww
LqVtqVmtLQvVqqLTFFvLDMhDMpMhwMSLDhsDCH
mFQWtNggVQQgmdgpJGpnnZJjbWGBRZ
GsdGrGqvLZqWvWWdrPLdfvsvSJDDcQQhcTbFbTcCJLSJShcJ
wmBlnjwjgHSSDQjfDDfF
wggpmwmwNnMlHRpttRHmlPfWzdGvvvzrZWVvMrPvvZ
jvlvTvTvTvcqTdZrdnGlVfNgspslpfGGnM
BWQhQzQwmhwWHbWCSRMRgjpjVDDRgDgVffgV
zLHQSBWmLcjdPjLLLZ
BjjLnRzBnRmTSTBhpBmCjnLqNPGGVNZgNgLGddZVNVdf
wDDJJQJlJtHrlwFFPNGGfZbbbglgfPSf
tFQssvcDJtJcFcvwHtBmnSCvRmzzhpSCWvmC
GvPVvVHPgzPMcFvDHssdpCpsnpHnsj
gmhmSRZBJTTTmSBZhhrqSBLRCnsBjjnbjBdbdbbdnbjwwBsj
WlrgrRgJSgZSJJJTZRtvVzvGtfzcVFcMzlGM
QSZwwsBZZwjsndFsMPHLzTLLLz
tpJfgHghmvqpNWrrTMrMMRzPrMPJ
ghgghmlvmgNWgmWwBQcbGGSclGHjjb
lhlnWGGFWZhDfgFfWDfrhgrRwcccqcZQBQMwcqJMTMRMqJ
jVdpSLPVSjtNdjdPtptzLNPPzcBzwCQrCcTBTRqwwqMCJTcC
PNHdpPLHtHtjdLghnHWvrvnFlFnf
qttvqPdCtLrqRgfpgpMgSfSWvM
TJccnTDjjDlDhSpfHdhpTpZf
wldwmJdwmsstCsLzBsBCGP
ddpCGpGpnndnpWqdVVpDGfDGFzSsFSZzBJShJsVtTstssrsr
jbvPLwFjztJBtvJz
wjggcgPFLlLwPFNwHmNPQqDRQfCRGCGqnpcRqQnn
PmmGhLLcgZbPQnqH
DlVsvvrvvvrsDJLRDvvCHbpBqpnbQnggbWZbggVW
vJRTSSRJClCCDwTJRfSfCsGzMLmGmzmjGcfmdFNNNtfh
vcmmMvfctfjLjvvRbLdHSnQSgQFnghSgQQSSjT
WzVbszVNHnTsQFgZ
pVlGlzrbDNrDrPpJNNJpVdBDvLdqvvvqqdBqcfvLdq
gfzgzPDVZQDDSqBdtFfdFdvqBB
MrwmTcJJsMwNmJdvFqdFGGtvvsGt
HMmTTwcJqcrTHrjjczhZQgzghgQHhnhhHh
BffBVgjPwPPPJwBBVJfDDsgrdZdcZqlcSnSncRNzHzZljNqq
CmWFbCmFvMtLLQCTbbbLtRqdSZHcdnqqNqNTRlnqNH
MpthtSMvFbvWPVDrsDgpPggD
VVRntNwmlvhGccPNfS
QZcgZppdrZQTzrBgCbrbdQrBvjLssPjSssMsfSLhTPPGvLTP
ZZcpJZHpgCgpppdrJRtVJFqVFVDRWJmtVq
dpdhtpjHtnpFRHdjRnwspMQmqpqqmVqmTVJQMmff
gSCcBCBCcgwDBLSvcLQQVTMmfmMJDqfTrrVV
gSwPzLBbNCbFnHHjhthh
dLNrRmqLqRgCNNrCJrSqqSQgjDWnGpGjDjspnlslGHnnjsQj
vVTzZFVttVBMFbFfffVVmVtHWpDspjHWWWbGjjjDsjWllW
hwFFwztTzvZmBzVfqhSSNPRPPCRPRJCr
BjfcmzCCTtNBNjcTDWwzPzDMMQPDPMws
lGpJFHnlSlnZbGnQQSBLwSPPLMsDQh
JFHHpbnZbGbZgvTmqfNgqCcvjB
ShhpqjhhVZmHhSJSSnLzdNRNTjLwNTNTzv
QffRWRrMGwLfgNcNgc
GQrQDPRBlGlsGrWtrtPDPbWpqhZqSqJJpHZSVhVhhmmBZF
ZlVVDTtTrzFDrFfB
NNGbJNNNNmpWBNbNWmjMfdjmFfPdqFMrMj
NQvRNvSRHSQBgRGQJJQQHTtcVLlVcTwVTllnRsttZs
fjsDhJsVDcVJVljFDqLqFlnnCFbzbCCCZCzCtCZrnCCM
HwQNrHWNPGPHMZCvMCbzzvHZ
dBWwWPPGrGwBlcjDlcjcjldL
NCLMHJZqCHHHMFlNBZtTZRvtStZdcRbc
wDrnpbswVgsrsWmGpDpfpBQtRSTmdvBjTjtBScctRm
gwzgbGDgpgFJMzlzPJCC
SpnfPVqFnGfPGggqfGbjZZrtWrlRlbHpZjRZ
mmJmdJBsBJsDwhJBQhTZtzdRltrrRlrtHjjl
NBscQhmsmmQLLwLmhhwmcSSGfnfSFCSMCPfHCMqG
hvVnPwZwVzQrhrVhPPPrpQVDBgMMlSTLZsgdDTSTdsssLd
RvFCqCGfbFCRbRmSBMMsLBgdFDSgdL
cRGjRWbWjvtPvrQcnr
LzLNzhpcRRcTmNDzRhTPDjMvMnVlMgjngSMrMzrQQr
tfbWfWcWddFcGFwfswFFFCrjjvlVbrQjSglSQMjgvlgl
FHWGCHCCGcwfswqHdHqwwmPqRJDpZZNRJPRPPTTJNR
gLHLLhTjZVMwMRSZZS
GdqdtlPvnQPPnsRw
tNNGvdtbdmJmHRTRJrFr
QjjdjGDvdjwpZsssvsPZFZll
mTWWMWzbPHmZwHHw
JwTbtBztMVLDSpjVtc
SZSBWtBSwnTDFSDD
CsrJWmmPrPQmpzsPmssssvnTFhvTnPhnFDFfDFnwqF
CCCCzprgrJJCgmVcpJmWLQZddHlGbMbdZMbtZNNcHHBt
fgqqrZLqZqFzFFWzZzgPPbnMNNNvQnpQnQbNbpcHNP
SdwdmwCClCCwldhRSmsvpbncjQbNNQMtjQnMvS
mDlwhMRlCwDCTVwVJRdGgfzLLzzGzGFWqGqfGD
CnVvCqvnRqHVqnWcMFnLmLnMMm
ZrdzbzbrdwtQdSfdcmmFMBWFNFWLwNNp
QFrQtJDdSZdDVHlVCPssJRll
qMpGGmVNHMGVjRJJGfRgQtjQ
flsTZCwDwWcZZPCrPZZWgLLjdJJQSJTQFSgQJJRt
ZcChshwZCDvlCZCsPHMHzqNzBmMfmBBMfh
wCtZtzCnPldZSdZp
VMspbMHspbshbPBLFsdcsLBdLs
pRrQHpNbQbrqRqJfnwfwzR
DPPcDlPwNdNRJsccpgvwBBvqGGQtqrCjwr
fMSVrMWmLZqHQgLggCHH
mZZWVTbTWWfnMWrbmznfZfsPNcdsdpRcNJplbJNcNRNl
ztlNSLhplhBHwwBBMBtv
DnVVfcGbVnGRZGgvPMpHBpCmJMDP
GnZdZZnbdpVcQjQQFjjqrlNWlrsNrFNLLsWqSF
bJQgDRfjDbJbRMTgSSPzPHCNhzQHHszz
wmnwFmDcwFGvpvwGnSWPNPWzPHhhcWSCNz
GpDtmvrdGvvBmZrLTjZRTqTjblbMfL
gBhZmtHhhhwTJqwDFqGGqPWqDb
rRLRVTrjCrCVdFjMbvGPPGDPvW
LSsVdrRNRCCffCSllQNBTNgNlmhHBJ
lCzCCDMDlzzlZtttWDnDCZPbVGLhSmSLGbSgGPgVZm
sBcNsqTQwRQRrBgbgSbPTLVSnLmV
wcqrjQsBBjdCzjdnCv
ZgHVtMQVVgvQjjtzdzfdFHppfmzwpz
CsBrBLLJSrsRCvnGvfRdvF
DbBJTJDLrJDqqqrrhJsJqVWthWlZZlZjMPZltvtMjZ
bsHlrwlnwwQJsqmJnqsPSLzTLpPGPSgPPPWmLT
fdvBtpMDfpCCfBcCcCBtDfFSgTMTGSTRPLgPWGzGgVgLVz
NDcjcDZjBCdvvjdvhlbJnprjnnbhwrqn
zRpLMMqjgMggqLDqDRVGNGdhGtvGGnvGnrznGB
VScbcZPJZWZlZbbHSJQJGtrGvtmdBBGmdGBrdn
cbPsZcPCcWfCZPcPQslljpDqwfqVgRLMTRjwVqLM
QtRWhjtsbttQtnbbQvsrRBfDNdMGBLZLVVNVGNLGWd
JwllwllJmCwzPFSJzwwTBZLDLdBBBPLZZBVTTL
ZwFSSmpwzScFSmggHQjbQvjvscQbrtnjbs
WMLWnSHSMnHjPVMVMVVJGM
zQzRcmttdftrtrdZZRzDtPZppphsVbjGbQbJTTsCbsjppG
dmrDtqfzrmZtqDvdfmZmtdqzLNlgnwgWLNvwFWgWWPNFSFNN
hvSrMwqljjBHvqhHsHshqnrZcCCpfCZZCCZZCcCfCZ
QDVTRFWlmDnpLnnPTPCZ
DVQVtmQRWRRGFVRWVvlwdShBvvSqvtjMdd
pnMQbbnDQMNMDQsnTplNTDvqPGHZGcvqmCqvmqZqmlqP
dwJdBBwdJJwLJBLSRJczWmHPzqWzzHGmvPRHGG
LrdFgSSLBsDMFFcbQb
NSnwvSPPVNnPTLVpRvVvRnqhhQQzHhLbzlqcqHzmHHqh
DFMMfBffgZJtFsJgwdDHGHHzzmqhhHQzDQGhcH
dMrZMMgFfFtZJZfBWMfVPNwPpNwPVSNVjjVWpN
dNlLSvLSdNlhphlhlWfVFFbZHqjjHHvqFZQHCQ
BcrTcJfRMRmrcbqcQgcHVCVF
fBzTJJRmfPPmnppdNwhllwlz
GqfSSmPSFwSCmFBwfQfQBfGnggLrhTrJBDDnrddsJDdLTL
cHHvVtptbzbrTQJTggnTQv
QRVbbQWbpZbVQVGfRmwfFwmjflPP
zzBQJmzQPPlddpJWlzzfdpfjvLvgmvFggMFGDVvLGHVFvvtM
CCSTrCncrhcCcwhRnCqCttFDvMFvtWtVHvFhvLVv
wCTNCSRnbnpWzlBpJspN
PTzTPlrrfrbzmftTTrrjPMsNNFZQgQHVgMtNVFMgFF
DpGBcpvdZhccdGJhqDBphZhdVRQVQQVsqFwMRwFgFNHMHwQQ
SGcLGpdGnBhDJppSDZlPTTmLrmbTLTmrZL
PzmhTqSzdDGcDhzdJDPBmJnrdVppNVVtgttMVrNnMMnV
blbQbWLvlWffCjlGCWwsnLpnpMggnpspnsrg
fQRbCZRfFZvZRQHRvHjmGmTFPcBmDhBGTzmGqS
JJVJfgJfVDdfDDcpTBgdwQMQZQRZQZwmlmWwQGcm
ttzzjjzSqPzqtqzFrPvzwNwMlMRNnnwnllSmmmQG
FCvvChhsRVhhJBdB
rbQZdRzBFTBzZZcclntHnlfJlrNgngfS
PPqGjpPGqpmDmDwqPDVnlNpnJfnnnglJCHlNfC
MMhhjMwwPvZNZTvLTZdL
ZZGgVgwfQNVNLfZsPqRsVTDspTpsqs
jdjdSbmMdMBSvMgBcWpsRpTWDHWTvRPs
httmBMhbBBjCdzShfGzJlnQLlgGGZwww
gLSLMCbVSGRPdTwtjtVfdt
TpzJpFFqmzpscslBtddjlwjjDhhldhvP
WpsTmJpHssqnHMGLnGSgbH
RRBCpJJplCchWJJHCHCvjdpMzFzrNvVgFrrMzz
btLLPGSQctnZnPwwSjgZjjjNNrvMvVrrjV
tmLPGmnbnsLLwqQPSwqGbwDfHlHWBWlCsffshDCBfWcJ
GhDFZFGZzzbCdZbZVlfv
bPNWSbSJSWSJPBBLLqClCltlwlNmllwvCQfC
PgPLqgqpWcWJJcnqJccccGrjbHhDRGMDGTDbpRhbFF
VJRffrVJvDzcRcFFbpSlQLHlvtlstbbt
NmNqPhPqPZhsQLQwSRpH
dWRnRdBmMBWgjCgVGjFcCDzf
nhhQFDmVmDGhmFpgCgBpcpHqncCt
fLLZbljhjjscCggBCLCL
PhMRhNWddWNjfRdPRfWNfVmvQFVQzVMJJDJGrmQGrQ
PNQtsHvZtsQgQLPsPtHZbfzRffRzMMqRqpzbfqng
jDwCmhrDlhBhBldrzJMmfFFbSfFnqpFb
jdljDrDrTBBnGVNcGcQLQLQPQL
MjzrjZvWQRHtjQdS
JFJlDJbcbvtRQmQbQQdf
JqNDBVNpqCBqDBCBVDcNVBqNMWgGZTPZgCrPzzvghPwrwZgG
gzggttLNDFztFCNWzrLttmFddSjsdJsgZVSsJjwjgbgZVG
pPPcqpnqHMpcRbhhMMpThvnwZSjZvdwZvwdZSBvGZSGVZZ
ThcPlHbbPHRnlRTHnMhpfltrNLWzCWWCztzffQLLDmDN
SlNJRpCGTmdFFDcbqJZFFJ
wwnWPHgsLPlVVfssLcZcjjzrDqcFzcgchZ
WVvQHQPfLwSGSvCRlNSd
wWnWcpWDcwHcRdJQTdmNsT
hprqBSvZNjFdFjsq
fSfpvhLBfltMCLzWzC
fdPfPwPmdmLZfNWjWszQNjjN
MBRSBBRBChMRQWhlmVWNsmzm
FvRcSrcRrtvrRrvrrrmcwGwLnTHHqGtwZwHdGPHP
tFPlJcDJdvLZvFlcvlHtQRthbgQjrhsgQgNr
qCnpGMnTTVwCCMnqwWfpChQHRbrgQjsQmmfrrHgHrH
GMnTSBnVTnBGbLlDDvFBLDbF
rJhPGdLSWnnrdqLhPPWGjcZZffjcgNdgNgRcNfwf
mHsDTQlsQBvWspTHzpmCTpcZgwZjZfZNRFwRjRRNMHjZ
vCzDDQsDDvbllWTllCDCCTSLbqSPVqSnJLGSqrPLtVnP
sSRdHHHSRhjShVHWVFJdQPNFpGCrQCCfflqlPvfN
gLztmctMwnBtTzMppBCCrGfQlQQqBN
bbbncfzLmmmnnZLgHZWjhsjVJjHRVSdR
bRgwCHfgfCCttRbdRLHzzGDnDnLBhmBGzvmFZD
rssprQlqlTQGNPcJGVsTBDmWzBnPnhWBvZZDBvDm
MQQTJTNGNcqrNwMwwHRdRbdgbj
sBnnsDLDBCsLTngnZLcdmppCdmpRJwJJQdMRMP
NlrTblbNNbwRPpjjbPdJ
GlztrhvfGqltqzWrcZgFZVSWWSTSncnL
FLJqLFRjzFqzJddlLfNNCjPrGSHCPHNVNVSH
TWTpngssgcPgNGPc
pGMDZpnZBMDsTTTnTsQWWZTRlbvdfZlLflZzJfdqvdRbqf
ClsJpCgsppMbFFFbHp
PvQRPqQPvRdwLNZLZqqwGPPPNTbjMcFcfHjHcMNfBNHrcDDM
GLRnzqzdRqwdZnLLPqqZdQGsVtsnlWCVVWsgtWSSVVhFWt
LNLSJjQDLlzRGwTTzQfT
WbZqchqMZqZWbmdZbhTrvPmGvwfHRHGTHRwH
dcfChsWWZgbfWdhCbgDNFBBDjFNBjjVNpD
HjCLsHJHCjnNVHdCnHtJdtQQgQDhFGFDLcwFDBFMMDBT
vWrSWSbSrRqmzlWlQgRQQTcRMgMTMFwT
bzrpWWzbqrpnZsJwZVpC
FhlfrNdTrtFdtrrrfcZBMdpZcHHHZMcccv
PmbjVDjwQbbjjVpDDvpzBZSSMsvG
jmbVjPVWqVmgJgjmmPPQjmqlCMlftnftnNlTTLLfNfrJtN
PwMWzqwWbFwznqNQQhffQjJfnhfJ
mmdpgmttDrpgpdmZdHmgNsQVZvJNMQvVJffsZVQf
pdcBrMgDgcgrrHPcFSFzzqzFFbPS
QRJJtSfJtQtjQRnSnNssTNdgsgdwddRWcm
qHMDhPBqbqZVzbddTcVwSmNWNVcc
BFCZbqPbHBPMhCljvQSvGCCpnj
HSzHNHlNHmBSHSBFrFFgBHVVqbQLTTcLtqDsDTBTDcDp
CWQZGCWfMZGqbTbtpLsbWp
GwjhPCRZPQPPCPwmzSNzzzmwzlzSgH
GgTvJbpJGvPVHZZZLW
cwWdnwmWnfwZDBHHNzZBVf
nhjjmshdwmSjsnmwrrQrtbtbgTTgrWth
lFBTtcnlcFlppVpttcFZVhTTDDLCHDSDCjDCMSLZDWdDDSjD
mrfsgMfRRwwPffJfbdDdgWGLGLSDjSSWdC
MmfNPwPzMzlhlFlplV
pRVgVsRzdDVJJJRttZTnnLrGsrGssG
BjMvMBWmjWNWSWrLGZPTHLSLTrZr
LLMWQjfvmljLBRVJfbChfVgJRz
RPDsdnVrVnVzScStjpFSjV
BTLBhMMBpSMsMjZz
hwbBgTsbBbGrGHvGrvDnPH
nzwgtSFRqhDphDwB
CmWCrrmrVPGCDTbpvvvhsZDG
VdNrlWHpmQzSMgJFdRFz
jrhZtczchvvFCTmCDlDMrMDT
bHbLnbbwLnWQpLQgQVpQCTDqdmwqmDqCdDCSlmdd
sgVgglblptsfFthtvR
LctzWvrzTWsvWBfvBzdJQSdQhQQfpDJJmmDD
lMRwjlwlLnZwLHLggQDRGphdFDJQdSdJJQ
CjPZCVCjgPwgWqWLqzzcWsVq
JNWHsPNsJNHBnfnnqfqswcctDTmPCRmmTRtgCdmD
rjGrLrbhGRZVGQhphbbmDgDZMDMwdwDcCMgcDM
zvbLvVpFvjzVhbQjGjHlnflJFlWRqBWWBJBS
NfCMfGNdGqVDhWBvncLllhBgcmgL
bJbRbHHtRtJtZTpSRtsLDLzvcvBmgnnnJlsm
SbbbTRpbQHSbbwHZZTHqfCNMfqFWGNGVQMFGDC
MdzwdMpVwVNMHQMJNcHM
mDtcPDqWnDqgnGJvLHTJHJ
mmjhhRBRBcdZrcdRCz
lvldsNpNGCGgCvCGggDLMbMmrdwnjjZdLLwrjM
HWHtPHSHPBnrmZjBbwwC
tHqWRtfttNlDClvNqs
BTRNQTQTTBFRTglDwzztDgCwLF
jZsMjqgdrrzzSbsDSwsw
jWZrMgMjGdvrWWvrWMfMfZTBHTHQBHBQNpQRfRHNpnRT
GRgFCPhnBBhPwZPnwdbWMJMlcJTLLlTlRT
VQsvVvvVNzqsscTVSLbWTStTJW
spfDNpvsnPCfhBbh
GhWSgWphprhQqqndQd
MvZRjjLcCzwcLnHfdTdgfFHQ
wCczcCgRMwRRNCtjMCtCvlBmVDGslmPpmWWNVGSpWV
PZqgTbTZvFgZbZnFvPlBsVqsGBlGVzGsqVls
MMhSmHHfrfrSrjMNfcjrSRBlBVzGVpVGgGVCGslGNd
rMhQQmDSQMjMtZvPTTnJvtQg
TNGWlqVpmPssnNssWLtRfCLbjCCwPgLjfg
ZSHvHczFBBcHhJHFvhHcSFgrCgLbfgfbwrLTtbjwLwJr
BMzSQzcQznlNQTQsnl
FVWDZDZHpDdtZlqZqZqljfNmsNFPjbbPbPRbFFjm
MJSGMghngrccvSrSzMrsQbbRmjmQmjtNtbfB
CMnvczGChCCwcgtpDDlLLLwVHdlHTZ
fTTzbQzhDwwbCnZnpbgnHncM
mGtBRBFmsRpVGMzpnnGL
lFNqtdsssrRFBltSFRFlSrvfDSWWvwfhhPJPjWfQzPvf
GWWWQlpSZzrQnjQdRHVjdjTRvddddB
ztthMtCmffcChJhChfCJdLddLBBgvqdvBBVBcgdq
smbsmbmChCJmJffPmhNthDtZwnFQZQGpSrGWGQGZpQZzWP
ZDzsjjFLFqsQzFsZqDzBHGtBHpmgdNGmGBtLBG
hbbMMTcWhbwnJPlwWrnPbbVGVNndgpVVHmdNHVBmmmtf
bCTPTclcgRZQZCgs

View File

@@ -20,11 +20,32 @@ def task1():
else: else:
value -= 32 value -= 32
value += 1 value += 1
print(f"{char} = {value}")
sum += value sum += value
print(sum) print(sum)
def task2():
sum = 0
with open(f'input/rucksack_reorganization2.txt', 'r') as input:
sum = 0
sanitized_input = [x.replace('\n', '') for x in input.readlines()]
for i in range(len(sanitized_input)//3):
a, b, c = sanitized_input[i *
3], sanitized_input[i*3+1], sanitized_input[i*3+2]
common_type = set(a).intersection(b).intersection(c)
char = common_type.pop()
value = ord(char) - ord('A')
if value < 26:
value += 26
else:
value -= 32
value += 1
sum += value
print(sum)
task1() task1()
task2()

47
week4/camp_cleanup.py Normal file
View File

@@ -0,0 +1,47 @@
def task1():
with open(f'input/camp_cleanup.txt', 'r') as input:
sanitized_input = [x.replace('\n', '') for x in input.readlines()]
sum = 0
for pair in sanitized_input:
first_elve, second_elve = pair.split(',')
lower_first_elve, upper_first_elve = first_elve.split('-')
lower_second_elve, upper_second_elve = second_elve.split('-')
#first in second
if (int(lower_first_elve) >= int(lower_second_elve) and int(upper_first_elve) <= int(upper_second_elve)):
sum +=1
#second in first
elif (int(lower_first_elve) <= int(lower_second_elve) and int(upper_first_elve) >= int(upper_second_elve)):
sum += 1
print(sum)
def overlap(start1, end1, start2, end2):
return (
start1 <= start2 <= end1 or
start1 <= end2 <= end1 or
start2 <= start1 <= end2 or
start2 <= end1 <= end2
)
def task2():
with open(f'input/camp_cleanup2.txt', 'r') as input:
sanitized_input = [x.replace('\n', '') for x in input.readlines()]
sum = 0
for pair in sanitized_input:
first_elve, second_elve = pair.split(',')
lower_first_elve, upper_first_elve = first_elve.split('-')
lower_second_elve, upper_second_elve = second_elve.split('-')
first_elve = range(int(lower_first_elve), int(upper_first_elve))
second_elve = range(int(lower_second_elve), int(upper_second_elve))
if(overlap(int(lower_first_elve), int(upper_first_elve), int(lower_second_elve), int(upper_second_elve))):
sum +=1
print(sum)
task1()
task2()

1000
week4/input/camp_cleanup.txt Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,512 @@
[J] [Z] [G]
[Z] [T] [S] [P] [R]
[R] [Q] [V] [B] [G] [J]
[W] [W] [N] [L] [V] [W] [C]
[F] [Q] [T] [G] [C] [T] [T] [W]
[H] [D] [W] [W] [H] [T] [R] [M] [B]
[T] [G] [T] [R] [B] [P] [B] [G] [G]
[S] [S] [B] [D] [F] [L] [Z] [N] [L]
1 2 3 4 5 6 7 8 9
move 4 from 2 to 1
move 1 from 6 to 9
move 6 from 4 to 7
move 1 from 2 to 5
move 3 from 6 to 3
move 4 from 3 to 9
move 2 from 1 to 3
move 6 from 7 to 5
move 5 from 7 to 6
move 6 from 8 to 7
move 6 from 7 to 6
move 1 from 8 to 3
move 15 from 6 to 4
move 7 from 5 to 6
move 1 from 7 to 2
move 2 from 5 to 3
move 5 from 9 to 8
move 5 from 5 to 6
move 1 from 7 to 4
move 5 from 6 to 5
move 3 from 3 to 8
move 4 from 5 to 8
move 1 from 2 to 8
move 7 from 1 to 2
move 2 from 6 to 2
move 2 from 5 to 8
move 1 from 1 to 8
move 8 from 2 to 6
move 3 from 3 to 4
move 4 from 9 to 3
move 5 from 3 to 6
move 5 from 6 to 8
move 3 from 4 to 8
move 13 from 6 to 5
move 14 from 4 to 8
move 1 from 2 to 6
move 1 from 4 to 2
move 12 from 5 to 4
move 30 from 8 to 6
move 1 from 8 to 9
move 1 from 9 to 4
move 15 from 4 to 5
move 1 from 2 to 9
move 1 from 4 to 2
move 1 from 2 to 1
move 1 from 9 to 3
move 8 from 5 to 7
move 2 from 5 to 6
move 7 from 8 to 1
move 1 from 3 to 4
move 1 from 7 to 3
move 1 from 4 to 6
move 26 from 6 to 7
move 1 from 3 to 7
move 3 from 7 to 2
move 1 from 1 to 9
move 16 from 7 to 5
move 2 from 7 to 4
move 12 from 7 to 6
move 1 from 1 to 9
move 4 from 6 to 1
move 7 from 1 to 5
move 2 from 1 to 8
move 1 from 7 to 2
move 1 from 1 to 4
move 2 from 4 to 5
move 1 from 9 to 4
move 3 from 6 to 9
move 8 from 6 to 5
move 5 from 5 to 9
move 19 from 5 to 8
move 1 from 9 to 8
move 3 from 8 to 7
move 1 from 7 to 3
move 8 from 5 to 2
move 2 from 4 to 2
move 4 from 9 to 8
move 1 from 2 to 3
move 2 from 3 to 2
move 4 from 9 to 5
move 8 from 8 to 4
move 9 from 8 to 5
move 5 from 8 to 4
move 5 from 5 to 7
move 12 from 2 to 3
move 2 from 2 to 8
move 1 from 8 to 6
move 1 from 8 to 7
move 10 from 4 to 3
move 1 from 2 to 9
move 13 from 5 to 3
move 1 from 7 to 5
move 27 from 3 to 4
move 1 from 8 to 7
move 3 from 5 to 2
move 6 from 6 to 3
move 2 from 4 to 1
move 27 from 4 to 2
move 2 from 7 to 8
move 23 from 2 to 4
move 2 from 1 to 4
move 2 from 7 to 2
move 4 from 2 to 9
move 10 from 3 to 4
move 1 from 3 to 5
move 1 from 5 to 1
move 5 from 2 to 5
move 30 from 4 to 2
move 1 from 8 to 9
move 1 from 8 to 1
move 27 from 2 to 3
move 2 from 4 to 2
move 1 from 9 to 4
move 2 from 1 to 3
move 8 from 3 to 7
move 19 from 3 to 1
move 1 from 4 to 7
move 5 from 9 to 1
move 4 from 2 to 9
move 4 from 3 to 4
move 1 from 3 to 5
move 1 from 2 to 7
move 1 from 9 to 3
move 1 from 9 to 1
move 5 from 5 to 4
move 5 from 7 to 3
move 1 from 5 to 6
move 23 from 1 to 6
move 1 from 9 to 2
move 1 from 2 to 5
move 24 from 6 to 9
move 6 from 4 to 7
move 4 from 4 to 8
move 1 from 4 to 9
move 4 from 7 to 4
move 4 from 3 to 4
move 4 from 9 to 8
move 6 from 7 to 9
move 4 from 7 to 6
move 1 from 1 to 4
move 2 from 6 to 4
move 1 from 6 to 2
move 1 from 1 to 8
move 1 from 7 to 3
move 1 from 6 to 9
move 13 from 4 to 2
move 3 from 3 to 2
move 15 from 9 to 8
move 1 from 5 to 9
move 5 from 9 to 1
move 4 from 1 to 7
move 4 from 7 to 3
move 8 from 2 to 7
move 9 from 8 to 2
move 1 from 1 to 2
move 7 from 9 to 2
move 4 from 3 to 1
move 4 from 1 to 4
move 2 from 9 to 1
move 20 from 2 to 8
move 3 from 4 to 8
move 1 from 2 to 3
move 4 from 2 to 7
move 1 from 3 to 4
move 1 from 9 to 3
move 1 from 4 to 7
move 1 from 2 to 5
move 1 from 4 to 3
move 2 from 1 to 6
move 1 from 5 to 6
move 1 from 7 to 1
move 12 from 7 to 2
move 12 from 2 to 6
move 9 from 6 to 2
move 1 from 6 to 8
move 1 from 3 to 9
move 8 from 2 to 4
move 1 from 9 to 6
move 1 from 4 to 6
move 4 from 4 to 9
move 1 from 4 to 9
move 1 from 1 to 5
move 2 from 6 to 3
move 1 from 5 to 4
move 1 from 2 to 8
move 10 from 8 to 6
move 10 from 8 to 3
move 1 from 3 to 4
move 8 from 8 to 1
move 3 from 9 to 8
move 2 from 9 to 1
move 11 from 6 to 7
move 1 from 1 to 7
move 8 from 1 to 4
move 3 from 6 to 7
move 1 from 1 to 4
move 14 from 8 to 6
move 1 from 8 to 7
move 1 from 6 to 8
move 6 from 4 to 1
move 1 from 8 to 5
move 4 from 1 to 8
move 2 from 7 to 1
move 1 from 6 to 7
move 5 from 4 to 2
move 2 from 4 to 3
move 4 from 2 to 8
move 15 from 7 to 3
move 3 from 3 to 6
move 1 from 5 to 2
move 21 from 3 to 6
move 2 from 8 to 7
move 1 from 7 to 8
move 32 from 6 to 9
move 1 from 7 to 8
move 5 from 8 to 4
move 2 from 8 to 7
move 14 from 9 to 8
move 14 from 8 to 1
move 2 from 6 to 1
move 2 from 7 to 4
move 1 from 9 to 3
move 17 from 9 to 5
move 6 from 1 to 8
move 4 from 4 to 6
move 2 from 2 to 5
move 2 from 8 to 2
move 1 from 6 to 7
move 2 from 2 to 6
move 4 from 3 to 2
move 7 from 6 to 3
move 6 from 5 to 7
move 1 from 8 to 9
move 1 from 6 to 7
move 4 from 8 to 6
move 1 from 9 to 3
move 4 from 1 to 4
move 12 from 5 to 9
move 7 from 7 to 8
move 3 from 4 to 2
move 8 from 9 to 4
move 2 from 6 to 2
move 1 from 7 to 4
move 2 from 6 to 9
move 1 from 5 to 3
move 1 from 8 to 1
move 2 from 8 to 7
move 2 from 2 to 9
move 7 from 2 to 3
move 8 from 4 to 1
move 2 from 8 to 4
move 4 from 9 to 7
move 2 from 9 to 5
move 16 from 1 to 3
move 3 from 7 to 4
move 1 from 7 to 6
move 1 from 6 to 2
move 2 from 5 to 3
move 10 from 4 to 2
move 2 from 8 to 7
move 19 from 3 to 8
move 17 from 3 to 9
move 3 from 1 to 7
move 17 from 9 to 2
move 1 from 7 to 5
move 1 from 7 to 5
move 2 from 5 to 7
move 2 from 9 to 2
move 6 from 7 to 6
move 3 from 6 to 7
move 1 from 8 to 9
move 1 from 9 to 3
move 4 from 2 to 5
move 17 from 2 to 3
move 3 from 7 to 5
move 1 from 5 to 3
move 7 from 2 to 3
move 2 from 2 to 4
move 1 from 7 to 1
move 1 from 1 to 5
move 2 from 5 to 3
move 1 from 4 to 5
move 1 from 4 to 3
move 14 from 3 to 5
move 17 from 8 to 7
move 2 from 6 to 2
move 12 from 3 to 5
move 15 from 5 to 9
move 7 from 7 to 3
move 7 from 7 to 6
move 1 from 2 to 3
move 11 from 9 to 6
move 13 from 5 to 7
move 10 from 6 to 8
move 6 from 8 to 3
move 2 from 5 to 8
move 1 from 2 to 9
move 10 from 7 to 6
move 9 from 6 to 8
move 1 from 5 to 1
move 10 from 6 to 4
move 8 from 4 to 5
move 1 from 1 to 2
move 3 from 9 to 1
move 10 from 3 to 7
move 1 from 4 to 7
move 12 from 7 to 9
move 7 from 3 to 5
move 13 from 8 to 7
move 3 from 9 to 5
move 5 from 5 to 6
move 3 from 1 to 9
move 5 from 9 to 6
move 10 from 6 to 4
move 15 from 7 to 5
move 3 from 9 to 4
move 1 from 4 to 3
move 3 from 8 to 9
move 6 from 9 to 6
move 2 from 5 to 1
move 1 from 2 to 7
move 12 from 5 to 8
move 3 from 9 to 5
move 11 from 5 to 6
move 1 from 1 to 2
move 1 from 2 to 8
move 3 from 7 to 8
move 10 from 8 to 3
move 1 from 1 to 7
move 10 from 4 to 9
move 1 from 7 to 8
move 5 from 5 to 3
move 15 from 6 to 5
move 8 from 3 to 9
move 3 from 4 to 5
move 1 from 7 to 8
move 8 from 8 to 9
move 1 from 6 to 5
move 5 from 3 to 2
move 5 from 2 to 3
move 5 from 9 to 8
move 1 from 6 to 8
move 2 from 5 to 1
move 4 from 3 to 2
move 16 from 5 to 6
move 3 from 5 to 9
move 4 from 8 to 5
move 8 from 6 to 4
move 4 from 2 to 3
move 1 from 1 to 4
move 6 from 3 to 6
move 24 from 9 to 2
move 1 from 1 to 9
move 1 from 9 to 4
move 2 from 4 to 5
move 1 from 3 to 2
move 10 from 6 to 8
move 22 from 2 to 6
move 1 from 2 to 7
move 1 from 7 to 5
move 10 from 8 to 9
move 7 from 9 to 3
move 6 from 4 to 8
move 3 from 9 to 2
move 5 from 8 to 3
move 1 from 4 to 1
move 1 from 8 to 3
move 3 from 6 to 2
move 5 from 5 to 1
move 1 from 5 to 3
move 5 from 6 to 3
move 1 from 2 to 7
move 16 from 3 to 2
move 1 from 8 to 1
move 1 from 4 to 7
move 1 from 5 to 3
move 6 from 6 to 4
move 14 from 2 to 8
move 3 from 3 to 5
move 2 from 3 to 6
move 3 from 5 to 6
move 4 from 6 to 4
move 3 from 4 to 8
move 7 from 2 to 9
move 2 from 2 to 1
move 9 from 8 to 4
move 7 from 1 to 7
move 8 from 7 to 5
move 2 from 8 to 4
move 3 from 9 to 6
move 4 from 4 to 6
move 1 from 7 to 3
move 4 from 8 to 2
move 2 from 9 to 8
move 9 from 6 to 7
move 1 from 9 to 8
move 1 from 1 to 5
move 3 from 4 to 5
move 1 from 3 to 2
move 5 from 8 to 2
move 9 from 2 to 7
move 1 from 6 to 7
move 1 from 6 to 2
move 9 from 7 to 4
move 2 from 5 to 9
move 10 from 4 to 6
move 1 from 8 to 6
move 5 from 4 to 3
move 5 from 4 to 9
move 5 from 9 to 5
move 1 from 1 to 7
move 4 from 7 to 8
move 8 from 5 to 3
move 3 from 3 to 8
move 6 from 7 to 6
move 3 from 3 to 1
move 5 from 3 to 7
move 1 from 9 to 6
move 2 from 7 to 6
move 1 from 9 to 3
move 4 from 6 to 9
move 2 from 2 to 6
move 1 from 7 to 3
move 6 from 5 to 4
move 7 from 6 to 9
move 6 from 6 to 8
move 2 from 1 to 2
move 1 from 5 to 1
move 5 from 8 to 5
move 1 from 3 to 9
move 4 from 4 to 5
move 10 from 9 to 2
move 14 from 6 to 4
move 1 from 3 to 8
move 1 from 8 to 5
move 2 from 7 to 9
move 1 from 1 to 2
move 14 from 4 to 7
move 1 from 1 to 4
move 3 from 4 to 1
move 3 from 5 to 1
move 6 from 5 to 1
move 10 from 7 to 3
move 6 from 1 to 5
move 6 from 1 to 7
move 3 from 8 to 3
move 1 from 5 to 1
move 3 from 9 to 6
move 1 from 9 to 3
move 6 from 5 to 9
move 2 from 6 to 1
move 9 from 2 to 1
move 6 from 9 to 6
move 2 from 8 to 7
move 5 from 7 to 3
move 7 from 7 to 5
move 4 from 2 to 8
move 6 from 8 to 3
move 1 from 9 to 4
move 1 from 7 to 3
move 2 from 5 to 3
move 7 from 6 to 4
move 28 from 3 to 4
move 1 from 3 to 8
move 1 from 5 to 9
move 9 from 4 to 5
move 12 from 4 to 5
move 2 from 4 to 6
move 5 from 4 to 6
move 1 from 3 to 8
move 10 from 5 to 8
move 10 from 5 to 4
move 5 from 5 to 9
move 3 from 4 to 1
move 5 from 6 to 9
move 2 from 6 to 7
move 2 from 7 to 5
move 10 from 9 to 4
move 1 from 8 to 5
move 5 from 1 to 5
move 8 from 8 to 7
move 8 from 5 to 3
move 8 from 7 to 8
move 2 from 8 to 2
move 7 from 3 to 2
move 21 from 4 to 7
move 10 from 1 to 9
move 3 from 4 to 5
move 1 from 4 to 8
move 1 from 8 to 3
move 7 from 8 to 5
move 2 from 3 to 1
move 7 from 7 to 2
move 1 from 1 to 4
move 1 from 1 to 6
move 8 from 9 to 3
move 2 from 8 to 4
move 3 from 3 to 1
move 3 from 4 to 7
move 1 from 6 to 7
move 5 from 2 to 4
move 2 from 1 to 6

View File

@@ -0,0 +1,512 @@
[J] [Z] [G]
[Z] [T] [S] [P] [R]
[R] [Q] [V] [B] [G] [J]
[W] [W] [N] [L] [V] [W] [C]
[F] [Q] [T] [G] [C] [T] [T] [W]
[H] [D] [W] [W] [H] [T] [R] [M] [B]
[T] [G] [T] [R] [B] [P] [B] [G] [G]
[S] [S] [B] [D] [F] [L] [Z] [N] [L]
1 2 3 4 5 6 7 8 9
move 4 from 2 to 1
move 1 from 6 to 9
move 6 from 4 to 7
move 1 from 2 to 5
move 3 from 6 to 3
move 4 from 3 to 9
move 2 from 1 to 3
move 6 from 7 to 5
move 5 from 7 to 6
move 6 from 8 to 7
move 6 from 7 to 6
move 1 from 8 to 3
move 15 from 6 to 4
move 7 from 5 to 6
move 1 from 7 to 2
move 2 from 5 to 3
move 5 from 9 to 8
move 5 from 5 to 6
move 1 from 7 to 4
move 5 from 6 to 5
move 3 from 3 to 8
move 4 from 5 to 8
move 1 from 2 to 8
move 7 from 1 to 2
move 2 from 6 to 2
move 2 from 5 to 8
move 1 from 1 to 8
move 8 from 2 to 6
move 3 from 3 to 4
move 4 from 9 to 3
move 5 from 3 to 6
move 5 from 6 to 8
move 3 from 4 to 8
move 13 from 6 to 5
move 14 from 4 to 8
move 1 from 2 to 6
move 1 from 4 to 2
move 12 from 5 to 4
move 30 from 8 to 6
move 1 from 8 to 9
move 1 from 9 to 4
move 15 from 4 to 5
move 1 from 2 to 9
move 1 from 4 to 2
move 1 from 2 to 1
move 1 from 9 to 3
move 8 from 5 to 7
move 2 from 5 to 6
move 7 from 8 to 1
move 1 from 3 to 4
move 1 from 7 to 3
move 1 from 4 to 6
move 26 from 6 to 7
move 1 from 3 to 7
move 3 from 7 to 2
move 1 from 1 to 9
move 16 from 7 to 5
move 2 from 7 to 4
move 12 from 7 to 6
move 1 from 1 to 9
move 4 from 6 to 1
move 7 from 1 to 5
move 2 from 1 to 8
move 1 from 7 to 2
move 1 from 1 to 4
move 2 from 4 to 5
move 1 from 9 to 4
move 3 from 6 to 9
move 8 from 6 to 5
move 5 from 5 to 9
move 19 from 5 to 8
move 1 from 9 to 8
move 3 from 8 to 7
move 1 from 7 to 3
move 8 from 5 to 2
move 2 from 4 to 2
move 4 from 9 to 8
move 1 from 2 to 3
move 2 from 3 to 2
move 4 from 9 to 5
move 8 from 8 to 4
move 9 from 8 to 5
move 5 from 8 to 4
move 5 from 5 to 7
move 12 from 2 to 3
move 2 from 2 to 8
move 1 from 8 to 6
move 1 from 8 to 7
move 10 from 4 to 3
move 1 from 2 to 9
move 13 from 5 to 3
move 1 from 7 to 5
move 27 from 3 to 4
move 1 from 8 to 7
move 3 from 5 to 2
move 6 from 6 to 3
move 2 from 4 to 1
move 27 from 4 to 2
move 2 from 7 to 8
move 23 from 2 to 4
move 2 from 1 to 4
move 2 from 7 to 2
move 4 from 2 to 9
move 10 from 3 to 4
move 1 from 3 to 5
move 1 from 5 to 1
move 5 from 2 to 5
move 30 from 4 to 2
move 1 from 8 to 9
move 1 from 8 to 1
move 27 from 2 to 3
move 2 from 4 to 2
move 1 from 9 to 4
move 2 from 1 to 3
move 8 from 3 to 7
move 19 from 3 to 1
move 1 from 4 to 7
move 5 from 9 to 1
move 4 from 2 to 9
move 4 from 3 to 4
move 1 from 3 to 5
move 1 from 2 to 7
move 1 from 9 to 3
move 1 from 9 to 1
move 5 from 5 to 4
move 5 from 7 to 3
move 1 from 5 to 6
move 23 from 1 to 6
move 1 from 9 to 2
move 1 from 2 to 5
move 24 from 6 to 9
move 6 from 4 to 7
move 4 from 4 to 8
move 1 from 4 to 9
move 4 from 7 to 4
move 4 from 3 to 4
move 4 from 9 to 8
move 6 from 7 to 9
move 4 from 7 to 6
move 1 from 1 to 4
move 2 from 6 to 4
move 1 from 6 to 2
move 1 from 1 to 8
move 1 from 7 to 3
move 1 from 6 to 9
move 13 from 4 to 2
move 3 from 3 to 2
move 15 from 9 to 8
move 1 from 5 to 9
move 5 from 9 to 1
move 4 from 1 to 7
move 4 from 7 to 3
move 8 from 2 to 7
move 9 from 8 to 2
move 1 from 1 to 2
move 7 from 9 to 2
move 4 from 3 to 1
move 4 from 1 to 4
move 2 from 9 to 1
move 20 from 2 to 8
move 3 from 4 to 8
move 1 from 2 to 3
move 4 from 2 to 7
move 1 from 3 to 4
move 1 from 9 to 3
move 1 from 4 to 7
move 1 from 2 to 5
move 1 from 4 to 3
move 2 from 1 to 6
move 1 from 5 to 6
move 1 from 7 to 1
move 12 from 7 to 2
move 12 from 2 to 6
move 9 from 6 to 2
move 1 from 6 to 8
move 1 from 3 to 9
move 8 from 2 to 4
move 1 from 9 to 6
move 1 from 4 to 6
move 4 from 4 to 9
move 1 from 4 to 9
move 1 from 1 to 5
move 2 from 6 to 3
move 1 from 5 to 4
move 1 from 2 to 8
move 10 from 8 to 6
move 10 from 8 to 3
move 1 from 3 to 4
move 8 from 8 to 1
move 3 from 9 to 8
move 2 from 9 to 1
move 11 from 6 to 7
move 1 from 1 to 7
move 8 from 1 to 4
move 3 from 6 to 7
move 1 from 1 to 4
move 14 from 8 to 6
move 1 from 8 to 7
move 1 from 6 to 8
move 6 from 4 to 1
move 1 from 8 to 5
move 4 from 1 to 8
move 2 from 7 to 1
move 1 from 6 to 7
move 5 from 4 to 2
move 2 from 4 to 3
move 4 from 2 to 8
move 15 from 7 to 3
move 3 from 3 to 6
move 1 from 5 to 2
move 21 from 3 to 6
move 2 from 8 to 7
move 1 from 7 to 8
move 32 from 6 to 9
move 1 from 7 to 8
move 5 from 8 to 4
move 2 from 8 to 7
move 14 from 9 to 8
move 14 from 8 to 1
move 2 from 6 to 1
move 2 from 7 to 4
move 1 from 9 to 3
move 17 from 9 to 5
move 6 from 1 to 8
move 4 from 4 to 6
move 2 from 2 to 5
move 2 from 8 to 2
move 1 from 6 to 7
move 2 from 2 to 6
move 4 from 3 to 2
move 7 from 6 to 3
move 6 from 5 to 7
move 1 from 8 to 9
move 1 from 6 to 7
move 4 from 8 to 6
move 1 from 9 to 3
move 4 from 1 to 4
move 12 from 5 to 9
move 7 from 7 to 8
move 3 from 4 to 2
move 8 from 9 to 4
move 2 from 6 to 2
move 1 from 7 to 4
move 2 from 6 to 9
move 1 from 5 to 3
move 1 from 8 to 1
move 2 from 8 to 7
move 2 from 2 to 9
move 7 from 2 to 3
move 8 from 4 to 1
move 2 from 8 to 4
move 4 from 9 to 7
move 2 from 9 to 5
move 16 from 1 to 3
move 3 from 7 to 4
move 1 from 7 to 6
move 1 from 6 to 2
move 2 from 5 to 3
move 10 from 4 to 2
move 2 from 8 to 7
move 19 from 3 to 8
move 17 from 3 to 9
move 3 from 1 to 7
move 17 from 9 to 2
move 1 from 7 to 5
move 1 from 7 to 5
move 2 from 5 to 7
move 2 from 9 to 2
move 6 from 7 to 6
move 3 from 6 to 7
move 1 from 8 to 9
move 1 from 9 to 3
move 4 from 2 to 5
move 17 from 2 to 3
move 3 from 7 to 5
move 1 from 5 to 3
move 7 from 2 to 3
move 2 from 2 to 4
move 1 from 7 to 1
move 1 from 1 to 5
move 2 from 5 to 3
move 1 from 4 to 5
move 1 from 4 to 3
move 14 from 3 to 5
move 17 from 8 to 7
move 2 from 6 to 2
move 12 from 3 to 5
move 15 from 5 to 9
move 7 from 7 to 3
move 7 from 7 to 6
move 1 from 2 to 3
move 11 from 9 to 6
move 13 from 5 to 7
move 10 from 6 to 8
move 6 from 8 to 3
move 2 from 5 to 8
move 1 from 2 to 9
move 10 from 7 to 6
move 9 from 6 to 8
move 1 from 5 to 1
move 10 from 6 to 4
move 8 from 4 to 5
move 1 from 1 to 2
move 3 from 9 to 1
move 10 from 3 to 7
move 1 from 4 to 7
move 12 from 7 to 9
move 7 from 3 to 5
move 13 from 8 to 7
move 3 from 9 to 5
move 5 from 5 to 6
move 3 from 1 to 9
move 5 from 9 to 6
move 10 from 6 to 4
move 15 from 7 to 5
move 3 from 9 to 4
move 1 from 4 to 3
move 3 from 8 to 9
move 6 from 9 to 6
move 2 from 5 to 1
move 1 from 2 to 7
move 12 from 5 to 8
move 3 from 9 to 5
move 11 from 5 to 6
move 1 from 1 to 2
move 1 from 2 to 8
move 3 from 7 to 8
move 10 from 8 to 3
move 1 from 1 to 7
move 10 from 4 to 9
move 1 from 7 to 8
move 5 from 5 to 3
move 15 from 6 to 5
move 8 from 3 to 9
move 3 from 4 to 5
move 1 from 7 to 8
move 8 from 8 to 9
move 1 from 6 to 5
move 5 from 3 to 2
move 5 from 2 to 3
move 5 from 9 to 8
move 1 from 6 to 8
move 2 from 5 to 1
move 4 from 3 to 2
move 16 from 5 to 6
move 3 from 5 to 9
move 4 from 8 to 5
move 8 from 6 to 4
move 4 from 2 to 3
move 1 from 1 to 4
move 6 from 3 to 6
move 24 from 9 to 2
move 1 from 1 to 9
move 1 from 9 to 4
move 2 from 4 to 5
move 1 from 3 to 2
move 10 from 6 to 8
move 22 from 2 to 6
move 1 from 2 to 7
move 1 from 7 to 5
move 10 from 8 to 9
move 7 from 9 to 3
move 6 from 4 to 8
move 3 from 9 to 2
move 5 from 8 to 3
move 1 from 4 to 1
move 1 from 8 to 3
move 3 from 6 to 2
move 5 from 5 to 1
move 1 from 5 to 3
move 5 from 6 to 3
move 1 from 2 to 7
move 16 from 3 to 2
move 1 from 8 to 1
move 1 from 4 to 7
move 1 from 5 to 3
move 6 from 6 to 4
move 14 from 2 to 8
move 3 from 3 to 5
move 2 from 3 to 6
move 3 from 5 to 6
move 4 from 6 to 4
move 3 from 4 to 8
move 7 from 2 to 9
move 2 from 2 to 1
move 9 from 8 to 4
move 7 from 1 to 7
move 8 from 7 to 5
move 2 from 8 to 4
move 3 from 9 to 6
move 4 from 4 to 6
move 1 from 7 to 3
move 4 from 8 to 2
move 2 from 9 to 8
move 9 from 6 to 7
move 1 from 9 to 8
move 1 from 1 to 5
move 3 from 4 to 5
move 1 from 3 to 2
move 5 from 8 to 2
move 9 from 2 to 7
move 1 from 6 to 7
move 1 from 6 to 2
move 9 from 7 to 4
move 2 from 5 to 9
move 10 from 4 to 6
move 1 from 8 to 6
move 5 from 4 to 3
move 5 from 4 to 9
move 5 from 9 to 5
move 1 from 1 to 7
move 4 from 7 to 8
move 8 from 5 to 3
move 3 from 3 to 8
move 6 from 7 to 6
move 3 from 3 to 1
move 5 from 3 to 7
move 1 from 9 to 6
move 2 from 7 to 6
move 1 from 9 to 3
move 4 from 6 to 9
move 2 from 2 to 6
move 1 from 7 to 3
move 6 from 5 to 4
move 7 from 6 to 9
move 6 from 6 to 8
move 2 from 1 to 2
move 1 from 5 to 1
move 5 from 8 to 5
move 1 from 3 to 9
move 4 from 4 to 5
move 10 from 9 to 2
move 14 from 6 to 4
move 1 from 3 to 8
move 1 from 8 to 5
move 2 from 7 to 9
move 1 from 1 to 2
move 14 from 4 to 7
move 1 from 1 to 4
move 3 from 4 to 1
move 3 from 5 to 1
move 6 from 5 to 1
move 10 from 7 to 3
move 6 from 1 to 5
move 6 from 1 to 7
move 3 from 8 to 3
move 1 from 5 to 1
move 3 from 9 to 6
move 1 from 9 to 3
move 6 from 5 to 9
move 2 from 6 to 1
move 9 from 2 to 1
move 6 from 9 to 6
move 2 from 8 to 7
move 5 from 7 to 3
move 7 from 7 to 5
move 4 from 2 to 8
move 6 from 8 to 3
move 1 from 9 to 4
move 1 from 7 to 3
move 2 from 5 to 3
move 7 from 6 to 4
move 28 from 3 to 4
move 1 from 3 to 8
move 1 from 5 to 9
move 9 from 4 to 5
move 12 from 4 to 5
move 2 from 4 to 6
move 5 from 4 to 6
move 1 from 3 to 8
move 10 from 5 to 8
move 10 from 5 to 4
move 5 from 5 to 9
move 3 from 4 to 1
move 5 from 6 to 9
move 2 from 6 to 7
move 2 from 7 to 5
move 10 from 9 to 4
move 1 from 8 to 5
move 5 from 1 to 5
move 8 from 8 to 7
move 8 from 5 to 3
move 8 from 7 to 8
move 2 from 8 to 2
move 7 from 3 to 2
move 21 from 4 to 7
move 10 from 1 to 9
move 3 from 4 to 5
move 1 from 4 to 8
move 1 from 8 to 3
move 7 from 8 to 5
move 2 from 3 to 1
move 7 from 7 to 2
move 1 from 1 to 4
move 1 from 1 to 6
move 8 from 9 to 3
move 2 from 8 to 4
move 3 from 3 to 1
move 3 from 4 to 7
move 1 from 6 to 7
move 5 from 2 to 4
move 2 from 1 to 6

59
week5/supply_stacks.py Normal file
View File

@@ -0,0 +1,59 @@
def task1():
with open(f'input/supply_stacks.txt', 'r') as input:
sanitized_input = [x.replace('\n', '') for x in input.readlines()]
stacks = [[] for i in range(9)]
stack_config = sanitized_input[:8][::-1]
for i in range(9):
for level in stack_config:
if level[4*i+1] != ' ':
stacks[i].append(level[4*i+1])
commands = sanitized_input[10:]
for command in commands:
tokens = command.split(' ')
count = int(tokens[1])
src = int(tokens[3])-1
dest = int(tokens[5])-1
for i in range(count):
tmp = stacks[src].pop()
stacks[dest].append(tmp)
top_elements = ""
for stack in stacks:
top_elements += stack.pop()
print(top_elements)
def task2():
with open(f'input/supply_stacks2.txt', 'r') as input:
sanitized_input = [x.replace('\n', '') for x in input.readlines()]
stacks = [[] for i in range(9)]
stack_config = sanitized_input[:8][::-1]
for i in range(9):
for level in stack_config:
if level[4*i+1] != ' ':
stacks[i].append(level[4*i+1])
commands = sanitized_input[10:]
for command in commands:
tokens = command.split(' ')
count = int(tokens[1])
src = int(tokens[3])-1
dest = int(tokens[5])-1
print(stacks)
tmp = stacks[src][-count:]
del stacks[src][-count:]
for i in tmp:
stacks[dest].append(i)
top_elements = ""
for stack in stacks:
top_elements += stack.pop()
print(top_elements)
task1()
task2()