Compare commits

...

10 Commits

Author SHA1 Message Date
705eb5b2b2 aoc2022 day10 part two 2022-12-11 22:56:18 +01:00
c191f67b95 aoc2022 day 10 part one 2022-12-10 18:15:36 +01:00
Max Hohlfeld
0a9b91e0f3 aoc2022 day09 part one 2022-12-09 11:42:16 +01:00
Max Hohlfeld
f6ad00ad27 aoc2022 day08 part 2 2022-12-09 09:07:26 +01:00
Max Hohlfeld
4ff915e241 aoc2022 day08 part 1 2022-12-08 15:28:39 +01:00
Max Hohlfeld
6228313f04 aoc2022 day08 2022-12-08 13:48:00 +01:00
Max Hohlfeld
f1d6f6c0f0 aoc2022 day 06 2022-12-06 09:09:29 +01:00
Max Hohlfeld
f7712f98ea aoc2022 day 05 2022-12-05 17:16:06 +01:00
228a746208 aoc2022 day 04 2022-12-04 23:11:36 +01:00
9c21f2eae4 aoc2022 day 03 2022-12-04 22:32:20 +01:00
19 changed files with 5942 additions and 0 deletions

View File

@ -1,2 +1,8 @@
# Advent of Code
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
View 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
View 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

File diff suppressed because it is too large Load Diff

61
src/aoc2022/day04/mod.rs Normal file
View 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
View 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
View 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
}

View File

@ -0,0 +1,2 @@
cdhccdbdggfjjgssjzjzggjnjpnpbbzbnzzflfjfnfrrpvrvbrvvrvggvlvnnbrnrcncsnndbndbnndbdndfdrdvrvvndvvbggnrrnbrnntffgttwzwnnmvmcvvhsstzzlnlwlttbzzpnpmnnjvjnntmnmfftwwrfwrwswmmfrrfrrgbrbffwvvshvhrhmhththbbmqbmqqlslhssrmmqdmmjtmtmjtmjtttnwnvwvqwqjjnbbbdbqbnbpnbnllglcglcgcdczdznnqhhfthtmtlldqlqrrmddrldlzdllvddjcddqfqbqsbqqnllwppqpqzzrbbdppzsppjdpdqpdqdfqfrrwbwrwwqcqcsqsvvpbvbbztzptzzpccdtdhdffvqvcvzzmwzwddjfdffplplqlvlmmmvggpmpvpddpbptplpvlplvpvvnrvnnbqqqjhhwfhwfhwhqhmmpphqpqvppfzpzjzddgzzwffjmjggwhwwnnmlmpmmhcmcpcrcddvzvpzzwnznfznffgdgvddvtvgvsvdsdbbjnjtntbnttgbbbvgvgrgrzrvzrzddlsddcndcnnfqnnmpmlppdlplzplzpzgzmzmddlvlnnbttbwwhbhdhfdfssjppmcpplpdddnpdnnljlwjljsjnjhnhvhvqqsffrbbdttjdjndjdwwsfspffnhfhhlvhvmmqjmmwzwszwwvdvpdvdbdtdsdtsshvvmtvmtmctclchccrllznzfffpjjvhhdmhhvphpghgsgmmhlhnlnmnlnslnlgngznnsqnqddllpwllmzmjmttptfpplglqlgglgqqptqqmvmtmjmddcchbblltslsvsmvmgghmmccnzcztczzmnmttrdrvvcvzvvzllbhllnldndbbqffbbgtgddbtdbbzttdptpccjnjppbllbzlblrlcllhrrhqhgqqbcqcvcdvvnnzfzvzttrptrrwmrmlrlddvttdbtdbdcdvccwlcwwhphmppwfppclpcllgqgnghhvfflfggrzrcchfhhrdhrdhdnhnmmhjjwqjjpmmwvmmdnmnzzqmqwwmtthtdhtthnnqhqdhqqndqqwffsbspbptpmmndnllsmmdhmhfhnhjhghshlslppbgpgngddlsljsjmmzqzhhswhssfzssfqqcmqcmqcmmqggjcjvvgssrccwddmpmwwdfdpdbdpdwdvvqfvfrvvvsbvbhvvmqqcjqqvzqzppncnhhqnnpgplpqqpjpbblpbbbshsthhvfhfmmqzmmznnvrvqrrwdrdlrlwlttzqttjvttqltqqnfqqqwjqwwqttfstftjffsqqnhhnsnqqhggbsgghfgglslmssqlqhlhthqhccdsspsnssshbbnmngnnhllwclcffqllsrszrssnqsqvqjvjcvcttqgqbqmmfqfsqfsqswwvcvffndnfdfvfcvvggsmsfmfwfpfwwzhznntgtlglmmlfmllwrlrwwhcchqchhznzjjcdjdbjjhcjcscwwlnnsgngqqtgqgngnwgnnhqnnhchmchhtchcnclcmccgffbmmzvvrnngwwvddzccnjntjtwjwwztwtmtddjddpsptpbpbvvbwwnlnmndmnmdnnclnnbsbddpfdfvvjtjqqtqqqzjzlzqllzzwwlppvfffpcffffprrncnnzsnznhhwvvqhqphpjjgqqvnnmdmqqglqlblgglrlsspscsjjpvpbpjjwccslsppdjpdjjwvjjmhjhtjjwqqbqjqzjqzqpqbbswwlssqzssbjjpjqjbbjcjpjspjssjjzhhhnjhnhbnhhwzhzwlcshqlqpzgggzmcwntcwmfgtrwwjdpnbdqqcgnzgbdrzdmpwgvtvqffqbpvjpjrcfswffllnvnwvhclpjcwqwgnwqwvwsfgflrgzzsswffwjdjgvdvlgmczcbthwbvhggwzwlzfmhvwvjpbpnhcczbgfhhgghsmjwnvnsvnvmqwstrgnncwbqgbqpgdngllcqnzgwswpgtwzgqzggnzsdgltrlqfctqfvlzdswccfpdtjbfnrbqsmpjclnplbmqbmvwbzzdflwbqrljvzjpcrmnqsmrpqlmfsgcmthqpwgwzvmrjnhqczljcpnzjbwzrhjrzmcqpmlbzhgmqrlzsjbjsvcmcngptzlrthwsrjrlmsrgjlzrvpzwmprwnpgvjtspsppfvwfwcvbnqcwwmzlbqthqmbnbmnsnzgsbbnqtrvhlzjhphclpjzrdblszrnftqgwwrhpznhjhgrncvsvrmtmmgssvzddjfrnrzhbrqrfffjvzrqdnrdbvjwgrvlcpbncfgczlwdggsjmwzhndcdbggjvwfljctjnsjwczwfdrfttbhnlswfdbpcnwpspdhnzwqbgdswwpccbpfpgmfmvvwpzbzqsbbjbfnhjpszcbnrdplmwtdjtpcsztdjcmczltnstzwlcdbtdhsdgsgtlvdfqggfmmrppjfrmtfwhpbjsppszjbhmthndqmvbmqcbtqsltwrcvlvblwspbgspjftwllzcmnsrvjpnstzrfmcflnhppsdfggwbzvnvlnjqlfvrlplnzvfrwvgcgqvnpfgtgchctvhcplclzmfpwgnfhqjgglfmsgpflqcpqmbbhwnvvdllcnhblpnndbdtmgvfbvvvlvzlrpfqmnvzbfrssjtlgcjtpfznshvdjrjnfshfcgvwcdbqlfsbhnzwmsgwhpbzttgfjsqgwvdmbdwjljhsndrbbzfrsqjhcbldzqpmtnfvnmzltjcrvrltwshnhqlnclmcnfpbzstsczlqmfmdftzfbcwqnhqppzfbzpbfjhmmtvtbmblmtshsbtjlvsqvmbmgstbbdmhprqmtpfdqqntmnlbmpsmwfgrvstjcllhwpcddnljdjvdrbwqmgrjnldpgnrhgqpzqrvwzsngrgnbpjnsffzjsbdptwnnfcqlscfhvggpfstsnqzcjbqqhgdpqsrlprcppgqmddpqpbnvgwtdqsbbgtvsqfrtqfsbdzhsztfmvwrrsjcbtcjgzrnhnpgldtwbwgmwbgmjjzsbbzlhgmlczrhjwtzrgwscmjvlstprldhglvftqzbtrmcwzgtjppbnjcdvjvcwvdbngnbrmjvvtnwdqfclbpgzcfnnnlnngtgmhsqsdmbjctjzjpbrwrhscqshmmwbtfnzjgsrjlnqqdsvdrjdzsdprphnfmwwcztqfcrjvnfhlvnqwbrfmcvhrbtgvcrqjjfcnzwmlfzzdcbbzvphhmsdltwjfdcgthpvszqzjdbfwrpvhbjqdhrscnvjhjvvcldnhgjclmzpbrrwnscgpcqrpdgsnjnwhctcdqgwqbrcszfzpmtdrhlftvwffdjrtznqrppqbdbwvzmtlpvsqqpcngjgfdrpngnspdwhhvlhqrtsphgqrlldggtrvqsprbfdmrpgcmqphdvjfmhlznpgtqlvtnllcdhzhhtjjlfvdlwhcrfmjmdjtmbllvsfgvmfqtqlmrlrjmqptszvjdpzhphppljnpjdjpwlrclssgdnstchhwhpflmlrtdqvqbbljrmnflrltzpqmgqfrczvfzrpfsrwsgpljvjfjdjdvjchcdmmtjgghqspwzdtwqgtvmnrrbfbgnhcrvnzznrdlqmgmdwmpwzlqdjtvpszwnjtjtmjqvfwvftlhgpvgzswpbvbllfcwpjnsmbhzrdpdzjsrpnhphdcqjmzvvhrjcwhgwjwcshqwzpbpmfnjjvqcjrqmvsrdrtdvfhwhrbpvrqrsfzflslqtdrtcsggtzmpvbszdgttlvpwwltvpcwqmnwqtpcfzgsvsmncvpqqdrljfwtncplmjlpfcnqmcctwzhrbmrfwvsrjsbnhjrjmrnbmmnnhsvlltwzzhsgwppnlmljgpcsmpchdjdzpgvrtwsfzffhnlbfmrldzbshvpqhnfzpwnvczgfvhbntcpztwqlfgtsmdhvcrgjhvqrhbpvbpzcpbgzrcfjztbnfjptbzfpztwprwf

50
src/aoc2022/day06/mod.rs Normal file
View 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
View 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
View 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) = &current_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(&current_dir),
};
if let NodeType::Dir(nodes) = &current_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(&current_dir),
};
if let NodeType::Dir(nodes) = &current_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
View 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
View 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

File diff suppressed because it is too large Load Diff

168
src/aoc2022/day09/mod.rs Normal file
View 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
View 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
View 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()
}

View File

@ -1,2 +1,10 @@
pub mod day01;
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;

View File

@ -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.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();
}