Compare commits
10 Commits
12ea10cdeb
...
705eb5b2b2
Author | SHA1 | Date | |
---|---|---|---|
705eb5b2b2 | |||
c191f67b95 | |||
![]() |
0a9b91e0f3 | ||
![]() |
f6ad00ad27 | ||
![]() |
4ff915e241 | ||
![]() |
6228313f04 | ||
![]() |
f1d6f6c0f0 | ||
![]() |
f7712f98ea | ||
228a746208 | |||
9c21f2eae4 |
@ -1,2 +1,8 @@
|
|||||||
# Advent of Code
|
# Advent of Code
|
||||||
My attempt to these festival coding challenges. Written in Rust.
|
My attempt to these festival coding challenges. Written in Rust.
|
||||||
|
|
||||||
|
Website: https://adventofcode.com/
|
||||||
|
|
||||||
|
## Useful Ressources
|
||||||
|
- [The Rust Programming Lanuage](https://doc.rust-lang.org/stable/book/)
|
||||||
|
- [Programming Rust, 2nd Edition (Book)](https://www.oreilly.com/library/view/programming-rust-2nd/9781492052586/)
|
||||||
|
301
src/aoc2022/day03/input.txt
Normal file
301
src/aoc2022/day03/input.txt
Normal file
@ -0,0 +1,301 @@
|
|||||||
|
wgqJtbJMqZVTwWPZZT
|
||||||
|
LHcTGHQhzrTzBsZFPHFZWFFs
|
||||||
|
RnLRClzGzRGLGLGCNRjTMjJfgmffSffMqNgp
|
||||||
|
WPLgsfLmLgqZvZgSRR
|
||||||
|
RbwHdbDdQFFFMvvMjbhqhZZS
|
||||||
|
lzTdldBDszfGcRsr
|
||||||
|
ZjnhJjMjnbdnbHdFLmmfFLmnCCWFFl
|
||||||
|
PpNwtRsNsZSsRwCfzQQBfQszCBsC
|
||||||
|
PpwcqqVZRtbggggjcgJJ
|
||||||
|
ntczBcVcgnHzgBHnVntcBBFhgsmmmssqWNWNWqLvNhsqTN
|
||||||
|
bSSGdSDZbGSGdDmLmGTvTGmLFFhm
|
||||||
|
PlFbDpJDPbPdPbZQZDZlSCDBfMVRwBzBtBQzfzRHVMVRtH
|
||||||
|
fDVrmmrvcmCcVpfcfGlswpPwsttMpjJMPPjjtP
|
||||||
|
RgSTdndFLbJqqPssWWjPWjPjHS
|
||||||
|
FqgzQnTqJRRQqLLhTCDhDCDmcmlvvlhcVm
|
||||||
|
nnqVtHbfVHZVmtlvmHtZtrFSFTRRFhRccTbrLsLSGr
|
||||||
|
cCNJQJPJQgjjMQdDrGGsRhTFGFRFSpMS
|
||||||
|
gzdCwWdjNPgzcJgjwdZtVlHHmvvmZlvffHnz
|
||||||
|
FFgsgwNwWvggQsMWDwvQQvQcccdcJZDtJGBtVGGGtcVlzt
|
||||||
|
rjfTrbjpjRSRTbTpzldjjHBtJGBdltJG
|
||||||
|
RbrPTfpCfmbpmnfRRCvMvQWNBwFFgMsgBL
|
||||||
|
zzLHgjjjdFHWbGBjjzcbgQRmSvqsSpmRsRSQSmRMWv
|
||||||
|
ZfJVrwPhZhZlhQQqBSQSNSqM
|
||||||
|
tnCfrDCltfPzHFFLBgngHz
|
||||||
|
DCpwrrMhwCrCMVCpGFqpVDnWWTWBtnTWvWfvbbTdFWRv
|
||||||
|
lmhhcsQPmTtTnnPBTB
|
||||||
|
QmcjNJsJzHNljZsNqDCGGhwqCqhgDDZV
|
||||||
|
hLfRnSLfhcndCCPfJJjzJfzt
|
||||||
|
pHNWwDpGGNJBZjjNNj
|
||||||
|
gmgwwHpWTpmGDmDTggqHmmDSsnnhvcqScdVVSVcjLrRcnq
|
||||||
|
CdlTJgnQJVCllNVWTPZBmPPGhGRmghPRGs
|
||||||
|
wHDrSwtHbmhRvHVZ
|
||||||
|
DzzwrtVFjLNnMTCTLCWW
|
||||||
|
SppdsnGpNVnZZZLPMlMPGq
|
||||||
|
mdcfvTTbBddLJgZJLlcFqJ
|
||||||
|
fzTvfwjjfzzCbvvjvQjWvNHVNNVWrRtdnVNppNprDp
|
||||||
|
lmlCGTmNbZlbSFlbNGfnzWfWzCdWWfVdwRCf
|
||||||
|
jDHtHHvLjQtqrsqpjBBLprRzwfwJfzzhRnczhWQVwzVR
|
||||||
|
rqpPtpPjDqpqDLtLrPGGFSFgPlNZZSGMPnMZ
|
||||||
|
pSHShqgSMzVpphFnJMFMBtssdjRJ
|
||||||
|
PZDbZfmCDgDfDNQPwCflCQNJsjRBRBFsdBWBsJRjsbsFJF
|
||||||
|
DQvCwwZrPPlffDmQCDwZQPmPhqVTcGhSHSLTpSGhLHzpGghr
|
||||||
|
gPqgqqmmmPgsqvGmsMCCnfZZfvBpWZhVrrZdHBvH
|
||||||
|
TSlcttTjRTDlDDTRhZVdrHHpWVnfVrtd
|
||||||
|
SFJzFzcJjcRJwGGqJMMCwW
|
||||||
|
gzWNLSjRLzlNqqQMLhvQccGGmcQm
|
||||||
|
fFrttPdTFTrpVwGpbdVQQp
|
||||||
|
HnTBGfHTGzWWqCqngn
|
||||||
|
SddrLdVpjjVSgRBszFswzwlV
|
||||||
|
mtPMbMqPMvqHHHDTTglBvsFshFFg
|
||||||
|
bmBHbtPctMtbMNMtbPtPqHmMjpdZdcJGrjSWWZGjJZnjndWj
|
||||||
|
nljWJHRHGrDcMBbDLZHV
|
||||||
|
wdvwmhghhbtBMcLtwZ
|
||||||
|
gvQvvghTfPSmpmQljGFRjQbFGCsJbC
|
||||||
|
BmphBWmDBBQfpVgQZpjg
|
||||||
|
rqqGrrrqlnqqHqjNnVDSSSgQQffj
|
||||||
|
FqLrbsLFsbLbLqHlMrmwwPDcCmMMmJBwDJcC
|
||||||
|
wZccfslqZPFFjrFbFfQQ
|
||||||
|
vvTvVWCJJZVBWCSvnVJJrhjQVMjVjzbgMQbjpphh
|
||||||
|
BBmNWBvZRvSqwsGwssPcmc
|
||||||
|
LGpnfcnzfzQdNFNHqHJptq
|
||||||
|
RBNNvZSBRbRCCDJqHrDZqHFZtw
|
||||||
|
SRNhRsNhWSNWsRRvgjngQnnMTnTgQjGMff
|
||||||
|
twtZmwqBHtmqnnmlGLfcfvQQ
|
||||||
|
dgMSPSMdQGclRRdF
|
||||||
|
pVMrDgThDDlPWPWbBZtZqqttBqjqjT
|
||||||
|
PPSWCGSzpCCQwNsNPFhTNVbB
|
||||||
|
vqcgJngqLLcZLvBhNTVlbsvdFF
|
||||||
|
DDmHgRjHZhHtGfWpQH
|
||||||
|
sBLbwWWBvsBsqLqStRjcGGRnggjGcntJDn
|
||||||
|
NCMQPMQPMQNzGGRRgRJRGzcG
|
||||||
|
dHQNfPCFTQfFfVVNvwwJvSWSqWqrSqdS
|
||||||
|
prDBnnDpFDprnDPBDQBvpBZttcSqSZSZcScFJSHcZJtz
|
||||||
|
VhMVdLsjdqVWJSWZZZcHst
|
||||||
|
hLVdGLfqjGjlfhCfCLjTTmrlpQBPBmvnrgDgpp
|
||||||
|
SSSTJmmgbGwtmRZHCCZRCH
|
||||||
|
FWcPQrrWqflzSWpRHZCZHRSt
|
||||||
|
PSQzzdcQTghdndDJ
|
||||||
|
cLlrNPvljRhRgTlM
|
||||||
|
VmDBGnVdmJDnDBndnnVwDRvMgRsTbTzMMsgZghzzsB
|
||||||
|
SpHvmGnSDJnwvDQqfrCPLpPLCfpF
|
||||||
|
PppbRCCgpzzQCgCSgZTlNNTWnNNDNlRnGl
|
||||||
|
hwMhLtBcBdjjNzWzlclcNGTs
|
||||||
|
FjJFHJwhfwLHMLJLwPmqfQPgVCmQgCmCzC
|
||||||
|
jTtMqFjMBqBmTntTztBTnTZBRZRLpLJgDgJNhghJrNNhhLJh
|
||||||
|
DCDdvdGsVDVsflVdQSsfSwhRJlgppgpRpbWLgJbJpgbR
|
||||||
|
wfSHSsdSVvQSwfwQPQPqHtFDcMzmtjBntqMTqn
|
||||||
|
HQhQWLCSHCSCjnjQdSJdCSQgTTmZPTVZmqnTpPtnpmRmpp
|
||||||
|
vDrzhvGzfchvlGvMFMrqVqPgZVVtZtVRgZgm
|
||||||
|
bcvMfwvDsDfbvfwDbbdhCShWCBLLJWjHsHjj
|
||||||
|
zLSsJNCjsjLCNLCgGcwBPPdwBwqwqz
|
||||||
|
WMFZprZDbrddWRVRRDvlPPBcPhhlBqqHPGPhhffg
|
||||||
|
VdbFvZWWWZZDFTLtCmNntjTnLSnn
|
||||||
|
JLVhhwRbhVwcLFJFhhJcccqwsvpRlllvpWvZSBSSSRsNWpzl
|
||||||
|
jgzfPffgZNspgZQS
|
||||||
|
fjCmDCGnfmTfFqrFnhqbFzqt
|
||||||
|
SfMRRNHSNNLfRfHcRRsqwdCCsssTqBCvgBLv
|
||||||
|
llDDWQnFGtQnmtGQDWQFsgdHVBddndHsgqTsCTsg
|
||||||
|
GzGjpWmWbmQmbpGGmGjHSrZcMfZSRPJPfcMRcb
|
||||||
|
PDdMdRTRrLDSwzJvfSvJ
|
||||||
|
FnjQnsqsFTnStvplhhzzFS
|
||||||
|
TBHHCsgVRRcMHbLR
|
||||||
|
GcLdGBJvBvLJHccJBvqHpGzDFfzwfzjwhDwrSFpfpDSn
|
||||||
|
mZZrTTQVmQmlsMPVblZQVZmfCwjzzjChzCCbDSzhFjfnSb
|
||||||
|
gZlRlZNPlmlgTTPmNRvJWcqrNLdvHWLBcHtH
|
||||||
|
jWWbBwgwWwwtvvSCtHvgWsMFmscHzTGMmcssGFTTGz
|
||||||
|
ZrLtpLnlfQJqnfJtpLnZlrqdNNGqcDNNFFTNDzzMMTMsMNMs
|
||||||
|
LJQrnZnfLZnlrZflJJRVRQbbwBgCtCVjWgjBjjgbPjBB
|
||||||
|
fqQVfRqSqmpnlLnm
|
||||||
|
jFcjMJTjhwwggjFtgzCHmCzCmGzGlzpn
|
||||||
|
wstMFFjWDfQRvmDPSB
|
||||||
|
PgTFGPgcBZPcHPFBZRjGPgwCnmwCsmSdQdThmMMMQCQS
|
||||||
|
JbpvWtvfHblWDHJDzmndSdMQnSwCdhMdQD
|
||||||
|
rfvWlLlbtfJvvLJpqWbbqZRRGPVFNHVFgZNVFBgH
|
||||||
|
TRMrrGBLMLPtbssTGtBHwZmdQQbdNzzZZNZZdwjd
|
||||||
|
CVlVhCnclvhWSFFfQrWNrjmpNfwmjZ
|
||||||
|
rlqFlclChhCvnlDvgVvRRtPtqTGJHRMBRTPPqM
|
||||||
|
gZzCrQGQdrQvZHPTHWDbTgWPJM
|
||||||
|
nSpLlcnnVjsSVLLnLSnhLSsJPTTWFsqfbPMFMqJDbfqM
|
||||||
|
VwwnpwLnlPdQCwPPCC
|
||||||
|
lRlrnlrsrMlhVsRnVhGPvCFNcPBDBvccrCGr
|
||||||
|
RZQTzWTRdDNvBDdNcC
|
||||||
|
TqjZbWRHmlMJgnmsng
|
||||||
|
scQmLfQBQQvvZfLsmmvDJwpgSNSDDdcJSSwTGD
|
||||||
|
PHlMbtzCCnlbztMRzlPNNdNwGpDpwgwptNLGpw
|
||||||
|
rRHnLbhCzbbCHnHjMbzzjzFZmfQqWZQqvmhmfVZmqFBW
|
||||||
|
fLTQWTMQtjcCGCJCbf
|
||||||
|
gGsmsVSzmjCFHJCJgg
|
||||||
|
SPRsSwSvBsPRPsqzwSVqzmhVWtLWhTDNLlTDtLTWGpNMtDLt
|
||||||
|
mbzRbchRRQzzssLdhLggLddJ
|
||||||
|
DCqDNNNWvDvjcPLsJcLLdv
|
||||||
|
cpFCVNnVBHtbfFRtMRFf
|
||||||
|
PFRcCCPtsDDDtjVspgwmgTNpTgTpspsw
|
||||||
|
BqqqdJdHdMgSfMmZpZND
|
||||||
|
vDHJGdLbLzBJdGnDdrBqVtCzWPPhthtPFzzPCFtV
|
||||||
|
HvhvHdFdvJDfHdZdpfhrmGPljPRrGPPVDGrWWC
|
||||||
|
NMMsRBMzcRRMMBSzcnbmNGrCVCWrCqPClmPqlG
|
||||||
|
zLBbwMzQnRSQMThtZFLvpdgHtJfF
|
||||||
|
DpcJcJPmMcLSHHZCfpnH
|
||||||
|
BsBFvvqTFlbhgdbBBblfZLCLzfHWfjnjLCnCrh
|
||||||
|
dTsNgqFvNgsGlZJRtVtMPmtDmG
|
||||||
|
LdGQqzPGCCjJTJdTLJQJtFcFRSctcrFNFltPFtcc
|
||||||
|
HphMMbbMdBMHbBhhgHMnhvwFFvtrlSNRNgcRllcvcc
|
||||||
|
spHMhBnHnnsmWdnsnMBMdVGGmzjzLmZLDQCCCCZjqjTD
|
||||||
|
DDZMzcTRgDMLzqCffhfWfcWnfj
|
||||||
|
NsHVVJmswwSSwNPPNjnhqhnCCnhNvjfTnv
|
||||||
|
rSSddrGSGrlMrpTpQT
|
||||||
|
bbbfCfrLHMMMWVWC
|
||||||
|
SqsvNZqQvvqcjNvqZsMMwgFgFplTHQVRFgWH
|
||||||
|
BSZWWqBZBjmPGJGLbBtf
|
||||||
|
RNCNfzfRHmzHwSdRdGfzRJPqFcFcDFGccZZqtLtGLtgl
|
||||||
|
pjhVMhvhbjvPcDJvcZqt
|
||||||
|
bsQMTsjppmSdTnHSJH
|
||||||
|
PtLwpSwdSJwQnGvvqtvMhZ
|
||||||
|
TlFcHlTjVjsDTQnCQhbZGCVVnb
|
||||||
|
cjljTslTrlzzHDNRfNgLSNBJfBwNfG
|
||||||
|
HvsZZqqqwWZswWHTmHsvvfhSfBfDffjchfBbhD
|
||||||
|
MCpnCVpQClRNnlNQVQClfDhScmjBfLhmLDGbBNbS
|
||||||
|
gmtpJpQQllJnWdZWwJWFwJJT
|
||||||
|
TzBvBwwdhgRPGHlRHh
|
||||||
|
NLWttJsrLWttppLpsGlsmVbVGRljGDRgjV
|
||||||
|
MlllnNFnnQqCdzqq
|
||||||
|
vptzrJhMMGGMptJPhJGJPvdFTFcSsTBVsczBScTSFFfn
|
||||||
|
gbRjWgRjCqjZnfHCHnTSVBHF
|
||||||
|
mRwqNbmqlbbjqRNlLbNrDJntNDGtDhNpGMrpvJ
|
||||||
|
GPWZLgWqLHHGbgbbGPPmqHqfcjjRHJJBDRBRjBBjMHjwvwQc
|
||||||
|
dhpFSpzVSSMSlDBvMQ
|
||||||
|
TndsVNztVTspnsdpshtmZLPCGGNPfgqbWWfDGb
|
||||||
|
CbqDjjCdClqgrfJvrv
|
||||||
|
NGNPtGGzzHztPWWnlgJvfBnWBFgp
|
||||||
|
hGzNHhsmGccwHPHZHcwdCCdbTVRTvSmTCjbLCb
|
||||||
|
sqnqsHGpJbqnrbshpshHmmmCWZZmWwfTjTjHmfLZ
|
||||||
|
dPggRgSDDttMFgctgdDtDcDcRWJBmjTWwmRLBLfmwBBjZWTB
|
||||||
|
PFcVPlJPglbqhhrnnlNz
|
||||||
|
wZdDNDdPPfhqwWqbsF
|
||||||
|
VTngRzpnzMLvzTCLlhvDfltqqDttqFqs
|
||||||
|
mggTVpCDDSNjBmPZrd
|
||||||
|
cSdqJSTTTJcSJpCdQbqTCPPdjdDtGzwzjDwjwwwwzD
|
||||||
|
rVvsBBVgsVBhHhfljtgbPgGtWjPtwt
|
||||||
|
fvHsVZHVnRHpSJJRmbbSLT
|
||||||
|
lDDPRRjwLGlvVRDRPlwwwPvmpSfhVWSzhqfzqpHpVpVHfqSH
|
||||||
|
qBnqBNsBBChhCSfZ
|
||||||
|
nTQbQnNNQJTLvlmTPLqqmG
|
||||||
|
TTCJhDrmDpRVhvhHfffwzwfz
|
||||||
|
dmmdmglWcqvHvWsHzB
|
||||||
|
gdQMZbtlgQlZcMSttCNmVVrLSTTJ
|
||||||
|
PLZLqhZZzZLBjjjGrrPjMH
|
||||||
|
CcQcCcfRlWDjdrMrBrHC
|
||||||
|
WlWFMcFpcRFmsWFcmflqSJzTqzwLvshggsZJwz
|
||||||
|
LgqRDDDHHGTpgpJrQrQhhhCqrwPw
|
||||||
|
ZSBWjjFshCFlQDrJ
|
||||||
|
SjWnnbWtWnsztgGDDbDTGgHHGp
|
||||||
|
llfvMlvzjzGzGRfvMSGRfSdStrCtQNCZrrFdJJLnNtLZ
|
||||||
|
shhhshPHsTTqsBHTVTwTwZZnCtQrQnJtQCCJBCCZdZ
|
||||||
|
TPHTPTHmDnljplfpGfGm
|
||||||
|
qcNTmvvSvTNrWhRrTdthzW
|
||||||
|
bDVJphpMMJwJpMHtrrttWsgwtzRW
|
||||||
|
bFpGJbllPfplVQmnhvvcSmCFqq
|
||||||
|
GTPJGMQTPQMqZjHTBmnndBVddHrrzNrz
|
||||||
|
bbcRFgDpptRbffwmzmrvLmcZvmLmLv
|
||||||
|
WCwgWbpgwtgfpfMlQGPhSPZWTZPl
|
||||||
|
DsPCswsMPBMwPDCVJPnTPPWFGJNJmbJW
|
||||||
|
RvvddfvftdtvNzghGSbFnWTntJSttGbG
|
||||||
|
LNgRddgRlgzcgCDjjjHjcBCwcM
|
||||||
|
gnVtgBnpwBgShBgcwhJJhjCMMMDmLRjDRMjrDMMMDMqMRF
|
||||||
|
slsblHPNHlbTNbsPvszHQWbzqrZLMRmFMFmdFmrtDFdMLNZD
|
||||||
|
bPzfvbfsvvlHtlzPHllHGTlTppCJpgcngcpwnwCGGJnnShwV
|
||||||
|
cgQRgtzDbHPcgHzQWpTjTLdjjNNpNLsDss
|
||||||
|
nwccZBmwcJqmJnjsTvmlTSsdlTNs
|
||||||
|
CCGFCBVrBwwGBhqVnZBrqWMMQzHfQcHzzzPtfztGfg
|
||||||
|
lhnwnhlbgbngbcfDgJLJQqDdVd
|
||||||
|
FSrvtMFZVJJJVtcq
|
||||||
|
jZNNNNjmjSPjFTJmGGzswwzHwHpBsbPblhhW
|
||||||
|
tnDWHntzDtzQBZLMLzNLDDcRFFjhJBmcFRCTjRchcRvT
|
||||||
|
sqwsPlbGfSbPGSVbJfpjjhcTFmCRjjvmTTvRdw
|
||||||
|
lJqSqPVbgGSGrVSqJqflbWZQNDMLHnrQQWNDMtQMQz
|
||||||
|
lpltwwJqsWVLPtVt
|
||||||
|
DGHsDdZQzHLSLZcFRrFS
|
||||||
|
BGsGCnHmMlMwCfwT
|
||||||
|
nrRNzRMPrrPnNwNzTSFSTNtqZdtMttvQqQmjdjvZpgjZ
|
||||||
|
GWVhGcGhHhGcffbZGDmmtttQvpdtbpppdj
|
||||||
|
HGlHBhHGJfJJhCfZzLTTNnNrTnCNwT
|
||||||
|
jBpCZStjBwWrQCMrhw
|
||||||
|
TvcHBzHdPPzdvFTzzJlvzdQfThrhhrhfQTWMQfWMqfwf
|
||||||
|
bzGJJBJcJvdvBPFzddGgjZSbZZngRZNNnnsjRs
|
||||||
|
dqPqbpPFJfsFfMcNQNNtNmzrNQJn
|
||||||
|
VVBDWvwZWDLwGlDhLGWWVcmQtSNmLmtSdSSTmrcQQm
|
||||||
|
lZlhwDCdhhHllvWvjMHbgMpgffMggpPb
|
||||||
|
SWSFLLFWDSWDNFzmmLMfGlfsdfnJMBfwMGVnBf
|
||||||
|
vPtgZcctcTQQZRRcgCtZwRfqBVGqnVTBGVnqlsdBJnqV
|
||||||
|
RcjgwbbgNSbFbhDb
|
||||||
|
JrRZLrHvjQFPLnnBPQ
|
||||||
|
DhwbtHbzpcpFTgtQ
|
||||||
|
zlDwlHlzWSwDqhMMbSJVZVvrCrCZJZNZdJ
|
||||||
|
fgNCZSDtDfDZTrTfqWghQGzGQshgpGGFQg
|
||||||
|
RFvLnvFjnVjmLQGPQWLmWh
|
||||||
|
MdwwVMFbMdRHFbccbCZJtbDJrqqJZNJZCZ
|
||||||
|
fdZVBMMdfdfBCzhTzMdMCgCrGGrpQJmSmGJGmpJQVpLmqV
|
||||||
|
RbFnhNsvlDsFHttllGmqGpPLvJpmPJSqLL
|
||||||
|
tjNsDnNwbNjttNNZTzhMWzcZcMTwMd
|
||||||
|
DjSSMShjRjPCbDFCdCSDbpBBswfNWZBZZrBVBPNfVmVf
|
||||||
|
zltLjLqqGlzQntqqGztqcgncZrVrmNfNwWBVrVmrgwrfswsW
|
||||||
|
qcTqHLlnJzGznLJtHGhMbhjFhMMpFbpbThpp
|
||||||
|
ZVFZcctFQzsCtbZFnPPHqmqpwmvPmp
|
||||||
|
NrjGfMgcLLcfdLqpmRwRRqJJmdPw
|
||||||
|
LMNDgMBGlgGDLMNDGljctVbVWZTTCWChhTttsl
|
||||||
|
RMGRRhhgzgZMtHdGTtvDwDJFCDvvwdvwqFFv
|
||||||
|
rfrrjLNmmSnSjVSmNNPPbJVbqvqsqvhvFqCq
|
||||||
|
flrpnSlrSNfjrNjSphNSWlHRGzTgtQGHQtttBTRBRQHW
|
||||||
|
tplDDprhbvprvrJDprCpbsvHRfzSzTtzmRqSTznRRBRnSfFF
|
||||||
|
MVwWjVNVQGfcMnTmRnBm
|
||||||
|
VQwGLNLjWNWPGjZbsDBppBZhhDvBlZ
|
||||||
|
RVVrGVVchRZsnzRzBWZb
|
||||||
|
FQHWWCHwQmWmlqfCHSwJnsbNJnNsvttntBtb
|
||||||
|
QQSFgqgqLMLPPdWdMVhWDT
|
||||||
|
cZrMjncTdfJpPJbr
|
||||||
|
WHNqnQwwCwvlqHtCtHNslNlvLLPDfSVdVPVDVSfVSbftffVf
|
||||||
|
NCwwwQwllwnvgsvZzgzFZzBzjGGGMM
|
||||||
|
MvHpfzcTcZzpphhbsDSTStsltqSDtS
|
||||||
|
PRmnwCrWnWQrmNMRNnlNGbqlbDltdlbDtNtD
|
||||||
|
CRJnmRVWJfgMLvcz
|
||||||
|
HPFbHrrwLdVdgbDZqcphCqSZBhLZ
|
||||||
|
tQRfRRGtvTNNSGTMjjmDCRhmqpBChqhsRDZh
|
||||||
|
vjSfMzGQNQQnMtNTTWNNjgblFdFHwgdJJHHPwddgnr
|
||||||
|
BggPRVBPPgfCBmJTjTTqpTNpZBwMbr
|
||||||
|
lclLLllsQLFlsbMqNrMwTpwpcM
|
||||||
|
SvbDzSDbWFJfWPPgdnfR
|
||||||
|
GbpSSbGDNbSSJbDZNZbDppGtMntHLHvHCTLCJMHnRCMLTT
|
||||||
|
cdwddjBfPsmPPQqQqscnHgRMtngvtjjgCCTMzM
|
||||||
|
WvwPvWvflBwdQPlNVVhbDGpFhNGhbl
|
||||||
|
WZRGmRvpCRFTZMQQQMCdddDDcD
|
||||||
|
lqgqsgvjVtbMDzzbtcDQ
|
||||||
|
NsNNgjNNjsNhnSvRmnpGRmSTSG
|
||||||
|
nTgFtDTDDLrFBStdGdcHcbvGSc
|
||||||
|
QPzfPCMzWCjfMPJhWGlRbRWRWrRRdVVH
|
||||||
|
zhCrCQCjPrpNNBsNspNnwq
|
||||||
|
zTJpqFzbTzsWsVbbfLGfSSCDNSBCHfMLHG
|
||||||
|
rZcvtmhctrvmlPPmmmrhhmBLCHDCCLLDlqMlGMNDMwDC
|
||||||
|
rRhRhnnQPZhtZcZtdttZgqFWWVjssqQpppWpFpJW
|
||||||
|
NWPhdWJPWVzVqQrqmSsPbrPP
|
||||||
|
cZDRjGsffGsCDfffgjGgRQSrTcTmSlTrbnqmSSrlln
|
||||||
|
fFGCjGCjLDLFRgfDHZvzLVWtvsWWBtzJNWMB
|
||||||
|
qMVbtnmMMTpCppsR
|
||||||
|
NffHGrWzWWgDBfTRhChCnSCWcnjT
|
||||||
|
QrlQBPBrlPHrrQlrHFLqPnLvVvbVmVVJtq
|
||||||
|
MVMpHMZLVCpMrfWjvWnfrJ
|
||||||
|
hlblzDDzwlSlGtRhRlSdrfGGWnWWfFPjJjnfqWGF
|
||||||
|
lmlhBRlDhhhDRRhwDmBpHJmsNCHmCgNHJCJLsc
|
||||||
|
jvsLgmqLgHvbPPVbNjSCjC
|
||||||
|
pwTcRpRWLRMLJJFwBBGWcFWNVlDDCSTVttNPblZZCVVDlP
|
||||||
|
GcdhccpcpRpGRhGmfsHHzLQQHrmsnh
|
||||||
|
FMmSRgtMltMnVgnmNvlrsJrsZWjspvsZJp
|
||||||
|
QbdhqwqbNqdHbTdcbcpsrpvjfWfLJLfwJrWp
|
||||||
|
DQBBQqQGccdTPGqqBNtFGRSMRSFGtnVSnnmM
|
||||||
|
fPjGrfFrrprprdrbQPZwlcZwZmlJwH
|
||||||
|
qvNnvWnvWDvSvqNtWSLWStqbcJBQwQJwQZHLBZbcmJbblb
|
||||||
|
DMtvqSvvDtntCRfwzGCgdzzFjG
|
||||||
|
TfdZgtmfDgqgvlLFFsFHvcvZ
|
||||||
|
pphWQMVjQVVBWWjRlHlHnlcLDDhcnF
|
||||||
|
JQwwWVPBwMJpJwpWwGBWNzrDzSSzfgTPqTSTTtSPgt
|
||||||
|
|
71
src/aoc2022/day03/mod.rs
Normal file
71
src/aoc2022/day03/mod.rs
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
fn calc_sum(chars: &Vec<char>) -> u32 {
|
||||||
|
let mut sum = 0;
|
||||||
|
|
||||||
|
for c in chars {
|
||||||
|
if c.is_ascii_lowercase() {
|
||||||
|
sum += *c as u32 - 96;
|
||||||
|
} else {
|
||||||
|
sum += *c as u32 - 38;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sum
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn task_one(input: &str) -> String {
|
||||||
|
let mut double_chars = Vec::new();
|
||||||
|
|
||||||
|
for line in input.lines() {
|
||||||
|
let amount_of_chars = line.chars().count();
|
||||||
|
let (first_half, last_half) = line.split_at(amount_of_chars / 2);
|
||||||
|
|
||||||
|
let mut char_in_both: Option<char> = None;
|
||||||
|
|
||||||
|
for c in first_half.chars() {
|
||||||
|
if last_half.contains(c) {
|
||||||
|
char_in_both = Some(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for c in last_half.chars() {
|
||||||
|
if first_half.contains(c) {
|
||||||
|
char_in_both = Some(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if char_in_both.is_some() {
|
||||||
|
double_chars.push(char_in_both.unwrap());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
calc_sum(&double_chars).to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn task_two(input: &str) -> String {
|
||||||
|
let mut interesing_chars: Vec<char> = Vec::new();
|
||||||
|
|
||||||
|
let lines: Vec<&str> = input.lines().collect::<Vec<&str>>();
|
||||||
|
let mut iterator = lines.windows(3);
|
||||||
|
|
||||||
|
loop {
|
||||||
|
if let Some([first, second, third]) = iterator.next() {
|
||||||
|
let mut all_possible_chars: Vec<char> = first.chars().collect();
|
||||||
|
all_possible_chars.append(&mut second.chars().collect::<Vec<char>>());
|
||||||
|
all_possible_chars.append(&mut third.chars().collect::<Vec<char>>());
|
||||||
|
|
||||||
|
for c in all_possible_chars {
|
||||||
|
if first.contains(c) && second.contains(c) && third.contains(c) {
|
||||||
|
interesing_chars.push(c);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
iterator.next();
|
||||||
|
iterator.next();
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
calc_sum(&interesing_chars).to_string()
|
||||||
|
}
|
1001
src/aoc2022/day04/input.txt
Normal file
1001
src/aoc2022/day04/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
61
src/aoc2022/day04/mod.rs
Normal file
61
src/aoc2022/day04/mod.rs
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
struct Assignment {
|
||||||
|
lower_border: usize,
|
||||||
|
upper_border: usize,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Assignment {
|
||||||
|
fn contains(&self, other: &Assignment) -> bool {
|
||||||
|
self.lower_border <= other.lower_border && self.upper_border >= other.upper_border
|
||||||
|
}
|
||||||
|
|
||||||
|
fn overlaps(&self, other: &Assignment) -> bool {
|
||||||
|
let overlaps_lower = other.upper_border >= self.lower_border && other.upper_border <= self.lower_border;
|
||||||
|
let overlaps_upper = other.lower_border >= self.lower_border && other.lower_border <= self.upper_border;
|
||||||
|
|
||||||
|
overlaps_lower || overlaps_upper
|
||||||
|
}
|
||||||
|
|
||||||
|
fn parse(input: &str) -> Assignment {
|
||||||
|
match input.trim().split_once("-") {
|
||||||
|
Some((low, upp)) => Assignment {
|
||||||
|
lower_border: low.parse::<usize>().unwrap(),
|
||||||
|
upper_border: upp.parse::<usize>().unwrap(),
|
||||||
|
},
|
||||||
|
None => panic!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn task_one(input: &str) -> String {
|
||||||
|
let mut count = 0;
|
||||||
|
|
||||||
|
for line in input.lines() {
|
||||||
|
if let Some((first, second)) = line.split_once(",") {
|
||||||
|
let first = Assignment::parse(first);
|
||||||
|
let second = Assignment::parse(second);
|
||||||
|
|
||||||
|
if first.contains(&second) || second.contains(&first) {
|
||||||
|
count += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
count.to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn task_two(input: &str) -> String {
|
||||||
|
let mut count = 0;
|
||||||
|
|
||||||
|
for line in input.lines() {
|
||||||
|
if let Some((first, second)) = line.split_once(",") {
|
||||||
|
let first = Assignment::parse(first);
|
||||||
|
let second = Assignment::parse(second);
|
||||||
|
|
||||||
|
if first.overlaps(&second) || second.overlaps(&first) {
|
||||||
|
count += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
count.to_string()
|
||||||
|
}
|
514
src/aoc2022/day05/input.txt
Normal file
514
src/aoc2022/day05/input.txt
Normal file
@ -0,0 +1,514 @@
|
|||||||
|
[T] [P] [J]
|
||||||
|
[F] [S] [T] [R] [B]
|
||||||
|
[V] [M] [H] [S] [F] [R]
|
||||||
|
[Z] [P] [Q] [B] [S] [W] [P]
|
||||||
|
[C] [Q] [R] [D] [Z] [N] [H] [Q]
|
||||||
|
[W] [B] [T] [F] [L] [T] [M] [F] [T]
|
||||||
|
[S] [R] [Z] [V] [G] [R] [Q] [N] [Z]
|
||||||
|
[Q] [Q] [B] [D] [J] [W] [H] [R] [J]
|
||||||
|
1 2 3 4 5 6 7 8 9
|
||||||
|
|
||||||
|
move 3 from 8 to 2
|
||||||
|
move 3 from 1 to 5
|
||||||
|
move 3 from 1 to 4
|
||||||
|
move 2 from 7 to 4
|
||||||
|
move 3 from 7 to 4
|
||||||
|
move 8 from 5 to 7
|
||||||
|
move 2 from 1 to 8
|
||||||
|
move 7 from 3 to 2
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 2 from 5 to 9
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 3 from 9 to 6
|
||||||
|
move 5 from 6 to 2
|
||||||
|
move 10 from 7 to 2
|
||||||
|
move 3 from 8 to 9
|
||||||
|
move 7 from 9 to 2
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 1 from 9 to 6
|
||||||
|
move 1 from 4 to 1
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 11 from 4 to 2
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 1 from 1 to 3
|
||||||
|
move 1 from 7 to 5
|
||||||
|
move 1 from 4 to 9
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 1 from 6 to 9
|
||||||
|
move 1 from 8 to 6
|
||||||
|
move 11 from 2 to 1
|
||||||
|
move 1 from 6 to 8
|
||||||
|
move 7 from 2 to 1
|
||||||
|
move 14 from 2 to 7
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 7 from 7 to 1
|
||||||
|
move 1 from 6 to 5
|
||||||
|
move 5 from 7 to 6
|
||||||
|
move 4 from 2 to 8
|
||||||
|
move 3 from 6 to 7
|
||||||
|
move 3 from 7 to 8
|
||||||
|
move 9 from 1 to 3
|
||||||
|
move 8 from 3 to 7
|
||||||
|
move 1 from 3 to 1
|
||||||
|
move 2 from 2 to 3
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 2 from 1 to 7
|
||||||
|
move 7 from 1 to 6
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 2 from 5 to 3
|
||||||
|
move 7 from 6 to 3
|
||||||
|
move 9 from 7 to 5
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 4 from 8 to 5
|
||||||
|
move 7 from 1 to 5
|
||||||
|
move 4 from 7 to 2
|
||||||
|
move 1 from 7 to 8
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 10 from 5 to 3
|
||||||
|
move 8 from 5 to 1
|
||||||
|
move 2 from 8 to 3
|
||||||
|
move 2 from 8 to 9
|
||||||
|
move 8 from 2 to 7
|
||||||
|
move 4 from 9 to 8
|
||||||
|
move 13 from 3 to 7
|
||||||
|
move 1 from 5 to 3
|
||||||
|
move 6 from 3 to 9
|
||||||
|
move 10 from 1 to 9
|
||||||
|
move 1 from 3 to 4
|
||||||
|
move 6 from 9 to 7
|
||||||
|
move 1 from 5 to 8
|
||||||
|
move 14 from 7 to 6
|
||||||
|
move 14 from 6 to 1
|
||||||
|
move 13 from 1 to 8
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 9 from 8 to 9
|
||||||
|
move 6 from 8 to 5
|
||||||
|
move 2 from 4 to 6
|
||||||
|
move 1 from 8 to 1
|
||||||
|
move 2 from 2 to 1
|
||||||
|
move 2 from 8 to 6
|
||||||
|
move 3 from 1 to 2
|
||||||
|
move 3 from 3 to 9
|
||||||
|
move 16 from 9 to 1
|
||||||
|
move 3 from 2 to 4
|
||||||
|
move 3 from 7 to 2
|
||||||
|
move 6 from 5 to 4
|
||||||
|
move 5 from 7 to 3
|
||||||
|
move 4 from 6 to 1
|
||||||
|
move 10 from 2 to 9
|
||||||
|
move 13 from 9 to 1
|
||||||
|
move 5 from 7 to 2
|
||||||
|
move 2 from 4 to 6
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 2 from 9 to 5
|
||||||
|
move 2 from 6 to 8
|
||||||
|
move 2 from 5 to 3
|
||||||
|
move 1 from 8 to 3
|
||||||
|
move 31 from 1 to 7
|
||||||
|
move 2 from 1 to 5
|
||||||
|
move 12 from 7 to 3
|
||||||
|
move 11 from 3 to 2
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 6 from 4 to 5
|
||||||
|
move 1 from 3 to 4
|
||||||
|
move 8 from 3 to 2
|
||||||
|
move 5 from 5 to 6
|
||||||
|
move 2 from 6 to 7
|
||||||
|
move 4 from 7 to 3
|
||||||
|
move 1 from 6 to 9
|
||||||
|
move 13 from 7 to 6
|
||||||
|
move 13 from 2 to 3
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 10 from 2 to 3
|
||||||
|
move 3 from 7 to 3
|
||||||
|
move 2 from 2 to 1
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 2 from 4 to 7
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 3 from 7 to 3
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 2 from 5 to 2
|
||||||
|
move 15 from 6 to 7
|
||||||
|
move 4 from 1 to 9
|
||||||
|
move 22 from 3 to 9
|
||||||
|
move 7 from 3 to 9
|
||||||
|
move 4 from 3 to 8
|
||||||
|
move 4 from 9 to 4
|
||||||
|
move 3 from 2 to 4
|
||||||
|
move 5 from 7 to 1
|
||||||
|
move 7 from 4 to 7
|
||||||
|
move 2 from 8 to 4
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 3 from 1 to 5
|
||||||
|
move 2 from 1 to 4
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 2 from 5 to 7
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 3 from 8 to 6
|
||||||
|
move 8 from 7 to 1
|
||||||
|
move 6 from 7 to 1
|
||||||
|
move 10 from 1 to 9
|
||||||
|
move 3 from 6 to 2
|
||||||
|
move 2 from 1 to 3
|
||||||
|
move 2 from 3 to 6
|
||||||
|
move 3 from 7 to 4
|
||||||
|
move 2 from 7 to 1
|
||||||
|
move 1 from 2 to 5
|
||||||
|
move 13 from 9 to 5
|
||||||
|
move 12 from 9 to 3
|
||||||
|
move 6 from 5 to 3
|
||||||
|
move 2 from 9 to 1
|
||||||
|
move 11 from 9 to 3
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 2 from 5 to 3
|
||||||
|
move 1 from 1 to 8
|
||||||
|
move 24 from 3 to 5
|
||||||
|
move 2 from 9 to 3
|
||||||
|
move 2 from 2 to 4
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 2 from 6 to 8
|
||||||
|
move 5 from 3 to 5
|
||||||
|
move 2 from 8 to 9
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 4 from 1 to 4
|
||||||
|
move 1 from 9 to 4
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 7 from 4 to 5
|
||||||
|
move 1 from 1 to 8
|
||||||
|
move 1 from 6 to 5
|
||||||
|
move 35 from 5 to 4
|
||||||
|
move 18 from 4 to 3
|
||||||
|
move 6 from 4 to 3
|
||||||
|
move 8 from 5 to 8
|
||||||
|
move 8 from 8 to 1
|
||||||
|
move 2 from 4 to 9
|
||||||
|
move 23 from 3 to 1
|
||||||
|
move 1 from 8 to 5
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 1 from 9 to 4
|
||||||
|
move 11 from 1 to 2
|
||||||
|
move 16 from 4 to 5
|
||||||
|
move 3 from 3 to 5
|
||||||
|
move 9 from 2 to 5
|
||||||
|
move 1 from 4 to 1
|
||||||
|
move 2 from 2 to 6
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 23 from 1 to 5
|
||||||
|
move 1 from 6 to 9
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 27 from 5 to 1
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 18 from 5 to 8
|
||||||
|
move 6 from 5 to 7
|
||||||
|
move 1 from 5 to 6
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 12 from 8 to 3
|
||||||
|
move 1 from 1 to 4
|
||||||
|
move 6 from 7 to 8
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 2 from 1 to 8
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 8 from 3 to 2
|
||||||
|
move 2 from 9 to 7
|
||||||
|
move 5 from 2 to 7
|
||||||
|
move 7 from 7 to 2
|
||||||
|
move 2 from 8 to 2
|
||||||
|
move 3 from 1 to 9
|
||||||
|
move 5 from 1 to 2
|
||||||
|
move 3 from 9 to 8
|
||||||
|
move 3 from 8 to 7
|
||||||
|
move 5 from 2 to 5
|
||||||
|
move 2 from 7 to 6
|
||||||
|
move 12 from 8 to 9
|
||||||
|
move 12 from 1 to 4
|
||||||
|
move 9 from 9 to 3
|
||||||
|
move 4 from 5 to 8
|
||||||
|
move 12 from 3 to 8
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 3 from 9 to 2
|
||||||
|
move 1 from 4 to 7
|
||||||
|
move 3 from 1 to 7
|
||||||
|
move 7 from 4 to 6
|
||||||
|
move 3 from 6 to 2
|
||||||
|
move 2 from 7 to 9
|
||||||
|
move 18 from 8 to 1
|
||||||
|
move 2 from 4 to 7
|
||||||
|
move 1 from 2 to 8
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 10 from 2 to 3
|
||||||
|
move 3 from 9 to 8
|
||||||
|
move 2 from 6 to 7
|
||||||
|
move 13 from 3 to 1
|
||||||
|
move 2 from 8 to 9
|
||||||
|
move 28 from 1 to 8
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 4 from 7 to 6
|
||||||
|
move 5 from 6 to 7
|
||||||
|
move 7 from 2 to 6
|
||||||
|
move 1 from 9 to 6
|
||||||
|
move 2 from 2 to 4
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 4 from 1 to 2
|
||||||
|
move 3 from 2 to 5
|
||||||
|
move 3 from 4 to 9
|
||||||
|
move 3 from 5 to 7
|
||||||
|
move 1 from 1 to 4
|
||||||
|
move 6 from 7 to 6
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 1 from 4 to 1
|
||||||
|
move 1 from 1 to 8
|
||||||
|
move 3 from 9 to 4
|
||||||
|
move 18 from 6 to 3
|
||||||
|
move 4 from 3 to 6
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 1 from 6 to 9
|
||||||
|
move 2 from 3 to 6
|
||||||
|
move 1 from 9 to 6
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 6 from 6 to 8
|
||||||
|
move 3 from 4 to 7
|
||||||
|
move 2 from 7 to 2
|
||||||
|
move 35 from 8 to 7
|
||||||
|
move 3 from 3 to 1
|
||||||
|
move 26 from 7 to 2
|
||||||
|
move 10 from 3 to 9
|
||||||
|
move 6 from 9 to 4
|
||||||
|
move 3 from 1 to 2
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 4 from 4 to 1
|
||||||
|
move 1 from 3 to 6
|
||||||
|
move 1 from 8 to 3
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 13 from 7 to 3
|
||||||
|
move 3 from 1 to 4
|
||||||
|
move 4 from 3 to 1
|
||||||
|
move 3 from 1 to 9
|
||||||
|
move 2 from 1 to 9
|
||||||
|
move 10 from 2 to 9
|
||||||
|
move 19 from 2 to 9
|
||||||
|
move 6 from 3 to 9
|
||||||
|
move 2 from 3 to 4
|
||||||
|
move 2 from 2 to 6
|
||||||
|
move 17 from 9 to 8
|
||||||
|
move 1 from 2 to 8
|
||||||
|
move 2 from 9 to 3
|
||||||
|
move 2 from 6 to 7
|
||||||
|
move 8 from 9 to 3
|
||||||
|
move 5 from 4 to 5
|
||||||
|
move 14 from 9 to 4
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 2 from 9 to 3
|
||||||
|
move 1 from 2 to 7
|
||||||
|
move 5 from 5 to 1
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 1 from 3 to 1
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 3 from 7 to 2
|
||||||
|
move 3 from 3 to 7
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 4 from 3 to 4
|
||||||
|
move 16 from 8 to 9
|
||||||
|
move 3 from 1 to 4
|
||||||
|
move 21 from 4 to 6
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 1 from 1 to 3
|
||||||
|
move 6 from 6 to 7
|
||||||
|
move 3 from 1 to 9
|
||||||
|
move 3 from 7 to 3
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 1 from 4 to 7
|
||||||
|
move 2 from 2 to 6
|
||||||
|
move 1 from 8 to 6
|
||||||
|
move 13 from 6 to 7
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 15 from 9 to 8
|
||||||
|
move 6 from 6 to 3
|
||||||
|
move 13 from 8 to 3
|
||||||
|
move 4 from 9 to 4
|
||||||
|
move 5 from 4 to 8
|
||||||
|
move 19 from 3 to 9
|
||||||
|
move 3 from 3 to 1
|
||||||
|
move 5 from 8 to 9
|
||||||
|
move 17 from 9 to 7
|
||||||
|
move 1 from 1 to 8
|
||||||
|
move 4 from 9 to 6
|
||||||
|
move 3 from 3 to 8
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 3 from 3 to 1
|
||||||
|
move 36 from 7 to 6
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 7 from 8 to 2
|
||||||
|
move 24 from 6 to 5
|
||||||
|
move 2 from 6 to 7
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 4 from 6 to 8
|
||||||
|
move 19 from 5 to 1
|
||||||
|
move 8 from 6 to 4
|
||||||
|
move 7 from 2 to 5
|
||||||
|
move 3 from 2 to 8
|
||||||
|
move 15 from 1 to 6
|
||||||
|
move 2 from 9 to 5
|
||||||
|
move 2 from 7 to 8
|
||||||
|
move 3 from 4 to 1
|
||||||
|
move 4 from 5 to 6
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 1 from 8 to 3
|
||||||
|
move 3 from 6 to 1
|
||||||
|
move 2 from 4 to 7
|
||||||
|
move 13 from 1 to 8
|
||||||
|
move 1 from 3 to 7
|
||||||
|
move 1 from 4 to 5
|
||||||
|
move 19 from 8 to 6
|
||||||
|
move 1 from 7 to 3
|
||||||
|
move 8 from 5 to 8
|
||||||
|
move 1 from 6 to 8
|
||||||
|
move 3 from 5 to 9
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 3 from 4 to 7
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 4 from 7 to 9
|
||||||
|
move 20 from 6 to 3
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 2 from 9 to 4
|
||||||
|
move 2 from 9 to 2
|
||||||
|
move 2 from 9 to 3
|
||||||
|
move 13 from 6 to 9
|
||||||
|
move 9 from 9 to 8
|
||||||
|
move 2 from 6 to 3
|
||||||
|
move 8 from 8 to 2
|
||||||
|
move 2 from 7 to 3
|
||||||
|
move 5 from 9 to 3
|
||||||
|
move 12 from 3 to 5
|
||||||
|
move 1 from 4 to 7
|
||||||
|
move 8 from 2 to 4
|
||||||
|
move 8 from 4 to 7
|
||||||
|
move 2 from 2 to 6
|
||||||
|
move 2 from 8 to 9
|
||||||
|
move 2 from 6 to 8
|
||||||
|
move 2 from 9 to 6
|
||||||
|
move 2 from 6 to 9
|
||||||
|
move 2 from 4 to 8
|
||||||
|
move 2 from 9 to 2
|
||||||
|
move 6 from 3 to 1
|
||||||
|
move 2 from 2 to 9
|
||||||
|
move 3 from 9 to 3
|
||||||
|
move 8 from 7 to 2
|
||||||
|
move 6 from 1 to 2
|
||||||
|
move 8 from 3 to 8
|
||||||
|
move 1 from 7 to 3
|
||||||
|
move 5 from 3 to 8
|
||||||
|
move 6 from 2 to 7
|
||||||
|
move 3 from 7 to 6
|
||||||
|
move 2 from 7 to 9
|
||||||
|
move 1 from 7 to 8
|
||||||
|
move 8 from 5 to 7
|
||||||
|
move 7 from 2 to 1
|
||||||
|
move 7 from 1 to 6
|
||||||
|
move 7 from 7 to 9
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 2 from 3 to 9
|
||||||
|
move 2 from 8 to 5
|
||||||
|
move 25 from 8 to 5
|
||||||
|
move 5 from 5 to 1
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 17 from 5 to 4
|
||||||
|
move 5 from 5 to 4
|
||||||
|
move 23 from 4 to 7
|
||||||
|
move 2 from 5 to 2
|
||||||
|
move 4 from 6 to 3
|
||||||
|
move 6 from 3 to 7
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 2 from 2 to 8
|
||||||
|
move 2 from 2 to 9
|
||||||
|
move 1 from 5 to 7
|
||||||
|
move 4 from 1 to 6
|
||||||
|
move 2 from 8 to 3
|
||||||
|
move 2 from 9 to 4
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 7 from 9 to 1
|
||||||
|
move 2 from 3 to 5
|
||||||
|
move 28 from 7 to 4
|
||||||
|
move 4 from 6 to 2
|
||||||
|
move 2 from 6 to 2
|
||||||
|
move 3 from 7 to 4
|
||||||
|
move 2 from 5 to 6
|
||||||
|
move 4 from 2 to 6
|
||||||
|
move 9 from 6 to 5
|
||||||
|
move 4 from 1 to 7
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 3 from 2 to 3
|
||||||
|
move 1 from 8 to 6
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 2 from 3 to 4
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 2 from 1 to 6
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 7 from 5 to 8
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 7 from 8 to 7
|
||||||
|
move 4 from 4 to 8
|
||||||
|
move 2 from 8 to 4
|
||||||
|
move 2 from 2 to 7
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 1 from 5 to 6
|
||||||
|
move 32 from 4 to 7
|
||||||
|
move 2 from 6 to 5
|
||||||
|
move 2 from 8 to 2
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 2 from 5 to 4
|
||||||
|
move 1 from 2 to 5
|
||||||
|
move 1 from 1 to 4
|
||||||
|
move 4 from 4 to 3
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 1 from 5 to 4
|
||||||
|
move 5 from 9 to 1
|
||||||
|
move 4 from 3 to 5
|
||||||
|
move 3 from 1 to 6
|
||||||
|
move 2 from 9 to 5
|
||||||
|
move 2 from 1 to 3
|
||||||
|
move 15 from 7 to 1
|
||||||
|
move 5 from 5 to 3
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 3 from 4 to 5
|
||||||
|
move 2 from 5 to 9
|
||||||
|
move 3 from 3 to 6
|
||||||
|
move 3 from 3 to 4
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 2 from 4 to 9
|
||||||
|
move 1 from 5 to 3
|
||||||
|
move 2 from 9 to 6
|
||||||
|
move 1 from 8 to 1
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 1 from 4 to 9
|
||||||
|
move 2 from 9 to 3
|
||||||
|
move 9 from 1 to 3
|
||||||
|
move 5 from 3 to 4
|
||||||
|
move 2 from 1 to 3
|
||||||
|
move 4 from 1 to 5
|
||||||
|
move 1 from 2 to 8
|
||||||
|
move 3 from 4 to 9
|
||||||
|
|
131
src/aoc2022/day05/mod.rs
Normal file
131
src/aoc2022/day05/mod.rs
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
use std::collections::{HashMap, VecDeque};
|
||||||
|
|
||||||
|
const AMOUNT_OF_STACKS: usize = 9;
|
||||||
|
const MAX_STACK_HEIGHT: usize = 8;
|
||||||
|
|
||||||
|
fn transform_starting_point(input: &str) -> HashMap<usize, VecDeque<char>> {
|
||||||
|
let mut collection_of_stacks: HashMap<usize, VecDeque<char>> = HashMap::new();
|
||||||
|
|
||||||
|
let mut start_situation: Vec<&str> = Vec::new();
|
||||||
|
|
||||||
|
for line in input.lines() {
|
||||||
|
if line.is_empty() {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
start_situation.push(line);
|
||||||
|
}
|
||||||
|
|
||||||
|
for crate_nr in 1..=MAX_STACK_HEIGHT {
|
||||||
|
let line = start_situation[MAX_STACK_HEIGHT - crate_nr];
|
||||||
|
let chars: Vec<char> = line.chars().collect();
|
||||||
|
|
||||||
|
for stack_nr in 1..=AMOUNT_OF_STACKS {
|
||||||
|
let c = chars[1 + ((stack_nr - 1) * 4)];
|
||||||
|
if crate_nr == 1 {
|
||||||
|
collection_of_stacks.insert(stack_nr, VecDeque::new());
|
||||||
|
}
|
||||||
|
|
||||||
|
if c.is_ascii_alphabetic() {
|
||||||
|
collection_of_stacks
|
||||||
|
.get_mut(&stack_nr)
|
||||||
|
.unwrap()
|
||||||
|
.push_back(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// println!("{:?}", collection_of_stacks.get(&1).unwrap());
|
||||||
|
// println!("{:?}", collection_of_stacks.get(&2).unwrap());
|
||||||
|
// println!("{:?}", collection_of_stacks.get(&3).unwrap());
|
||||||
|
// println!("{:?}", collection_of_stacks.get(&4).unwrap());
|
||||||
|
// println!("{:?}", collection_of_stacks.get(&6).unwrap());
|
||||||
|
|
||||||
|
collection_of_stacks
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn task_one(input: &str) -> String {
|
||||||
|
let mut collection_of_stacks = transform_starting_point(&input);
|
||||||
|
|
||||||
|
for line in input.lines().skip(MAX_STACK_HEIGHT + 2) {
|
||||||
|
if line.is_empty() {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut splitter = line.split_whitespace();
|
||||||
|
let amount = splitter.nth(1).unwrap();
|
||||||
|
let from = splitter.nth(1).unwrap();
|
||||||
|
let to = splitter.nth(1).unwrap();
|
||||||
|
|
||||||
|
for _ in 1..=amount.parse::<usize>().unwrap() {
|
||||||
|
let source_stack = collection_of_stacks
|
||||||
|
.get_mut(&from.parse::<usize>().unwrap())
|
||||||
|
.unwrap();
|
||||||
|
let c = source_stack.pop_back().unwrap();
|
||||||
|
|
||||||
|
let target_stack = collection_of_stacks
|
||||||
|
.get_mut(&to.parse::<usize>().unwrap())
|
||||||
|
.unwrap();
|
||||||
|
target_stack.push_back(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut solution = String::new();
|
||||||
|
|
||||||
|
for i in 1..=AMOUNT_OF_STACKS {
|
||||||
|
solution.push(
|
||||||
|
collection_of_stacks
|
||||||
|
.get_mut(&i)
|
||||||
|
.unwrap()
|
||||||
|
.pop_back()
|
||||||
|
.unwrap(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
solution
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn task_two(input: &str) -> String {
|
||||||
|
let mut collection_of_stacks = transform_starting_point(&input);
|
||||||
|
|
||||||
|
for line in input.lines().skip(MAX_STACK_HEIGHT + 2) {
|
||||||
|
if line.is_empty() {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut splitter = line.split_whitespace();
|
||||||
|
let amount = splitter.nth(1).unwrap();
|
||||||
|
let from = splitter.nth(1).unwrap();
|
||||||
|
let to = splitter.nth(1).unwrap();
|
||||||
|
|
||||||
|
let source_stack = collection_of_stacks
|
||||||
|
.get_mut(&from.parse::<usize>().unwrap())
|
||||||
|
.unwrap();
|
||||||
|
let mut cache: VecDeque<char> = VecDeque::new();
|
||||||
|
|
||||||
|
for _ in 1..=amount.parse::<usize>().unwrap() {
|
||||||
|
let c = source_stack.pop_back().unwrap();
|
||||||
|
cache.push_front(c);
|
||||||
|
}
|
||||||
|
let target_stack = collection_of_stacks
|
||||||
|
.get_mut(&to.parse::<usize>().unwrap())
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
while let Some(c) = cache.pop_front() {
|
||||||
|
target_stack.push_back(c);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut solution = String::new();
|
||||||
|
|
||||||
|
for i in 1..=AMOUNT_OF_STACKS {
|
||||||
|
solution.push(
|
||||||
|
collection_of_stacks
|
||||||
|
.get_mut(&i)
|
||||||
|
.unwrap()
|
||||||
|
.pop_back()
|
||||||
|
.unwrap(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
solution
|
||||||
|
}
|
2
src/aoc2022/day06/input.txt
Normal file
2
src/aoc2022/day06/input.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
cdhccdbdggfjjgssjzjzggjnjpnpbbzbnzzflfjfnfrrpvrvbrvvrvggvlvnnbrnrcncsnndbndbnndbdndfdrdvrvvndvvbggnrrnbrnntffgttwzwnnmvmcvvhsstzzlnlwlttbzzpnpmnnjvjnntmnmfftwwrfwrwswmmfrrfrrgbrbffwvvshvhrhmhththbbmqbmqqlslhssrmmqdmmjtmtmjtmjtttnwnvwvqwqjjnbbbdbqbnbpnbnllglcglcgcdczdznnqhhfthtmtlldqlqrrmddrldlzdllvddjcddqfqbqsbqqnllwppqpqzzrbbdppzsppjdpdqpdqdfqfrrwbwrwwqcqcsqsvvpbvbbztzptzzpccdtdhdffvqvcvzzmwzwddjfdffplplqlvlmmmvggpmpvpddpbptplpvlplvpvvnrvnnbqqqjhhwfhwfhwhqhmmpphqpqvppfzpzjzddgzzwffjmjggwhwwnnmlmpmmhcmcpcrcddvzvpzzwnznfznffgdgvddvtvgvsvdsdbbjnjtntbnttgbbbvgvgrgrzrvzrzddlsddcndcnnfqnnmpmlppdlplzplzpzgzmzmddlvlnnbttbwwhbhdhfdfssjppmcpplpdddnpdnnljlwjljsjnjhnhvhvqqsffrbbdttjdjndjdwwsfspffnhfhhlvhvmmqjmmwzwszwwvdvpdvdbdtdsdtsshvvmtvmtmctclchccrllznzfffpjjvhhdmhhvphpghgsgmmhlhnlnmnlnslnlgngznnsqnqddllpwllmzmjmttptfpplglqlgglgqqptqqmvmtmjmddcchbblltslsvsmvmgghmmccnzcztczzmnmttrdrvvcvzvvzllbhllnldndbbqffbbgtgddbtdbbzttdptpccjnjppbllbzlblrlcllhrrhqhgqqbcqcvcdvvnnzfzvzttrptrrwmrmlrlddvttdbtdbdcdvccwlcwwhphmppwfppclpcllgqgnghhvfflfggrzrcchfhhrdhrdhdnhnmmhjjwqjjpmmwvmmdnmnzzqmqwwmtthtdhtthnnqhqdhqqndqqwffsbspbptpmmndnllsmmdhmhfhnhjhghshlslppbgpgngddlsljsjmmzqzhhswhssfzssfqqcmqcmqcmmqggjcjvvgssrccwddmpmwwdfdpdbdpdwdvvqfvfrvvvsbvbhvvmqqcjqqvzqzppncnhhqnnpgplpqqpjpbblpbbbshsthhvfhfmmqzmmznnvrvqrrwdrdlrlwlttzqttjvttqltqqnfqqqwjqwwqttfstftjffsqqnhhnsnqqhggbsgghfgglslmssqlqhlhthqhccdsspsnssshbbnmngnnhllwclcffqllsrszrssnqsqvqjvjcvcttqgqbqmmfqfsqfsqswwvcvffndnfdfvfcvvggsmsfmfwfpfwwzhznntgtlglmmlfmllwrlrwwhcchqchhznzjjcdjdbjjhcjcscwwlnnsgngqqtgqgngnwgnnhqnnhchmchhtchcnclcmccgffbmmzvvrnngwwvddzccnjntjtwjwwztwtmtddjddpsptpbpbvvbwwnlnmndmnmdnnclnnbsbddpfdfvvjtjqqtqqqzjzlzqllzzwwlppvfffpcffffprrncnnzsnznhhwvvqhqphpjjgqqvnnmdmqqglqlblgglrlsspscsjjpvpbpjjwccslsppdjpdjjwvjjmhjhtjjwqqbqjqzjqzqpqbbswwlssqzssbjjpjqjbbjcjpjspjssjjzhhhnjhnhbnhhwzhzwlcshqlqpzgggzmcwntcwmfgtrwwjdpnbdqqcgnzgbdrzdmpwgvtvqffqbpvjpjrcfswffllnvnwvhclpjcwqwgnwqwvwsfgflrgzzsswffwjdjgvdvlgmczcbthwbvhggwzwlzfmhvwvjpbpnhcczbgfhhgghsmjwnvnsvnvmqwstrgnncwbqgbqpgdngllcqnzgwswpgtwzgqzggnzsdgltrlqfctqfvlzdswccfpdtjbfnrbqsmpjclnplbmqbmvwbzzdflwbqrljvzjpcrmnqsmrpqlmfsgcmthqpwgwzvmrjnhqczljcpnzjbwzrhjrzmcqpmlbzhgmqrlzsjbjsvcmcngptzlrthwsrjrlmsrgjlzrvpzwmprwnpgvjtspsppfvwfwcvbnqcwwmzlbqthqmbnbmnsnzgsbbnqtrvhlzjhphclpjzrdblszrnftqgwwrhpznhjhgrncvsvrmtmmgssvzddjfrnrzhbrqrfffjvzrqdnrdbvjwgrvlcpbncfgczlwdggsjmwzhndcdbggjvwfljctjnsjwczwfdrfttbhnlswfdbpcnwpspdhnzwqbgdswwpccbpfpgmfmvvwpzbzqsbbjbfnhjpszcbnrdplmwtdjtpcsztdjcmczltnstzwlcdbtdhsdgsgtlvdfqggfmmrppjfrmtfwhpbjsppszjbhmthndqmvbmqcbtqsltwrcvlvblwspbgspjftwllzcmnsrvjpnstzrfmcflnhppsdfggwbzvnvlnjqlfvrlplnzvfrwvgcgqvnpfgtgchctvhcplclzmfpwgnfhqjgglfmsgpflqcpqmbbhwnvvdllcnhblpnndbdtmgvfbvvvlvzlrpfqmnvzbfrssjtlgcjtpfznshvdjrjnfshfcgvwcdbqlfsbhnzwmsgwhpbzttgfjsqgwvdmbdwjljhsndrbbzfrsqjhcbldzqpmtnfvnmzltjcrvrltwshnhqlnclmcnfpbzstsczlqmfmdftzfbcwqnhqppzfbzpbfjhmmtvtbmblmtshsbtjlvsqvmbmgstbbdmhprqmtpfdqqntmnlbmpsmwfgrvstjcllhwpcddnljdjvdrbwqmgrjnldpgnrhgqpzqrvwzsngrgnbpjnsffzjsbdptwnnfcqlscfhvggpfstsnqzcjbqqhgdpqsrlprcppgqmddpqpbnvgwtdqsbbgtvsqfrtqfsbdzhsztfmvwrrsjcbtcjgzrnhnpgldtwbwgmwbgmjjzsbbzlhgmlczrhjwtzrgwscmjvlstprldhglvftqzbtrmcwzgtjppbnjcdvjvcwvdbngnbrmjvvtnwdqfclbpgzcfnnnlnngtgmhsqsdmbjctjzjpbrwrhscqshmmwbtfnzjgsrjlnqqdsvdrjdzsdprphnfmwwcztqfcrjvnfhlvnqwbrfmcvhrbtgvcrqjjfcnzwmlfzzdcbbzvphhmsdltwjfdcgthpvszqzjdbfwrpvhbjqdhrscnvjhjvvcldnhgjclmzpbrrwnscgpcqrpdgsnjnwhctcdqgwqbrcszfzpmtdrhlftvwffdjrtznqrppqbdbwvzmtlpvsqqpcngjgfdrpngnspdwhhvlhqrtsphgqrlldggtrvqsprbfdmrpgcmqphdvjfmhlznpgtqlvtnllcdhzhhtjjlfvdlwhcrfmjmdjtmbllvsfgvmfqtqlmrlrjmqptszvjdpzhphppljnpjdjpwlrclssgdnstchhwhpflmlrtdqvqbbljrmnflrltzpqmgqfrczvfzrpfsrwsgpljvjfjdjdvjchcdmmtjgghqspwzdtwqgtvmnrrbfbgnhcrvnzznrdlqmgmdwmpwzlqdjtvpszwnjtjtmjqvfwvftlhgpvgzswpbvbllfcwpjnsmbhzrdpdzjsrpnhphdcqjmzvvhrjcwhgwjwcshqwzpbpmfnjjvqcjrqmvsrdrtdvfhwhrbpvrqrsfzflslqtdrtcsggtzmpvbszdgttlvpwwltvpcwqmnwqtpcfzgsvsmncvpqqdrljfwtncplmjlpfcnqmcctwzhrbmrfwvsrjsbnhjrjmrnbmmnnhsvlltwzzhsgwppnlmljgpcsmpchdjdzpgvrtwsfzffhnlbfmrldzbshvpqhnfzpwnvczgfvhbntcpztwqlfgtsmdhvcrgjhvqrhbpvbpzcpbgzrcfjztbnfjptbzfpztwprwf
|
||||||
|
|
50
src/aoc2022/day06/mod.rs
Normal file
50
src/aoc2022/day06/mod.rs
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
pub fn task_one(input: &str) -> String {
|
||||||
|
let line = input.lines().next().unwrap();
|
||||||
|
let chars: Vec<char> = line.chars().collect();
|
||||||
|
|
||||||
|
let mut index = 4;
|
||||||
|
let mut iterator = chars.windows(4);
|
||||||
|
|
||||||
|
while let Some([first, second, third, fourth]) = iterator.next() {
|
||||||
|
if first != second && first != third && first != fourth && second != third && second != fourth && third != fourth {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
index += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
index.to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn task_two(input: &str) -> String {
|
||||||
|
|
||||||
|
let line = input.lines().next().unwrap();
|
||||||
|
let chars: Vec<char> = line.chars().collect();
|
||||||
|
|
||||||
|
let mut index = 14;
|
||||||
|
let mut iterator = chars.windows(14);
|
||||||
|
|
||||||
|
while let Some(slice) = iterator.next() {
|
||||||
|
let mut dict = HashMap::new();
|
||||||
|
let mut next = false;
|
||||||
|
|
||||||
|
for c in slice {
|
||||||
|
if dict.contains_key(&c) {
|
||||||
|
next = true;
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
dict.insert(c, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !next {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
index += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
index.to_string()
|
||||||
|
}
|
987
src/aoc2022/day07/input.txt
Normal file
987
src/aoc2022/day07/input.txt
Normal file
@ -0,0 +1,987 @@
|
|||||||
|
$ cd /
|
||||||
|
$ ls
|
||||||
|
dir bnl
|
||||||
|
dir dmpsnhdh
|
||||||
|
272080 dncdssn.hdr
|
||||||
|
dir fcnqg
|
||||||
|
6067 hjpmqrq
|
||||||
|
dir jvwtm
|
||||||
|
dir ldztz
|
||||||
|
dir lmmw
|
||||||
|
dir wthvqw
|
||||||
|
dir zpdnprb
|
||||||
|
$ cd bnl
|
||||||
|
$ ls
|
||||||
|
dir dhw
|
||||||
|
dir dmpsnhdh
|
||||||
|
dir lmw
|
||||||
|
dir vgbqbrst
|
||||||
|
$ cd dhw
|
||||||
|
$ ls
|
||||||
|
237421 vccwmhl
|
||||||
|
$ cd ..
|
||||||
|
$ cd dmpsnhdh
|
||||||
|
$ ls
|
||||||
|
dir chf
|
||||||
|
dir mjpbhjm
|
||||||
|
dir zwhpwp
|
||||||
|
$ cd chf
|
||||||
|
$ ls
|
||||||
|
4679 lmw.wmp
|
||||||
|
217367 wwnfv.qqr
|
||||||
|
dir zfgznbz
|
||||||
|
$ cd zfgznbz
|
||||||
|
$ ls
|
||||||
|
179409 cnj.gdn
|
||||||
|
171574 vglqg
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd mjpbhjm
|
||||||
|
$ ls
|
||||||
|
dir crf
|
||||||
|
dir hqnj
|
||||||
|
dir lmw
|
||||||
|
18783 lmw.rwr
|
||||||
|
302608 twpq
|
||||||
|
166891 vqczlg
|
||||||
|
$ cd crf
|
||||||
|
$ ls
|
||||||
|
32183 dltmqht
|
||||||
|
240428 frqqdsr.hbf
|
||||||
|
224910 sgtnrvrt
|
||||||
|
$ cd ..
|
||||||
|
$ cd hqnj
|
||||||
|
$ ls
|
||||||
|
261723 cgstb
|
||||||
|
77979 dmpsnhdh.cmd
|
||||||
|
$ cd ..
|
||||||
|
$ cd lmw
|
||||||
|
$ ls
|
||||||
|
50307 fcqrwd
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd zwhpwp
|
||||||
|
$ ls
|
||||||
|
141133 gdngm.mps
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd lmw
|
||||||
|
$ ls
|
||||||
|
dir dvv
|
||||||
|
267473 jmqgrh.dlz
|
||||||
|
295139 rrqjwpm
|
||||||
|
$ cd dvv
|
||||||
|
$ ls
|
||||||
|
114536 gmlmbrrw.wdm
|
||||||
|
102061 lmw
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd vgbqbrst
|
||||||
|
$ ls
|
||||||
|
105102 dmpsnhdh.bgl
|
||||||
|
269054 gmwgjf.fzz
|
||||||
|
dir jbdtpnw
|
||||||
|
245266 jzsjvgl
|
||||||
|
216220 lmw.gtb
|
||||||
|
dir rflp
|
||||||
|
dir twpq
|
||||||
|
$ cd jbdtpnw
|
||||||
|
$ ls
|
||||||
|
27543 cjvvmzp
|
||||||
|
$ cd ..
|
||||||
|
$ cd rflp
|
||||||
|
$ ls
|
||||||
|
137601 frqqdsr.hbf
|
||||||
|
83444 rrqjwpm
|
||||||
|
$ cd ..
|
||||||
|
$ cd twpq
|
||||||
|
$ ls
|
||||||
|
dir rlbsdj
|
||||||
|
36846 tnrqzjdd
|
||||||
|
$ cd rlbsdj
|
||||||
|
$ ls
|
||||||
|
56078 bvndq
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd dmpsnhdh
|
||||||
|
$ ls
|
||||||
|
dir fnpwwhtj
|
||||||
|
dir lmw
|
||||||
|
9090 mgjpsvl.jlh
|
||||||
|
186374 pbb.zln
|
||||||
|
$ cd fnpwwhtj
|
||||||
|
$ ls
|
||||||
|
dir cgp
|
||||||
|
$ cd cgp
|
||||||
|
$ ls
|
||||||
|
81938 hjpmqrq
|
||||||
|
281971 jvszf
|
||||||
|
151057 wmr.bnf
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd lmw
|
||||||
|
$ ls
|
||||||
|
dir bfbv
|
||||||
|
56929 pbb.zln
|
||||||
|
dir rrqjwpm
|
||||||
|
dir sngm
|
||||||
|
$ cd bfbv
|
||||||
|
$ ls
|
||||||
|
92667 qrrttb.jgp
|
||||||
|
$ cd ..
|
||||||
|
$ cd rrqjwpm
|
||||||
|
$ ls
|
||||||
|
25739 cqljn.zqw
|
||||||
|
91325 dncdssn.hdr
|
||||||
|
$ cd ..
|
||||||
|
$ cd sngm
|
||||||
|
$ ls
|
||||||
|
282163 jgrj
|
||||||
|
dir lmw
|
||||||
|
237524 lmw.dff
|
||||||
|
153497 lmw.ntg
|
||||||
|
dir lqd
|
||||||
|
dir szn
|
||||||
|
143535 tvpvc.qpr
|
||||||
|
98326 vbfgh
|
||||||
|
$ cd lmw
|
||||||
|
$ ls
|
||||||
|
32484 dncdssn.hdr
|
||||||
|
dir glwr
|
||||||
|
$ cd glwr
|
||||||
|
$ ls
|
||||||
|
144719 frqqdsr.hbf
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd lqd
|
||||||
|
$ ls
|
||||||
|
231401 dncdssn.hdr
|
||||||
|
dir jnjqmvg
|
||||||
|
dir lmw
|
||||||
|
199704 rrqjwpm
|
||||||
|
$ cd jnjqmvg
|
||||||
|
$ ls
|
||||||
|
104947 trpsrfjz.brg
|
||||||
|
$ cd ..
|
||||||
|
$ cd lmw
|
||||||
|
$ ls
|
||||||
|
230298 rrqjwpm.nnv
|
||||||
|
158947 wfv.qrb
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd szn
|
||||||
|
$ ls
|
||||||
|
197974 frqqdsr.hbf
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd fcnqg
|
||||||
|
$ ls
|
||||||
|
251609 dncdssn.hdr
|
||||||
|
289497 jdjmftqs
|
||||||
|
228459 qbmthcq
|
||||||
|
$ cd ..
|
||||||
|
$ cd jvwtm
|
||||||
|
$ ls
|
||||||
|
dir dmpsnhdh
|
||||||
|
47959 pbb.zln
|
||||||
|
dir tlr
|
||||||
|
dir twpq
|
||||||
|
dir wbgcsw
|
||||||
|
dir zjmldjdh
|
||||||
|
$ cd dmpsnhdh
|
||||||
|
$ ls
|
||||||
|
247567 bnl
|
||||||
|
102471 bnl.wdm
|
||||||
|
80054 fhqvp.hfm
|
||||||
|
dir llhp
|
||||||
|
dir mnsbh
|
||||||
|
dir mpplsfjp
|
||||||
|
20844 mtvl.lmp
|
||||||
|
$ cd llhp
|
||||||
|
$ ls
|
||||||
|
180255 dmpsnhdh
|
||||||
|
$ cd ..
|
||||||
|
$ cd mnsbh
|
||||||
|
$ ls
|
||||||
|
267627 dmpsnhdh
|
||||||
|
$ cd ..
|
||||||
|
$ cd mpplsfjp
|
||||||
|
$ ls
|
||||||
|
dir bnl
|
||||||
|
233742 tcnpvqc.tdr
|
||||||
|
$ cd bnl
|
||||||
|
$ ls
|
||||||
|
243223 fcqrwd
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd tlr
|
||||||
|
$ ls
|
||||||
|
dir vcsngm
|
||||||
|
dir wndmt
|
||||||
|
$ cd vcsngm
|
||||||
|
$ ls
|
||||||
|
36434 czs.dnv
|
||||||
|
$ cd ..
|
||||||
|
$ cd wndmt
|
||||||
|
$ ls
|
||||||
|
dir fvmtfcqd
|
||||||
|
dir nvdb
|
||||||
|
dir nwqqgl
|
||||||
|
dir sbspgnpm
|
||||||
|
$ cd fvmtfcqd
|
||||||
|
$ ls
|
||||||
|
237025 nzttjt.rzh
|
||||||
|
$ cd ..
|
||||||
|
$ cd nvdb
|
||||||
|
$ ls
|
||||||
|
235328 dnrqwqtp.vfc
|
||||||
|
51984 rhblt.mfz
|
||||||
|
51332 rjhvhw
|
||||||
|
$ cd ..
|
||||||
|
$ cd nwqqgl
|
||||||
|
$ ls
|
||||||
|
203534 cjghw
|
||||||
|
dir cljbrh
|
||||||
|
$ cd cljbrh
|
||||||
|
$ ls
|
||||||
|
133820 lmw.dnd
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd sbspgnpm
|
||||||
|
$ ls
|
||||||
|
270010 hjpmqrq
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd twpq
|
||||||
|
$ ls
|
||||||
|
dir dmpsnhdh
|
||||||
|
dir hbchdjjp
|
||||||
|
247649 hjpmqrq
|
||||||
|
29891 rrqjwpm
|
||||||
|
72407 twpq.crb
|
||||||
|
$ cd dmpsnhdh
|
||||||
|
$ ls
|
||||||
|
251490 dncdssn.hdr
|
||||||
|
222231 hjpmqrq
|
||||||
|
102058 pbb.zln
|
||||||
|
$ cd ..
|
||||||
|
$ cd hbchdjjp
|
||||||
|
$ ls
|
||||||
|
70058 dprrmd.qcd
|
||||||
|
230958 tsdbl.bnq
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd wbgcsw
|
||||||
|
$ ls
|
||||||
|
292028 bhtfcf
|
||||||
|
dir bnl
|
||||||
|
dir bqq
|
||||||
|
dir ctnlpgt
|
||||||
|
247888 hblhfvwj
|
||||||
|
dir hbqm
|
||||||
|
277949 pbb.zln
|
||||||
|
106225 rrqjwpm
|
||||||
|
125927 ssqpmlfb.gwm
|
||||||
|
dir zqmjwsgz
|
||||||
|
dir zwwphs
|
||||||
|
$ cd bnl
|
||||||
|
$ ls
|
||||||
|
dir fbbr
|
||||||
|
240500 frqqdsr.hbf
|
||||||
|
dir mzfrdl
|
||||||
|
25137 srqlww.mcj
|
||||||
|
dir tqgrdz
|
||||||
|
dir ztrnq
|
||||||
|
$ cd fbbr
|
||||||
|
$ ls
|
||||||
|
84414 mjbw.dhs
|
||||||
|
$ cd ..
|
||||||
|
$ cd mzfrdl
|
||||||
|
$ ls
|
||||||
|
135647 bccwgn
|
||||||
|
dir cjdptqgh
|
||||||
|
dir hwdnrqns
|
||||||
|
dir prq
|
||||||
|
$ cd cjdptqgh
|
||||||
|
$ ls
|
||||||
|
147946 mdgl.drz
|
||||||
|
11972 pbb.zln
|
||||||
|
$ cd ..
|
||||||
|
$ cd hwdnrqns
|
||||||
|
$ ls
|
||||||
|
dir dmpsnhdh
|
||||||
|
$ cd dmpsnhdh
|
||||||
|
$ ls
|
||||||
|
254432 phthmn
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd prq
|
||||||
|
$ ls
|
||||||
|
75827 dmpsnhdh.rtl
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd tqgrdz
|
||||||
|
$ ls
|
||||||
|
251475 bjwnll.rlw
|
||||||
|
$ cd ..
|
||||||
|
$ cd ztrnq
|
||||||
|
$ ls
|
||||||
|
208497 bnl.dtr
|
||||||
|
179376 gqnbswcj.hht
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd bqq
|
||||||
|
$ ls
|
||||||
|
202201 bnl.lbm
|
||||||
|
$ cd ..
|
||||||
|
$ cd ctnlpgt
|
||||||
|
$ ls
|
||||||
|
269484 vsfvzrpr
|
||||||
|
$ cd ..
|
||||||
|
$ cd hbqm
|
||||||
|
$ ls
|
||||||
|
74455 bvnfz
|
||||||
|
42748 pbb.zln
|
||||||
|
$ cd ..
|
||||||
|
$ cd zqmjwsgz
|
||||||
|
$ ls
|
||||||
|
146194 pbb.zln
|
||||||
|
$ cd ..
|
||||||
|
$ cd zwwphs
|
||||||
|
$ ls
|
||||||
|
209587 mtbzd.nwb
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd zjmldjdh
|
||||||
|
$ ls
|
||||||
|
dir cdq
|
||||||
|
dir mdclfbs
|
||||||
|
dir tfc
|
||||||
|
132043 wrm
|
||||||
|
$ cd cdq
|
||||||
|
$ ls
|
||||||
|
289173 twpq.mrn
|
||||||
|
$ cd ..
|
||||||
|
$ cd mdclfbs
|
||||||
|
$ ls
|
||||||
|
64639 bnl.jwf
|
||||||
|
dir hpdgt
|
||||||
|
72868 hznfj.nmj
|
||||||
|
159467 lmw.bfz
|
||||||
|
$ cd hpdgt
|
||||||
|
$ ls
|
||||||
|
52760 fcqrwd
|
||||||
|
54661 tzgt.hvh
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd tfc
|
||||||
|
$ ls
|
||||||
|
185481 bwntlh
|
||||||
|
18925 fcqrwd
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ldztz
|
||||||
|
$ ls
|
||||||
|
128430 bwz.fcz
|
||||||
|
dir dmpsnhdh
|
||||||
|
dir lbqgz
|
||||||
|
dir znrnj
|
||||||
|
$ cd dmpsnhdh
|
||||||
|
$ ls
|
||||||
|
238193 dncdssn.hdr
|
||||||
|
285939 hwfngq.dpw
|
||||||
|
$ cd ..
|
||||||
|
$ cd lbqgz
|
||||||
|
$ ls
|
||||||
|
171931 vgrp
|
||||||
|
$ cd ..
|
||||||
|
$ cd znrnj
|
||||||
|
$ ls
|
||||||
|
153738 vmwwbjqd
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd lmmw
|
||||||
|
$ ls
|
||||||
|
dir bqqnsfdj
|
||||||
|
163303 fcqrwd
|
||||||
|
43453 frqqdsr.hbf
|
||||||
|
33319 hjpmqrq
|
||||||
|
dir rlpcqtzg
|
||||||
|
$ cd bqqnsfdj
|
||||||
|
$ ls
|
||||||
|
dir bnl
|
||||||
|
2251 hjpmqrq
|
||||||
|
14707 rrqjwpm
|
||||||
|
dir tlnbvhdl
|
||||||
|
$ cd bnl
|
||||||
|
$ ls
|
||||||
|
33357 bnl.fqp
|
||||||
|
151237 bnl.vbs
|
||||||
|
40294 dmpsnhdh.hwz
|
||||||
|
76455 dncdssn.hdr
|
||||||
|
290341 hjpmqrq
|
||||||
|
dir lmw
|
||||||
|
dir nqw
|
||||||
|
$ cd lmw
|
||||||
|
$ ls
|
||||||
|
dir sfj
|
||||||
|
$ cd sfj
|
||||||
|
$ ls
|
||||||
|
156532 fcqrwd
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd nqw
|
||||||
|
$ ls
|
||||||
|
59928 dncdssn.hdr
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd tlnbvhdl
|
||||||
|
$ ls
|
||||||
|
183301 hjpmqrq
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd rlpcqtzg
|
||||||
|
$ ls
|
||||||
|
258638 dqt.mlc
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd wthvqw
|
||||||
|
$ ls
|
||||||
|
224501 pbb.zln
|
||||||
|
$ cd ..
|
||||||
|
$ cd zpdnprb
|
||||||
|
$ ls
|
||||||
|
dir bnl
|
||||||
|
dir ffg
|
||||||
|
dir jljlwpsv
|
||||||
|
212081 lrzc.lhj
|
||||||
|
dir rrqjwpm
|
||||||
|
dir twpq
|
||||||
|
dir vlgsrtm
|
||||||
|
$ cd bnl
|
||||||
|
$ ls
|
||||||
|
124009 hjgjf
|
||||||
|
74860 hjpmqrq
|
||||||
|
84996 lrdl.swf
|
||||||
|
dir pnzmp
|
||||||
|
$ cd pnzmp
|
||||||
|
$ ls
|
||||||
|
dir btbtlrs
|
||||||
|
128636 nfzf
|
||||||
|
$ cd btbtlrs
|
||||||
|
$ ls
|
||||||
|
107651 hhzbwd.wzj
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ffg
|
||||||
|
$ ls
|
||||||
|
57918 jwzbs.tnt
|
||||||
|
$ cd ..
|
||||||
|
$ cd jljlwpsv
|
||||||
|
$ ls
|
||||||
|
188175 dmpsnhdh.nnb
|
||||||
|
46693 fcqrwd
|
||||||
|
111557 pbb.zln
|
||||||
|
$ cd ..
|
||||||
|
$ cd rrqjwpm
|
||||||
|
$ ls
|
||||||
|
dir bftw
|
||||||
|
dir ccsfws
|
||||||
|
87225 mccw
|
||||||
|
290654 pbb.zln
|
||||||
|
147394 twzqc.pbz
|
||||||
|
52983 wsvgf
|
||||||
|
dir wwfgbzqh
|
||||||
|
$ cd bftw
|
||||||
|
$ ls
|
||||||
|
dir brl
|
||||||
|
167154 crs
|
||||||
|
dir lmw
|
||||||
|
dir rrqjwpm
|
||||||
|
dir twpq
|
||||||
|
174963 twpq.wjl
|
||||||
|
dir vnfhb
|
||||||
|
dir wcldzp
|
||||||
|
$ cd brl
|
||||||
|
$ ls
|
||||||
|
297937 wspcnp
|
||||||
|
$ cd ..
|
||||||
|
$ cd lmw
|
||||||
|
$ ls
|
||||||
|
166695 mcjql.jrv
|
||||||
|
$ cd ..
|
||||||
|
$ cd rrqjwpm
|
||||||
|
$ ls
|
||||||
|
198762 mwn
|
||||||
|
$ cd ..
|
||||||
|
$ cd twpq
|
||||||
|
$ ls
|
||||||
|
141835 jlwf.hcd
|
||||||
|
$ cd ..
|
||||||
|
$ cd vnfhb
|
||||||
|
$ ls
|
||||||
|
128626 tvmwhq.wfn
|
||||||
|
$ cd ..
|
||||||
|
$ cd wcldzp
|
||||||
|
$ ls
|
||||||
|
dir ncq
|
||||||
|
dir twpq
|
||||||
|
$ cd ncq
|
||||||
|
$ ls
|
||||||
|
dir wrtw
|
||||||
|
$ cd wrtw
|
||||||
|
$ ls
|
||||||
|
133331 fcqrwd
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd twpq
|
||||||
|
$ ls
|
||||||
|
151811 fcqrwd
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ccsfws
|
||||||
|
$ ls
|
||||||
|
100548 twpq.ppm
|
||||||
|
$ cd ..
|
||||||
|
$ cd wwfgbzqh
|
||||||
|
$ ls
|
||||||
|
dir lmw
|
||||||
|
dir mfms
|
||||||
|
dir pjbjgbcl
|
||||||
|
204154 qtflzwm
|
||||||
|
226500 vdmjj.htj
|
||||||
|
dir wzqbwr
|
||||||
|
$ cd lmw
|
||||||
|
$ ls
|
||||||
|
dir bgl
|
||||||
|
95150 dncdssn.hdr
|
||||||
|
119653 frqqdsr.hbf
|
||||||
|
97941 hjpmqrq
|
||||||
|
dir jqthwzj
|
||||||
|
$ cd bgl
|
||||||
|
$ ls
|
||||||
|
dir lmw
|
||||||
|
dir rrqjwpm
|
||||||
|
$ cd lmw
|
||||||
|
$ ls
|
||||||
|
233655 wmdldvbz
|
||||||
|
$ cd ..
|
||||||
|
$ cd rrqjwpm
|
||||||
|
$ ls
|
||||||
|
242918 frqqdsr.hbf
|
||||||
|
227581 hjpmqrq
|
||||||
|
dir hsvnmlp
|
||||||
|
dir nsch
|
||||||
|
25524 pbb.zln
|
||||||
|
dir qlgg
|
||||||
|
dir twpq
|
||||||
|
67453 twpq.fms
|
||||||
|
$ cd hsvnmlp
|
||||||
|
$ ls
|
||||||
|
264517 pbb.zln
|
||||||
|
$ cd ..
|
||||||
|
$ cd nsch
|
||||||
|
$ ls
|
||||||
|
7898 cmsdzh
|
||||||
|
233270 dmpsnhdh.bsq
|
||||||
|
101256 frl
|
||||||
|
133902 jzvh.vdv
|
||||||
|
dir lmw
|
||||||
|
dir sgjsg
|
||||||
|
130245 wcftvft
|
||||||
|
$ cd lmw
|
||||||
|
$ ls
|
||||||
|
69572 bnjnc.csp
|
||||||
|
$ cd ..
|
||||||
|
$ cd sgjsg
|
||||||
|
$ ls
|
||||||
|
38856 tnzpz.tbq
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd qlgg
|
||||||
|
$ ls
|
||||||
|
276013 frbstg.pzb
|
||||||
|
$ cd ..
|
||||||
|
$ cd twpq
|
||||||
|
$ ls
|
||||||
|
136454 fhwz.bqb
|
||||||
|
94099 rglp
|
||||||
|
114026 tsrt.cbd
|
||||||
|
26252 zhclpzm.rqf
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd jqthwzj
|
||||||
|
$ ls
|
||||||
|
128200 lmw.btl
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd mfms
|
||||||
|
$ ls
|
||||||
|
274935 dmpsnhdh
|
||||||
|
76547 lchwq.dsd
|
||||||
|
215701 pbb.zln
|
||||||
|
dir rmwtvjt
|
||||||
|
$ cd rmwtvjt
|
||||||
|
$ ls
|
||||||
|
74490 hjpmqrq
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd pjbjgbcl
|
||||||
|
$ ls
|
||||||
|
231757 cjcpwwc.wbf
|
||||||
|
dir cswvftzs
|
||||||
|
dir jtvtg
|
||||||
|
dir lmw
|
||||||
|
dir tnctbjr
|
||||||
|
dir tqsrfhdr
|
||||||
|
$ cd cswvftzs
|
||||||
|
$ ls
|
||||||
|
dir dchqnbns
|
||||||
|
dir smf
|
||||||
|
$ cd dchqnbns
|
||||||
|
$ ls
|
||||||
|
94111 szl.hqs
|
||||||
|
$ cd ..
|
||||||
|
$ cd smf
|
||||||
|
$ ls
|
||||||
|
dir dlnsgvl
|
||||||
|
dir zglt
|
||||||
|
$ cd dlnsgvl
|
||||||
|
$ ls
|
||||||
|
dir dsz
|
||||||
|
$ cd dsz
|
||||||
|
$ ls
|
||||||
|
156473 hjpmqrq
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd zglt
|
||||||
|
$ ls
|
||||||
|
295383 frgg.sdp
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd jtvtg
|
||||||
|
$ ls
|
||||||
|
202254 bftv.rqb
|
||||||
|
58419 lmw
|
||||||
|
$ cd ..
|
||||||
|
$ cd lmw
|
||||||
|
$ ls
|
||||||
|
8097 fcqrwd
|
||||||
|
$ cd ..
|
||||||
|
$ cd tnctbjr
|
||||||
|
$ ls
|
||||||
|
250830 frqqdsr.hbf
|
||||||
|
dir gzrcqr
|
||||||
|
$ cd gzrcqr
|
||||||
|
$ ls
|
||||||
|
dir fnzgsnv
|
||||||
|
$ cd fnzgsnv
|
||||||
|
$ ls
|
||||||
|
117215 hjpmqrq
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd tqsrfhdr
|
||||||
|
$ ls
|
||||||
|
96381 lmw
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd wzqbwr
|
||||||
|
$ ls
|
||||||
|
149066 dmpsnhdh.vnd
|
||||||
|
dir dpbcgfdr
|
||||||
|
dir swp
|
||||||
|
14495 twpq.gsb
|
||||||
|
dir zhj
|
||||||
|
$ cd dpbcgfdr
|
||||||
|
$ ls
|
||||||
|
12909 dmpsnhdh
|
||||||
|
dir jvn
|
||||||
|
173491 mnhpr.lpr
|
||||||
|
222018 rfqfjmd.jqq
|
||||||
|
205077 wbbdrpr.hzj
|
||||||
|
dir wzpbbbhm
|
||||||
|
$ cd jvn
|
||||||
|
$ ls
|
||||||
|
117656 vqddrqlq.nfd
|
||||||
|
233109 vqqvh.swz
|
||||||
|
$ cd ..
|
||||||
|
$ cd wzpbbbhm
|
||||||
|
$ ls
|
||||||
|
143534 pbb.zln
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd swp
|
||||||
|
$ ls
|
||||||
|
131295 pbb.zln
|
||||||
|
$ cd ..
|
||||||
|
$ cd zhj
|
||||||
|
$ ls
|
||||||
|
166268 pbb.zln
|
||||||
|
33734 rrqjwpm.blg
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd twpq
|
||||||
|
$ ls
|
||||||
|
dir bppvlwqs
|
||||||
|
dir bvh
|
||||||
|
dir rmcdr
|
||||||
|
dir tdn
|
||||||
|
2230 whb.lfb
|
||||||
|
dir wwtwnvh
|
||||||
|
$ cd bppvlwqs
|
||||||
|
$ ls
|
||||||
|
195026 hvlhgsw
|
||||||
|
279259 rrqjwpm
|
||||||
|
$ cd ..
|
||||||
|
$ cd bvh
|
||||||
|
$ ls
|
||||||
|
dir lmw
|
||||||
|
$ cd lmw
|
||||||
|
$ ls
|
||||||
|
66958 pdqnd
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd rmcdr
|
||||||
|
$ ls
|
||||||
|
dir dmpsnhdh
|
||||||
|
182930 grj
|
||||||
|
dir pmrdhrth
|
||||||
|
119725 qpcqclqh
|
||||||
|
77890 sjgfjz
|
||||||
|
142855 twpq
|
||||||
|
dir zbmcrvbh
|
||||||
|
$ cd dmpsnhdh
|
||||||
|
$ ls
|
||||||
|
dir rrqjwpm
|
||||||
|
188474 zgjzpbl.vgv
|
||||||
|
$ cd rrqjwpm
|
||||||
|
$ ls
|
||||||
|
dir bnl
|
||||||
|
dir lmw
|
||||||
|
7598 vsntvs.pdv
|
||||||
|
$ cd bnl
|
||||||
|
$ ls
|
||||||
|
245600 lmw.mgf
|
||||||
|
$ cd ..
|
||||||
|
$ cd lmw
|
||||||
|
$ ls
|
||||||
|
73396 hjpmqrq
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd pmrdhrth
|
||||||
|
$ ls
|
||||||
|
173155 rrqjwpm.pjw
|
||||||
|
178530 smgpzs.qtj
|
||||||
|
$ cd ..
|
||||||
|
$ cd zbmcrvbh
|
||||||
|
$ ls
|
||||||
|
124201 fcqrwd
|
||||||
|
135578 hjpmqrq
|
||||||
|
54356 hnztplsp.qlh
|
||||||
|
dir lmw
|
||||||
|
58350 pbb.zln
|
||||||
|
dir qfrvdm
|
||||||
|
dir rcg
|
||||||
|
15267 rwbzjpt.djn
|
||||||
|
$ cd lmw
|
||||||
|
$ ls
|
||||||
|
dir bbbll
|
||||||
|
28362 bfgfwlf.wvg
|
||||||
|
229637 dmpndms.fln
|
||||||
|
146121 dncdssn.hdr
|
||||||
|
131039 frqqdsr.hbf
|
||||||
|
152805 hjpmqrq
|
||||||
|
dir mlz
|
||||||
|
$ cd bbbll
|
||||||
|
$ ls
|
||||||
|
169940 dncdssn.hdr
|
||||||
|
216888 pbb.zln
|
||||||
|
248369 tjpmlr.vmf
|
||||||
|
$ cd ..
|
||||||
|
$ cd mlz
|
||||||
|
$ ls
|
||||||
|
115167 bhfv.fts
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd qfrvdm
|
||||||
|
$ ls
|
||||||
|
284564 pbb.zln
|
||||||
|
$ cd ..
|
||||||
|
$ cd rcg
|
||||||
|
$ ls
|
||||||
|
dir sqzjz
|
||||||
|
$ cd sqzjz
|
||||||
|
$ ls
|
||||||
|
116435 jrstpcpl.zsq
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd tdn
|
||||||
|
$ ls
|
||||||
|
143971 cmg
|
||||||
|
133317 fcqrwd
|
||||||
|
dir pstpclp
|
||||||
|
133161 tddv
|
||||||
|
$ cd pstpclp
|
||||||
|
$ ls
|
||||||
|
267351 hjpmqrq
|
||||||
|
86930 rrqjwpm.dvl
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd wwtwnvh
|
||||||
|
$ ls
|
||||||
|
256584 frqqdsr.hbf
|
||||||
|
114564 twpq.wrd
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd vlgsrtm
|
||||||
|
$ ls
|
||||||
|
148089 bnl.jzj
|
||||||
|
119796 cjfphsfw.hnd
|
||||||
|
197668 cpw
|
||||||
|
dir dmpsnhdh
|
||||||
|
dir fjsglr
|
||||||
|
dir lmw
|
||||||
|
dir lqgrft
|
||||||
|
9231 pltdltrs
|
||||||
|
dir rmdp
|
||||||
|
109777 rncfff.fll
|
||||||
|
dir vgjzqjpq
|
||||||
|
dir ztnqnfnq
|
||||||
|
$ cd dmpsnhdh
|
||||||
|
$ ls
|
||||||
|
dir lltnrdtv
|
||||||
|
dir scthsg
|
||||||
|
$ cd lltnrdtv
|
||||||
|
$ ls
|
||||||
|
179511 pcvmpz
|
||||||
|
90913 tbr
|
||||||
|
$ cd ..
|
||||||
|
$ cd scthsg
|
||||||
|
$ ls
|
||||||
|
dir rrqjwpm
|
||||||
|
$ cd rrqjwpm
|
||||||
|
$ ls
|
||||||
|
188629 fcqrwd
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd fjsglr
|
||||||
|
$ ls
|
||||||
|
139754 fcqrwd
|
||||||
|
dir pnsjwfzc
|
||||||
|
$ cd pnsjwfzc
|
||||||
|
$ ls
|
||||||
|
113848 lmw
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd lmw
|
||||||
|
$ ls
|
||||||
|
54999 dmpsnhdh
|
||||||
|
dir ffhcf
|
||||||
|
251476 frqqdsr.hbf
|
||||||
|
dir jpgqspqw
|
||||||
|
198972 nhfclq.pbh
|
||||||
|
180380 nqmjnvc.fvr
|
||||||
|
dir pfsjwmbc
|
||||||
|
213768 rcvccgcd
|
||||||
|
$ cd ffhcf
|
||||||
|
$ ls
|
||||||
|
40478 svmwstq.sjj
|
||||||
|
$ cd ..
|
||||||
|
$ cd jpgqspqw
|
||||||
|
$ ls
|
||||||
|
22181 hjpmqrq
|
||||||
|
$ cd ..
|
||||||
|
$ cd pfsjwmbc
|
||||||
|
$ ls
|
||||||
|
dir bcvchw
|
||||||
|
$ cd bcvchw
|
||||||
|
$ ls
|
||||||
|
225892 bnl.nwc
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd lqgrft
|
||||||
|
$ ls
|
||||||
|
dir rrqjwpm
|
||||||
|
dir twpq
|
||||||
|
$ cd rrqjwpm
|
||||||
|
$ ls
|
||||||
|
54786 fcqrwd
|
||||||
|
3053 tthhqjm.ntd
|
||||||
|
$ cd ..
|
||||||
|
$ cd twpq
|
||||||
|
$ ls
|
||||||
|
109355 bnl
|
||||||
|
dir lmw
|
||||||
|
dir mhgqt
|
||||||
|
301291 rrqjwpm.lrm
|
||||||
|
271233 twpq.srp
|
||||||
|
$ cd lmw
|
||||||
|
$ ls
|
||||||
|
dir lmw
|
||||||
|
dir lngbszqm
|
||||||
|
$ cd lmw
|
||||||
|
$ ls
|
||||||
|
139640 pbb.zln
|
||||||
|
$ cd ..
|
||||||
|
$ cd lngbszqm
|
||||||
|
$ ls
|
||||||
|
98279 mqvq.gsj
|
||||||
|
283599 rvjd.dvt
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd mhgqt
|
||||||
|
$ ls
|
||||||
|
208165 fcqrwd
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd rmdp
|
||||||
|
$ ls
|
||||||
|
dir bqn
|
||||||
|
170956 fcqrwd
|
||||||
|
90954 snnttp.gld
|
||||||
|
$ cd bqn
|
||||||
|
$ ls
|
||||||
|
75628 hdrgbrpc
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd vgjzqjpq
|
||||||
|
$ ls
|
||||||
|
dir bnl
|
||||||
|
dir wpfw
|
||||||
|
$ cd bnl
|
||||||
|
$ ls
|
||||||
|
25911 pbb.zln
|
||||||
|
$ cd ..
|
||||||
|
$ cd wpfw
|
||||||
|
$ ls
|
||||||
|
247784 bzll.ltc
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ztnqnfnq
|
||||||
|
$ ls
|
||||||
|
dir dtpzsrfc
|
||||||
|
214055 srgzhp.nlr
|
||||||
|
$ cd dtpzsrfc
|
||||||
|
$ ls
|
||||||
|
142652 bhgwj
|
||||||
|
|
168
src/aoc2022/day07/mod.rs
Normal file
168
src/aoc2022/day07/mod.rs
Normal file
@ -0,0 +1,168 @@
|
|||||||
|
use std::{
|
||||||
|
cell::RefCell,
|
||||||
|
rc::{Rc, Weak},
|
||||||
|
};
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
enum NodeType {
|
||||||
|
File(usize),
|
||||||
|
Dir(RefCell<Vec<Rc<Node>>>),
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
struct Node {
|
||||||
|
name: String,
|
||||||
|
typ: NodeType,
|
||||||
|
parent: Weak<Node>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Node {
|
||||||
|
fn get_size(&self) -> usize {
|
||||||
|
let mut size = 0;
|
||||||
|
|
||||||
|
match &self.typ {
|
||||||
|
NodeType::File(filesize) => size = *filesize,
|
||||||
|
NodeType::Dir(dir_nodes) => {
|
||||||
|
for node in dir_nodes.borrow().iter() {
|
||||||
|
size += node.get_size()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
size
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn parse_input(input: &str) -> Rc<Node> {
|
||||||
|
let root_node: Rc<Node> = Rc::new(Node {
|
||||||
|
name: String::from("/"),
|
||||||
|
typ: NodeType::Dir(RefCell::new(Vec::new())),
|
||||||
|
parent: Weak::new(),
|
||||||
|
});
|
||||||
|
|
||||||
|
let mut current_dir: Rc<Node> = root_node.clone();
|
||||||
|
|
||||||
|
for line in input.lines() {
|
||||||
|
if line.is_empty() {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut split = line.split_whitespace();
|
||||||
|
let first = split.next().unwrap();
|
||||||
|
let second = split.next().unwrap();
|
||||||
|
|
||||||
|
match (first, second) {
|
||||||
|
("$", "cd") => {
|
||||||
|
let next = split.next().unwrap();
|
||||||
|
if next != "/" {
|
||||||
|
match next {
|
||||||
|
".." => {
|
||||||
|
let bla = current_dir.parent.upgrade().unwrap();
|
||||||
|
current_dir = bla;
|
||||||
|
}
|
||||||
|
dir => {
|
||||||
|
let mut new_dir = current_dir.clone();
|
||||||
|
if let NodeType::Dir(nodes) = ¤t_dir.typ {
|
||||||
|
new_dir = nodes
|
||||||
|
.borrow()
|
||||||
|
.iter()
|
||||||
|
.find(|n| n.name == dir)
|
||||||
|
.unwrap()
|
||||||
|
.clone();
|
||||||
|
}
|
||||||
|
current_dir = new_dir;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
("$", "ls") => (),
|
||||||
|
(typ_size, name) => {
|
||||||
|
if let Ok(size) = typ_size.parse::<usize>() {
|
||||||
|
let new_node = Node {
|
||||||
|
name: name.to_string(),
|
||||||
|
typ: NodeType::File(size),
|
||||||
|
parent: Rc::downgrade(¤t_dir),
|
||||||
|
};
|
||||||
|
|
||||||
|
if let NodeType::Dir(nodes) = ¤t_dir.typ {
|
||||||
|
nodes.borrow_mut().push(Rc::new(new_node));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
let new_node = Node {
|
||||||
|
name: name.to_string(),
|
||||||
|
typ: NodeType::Dir(RefCell::new(Vec::new())),
|
||||||
|
parent: Rc::downgrade(¤t_dir),
|
||||||
|
};
|
||||||
|
|
||||||
|
if let NodeType::Dir(nodes) = ¤t_dir.typ {
|
||||||
|
nodes.borrow_mut().push(Rc::new(new_node));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
root_node
|
||||||
|
}
|
||||||
|
|
||||||
|
fn find(node: Rc<Node>, max_size: usize) -> usize {
|
||||||
|
let mut total_size = 0;
|
||||||
|
|
||||||
|
if let NodeType::Dir(nodes) = &node.typ {
|
||||||
|
for node in nodes.borrow().iter() {
|
||||||
|
if let NodeType::Dir(_) = &node.typ {
|
||||||
|
let size = node.get_size();
|
||||||
|
if size < max_size {
|
||||||
|
total_size += size;
|
||||||
|
}
|
||||||
|
total_size += find(node.clone(), max_size);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
total_size
|
||||||
|
}
|
||||||
|
|
||||||
|
fn find_best_fit(node: Rc<Node>, size: usize) -> usize {
|
||||||
|
let mut actual_size = usize::MAX;
|
||||||
|
|
||||||
|
if let NodeType::Dir(nodes) = &node.typ {
|
||||||
|
for node in nodes.borrow().iter() {
|
||||||
|
if let NodeType::Dir(_) = &node.typ {
|
||||||
|
let node_size = node.get_size();
|
||||||
|
if node_size >= size {
|
||||||
|
if actual_size > node_size {
|
||||||
|
actual_size = node_size;
|
||||||
|
}
|
||||||
|
let deeper = find_best_fit(node.clone(), size);
|
||||||
|
|
||||||
|
if actual_size > deeper {
|
||||||
|
actual_size = deeper;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
actual_size
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn task_one(input: &str) -> String {
|
||||||
|
let root = parse_input(&input);
|
||||||
|
|
||||||
|
// if let NodeType::Dir(nodes) = &root.typ {
|
||||||
|
// println!("{:?}", nodes.borrow())
|
||||||
|
// }
|
||||||
|
|
||||||
|
find(root, 100_000).to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn task_two(input: &str) -> String {
|
||||||
|
const TOTAL_SPACE: usize = 70_000_000;
|
||||||
|
const REQUIRED_FREE_SPACE: usize = 30_000_000;
|
||||||
|
|
||||||
|
let root = parse_input(&input);
|
||||||
|
let required_space = REQUIRED_FREE_SPACE - (TOTAL_SPACE - root.get_size());
|
||||||
|
|
||||||
|
find_best_fit(root, required_space).to_string()
|
||||||
|
}
|
100
src/aoc2022/day08/input.txt
Normal file
100
src/aoc2022/day08/input.txt
Normal file
@ -0,0 +1,100 @@
|
|||||||
|
020111211022103023211142403044034010412103202221251542233334311102303044440313120021223120332211221
|
||||||
|
121001110111201102213124201444431204213221413222211111444444412110041144131210002230130121313101010
|
||||||
|
112010221202200121420032021412024323255214355122345552225213252324112400440302313420323102103100221
|
||||||
|
211022232121222123201224234031435144114512425232345144523531533222344004011342234110131312300332202
|
||||||
|
202103101023303021233104321411251553151424242531344221312225231225524421412434024103021300123300121
|
||||||
|
202122200002211022342141123051132352344252152315525324551424132421225143201002114204223302333232221
|
||||||
|
011310312223223421431113235421121321152124551441143435255214322514544552225412313011414423301132102
|
||||||
|
121331322013001133311000223433443341113554412556562564315233144532455221433431002003332002203013201
|
||||||
|
003201332004241133340023541532333131413153266664363423353232622124454254554345422200200433100333102
|
||||||
|
230030131344203011040552414515334144165664524445366334422626244444323115333252423443232113432003211
|
||||||
|
020300112334333142144323414353551436334563654426436625356343222253643212532215422020214344013310331
|
||||||
|
220002231221003314452445344223355655546325233543653632544634656464243551334233433413423044300230210
|
||||||
|
111022100242320043435324555421362243363346366346456252353246655455262455415331454531201000441410231
|
||||||
|
101232013434204241242451442362524554225656254252456532663634445256345634451144555513214431300213021
|
||||||
|
021113211441142541244515256653533353262654644343347336234522332254544443346322422154143020040021110
|
||||||
|
002032342223245141521455555365463263562446777664546776637635443223664266645633333231151132112140113
|
||||||
|
002033421301452414544444345232465536465366346553375665564756366435442422632435555111445311104203133
|
||||||
|
332303032232445231354236322622423634433537753546335477544636344436526324435436522445155410213401230
|
||||||
|
214021124335354212514535634245552337436663757533364556376776733565333462254562365531354214423412431
|
||||||
|
231123230423124441525624265443647673566756453545563655373357453547537663433453433212213223101140424
|
||||||
|
100211320333154123522263362425466444634667564437776546465446345667366445453365366551352122420231230
|
||||||
|
024400401554531424535342424657437377754456437376767656436366374765557746355562226364213315421212320
|
||||||
|
214442223135544515264335435467756354735433346664764464468465443746334373746425422542525455354340110
|
||||||
|
141333001441254326655252563743544735555378755475567457777687677357576573543344653346551442221242312
|
||||||
|
022033123224325536562464253467675635635678458757477754757874576653435356676234462564555551451230022
|
||||||
|
444402313413432333426636637636453646648557685556587678886878777785454364533433543362622525453201222
|
||||||
|
031024134513414333456224636475357556855564445765756678575486648885765563445546566235352311454320030
|
||||||
|
341331341415512452344636337436467675565575756658588888477584775646657736366434365523664142235144413
|
||||||
|
333344214132152543325563654447567486457556845676545687457688885466457333476777342344625323533242333
|
||||||
|
203124152315365546566375565336778768544768846599686578655665448478657834657533335544343231212251101
|
||||||
|
200144235323636235437557635373578555545475587655886585897998654658858755534374677344254563233421200
|
||||||
|
433243323452635426237436445738684446475489658878699879887988684656474746764334543334452565153341241
|
||||||
|
340411231113223465344733555465744685569658998876796578688888887678657675875533766464362432543531231
|
||||||
|
132155112416452662274535754677457567869597559977756878779755568868854644586734466764422245333151550
|
||||||
|
321153454153653654743477667888756477986578656976558879999589975695487876766664653466625262642234421
|
||||||
|
414524133155254243564664555445778475666688565697596679558768656758547564888437343772346336642515514
|
||||||
|
321251321324554554436434474754674597576658986766997798688766897876884764444653674674326233445555243
|
||||||
|
031553412663524646375654566887688857698655696699699989968699659665774657875735457664452362352111522
|
||||||
|
121541141642244257534355645887786995858959886778688769889987779898696567777567344373632655621545545
|
||||||
|
334343242432423553675774445756455759676757789677879778999988695976997447856786357655446656351514552
|
||||||
|
125145532643224566754564678556569669557567799868776897666898866898879866784847777744353546366314141
|
||||||
|
045114213352452647446647465888875868689699789677897977779999699895556776458746737674746244442322442
|
||||||
|
132343555663565436365447746478789879798676878686777999789966769777759954677478745673552645533545344
|
||||||
|
045253354653642556466557766588567888887978866878777776986676768968695857655674556463732652626443441
|
||||||
|
324411423536354677366485874488885578788769789998797978797888777868996895476778847746764226464355343
|
||||||
|
355421453642352476436787475855785669696986976979989787787998669696679989555875747556435562425323311
|
||||||
|
225422326356526465747344444546866698678986799879779799999876866969999686664477767757535635652555421
|
||||||
|
215234242322226376376776764668889755898766677787987779877967696689565966757675463574434246652622343
|
||||||
|
214252444222333767567367778585695867987669688798987987789888698888858597545545475573737453632634414
|
||||||
|
435144324646623745547785547465689576878976877888878988989877866686976879488454664357347554642541254
|
||||||
|
424224446333664566656688545685586987987699788897978888788999878967887869445474863534753362524653532
|
||||||
|
234521532264544735666677658457578679997886798878788998987976677895559685784445835563745433436535545
|
||||||
|
541253562333326733576345574569866788667878789897999998887996866685657897848485475437744246636412312
|
||||||
|
531515163362265375476387485646556857878999799999999989879989886696789765664474863474462523344554532
|
||||||
|
134323536435565375644658845476675857999867789999988888799986676978987577885467643356656525623333421
|
||||||
|
432434326635433776557758756889896978587689688777989999797796888999765958586488873373565325435254453
|
||||||
|
352344243543664654777655867556767767686778796989888798998697976755779565488844544677343523234525134
|
||||||
|
023522455223435563774634466685769765877876776996699877886876668865856964846675357575675235445525211
|
||||||
|
452211123455454466574537744568597875596879779869788776669767986968956557448486336534544244456115451
|
||||||
|
154255352645344566574476875484685575595898898697799799688669879869766768688476473673634645556554324
|
||||||
|
153224532366353377543578485765465665577767776999977978876879865565957587758448456773452265664315213
|
||||||
|
212223354662352476456344644856876756566976677698968768897897866997679566845464663374352444344522513
|
||||||
|
333134124655526377555445475778655559695856687767878889687866969787796886748547665457422543622531314
|
||||||
|
114114243655626456537464558857564557866777897897898988696885586978887448448543375665233363532515252
|
||||||
|
022123225426235336675765546686448888566865666569876966556979869667956845877753374733454555422452344
|
||||||
|
105112231544246463366336777688875488697685796985999888976956985978664485756743456372244565641412542
|
||||||
|
243421525526425322655767646868764584599579555769857975877669799998745668566534743565233224245452434
|
||||||
|
310412235133463356343754335447454467578555798898788997569756589585876868467475435524433556255213522
|
||||||
|
122253434533466554567356664688567676567976599967878669868967997845484546736534545734455626245154423
|
||||||
|
313334534424352263526466637778587787868565658999559897596678677574858776343543534432632333531241224
|
||||||
|
001031252124265545567437743765668445564487997555965858678954577555545545743366457636433553523254344
|
||||||
|
044305452425444342246365565576568644874888888677955886697487686854588744354437555336664241413533111
|
||||||
|
110113123534526242542645447354547688467557884774478677887477777586654656653436654455626314334324023
|
||||||
|
403311355254242426345425533745657486754657454674877454647844866774463676664344325662334351444144012
|
||||||
|
114043453225323265365363357353773386544675474785655464585675566555543364665665355442555535443420344
|
||||||
|
234021355512324262426566274773756436677647664566764646854655875476556464746532226425352124354233001
|
||||||
|
104234323224222234534254555373773666356744475886877868685764755374634533664662562645321154355101301
|
||||||
|
413312132345313224565423553463467666456365585778746647466885776356666677636556254365513311121044324
|
||||||
|
010140223145323354554344523347476477547564757555585887484666633663433654743326266555221322431333120
|
||||||
|
023311233225342421354662654347733666374666336373663635367447753577353743232632663243333251551031321
|
||||||
|
143043334422453221246324462653756444767736544367544755375437335646557334655533644454121143303220002
|
||||||
|
101212344011254432246625336226267546745356655577456676377355677475746633565634244145133154032123242
|
||||||
|
233244204414154431434433222525444454344635736634774576466473546373725623264634363324244114303014300
|
||||||
|
010103422332213512154554324533443662535535356636747655647737636354525554536436123454141421414030443
|
||||||
|
203123300244432323224135253642444433566335637575443374634433336553444225543564152215332533001133230
|
||||||
|
213003230312403552352142145445635666323653353353657647435752235322633623453542112525124011312421020
|
||||||
|
120004434213011143254452233425222536464236356544634635324242345464353322232141135221424123200431123
|
||||||
|
331000214011314431233211121223425334456246345226324246526344536556636556453143153253323114441131132
|
||||||
|
303123142412333143322451153243464566344362342525524265432552566442626262524431454151443133021301210
|
||||||
|
220100102032004440315125323552226234566265233246334556355333643662354455122325544112124232340231031
|
||||||
|
112122312031202424345533512342151435534325334444254264542526645645533111234131131223411304322200110
|
||||||
|
213031212133401330114433121533455425225634422363334633454623522242353342455454511303033230433202120
|
||||||
|
223232022333401311421344332255311133421254642562465526534445512134533413153142410113101444330132130
|
||||||
|
020133013100324344342244215442123125243314222446342424421353134352515124333133430431401122202211032
|
||||||
|
102300310001014311443112031115242425132234255215315523551534154524134344433432201022200432133000302
|
||||||
|
001233311232134334100401400151532231322435145412132433235254313414243334103312232304403111313321210
|
||||||
|
110213022233310011220103432114343112114222424442543155552411511144115122143322304023012132213011210
|
||||||
|
000220123220323122321103444304134551331233141552114422121151224211122042434324042030120133230110110
|
||||||
|
020120232301110331441234422110132302233413123211331413433254521355004032312110222131010330301222211
|
||||||
|
|
133
src/aoc2022/day08/mod.rs
Normal file
133
src/aoc2022/day08/mod.rs
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
const COLUMNS: usize = 99;
|
||||||
|
const ROWS: usize = 99;
|
||||||
|
|
||||||
|
fn parse_into_grid(input: &str) -> [[u8; COLUMNS]; ROWS] {
|
||||||
|
let mut grid: [[u8; COLUMNS]; ROWS] = [[0; COLUMNS]; ROWS];
|
||||||
|
|
||||||
|
for (i, line) in input.trim().lines().enumerate() {
|
||||||
|
for (j, char) in line.chars().enumerate() {
|
||||||
|
grid[i][j] = char.to_digit(10).unwrap() as u8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// println!("{:?}", grid);
|
||||||
|
|
||||||
|
grid
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn task_one(input: &str) -> String {
|
||||||
|
let mut visible_trees = 0;
|
||||||
|
let grid = parse_into_grid(&input);
|
||||||
|
|
||||||
|
for i in 0..ROWS {
|
||||||
|
for j in 0..COLUMNS {
|
||||||
|
let tree = grid[i][j];
|
||||||
|
|
||||||
|
// check upwards
|
||||||
|
let mut visible_up = true;
|
||||||
|
for k in 0..i {
|
||||||
|
if grid[k][j] >= tree {
|
||||||
|
visible_up = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// check to the right
|
||||||
|
let mut visible_right = true;
|
||||||
|
for k in j..COLUMNS {
|
||||||
|
if k == j {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if grid[i][k] >= tree {
|
||||||
|
visible_right = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// check downwards
|
||||||
|
let mut visible_down = true;
|
||||||
|
for k in i..ROWS {
|
||||||
|
if k == i {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if grid[k][j] >= tree {
|
||||||
|
visible_down = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// check to the left
|
||||||
|
let mut visible_left = true;
|
||||||
|
for k in 0..j {
|
||||||
|
if grid[i][k] >= tree {
|
||||||
|
visible_left = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if visible_up || visible_right || visible_down || visible_left {
|
||||||
|
visible_trees += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
visible_trees.to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn task_two(input: &str) -> String {
|
||||||
|
let mut score = 0;
|
||||||
|
let grid = parse_into_grid(&input);
|
||||||
|
|
||||||
|
for i in 0..ROWS {
|
||||||
|
for j in 0..COLUMNS {
|
||||||
|
let tree = grid[i][j];
|
||||||
|
|
||||||
|
// check upwards
|
||||||
|
let mut visible_up = 0;
|
||||||
|
for k in (0..i).rev() {
|
||||||
|
visible_up += 1;
|
||||||
|
if grid[k][j] >= tree {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// check to the right
|
||||||
|
let mut visible_right = 0;
|
||||||
|
for k in (j + 1)..COLUMNS {
|
||||||
|
visible_right += 1;
|
||||||
|
if grid[i][k] >= tree {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// check downwards
|
||||||
|
let mut visible_down = 0;
|
||||||
|
for k in (i + 1)..ROWS {
|
||||||
|
visible_down += 1;
|
||||||
|
if grid[k][j] >= tree {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// check to the left
|
||||||
|
let mut visible_left = 0;
|
||||||
|
for k in (0..j).rev() {
|
||||||
|
visible_left += 1;
|
||||||
|
if grid[i][k] >= tree {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let new_score = visible_up * visible_right * visible_down * visible_left;
|
||||||
|
if new_score > score {
|
||||||
|
score = new_score;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
score.to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_example() {
|
||||||
|
// set ROWS and COLUMNS to 5 for the test to pass
|
||||||
|
let input = "30373\n25512\n65332\n33549\n35390\n";
|
||||||
|
|
||||||
|
assert_eq!(task_two(&input), 8.to_string());
|
||||||
|
}
|
2001
src/aoc2022/day09/input.txt
Normal file
2001
src/aoc2022/day09/input.txt
Normal file
File diff suppressed because it is too large
Load Diff
168
src/aoc2022/day09/mod.rs
Normal file
168
src/aoc2022/day09/mod.rs
Normal file
@ -0,0 +1,168 @@
|
|||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
fn move_tail(head: &(isize, isize), mut tail: (isize, isize)) -> (isize, isize) {
|
||||||
|
if head.0 == tail.0 && head.1 == tail.1 {
|
||||||
|
// same spot, wich is fine
|
||||||
|
} else if head.1 == tail.1 {
|
||||||
|
// x coords are different -> horizontal movement
|
||||||
|
if tail.0 + 2 == head.0 {
|
||||||
|
tail.0 = tail.0 + 1;
|
||||||
|
} else if tail.0 - 2 == head.0 {
|
||||||
|
tail.0 = tail.0 - 1;
|
||||||
|
}
|
||||||
|
} else if head.0 == tail.0 {
|
||||||
|
// y coords are different -> vertical movement
|
||||||
|
if tail.1 + 2 == head.1 {
|
||||||
|
tail.1 = tail.1 + 1;
|
||||||
|
} else if tail.1 - 2 == head.1 {
|
||||||
|
tail.1 = tail.1 - 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// both coords are different -> horizontal and vertical movement
|
||||||
|
if head.0 == tail.0 + 1 {
|
||||||
|
if head.1 == tail.1 + 2 {
|
||||||
|
tail.0 = tail.0 + 1;
|
||||||
|
tail.1 = tail.1 + 1;
|
||||||
|
} else if head.1 == tail.1 - 2 {
|
||||||
|
tail.0 = tail.0 + 1;
|
||||||
|
tail.1 = tail.1 - 1;
|
||||||
|
}
|
||||||
|
} else if head.0 == tail.0 - 1 {
|
||||||
|
if head.1 == tail.1 + 2 {
|
||||||
|
tail.0 = tail.0 - 1;
|
||||||
|
tail.1 = tail.1 + 1;
|
||||||
|
} else if head.1 == tail.1 - 2 {
|
||||||
|
tail.0 = tail.0 - 1;
|
||||||
|
tail.1 = tail.1 - 1;
|
||||||
|
}
|
||||||
|
} else if head.0 == tail.0 + 2 {
|
||||||
|
if head.1 == tail.1 + 1 {
|
||||||
|
tail.0 = tail.0 + 1;
|
||||||
|
tail.1 = tail.1 + 1;
|
||||||
|
} else if head.1 == tail.1 - 1 {
|
||||||
|
tail.0 = tail.0 + 1;
|
||||||
|
tail.1 = tail.1 - 1;
|
||||||
|
}
|
||||||
|
} else if head.0 == tail.0 - 2 {
|
||||||
|
if head.1 == tail.1 + 1 {
|
||||||
|
tail.0 = tail.0 - 1;
|
||||||
|
tail.1 = tail.1 + 1;
|
||||||
|
} else if head.1 == tail.1 - 1 {
|
||||||
|
tail.0 = tail.0 - 1;
|
||||||
|
tail.1 = tail.1 - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
tail
|
||||||
|
}
|
||||||
|
pub fn task_one(input: &str) -> String {
|
||||||
|
let mut visited_places: HashMap<(isize, isize), u8> = HashMap::new();
|
||||||
|
let mut head = (0, 0);
|
||||||
|
let mut tail = (0, 0);
|
||||||
|
|
||||||
|
visited_places.insert(tail, 0);
|
||||||
|
|
||||||
|
for line in input.trim().lines() {
|
||||||
|
match line.split_once(" ").unwrap() {
|
||||||
|
("U", count) => {
|
||||||
|
for _ in 1..=count.parse::<usize>().unwrap() {
|
||||||
|
head.1 = head.1 + 1;
|
||||||
|
|
||||||
|
tail = move_tail(&head, tail);
|
||||||
|
|
||||||
|
visited_places.insert(tail, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
("R", count) => {
|
||||||
|
for _ in 1..=count.parse::<usize>().unwrap() {
|
||||||
|
head.0 = head.0 + 1;
|
||||||
|
|
||||||
|
tail = move_tail(&head, tail);
|
||||||
|
|
||||||
|
visited_places.insert(tail, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
("D", count) => {
|
||||||
|
for _ in 1..=count.parse::<usize>().unwrap() {
|
||||||
|
head.1 = head.1 - 1;
|
||||||
|
|
||||||
|
tail = move_tail(&head, tail);
|
||||||
|
|
||||||
|
visited_places.insert(tail, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
("L", count) => {
|
||||||
|
for _ in 1..=count.parse::<usize>().unwrap() {
|
||||||
|
head.0 = head.0 - 1;
|
||||||
|
|
||||||
|
tail = move_tail(&head, tail);
|
||||||
|
|
||||||
|
visited_places.insert(tail, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
(_, _) => panic!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
visited_places.len().to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn task_two(input: &str) -> String {
|
||||||
|
let mut visited_places: HashMap<(isize, isize), u8> = HashMap::new();
|
||||||
|
let mut knots: [(isize, isize); 10] = [(0, 0); 10];
|
||||||
|
|
||||||
|
visited_places.insert(knots[9], 0);
|
||||||
|
|
||||||
|
for line in input.trim().lines() {
|
||||||
|
match line.split_once(" ").unwrap() {
|
||||||
|
("U", count) => {
|
||||||
|
for _ in 1..=count.parse::<usize>().unwrap() {
|
||||||
|
knots[0].1 = knots[0].1 + 1;
|
||||||
|
|
||||||
|
for i in 1..10 {
|
||||||
|
knots[i] = move_tail(&knots[i - 1], knots[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
visited_places.insert(knots[9], 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
("R", count) => {
|
||||||
|
for _ in 1..=count.parse::<usize>().unwrap() {
|
||||||
|
knots[0].0 = knots[0].0 + 1;
|
||||||
|
|
||||||
|
for i in 1..10 {
|
||||||
|
knots[i] = move_tail(&knots[i - 1], knots[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
visited_places.insert(knots[9], 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
("D", count) => {
|
||||||
|
for _ in 1..=count.parse::<usize>().unwrap() {
|
||||||
|
knots[0].1 = knots[0].1 - 1;
|
||||||
|
|
||||||
|
for i in 1..10 {
|
||||||
|
knots[i] = move_tail(&knots[i - 1], knots[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
visited_places.insert(knots[9], 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
("L", count) => {
|
||||||
|
for _ in 1..=count.parse::<usize>().unwrap() {
|
||||||
|
knots[0].0 = knots[0].0 - 1;
|
||||||
|
|
||||||
|
for i in 1..10 {
|
||||||
|
knots[i] = move_tail(&knots[i - 1], knots[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
visited_places.insert(knots[9], 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
(_, _) => panic!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
visited_places.len().to_string()
|
||||||
|
}
|
139
src/aoc2022/day10/input.txt
Normal file
139
src/aoc2022/day10/input.txt
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
noop
|
||||||
|
addx 24
|
||||||
|
addx -19
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
addx 5
|
||||||
|
addx -1
|
||||||
|
addx 5
|
||||||
|
addx 1
|
||||||
|
addx 14
|
||||||
|
addx -9
|
||||||
|
addx -1
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx -20
|
||||||
|
addx 24
|
||||||
|
addx -36
|
||||||
|
addx -2
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx 21
|
||||||
|
addx -16
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx 15
|
||||||
|
addx -14
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx -4
|
||||||
|
addx 5
|
||||||
|
addx -8
|
||||||
|
addx 15
|
||||||
|
addx 2
|
||||||
|
addx 3
|
||||||
|
addx -2
|
||||||
|
addx -38
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx 4
|
||||||
|
noop
|
||||||
|
addx 7
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -2
|
||||||
|
addx 5
|
||||||
|
addx -16
|
||||||
|
addx 21
|
||||||
|
noop
|
||||||
|
addx -10
|
||||||
|
addx 11
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx 4
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -6
|
||||||
|
addx 7
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx -36
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
addx 20
|
||||||
|
addx -19
|
||||||
|
addx 5
|
||||||
|
addx 4
|
||||||
|
noop
|
||||||
|
addx -2
|
||||||
|
addx 3
|
||||||
|
noop
|
||||||
|
addx 4
|
||||||
|
noop
|
||||||
|
addx -1
|
||||||
|
addx 5
|
||||||
|
addx 3
|
||||||
|
addx -28
|
||||||
|
addx 30
|
||||||
|
noop
|
||||||
|
addx 6
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
addx -38
|
||||||
|
addx 40
|
||||||
|
addx -33
|
||||||
|
addx 20
|
||||||
|
addx -19
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
addx 28
|
||||||
|
addx -23
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx 2
|
||||||
|
addx 3
|
||||||
|
addx -2
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx -7
|
||||||
|
addx 12
|
||||||
|
addx -2
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx -38
|
||||||
|
noop
|
||||||
|
addx 24
|
||||||
|
addx -17
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
addx -8
|
||||||
|
addx 13
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx 6
|
||||||
|
addx -5
|
||||||
|
addx 4
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
|
77
src/aoc2022/day10/mod.rs
Normal file
77
src/aoc2022/day10/mod.rs
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
pub fn task_one(input: &str) -> String {
|
||||||
|
let mut x = 1;
|
||||||
|
let mut cycles: Vec<isize> = Vec::new();
|
||||||
|
|
||||||
|
for line in input.trim().lines() {
|
||||||
|
let mut split = line.split_whitespace();
|
||||||
|
|
||||||
|
match split.next().unwrap() {
|
||||||
|
"noop" => {
|
||||||
|
cycles.push(x);
|
||||||
|
}
|
||||||
|
"addx" => {
|
||||||
|
cycles.push(x);
|
||||||
|
cycles.push(x);
|
||||||
|
x += split.next().unwrap().parse::<isize>().unwrap();
|
||||||
|
}
|
||||||
|
_ => panic!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let interesing: Vec<usize> = vec![20, 60, 100, 140, 180, 220];
|
||||||
|
let mut sum = 0;
|
||||||
|
|
||||||
|
for i in interesing {
|
||||||
|
sum += cycles[i - 1].checked_mul(i as isize).unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
sum.to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn task_two(input: &str) -> String {
|
||||||
|
let mut x = 1;
|
||||||
|
let mut cycle = 1;
|
||||||
|
let mut output: Vec<char> = Vec::new();
|
||||||
|
|
||||||
|
for line in input.trim().lines() {
|
||||||
|
let mut split = line.split_whitespace();
|
||||||
|
|
||||||
|
match split.next().unwrap() {
|
||||||
|
"noop" => {
|
||||||
|
if (x - 1) <= cycle % 40 && cycle % 40 <= (x + 1) {
|
||||||
|
output.push('#');
|
||||||
|
} else {
|
||||||
|
output.push('.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"addx" => {
|
||||||
|
if (x - 1) <= cycle % 40 && cycle % 40 <= (x + 1) {
|
||||||
|
output.push('#');
|
||||||
|
} else {
|
||||||
|
output.push('.');
|
||||||
|
}
|
||||||
|
|
||||||
|
cycle += 1;
|
||||||
|
|
||||||
|
x += split.next().unwrap().parse::<isize>().unwrap();
|
||||||
|
|
||||||
|
if (x - 1) <= cycle % 40 && cycle % 40 <= (x + 1) {
|
||||||
|
output.push('#');
|
||||||
|
} else {
|
||||||
|
output.push('.');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => panic!(),
|
||||||
|
}
|
||||||
|
|
||||||
|
cycle += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("{}", String::from_iter(output.get(0..40).unwrap().iter()));
|
||||||
|
println!("{}", String::from_iter(output.get(40..80).unwrap().iter()));
|
||||||
|
println!("{}", String::from_iter(output.get(80..120).unwrap().iter()));
|
||||||
|
println!("{}", String::from_iter(output.get(120..160).unwrap().iter()));
|
||||||
|
println!("{}", String::from_iter(output.get(160..200).unwrap().iter()));
|
||||||
|
println!("{}", String::from_iter(output.get(200..240).unwrap().iter()));
|
||||||
|
"print above PBZGRAZA".to_string()
|
||||||
|
}
|
@ -1,2 +1,10 @@
|
|||||||
pub mod day01;
|
pub mod day01;
|
||||||
pub mod day02;
|
pub mod day02;
|
||||||
|
pub mod day03;
|
||||||
|
pub mod day04;
|
||||||
|
pub mod day05;
|
||||||
|
pub mod day06;
|
||||||
|
pub mod day07;
|
||||||
|
pub mod day08;
|
||||||
|
pub mod day09;
|
||||||
|
pub mod day10;
|
||||||
|
24
src/main.rs
24
src/main.rs
@ -42,4 +42,28 @@ fn main() {
|
|||||||
|
|
||||||
puzzle = Puzzle { day: 2, year: 2022, task_one: aoc2022::day02::task_one, task_two: aoc2022::day02::task_two };
|
puzzle = Puzzle { day: 2, year: 2022, task_one: aoc2022::day02::task_one, task_two: aoc2022::day02::task_two };
|
||||||
puzzle.solve_and_print();
|
puzzle.solve_and_print();
|
||||||
|
|
||||||
|
puzzle = Puzzle { day: 3, year: 2022, task_one: aoc2022::day03::task_one, task_two: aoc2022::day03::task_two };
|
||||||
|
puzzle.solve_and_print();
|
||||||
|
|
||||||
|
puzzle = Puzzle { day: 4, year: 2022, task_one: aoc2022::day04::task_one, task_two: aoc2022::day04::task_two };
|
||||||
|
puzzle.solve_and_print();
|
||||||
|
|
||||||
|
puzzle = Puzzle { day: 5, year: 2022, task_one: aoc2022::day05::task_one, task_two: aoc2022::day05::task_two };
|
||||||
|
puzzle.solve_and_print();
|
||||||
|
|
||||||
|
puzzle = Puzzle { day: 6, year: 2022, task_one: aoc2022::day06::task_one, task_two: aoc2022::day06::task_two };
|
||||||
|
puzzle.solve_and_print();
|
||||||
|
|
||||||
|
puzzle = Puzzle { day: 7, year: 2022, task_one: aoc2022::day07::task_one, task_two: aoc2022::day07::task_two };
|
||||||
|
puzzle.solve_and_print();
|
||||||
|
|
||||||
|
puzzle = Puzzle { day: 8, year: 2022, task_one: aoc2022::day08::task_one, task_two: aoc2022::day08::task_two };
|
||||||
|
puzzle.solve_and_print();
|
||||||
|
|
||||||
|
puzzle = Puzzle { day: 9, year: 2022, task_one: aoc2022::day09::task_one, task_two: aoc2022::day09::task_two };
|
||||||
|
puzzle.solve_and_print();
|
||||||
|
|
||||||
|
puzzle = Puzzle { day: 10, year: 2022, task_one: aoc2022::day10::task_one, task_two: aoc2022::day10::task_two };
|
||||||
|
puzzle.solve_and_print();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user