Compare commits

...

10 Commits

17 changed files with 4905 additions and 114 deletions

View File

@ -134,24 +134,6 @@
<ClCompile Include="src\days\day05.cpp" /> <ClCompile Include="src\days\day05.cpp" />
<ClCompile Include="src\days\day06.cpp" /> <ClCompile Include="src\days\day06.cpp" />
<ClCompile Include="src\days\day07.cpp" /> <ClCompile Include="src\days\day07.cpp" />
<ClCompile Include="src\days\day08.cpp" />
<ClCompile Include="src\days\day09.cpp" />
<ClCompile Include="src\days\day10.cpp" />
<ClCompile Include="src\days\day11.cpp" />
<ClCompile Include="src\days\day12.cpp" />
<ClCompile Include="src\days\day13.cpp" />
<ClCompile Include="src\days\day14.cpp" />
<ClCompile Include="src\days\day15.cpp" />
<ClCompile Include="src\days\day16.cpp" />
<ClCompile Include="src\days\day17.cpp" />
<ClCompile Include="src\days\day18.cpp" />
<ClCompile Include="src\days\day19.cpp" />
<ClCompile Include="src\days\day20.cpp" />
<ClCompile Include="src\days\day21.cpp" />
<ClCompile Include="src\days\day22.cpp" />
<ClCompile Include="src\days\day23.cpp" />
<ClCompile Include="src\days\day24.cpp" />
<ClCompile Include="src\days\day25.cpp" />
<ClCompile Include="src\main.cpp" /> <ClCompile Include="src\main.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@ -33,64 +33,10 @@
<ClCompile Include="src\days\day05.cpp"> <ClCompile Include="src\days\day05.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\days\day07.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\days\day06.cpp"> <ClCompile Include="src\days\day06.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="src\days\day08.cpp"> <ClCompile Include="src\days\day07.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\days\day09.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\days\day10.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\days\day11.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\days\day12.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\days\day13.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\days\day14.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\days\day16.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\days\day15.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\days\day17.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\days\day18.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\days\day19.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\days\day20.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\days\day21.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\days\day22.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\days\day23.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\days\day24.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="src\days\day25.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
</ItemGroup> </ItemGroup>

View File

@ -4,4 +4,11 @@ This repository is for my attempt of [Advent of Code 2022](https://adventofcode.
This year I will be attempting it in C++, hopefully I can do better than last year. This year I will be attempting it in C++, hopefully I can do better than last year.
Got to Challenge 18 in [2021](https://git.luke-else.co.uk/luke-else/AdventOfCode2021) and started to struggle. Managed to a couple of part 1s afterwards but ended up calling it at day 21. Got to Challenge 18 in [2021](https://git.luke-else.co.uk/luke-else/AdventOfCode2021) and started to struggle. Managed to a couple of part 1s afterwards but ended up calling it at day 21.
> ### 12/12/22
>
> Over the past week, I have been incredibly busy with work and studying for Uni exams and so I haven't really had the time to
> complete the challenges. I would still like to complete the challenges, however, will probably have to do it amongst studies
> and so won't be able to do them as they come out.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,300 @@
GbccTtTSGGbgrcWBGGrdgTnVQnCmNpCJlNnNPVfClcnN
vMzvZhzhwDLVmQnClwwNQp
FRsZFzjQFsqRzRRjDZbdtTgdHBBWGrdBdHHs
HCLTmbCLgzNBNPSSlT
JJGMWRJMrrdwWWGjGWMLRGLjBzNQsBzPPfflzDPBsBffDrQz
pwJdLMjdMddWjLtwZWMMwGtHhnvnCnhvqVFFZnvbgbqVCZ
tvMCDCSVVvDDBQFRbqWMMsWgFWgc
BLLPTpBmfLPrHLLfLsbhRqbzRRcRHgqssR
dfdNLmPTdNZmZdZPfpmTJLPPSvQjtSGVwQSDJSjSwDQBVCGw
wZWTWNFqzwZbWNpSgGMVMtTHsgGs
nlnPnPvLQjzdtsjBHBMMGSHg
LdnrrLnhRdLLmLDRPvmdQnJDJWNqcCqZJZqfFqfcfzcq
vPTbfWggzvGVqjsVqV
dDcJHZcZHmMFQQMshsjcRqVChjNtqh
dDHJDmFnrJmQFnBdMdQHJdZZlWTTPPjTLWbTzLWlTTfwjzBT
VfmDHDfZzfLcZLLLHBFQtRJTcdjgdTgFjjtR
WRPhMlGSshPRGgvFMtddTjjCQt
SPhWPsbNWShsWllswGpzLmzfZwmZfqLVRrDBZB
MtZgRgJJbbGjgDDgbjRjRbGcNdWwncBFdLBBMhFBQwnWnw
vlpsNVsCzzfHpvTpzlSSSvppcQdfnwnWhndWndwfQLhnhcFQ
pCsCCTHVvSzvPvHvzpPVTVHHRJJDgJZjJjqNmjZmDtJRZPNR
GTGTbhhPjJJjBhhZsGzmfHSNsmHHgSdL
FcFpMDFDRFfsRHSjmLjR
CpFjqcCjwjnpwhTPTWBQZZTb
zdzzwDlnTDQQQQnqQqqsFqnrSBSprbpjNJJBJPPdpJfbZb
hgMcRVGMtHgRcNSPrpfgfjJpBp
CLRHVHhtvtvGPWFFDqPDLnqP
jssjjjHCSGCMNJTWWCJT
DvcvBtVrrDSNWcMfLRfM
ppDZSpBhBvBmvDHnFsHHPnGPGbQp
VVVLsLWnjVVBGgScjtBjjLLgmJdPmJmfmhmGmmmNmJGhPNJP
QbqlZqQTZvMHmshvFhPfffFp
CsTRrQrwbCbrZqQTQlRjtDBSBtwBjgVWLBtgBt
FLsSFRTPscHZmGRGGc
npNNptgttCNpgLbnQMgnQnMNqVhGqZrmrmmqrmcrqmCVZwqH
WMWbtpjLgnLNvSfPPzjvjPdv
FcFFhZlhlMrHlSFSrHZMJZSVmmLmVLLCsBtLBCzCBVDRcV
PMGPbndvGfGstLzDCmLB
NwjPqdvPpvgddqgwHrZhJlTlThpWJMZp
SdjStScTWTwwvwwfjRhQPQQQDlLBGpLrPrLrLc
gCqJbNsVsNMgzMJnnqzNlCLGGlZZPrLLlLLtpPDl
JsFJFMmbJqqnJbhSHdjWwjtmHWvS
zBFDGGbNzDWRbDccsWslHlWWsJcS
zMVqTwzPfVfVMwmlcZTZZlSmTlmc
MrMvMCnrMVMCPrPnDFFGgQdFgRdzznbd
rJtJnrnSShJgcCsjjNNMSSDzRmzm
HWDWPBPDBfFVBffqplvlmNlQllvzQNQqlN
FVGHHFVbwBpBPwFFGfBpHVDgrcJCbZcLdCgtcCcJLJrd
MGHGGFFqbFTGmFwLmQsQflFN
WcvBdpjhdZdNwdZwLZ
vWtgVcpvjthtNcjntDhhpSJMSqHzqTzqCVHTSqHPGT
cVHZfjfZMcrSDQMJRCBCQw
PtGddtslsWQDBdwCDDdw
WsvTFnshPTGhGhhlPNGTCnsjgFVfmgfHZfVHgcHZVVFmFV
JFFqfJBgrHBffVHlsBFqfWNgjTtztNnttWWvWNwzwt
hGZbcBcZZSQmZLQRTbvNttTzjtTvbpzv
cmmhRchPZhZSSmdmGPDDdJdBVMffHlqlslfF
qWwTNwNHMHNNMRqMdRMQQMHLmmvzrTmrzPvzJvZvZlvzjZ
FphBpnBhVBSFvLljzZPpmrPL
nGsBbssbcbdlwggdNl
RLSRTLSFFFLPSWpzzTJdzsQpbd
DvqqcwVMDDcfrrnwDcwnvCdpQQphJhJjhdhpzsJhMQ
fGcvDZffcGGZDHGrGrtJRPlPmJSlPLRgNBHg
QlFFmGQFDQrrWlRlWGrnQVCLNvvPwLCwBvCcCcJCLCCm
tHtfsjSMCNPwzvCf
MjqStqMHsMSgjShjTttgphsTlrbDWGDrGlRTlNDbQrQRWRbD
QbChcCJCbHQCjbGCjQfsdsrtTqrfTLrcFftd
DwRzVzzZnzZRwvgRhRWtqsLLWtRdqLLdqd
NMwMzBVVPPSGQhBl
ttTPHWdrJjCdjnFMtLLtLNvQltLh
pSDBwZRBBsgfDGGsGpBVMFPQQlFMFQQFQfNvLNfF
PsppZzBVzwgDwBwwgpSSBssWjqrdCnjjHdmCTHznWCJJWn
WcdHdPcdZrLPDPBQDg
pMjMMqfmJlqNflMlFNRfLBwnLzTTTDJJwDTTGTLJ
hlhbqpbNNbVVdbZtSB
RDBWGRDnzBWBJDNBttSLlclldtQQcTTLFF
rTPVjZZsCZrVhdFMcgLgwFSgQh
PsjHVffbsTCHrCvTPfDJGJHNzzNJWnnnmzDB
LQdFgTLdQjVsQFTRBjMZrmBjWGMGSW
flvJJlJpbNnppCpMGGfBBZSZRfFmGr
NNbNDNlbDpHlbDDplvzvnCbzqsQPFQsTTccsqdQqLgdHLwQw
DnGDNDTFdFwDzCZZRmhThCRRRv
SgrPLrrLsBPbHBCmtVZVCdCcctHH
rSbgBrsqgsPppMBqfpPsLpPGlNGGDwNFNJWDldlllDwJMG
PWbvNWvpvJPnWDGqDjDczj
QwfFFVVQSMlDlQfFZhsHrBrhHHTcjnczqjzqrG
mwMSgfmDmSSFgfFNbmLpbRbJbvbRpC
lsggLLLDGldGTGBBhNTCwRwVnJnNCCnbRV
QQpWrpHtrHrpNRRJNtfbJCVR
PvQQFPzccvBglclNscls
NsszMMNGWLcWBhMF
gTtwvbqfnDTdpvqDftpnnntDZvLFQFBLmRWFRhJZJhLLBRQB
DwrpDbngprPWGllSNrSS
nCqdLPZPMMZLNvtGhRmGhGPmtW
TSrVZVSZVwFTgSVtrtchvWRRrtWtcr
gjbjBjgTjfgfVfHHppBLMnqLMDnqClsZJLLD
hrqShCPCpHHBVBGWQFVQGFGnzQDf
tgvZsbwsbcMbRsgccjDGFvGFfWJLLzFFQJ
TTZmMcgmbmWZMctbbtsHrrqqSHHrCrPBBSCPrT
HHHNZLGLpBpRSvWlGlqhPghqDGnnFr
QCNCMTJdjMjdjsQTbdQmmCQDngFqnggPFcPcnPFcDqcbDn
MNJfzNsfJdJjdzwMNjjTJttSHVStRtZVwHvWRWtZHt
DSbvDdDbbwHgCSgZPwpbPgmTTJhsTTChqTJssQssFmJJ
zzjMNNGMMRcNNhvnvFqmtJJv
WWffvlVrcGzGlcjLvfrVRLHgHgpDPSbPpwwHbWbBbPPH
FCCjjFlFtCjzlpTHtJsQTTcpTT
DWLhWSgDWWdSWLwmmpHHQTHcBTBvvwHvHl
mgGRhrLLgWqnjrfCNlzP
cLsslBlsqNNTHlTVNbLZZLRCQbZZdQdpbP
JGfJhhwfwBBSJPRdZddpZRQbfR
hWmWGgDhJrFhBcWsssWHvHll
lmmvlJFtMHFtQzVSRbPGzLJRgG
BcTcrNBrrwwqDBqNqwcrhLpLPVzRhPRPPPgSGVPLbS
TrDqcnsTcsmnvHtdGtMW
CcnDQpSDcnFcPBrmbPQGBsGB
gCtCfRZTBWbjPRbr
qgvHqgJhMfZTtvHgfTghJgMJDpdppFSLLCcSDvLLcdDwvLcw
ffFgGRMWSTGcnDgllDDpDp
dvSdHBrVSLNVLjdlsllcsDqpsZ
SHHHNrLJLvtNQJVvmMfGRGGRCJWJRwzWMh
JNpNDfDBDHVzwHHzpzBWVBPsvsFNCbmbqsFFNsjCmvsmNC
rnnrtLhnrrQZMvtFbWmqtllcFb
GQRdGQLLhMSQhZLZdgdwwHzPDzSVWzVDwJDVpz
LdcGjgdcrMDSFGVfnnGG
HNsCCQFCPvFFBJnnSBJVfDVJwf
HHFRqHPpNppmQPcpLjzrdgtbgztT
GlZZbclGZsDvlGhsShRnCnMQtjtQjnCQsQRM
PggFVcdFNFNNVVFLPdPdrwpWBMMnqMpnttJMnjMnQqtqQtqq
FdgcdcLwfTmSGTmhlbzG
RGvhGrLhhRhlpChZrGSprBdPPHJJSBgSSHqBWBBffH
mQmjmwtTMTVLzHnTPWffPHHJBf
jMmmwMcVcFLFrlRshZbCrF
SnNgNgBlNZSZdZtMrlnSnnQtjpwFwpvFJwFqpwSbqjjqGRpv
CLCcWHLhLTzsDPcCWMLGpFJbGFwsbvGwJwjpRv
zMCTPhmHWzfhQQmndNllNrQg
dbdBdZrQsrdrGslrrSpLvwHmlTmmwScTHv
FgnJqLDLWqNnNpppmpCSSmCJTw
NNhhnRNfzMhgnMDFfGdGLbBVVdQRtPVZGt
BBQJNTTzTcfRhtjhffqDDWCC
vZnsLsVLSvPwPFFnwPlSPgZWqGjChgWCCWWCMCgGMh
srLLnLmlPwrrPwmwwvlRqzQRJBmppQTTQpTdBN
PLDpZGpWbNGWLDfQmsQDwwsmhm
vTzMMbgCfgHQsmQt
VMlRznlzVnTcFzbMcrpJcNrJdjdpZrLdcZ
SftvFcDSvDHsFtctMSvbdjbpqpRRpRTJrMdrrb
QzQZWZnQgQZwBBwsJdqPjdjrnTpJjs
NGmwmgszhZwwGGgZGmggWLVSVHlNVVtDcDltFVVVlVHt
WCfFBfBHHjHHjgHBjJFVcVRwQMbVrRhrJbRRJM
sZMsDqzZPRrRrVswdc
vvTzDzpDTvpDvZPvSnNZZlSHMCHjjFtWmlttlCjmCF
hJZwhrvhBJRrPQPwRRZLllgLqfcqpTggpcTWMTff
HHDzMztbVgTzNpgf
nGbmtjDMFjDjCHbbbHHHdBQQPBrZvJQRwvwRPZQJGs
NNSrMSHRqWpWNNrNMvLffTBBDmsvcmcJLM
lwPPhcddcGPlBDTDlmDvJJsv
bZhzCdPGGFzVVPwVwbNtcqHrpnpZptSZqRrt
GvvSWhmhWBNcBDNc
FzlRRTljjRTjRRmZfbflRTlFFrrMrcBcDVqBVsNDDJsMFr
bttRfzfRHzjlmlnCbTtzbRShgwHGGvppLdpvwLLGLLhd
MHGMWdBFFNsFFHpWSFddMmqVmVBggmlVfbVffjgZml
hcJsTTscvsLDzDJmqVgfqbqnbmfJbJ
PvRTzsPwLcwCprSdwdNW
qfJnJdLpJzrcqCrCzcGfpRSSVBPRSjSSllTNRBdTRS
DbsbtggsbbsghhgvnWWSlVjPSjmmPBtjPNlTmS
vHHHHDHvZHQvWbWsZDgWhDwWzpfGfzfcpFJzczwFJrfffnGC
sQvsRQsFZvfpGhjhQqjpZvjGJHgngPBNHnCBJBCmSBmBNG
HTHwbtdTDDnCTPTT
zwMlVdzbzLzMWvQZRQZfZZlHsR
QhzWwRBPHgFrWWrH
SDgJCCDCsVpMMqTtFpfpqG
gJNCCddSZNSlljQzPPNBzR
dLzVVjfLGCCdRPrdmBtwWttr
NnbNsbTHJnbHbSHlNQsNtwrJRwBMMBhrPJWZRRtM
QSslpFvpSSsQPFCDqqgzcjCj
fcpGshsfNcNZsmRjNqCtnFgbCgHrrggmrn
QvzBlBBQBdJTBzBwVVMgbrwwLFtLtgLFHCHrbF
dlQQMBSSTPZfPcfssZNC
gNGVMzVpVVTdPDWdRdNT
BfjbnCBjBzffHrbrzBDddQWTZZQTTJTQTHHS
zrFncfBjcjnrrlCLwFgpmvFmwGmVLh
MbngccTfWgbWcTTzZghmLshhLRttpthRDLtf
CdFdJHCJjBvBSCNCNJBjjdjpsPDwDtwvptRPmLmzRwhhLR
qJSCCBFHQBFFldrVZZbggnGTzcZQ
lPrpppllcwwpHprppNdfLbQJnWdLJnncdN
tSjjjSSDGgghRbbSTfTbTFTLQn
jCBgDMbBMGghZzCZmmlrrpwp
FhCDFvvPwCjcLhDjhnvjnsdfZTlflQlflLsppdQfld
zPNSmmHrSSHWBNSMMVGzfGfZTZQZzdpdRGZR
WSNVVMMVtHSVbMNWBHqmwcvhcgwgvwtPvgtPDjtw
jSSSjzZMmgSzzwmZBtHcHmtNdncHtnpNcn
VsLsRsJJsTfRVfLRLJlfLlWqNbDcddncvpvbdvcnpqdpdtHq
GQQTsJGGJLlRGJFWffWLhgZwrZBZFZrhtBjrjjZw
ZfzJPvPnLvRJRfZLDfjfrBcqrgsgDBrcrGgslsms
SNhpqSNhpVTNQSMNgWmrlccVGBBmwrBw
QHHFhhNdTNHHfZPFqtqPRtjq
PMZSPSZZGMspsLhLRqRVzfGjvF
tcwwgcgbcbCrtbbtmQQcCqRffFLhRgqjFjRfhFqhqz
CLQtcbcmwmbdrbBrlrCwQTsTPsPsZNBPNWJpZWpTss
lMTrcHrhChWnRzJrznnr
DDJbPwjLJpfBQjPVBpbsGVGVWnZnsqnZsnzsqZ
wJQLbpPJDLfgPbDNCHNlghNCMhcNcl
tlVZhlVWtnBltVtssZBBbPbcpdPwbPWfvcbLvbbb
NwCTFNFDNdSNPpLpfN
CGwRjwDjzFFGRGjjFRjlBtZqMzVVtVqhMZMBZn
HhFdMFHhgrdjcZtZjr
zvvQQvzwzDMjZTjtcrTDtt
BwMwSvQSVlzQlMQzwzNgGHPGGHFCCCgGhsHLCS
zMVtBhhVhhDhtzBtMTTfDrPbmRRmPbQmrQbNQGRQtR
vLlJHgnLpDvHHvHvmPbSQbQRGmJmPRrb
pspwHClCwqplsHqDsMMTFWsWfjzszf
CmmjLwWSWGCHCjwSmStJBgQcccBhwgQtgthQ
WZVFTpqWsMsZpFddzszbVzJQBnRtrQthchdBgtgRtdrc
bbsMTWsMVsZqNZMpqWDqbMsCjvlCfjGCPlLLPLCmSCfCLN
VzsjjVGhpjJrJHCppprt
WtMnqtWdSQDtMRSnLNHHwHwQvrJrJCPN
tTtWSScTddBqdRMmlsbFBfhVBhfjjF
gLMWzdTgLFQHdlMgMRwcwhqqvPcPhVFRDF
tBnGrSCZNZCrtGBsSNGtBPhcgfchqqDPwVPRvNRqwN
CmrgstjZngtBzbjJlQWWHjjM
qttwGWHtVPzJJPqbmb
NrRvfTTghNrpLrrpLTrNrRrhvJmzmzlbbVVbdbdZlDdvzMPb
rfcprNcfgpLrVNnnCcnnscstFGCF
ZZhTfggZsbshGrfshMrNMCSRMMWqCqMNRq
TVTJPDTFccqMCcJw
BBLBmLTLDHFvsQpfgnZhbQvG
ffSrFvVVmVCQSfVDFzDvDDmmnGWCRqGRWNNqlttnRsNtGnWW
PgZQgPJJpTpTHRGtNRGWqZMWWR
wdTdwgbPJTJgTgLSFBbrQvSrFrVS
ppssshsscCVCHhVWVpznnQRBnZnBbzczFPRS
dqqfJGWttfWGlwwPSbFbZnRFPFtFZS
wGwdGdddLfGgMTJfwLMlJMpTCChjHhjTHpjjhmsDHmHW
PZQBhRPQBQrWHFHqHFHCqh
STQSvvvppzSVHJJFWjHC
TTgTvbsbszcNnnvbncvRGPBRtRgQrDPLfftPPR
dMltttpQhmQVZdmhsdrvNCHvlWbHWvHCWrlr
PzzLTGpGPDzFBzqFGFqFvHWHvRJbbrbWvCvjJCLv
BpqTBzpzfGGTTPZtSddtQmVffSst
bwHbRZldhQQfDWWGDjBf
CzvgpsNMsvCvFvpszpnMsFgBTDBDWPnPVJJZZDJnfjDTff
CpcLsFrMZbhRcdmt
HgjpWlhzpWjhWTQPFdPBRQzTMQ
JsfwrqLttwJVLGhRQGGPBd
CttfrqDmDDtCsbZCHjhZHSHNlgcW
QSdCWlCRhWRdlrlZrDssZsGDbv
pjPrpjqFNrZNGnBbsNDG
wjjVHjfLQRCgdLrC
PjMpRdBdjMSGsjpdprqtwCrNGrrNlthhrG
WQzDzLZDgzZcqlqqrtJclJnh
zbWHQHDfDWZHfLZHfffWVZpRSPpdVvBSPMqVMPjdvspS
TMBJLTJlFHBjFFtMGngpvvpgvQmtNSNngv
bVhsZswRCbbVZWVfVZwVSpmSQPPvNHwPHmgmSSNN
dCCVZZcbWVVcCbbfsLrdjFMJdDDHBTMrjr
vNWcTWnCqNCPPjhhHsQrfgszrTJRQsfRQD
wLdwMBLFBBQJpszJBqzB
lLwVmMSmttVMlSNqcbcbSbNcvHbh
PVfJfDWrPVPPLcPPFWcjPrqlqqQsljRpplqBQpRvSQvs
NdggMTCChMgdChNmdtTbtmsQSRhQslhlpFRpFwllwQvw
CdnGzbGbgMGMdTCZZDDJcZFDDnWrPH
fsshhnfLZSvcVbdcZVJj
RCCSmDFFpRqHQDgWvbGjgjDdbG
pFmFtCSBCSMBBLwrPsBPNlNB
fWWcwbbwbWfGCPgPfvbwgvgcQQqQLsGLJQTZHHrZRsrLqlJs
VnszmsDBpMFpzNFlrlRLRRHZqRHr
VpdzDMNzNDjpsdzdnzDcPCwtWCjhbthvfgtgwP
SPQtSWDLLltQQctHLSBSWHlWgFwhMRsgwggrFJPgdgwwGJhJ
nCqmfVqfVjTznCMhsGRRRgGFMffw
mCnNTVzVvjmqNtlDtbttDlBM
LjctjtppFWmgthgs
nBrNvzTqlDJlbbZgvmhMZVZb
JJrnTrrgGDqDPwwSPHPpfjRdPc
sTQmCmmVqmJHSTjGdMMfMNNvNHvc
rFbzlLLWWPzwlWrlbwzrWbRvdfFjdjpvjfFNNMccphCvhN
rrWzrwzPBBBCZTJgZg
gffvjftWddzZtbvdNvgZLwBBMJLSWMDMDDBRWRmS
PqPqpqcCnCpVqlClTQQmPMDwPRJJBLLLhS
VCGqlHmmHsjtHNsZ
mmMlVllWmhmmBzzLGMWlBmpstptPRRZpPMFJSpRsFRFs
DgjnndQcNTCCCDNcdSRSdtZPfwfwJSJJ
gQjCQqQjHNnjDCgHNcZGZLhHzrLVLGzlrGmb
JfwfJpBgJSMphZqtqDDG
QcQrssrGCcMCVcMc
RnljPRnPjWbGRbjnjbvmSzwHfHgwfJHzdLFSwBFW
sBjbHCBCnjvsJCHBsbvwwJGfRNFFFfFGTcrVFffNHRTP
zDqdpqMgMtgzthgDtQmzGPTVSTVrVGTFSVFFqNRF
zDLdphmmLhMhDhQdlzgLLbjCnWswWWlrZJBswCJJZl
FMNrQFgrVwmrpJMwMTMPflbsHPTtlSbftSjCbC
zGnGnhnGzDqRLnZLHNHbbbHDlltNSjCl
nzddcRzzBnRRvRRhvnQFpmpgggJVcVmMQmgN
CCpMlhwwpJpdBlsdcjvtZDFrtmRqmDrsmv
gzVPbjSPfSPTTTPnWVSbbvDQZZDZrFWDvFDvmvQQmZ
LTbLTPgnTzLVPNNGnNTgVNPlGdHHCphMwHMwjMphlpjccl
rMMrqcrmJqJqmCsTPWWGGPzPlPPrGL
fnwqwwZwRnVlWWnzWBWlDP
jvVHvqfpJmhtHJtH
NLMVQjRNTJCTJtZTJc
DlGlGHvFHGDgcFCtfhCJFtZc
DBHGGGSDvGDPHWBGdBbSvgWDNVMjLLRnmNmjPLNPNcRQVnjj
tsGdTJdJtNllzjGRzm
HZvvDLLWqbBBMRMRNjVhHRmn
vZDCvqqgBDZZjbZDrWqBvpdpFpcdpCJcPTSJJtptpP

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -0,0 +1 @@
rdzrddbgdbbqtbqbrrznznjzjjctcbtttrvrwwsvwssjfjcjnjzzqgzgzsggfddvnnrbbwgwfwgfgpgrprgrprmmqjmqmvmlmmgjmmgqmqppqgqlqmllszsmzzwfzfqzzgcccmggvfgvvzlvzlznnjfjsscrsrprcrscsqsfqfggrrhccpnpwphwhchfhtfhttzpzwzjzqzjjqjdqqnvqnqjqbqcbqccdllbcblbjljgjbgbhhgphghjhrrvbrvbrvvfggwbwnnghgwhhpbpgphpnpgpqqzvqzqtzzngzngnjnnffgbgbvvjvqvwwqnwqnnvrnnfgfttcftcfczzpbbdlbdbhbssrggtfgfbgfgfnffqsfqfcqqqwvvqpphfpfcfrrjmjhjrjbblcbbznzwwpbwwsvvwnvvzjvzzmllrpllqffplpwlpwwlpwwmnmrrlggvssjggdjjsffbtthlhsswvwjjbtbjbsswqsshppddcjjlrlttwgtwwcnwcncmcpmpnnhndnccqscqqzqpplglvvpggcvvhnhmhqqsvvhcvvjpphbhnndpdbdndjnnmccmjmhmrrlcrrfzfnndldffstffhqffhcffhbhwhzhnhrhprhhtqtztntnptnppjdpdqdzqqpzprrqbqmqhmqqmhqqjttlrrqbqnqdnnrqqtqfqjjdfjfdjjsnspptltlgttmctcgttcthcttdpppzphpnhhvthtccbvccpplpwwfgwfffhfbbrsbbgppnhpnhhwnnnrprcpcncffrqqpjprpddjnddnccqtcthhfqfnnnlrrzhhmvvczzlbzbrzbbjpjpbbjttmwtwbtbqqtssgdsdsmsmbsmsfftltmtwwsswbwdbdwbbblgbbqpbqbmbgmbgmbbvcvbbmrrldlpdpqqnvvrzzcddjsdjjfvjvvndnvvrsvrsvrsrmsswlswlssqllfmlffmwmttjgttzgtggghrhprppbgbdgdtgddvmdvvbmmchhjppczzglzglzglzgggsmsrrsttgddmvvhddvdhvvcfcvvglvlmvmdvmdvdcdvvgfftccljllmssrvvqhvvnlnplnlglrlvrvfvrrgjjzqjjzcjcvcsvvbppgrrbdrdsrddqsspwssdlltlcttgngzglgfgzfzhfzhfhnffmsspvsscjjrbbpgbbfgbffhggzpznzmnmcmzmdzmzjzddcsscgssdnddjbdjdtdzdwwshwhfhtthjhsjjfjvvdnnmzmtmmlrlblzzmmspsnpnbnvvczvzsszrrsgsbsrrlprrzfrrjdrdbdhdvvwrvvrfvrrvwrrqlqwwqjjpwwffdvffwfbwwdrwdrddhhhjghjhvhccgbcbvblllbwlwtlldbdzbbdpbbqmmglmllvwwzmzhhfnfcnfcfddvrvhvbvzvbvhvthtrtppsccggdgpghgfhhhnwnmmwfwtffpjfppmdpdhppvwvfvvhdhzhtzhtzzplpspmpnpzpgzgqgvvqcqcqmqffzszwzfwfzzcmchhmgmppgwwvffnnvhhttvtjvjgjljmmfcmmzmvvjfjggppqmpqqswsnwwdvwdvwdwjwrrrtprpqrrsddsshgssbbpbgpbbprprzppsnsbszszccddfcftcfczffchfcfjjffjwwsbbvfvpfprpbczqdnvrqrlhsrzvlvgzbqpwgpmgftzfvtlnlqrtmpjfstmsrbfjldtmhvvqwznrcflbvmsnbzcrjvbzgvvmwlzcwggwvhnpscnwhjldzjvmtfdgvptfhjtdtwfjntzqtswqgwvnfgqhqpdvdchfqjzfhgjmdstmchppcvgpdfrqbrhrvdvzbtnnrpqsnmnljjzgzqfnzmlvbzmwzfbfszvfsqdnqfstpjglwtcdjpmdfqzfcsngbcvvjvdzlnzndcggcdtdjpwgvfzlfdqpgbgfjjfvgtwwrgtrfcpfvmzvrwrftpfdprzmcmrpnjpfrdvbmlrfzrjcdzhvwbpgmbpdnqggjdpqttgnqbtjfmrglqbvcfjwghrqtcgjddhwpntjgtghmfgvjdhbzzgmfnrrrgvdmsfbhndfcwlbbtsdcbpgfpbvnwmpwdpjlvcbcgnwjzftsfqhvwdshzltrmqpcsngfzrvfwhffrcjzlfqjqdbcntdwhfrfnrzwftqhlfjpjqpngjqjcnfnrpmmbprdtzgsvsdjpzsnzzmzdfjplfhzqrnrwggcvrrmqzwlvslwvtvhbgwmjmnzftrbfhdrzszcvmdhgfvwgwgsgqtpwgvpvfrszczmsmstwhnhtnftmmmjblpchrnrdwlnhrvqtbwqwdchfjbcldmjmjzwlcngfgfvmblgmnwtwvjmzswzmpvdjtcfgcpvvqhrfnwcczrrrhwwvfrngwmlstqcvvrqrshwdvrgtgbffvlwtvwhvlcwwqgspnfmndbsbpvdbjwdlfntwrrmtgsdtwbfmjjcjfvsvltwdjmvswwpchpdtsjmbbgcgtddcbprwznsldmwflrgcrgfflzwllrzcrgdgqgsvrqmspqzsrzvppztrhlpsnqdlhmghdcrppvbljsnrjgcwhpvmlgcnswrjjbjltwnctqbqsffbcfpclhcbrnsjlmrstpngbvcfcbjstgvzwfgcsqbwgqqblsnmfddprrqmpqgfrjbhfptrdvltcrmtrcqgcdfpjhjptzngzqdghqhpsfwlmrwgfhldzpfrbtzzgsblcfmwztjmtjzgwrpttvwfhbntvsgnfvbpfpnscdspmcvncsqltzqnwczvdbtphwrdtjcszmhbpcfnvbrbgfpnrrhvhzlrglthpldrlfscpvpvttvjtfdrqpjvnwvmscdvclbnzfvppslzgmglrvvdvpsbsfhflnjbdnpqzjzlrfgwgjvwvpthjptftlzppmnmrrpfvdhgwfzfdnnbhqpwrzvvdgtcrflwfjgbmvbgsnqzqtmsvrdlfmlbqqdnfftljbtphnpqqrgbrlzrbbhlgvjpcdbmtvzlpqhbvjpmhpdmtrmjwvzrbfrdrdfmwsfvllljdwmnqlgcnzvpphwmlmstcsljvmljcjprtgmzfssgbtjlttssfzbcqbgnjnvrwzchtwtwdtfwngdflwzjrhzdlrrqfnsztvdbzqfwfzppqrghrhzsqtwqstsfspddpjrpffhgqvspzwmlzwhtzqqldqbwlsrqhlmvhhmzjpdsrgdcvqnfpldnmblgvvssrcdnjqvcgwtwmhqdcwtsqqhbntvjnlbljlqjqglggvpqncpdzztlvhhlghtrncfcdhjtzwjqdhlntjfrzccbnmglmnzwvplclvcmnsppqjhbggbzncqlcfnzbbzdjrvcdthcqwjzjvdbjddcbjchwfgbjhwqpzbpgsdtlwlphtvhwddjdbwbpsnqhnffqptcrljcqzzhszdfpdfsgflhwwsgbfcnwrbdqflnrcwddwwmfztlbswlzhtzzcllnvbtqgjsdzmhcpnnqpdpqgdntlfwgvddgqvhqhrbvstsmzrmgwslpdjlsbgthfhgnlftbqdnzsvcrrmllcjvdlqrzbvrbrjcbpttsvwcrnlvvbnjvfgldzmtflvmzqdgbnjcgctllrldgzltwlswmfbbwjmcqpldhhdsmqpbvnjprdqnvrbjhrjzqwqfrfqwngwtwjjmzdbqmpmvqrprjhnhnrlmlgpfwwzjhlgmbzdlpshcqpnlgrqvprbspmdznzzsvhdlzwmttpdnlrlqjllqnshjllvvsrblscjcmbcqlsgpcjlmmpgwrvjnjzvzfgvgghwqfjswjbjghmzcgdpsjwhbnzmbhtzgnchpbrmnfdbfscgzldpqmvprjpvcwtwdfjblfshffwqctdphhnhngsjlrqtqprpjhwqcbmhctqbpdtpzvbbfncfrcvmbfvqmbmqjvgtdvspfqfbqnmjwhzbcpcfgbhtllbsssqntfbmsmlwhjchgcsrvsfznbmspwwszqfnwzzljfnvcwnwmgfzqfvmwwwdjd

View File

@ -0,0 +1,23 @@
$ cd /
$ ls
dir a
14848514 b.txt
8504156 c.dat
dir d
$ cd a
$ ls
dir e
29116 f
2557 g
62596 h.lst
$ cd e
$ ls
584 i
$ cd ..
$ cd ..
$ cd d
$ ls
4060174 j
8033020 d.log
5626152 d.ext
7214296 k

View File

@ -1,5 +1,6 @@
#pragma once #pragma once
#include <iostream> #include <iostream>
#include <sstream>
#include <fstream> #include <fstream>
#include <chrono> #include <chrono>
#include <string> #include <string>

View File

@ -1,11 +1,108 @@
#include "../aoc2022.h" #include "../aoc2022.h"
#define WIN 6
#define DRAW 3
#define LOSS 0
enum EGameMoves {
eRock = 1,
ePaper = 2,
eScissors = 3
};
struct SGameMove {
EGameMoves move, losesTo, winsTo;
};
enum ERules {
eTheirRules,
eMyRules
};
template <typename Output> template <typename Output>
struct SDay02 : public SDay<Output> { struct SDay02 : public SDay<Output> {
//Class constructor //Class constructor
using SDay<Output>::SDay; using SDay<Output>::SDay;
//Map to store the collection of alises and plays
std::map<char, SGameMove*> pairs;
std::map<EGameMoves, EGameMoves> losingMoves;
SGameMove rock{ eRock, ePaper, eScissors };
SGameMove paper{ ePaper, eScissors, eRock };
SGameMove scissors{ eScissors, eRock, ePaper };
//Solutions to both days //Solutions to both days
Output part1() override final { return Output(); } Output part1() override final {
Output part2() override final { return Output(); } //'A' 'X' = rock and loses to paper
pairs['A'] = &rock;
pairs['X'] = &rock; // Means Lose
//'B' 'Y' = paper and loses to scissors
pairs['B'] = &paper;
pairs['Y'] = &paper; //Draw
//'C' 'Z' = scissors and loses to rock
pairs['C'] = &scissors;
pairs['Z'] = &scissors; //Win
return playGame(eTheirRules);
}
Output part2() override final {
return playGame(eMyRules);
}
int theirRules(const SGameMove *player1, const SGameMove *player2) {
if (player1->losesTo == player2->move)
{//We Win
return (WIN + player2->move);
}
if (player1->move == player2->move)
{//We Draw
return (DRAW + player2->move);
}
//We Lose
return (LOSS + player2->move);
}
int myRules(const SGameMove *player1, const SGameMove *player2) {
if (player2->move == EGameMoves::eRock)
{//We must Lose
return (LOSS + player1->winsTo);
}
if (player2->move == EGameMoves::ePaper)
{//We must Draw
return (DRAW + player1->move);
}
//We must Win
return (WIN + player1->losesTo);
}
int playGame(ERules rules) {
this->input.clear();
this->input.seekg(0, std::ios::beg);
std::string line{ "" };
int score{ 0 };
SGameMove *player1, *player2;
while (std::getline(this->input, line))
{
player1 = pairs[line[0]];
player2 = pairs[line[2]];
if (rules == eTheirRules)
{//part1
score += theirRules(player1, player2);
}
else
{//part2
score += myRules(player1, player2);
}
}
return score;
}
}; };

View File

@ -1,11 +1,110 @@
#include "../aoc2022.h" #include "../aoc2022.h"
#define LOWEROFFSET 96
#define UPPEROFFSET 38
enum ECheckType {
eIndividual,
eGrouped
};
template <typename Output> template <typename Output>
struct SDay03 : public SDay<Output> { struct SDay03 : public SDay<Output> {
//Class constructor //Class constructor
using SDay<Output>::SDay; using SDay<Output>::SDay;
//Solutions to both days //Solutions to both days
Output part1() override final { return Output(); } Output part1() override final {
Output part2() override final { return Output(); } return readBackpacks(eIndividual);
}
Output part2() override final {
return readBackpacks(eGrouped);
}
int readBackpacks(ECheckType checkType) {
this->input.clear();
this->input.seekg(0, std::ios::beg);
std::string line{ "" };
int total{ 0 };
int counter{ 0 };
std::string bags[3];
while (std::getline(this->input, line))
{
if (checkType == eIndividual)
{//Checking an individual bag
std::string compartment1, compartment2;
for (int i = 0; i < line.size(); i++)
{
if (i < (line.size() / 2))
compartment1 += line[i];
else
compartment2 += line[i];
}
//Find the items that appear in both backpacks and get priority
std::map<char, int> inCompartment1 = getMap(compartment1);
std::map<char, int> duplicates = findDuplicates(inCompartment1, compartment2);
total += getDuplicatePriority(duplicates);
}
else
{//Checking a group of bags
counter++;
bags[counter % 3] = line;
if (counter % 3 == 0)
{
std::map<char, int> bag1 = getMap(bags[0]);
std::map<char, int> bag2 = findDuplicates(bag1, bags[1]);
std::map<char, int> bag3 = findDuplicates(bag2, bags[2]);
total += getDuplicatePriority(bag3);
}
}
}
return total;
}
//Function that take in a prefilled map and checks through a string for duplicates
std::map<char, int> findDuplicates(std::map<char, int>& duplicates, std::string backpack) {
std::map<char, int> newDuplicates;
for (int i = 0; i < backpack.size(); i++)
{
if (duplicates[backpack[i]] && newDuplicates.count(backpack[i]) == 0)
{//If the item is in bothcompartments
newDuplicates[backpack[i]] = duplicates[backpack[i]];
}
}
return newDuplicates;
}
//Function that takes in a string and generates a map of all of the items in it
std::map<char, int> getMap(std::string &backpack) {
std::map<char, int> characters;
for (int i = 0; i < backpack.size(); i++)
{
characters[backpack[i]] = getItemPriority(backpack[i]);
}
return characters;
}
//Function that goes through a map and returns the total priority for the maps
int getDuplicatePriority(std::map<char, int> &duplicates) {
int total{ 0 };
for (auto& i : duplicates)
{//Add the sum of the duplicate items
total += i.second;
}
return total;
}
//Get the proiority of an item in the backpack
int getItemPriority(char item) {
if (islower(item))
return item - LOWEROFFSET;
return item - UPPEROFFSET;
}
}; };

View File

@ -1,11 +1,108 @@
#include "../aoc2022.h" #include "../aoc2022.h"
enum EOverlapType {
eContains,
eOverlap
};
struct SBound {
int lower, upper;
SBound(const std::string &input) {
std::vector<std::string> bounds;
std::string temp;
for (int i = 0; i < input.size(); i++)
{
if (input[i] == '-')
{//Check if we are going onto the upper bound
bounds.push_back(temp);
temp = "";
continue;
}
temp += input[i];
}
this->lower = std::stoi(bounds[0]);
this->upper = std::stoi(temp);
}
//Check if the bounds contains another
bool contains(const SBound &bound) {
if (bound.lower >= this->lower && bound.upper <= this->upper)
return true;
if (this->lower >= bound.lower && this->upper <= bound.upper)
return true;
return false;
}
//Check if the 2 bounds overlap eachother
bool overlaps(const SBound& bound) {
if (this->upper >= bound.lower && this->lower <= bound.upper)
return true;
if (this->lower <= bound.upper && this->upper >= bound.lower)
return true;
return false;
}
};
template <typename Output> template <typename Output>
struct SDay04 : public SDay<Output> { struct SDay04 : public SDay<Output> {
//Class constructor //Class constructor
using SDay<Output>::SDay; using SDay<Output>::SDay;
int readBounds(EOverlapType overlapType) {
this->input.clear();
this->input.seekg(0, std::ios::beg);
std::string line{ "" };
int total{ 0 };
while (std::getline(this->input, line))
{
std::vector<SBound> bounds = getBounds(line);
if (overlapType == eContains)
{//Check if the bounds contain eachother
if (bounds[0].contains(bounds[1]))
total++;
}
else
{//Check if the bounds overlap
if (bounds[0].overlaps(bounds[1]))
total++;
}
}
return total;
}
//Takes the input string and should return 2 sets of bounds
std::vector<SBound> getBounds(const std::string &input) {
std::vector<SBound> bounds;
std::string bound1, bound2;
bool split{ false };
for (int i = 0; i < input.size(); i++)
{
if (input[i] == ',')
{//Check if we are going onto the second bound
split = true;
continue;
}
if (!split)
{//First Bound
bound1 += input[i];
}
else
{//Second Bound
bound2 += input[i];
}
}
bounds.push_back(SBound(bound1));
bounds.push_back(SBound(bound2));
return bounds;
}
//Solutions to both days //Solutions to both days
Output part1() override final { return Output(); } Output part1() override final { return readBounds(eContains); }
Output part2() override final { return Output(); } Output part2() override final { return readBounds(eOverlap); }
}; };

View File

@ -1,11 +1,133 @@
#include "../aoc2022.h" #include "../aoc2022.h"
enum EMoveType {
eManual,
eCrateMover9001
};
template <typename Output> template <typename Output>
struct SDay05 : public SDay<Output> { struct SDay05 : public SDay<Output> {
//Class constructor //Class constructor
using SDay<Output>::SDay; using SDay<Output>::SDay;
std::vector<std::stack<char>> stacks;
//Solutions to both days //Solutions to both days
Output part1() override final { return Output(); } Output part1() override final {
Output part2() override final { return Output(); } parseStacks();
}; runInstructions(eManual);
std::string ans = getTops();
return 0;
}
Output part2() override final {
parseStacks();
runInstructions(eCrateMover9001);
std::string ans = getTops();
return 0;
}
void parseStacks() {
stacks.clear();
this->input.clear();
this->input.seekg(0, std::ios::beg);
std::stack<std::string> stackStrings;
int stackCount{ 0 };
std::string line{ "" };
while (std::getline(this->input, line))
{
if (line == "")
break; //We have finished collecting stack strings
stackStrings.push(line);
}
//Get the number of stacks needed
line = stackStrings.top();
stackCount = line[line.size()-2]-48;
stackStrings.pop();
for (int i = 0; i < stackCount; i++)
stacks.push_back(std::stack<char>());
int index = 1;
while (!stackStrings.empty())
{
line = stackStrings.top();
int index = 1;
for (int i = 0; i < stackCount; i++)
{
if (line[index] != ' ')
stacks[i].push(line[index]);
index += 4;
}
stackStrings.pop();
}
}
void runInstructions(EMoveType moveType) {
std::string line{ "" };
while (std::getline(this->input, line))
{
std::stringstream ss;
std::vector<int> nums;
/* Storing the whole string into string stream */
ss << line;
/* Running loop till the end of the stream */
std::string temp;
int found;
while (!ss.eof()) {
/* extracting word by word from stream */
ss >> temp;
/* Checking the given word is integer or not */
if (std::stringstream(temp) >> found)
nums.push_back(found);
/* To save from space at the end of string */
temp = "";
}
moveCrates(moveType, nums);
}
}
void moveCrates(EMoveType moveType, const std::vector<int> &nums) {
//run each step
std::stack<char> tempStack;
for (int i = 0; i < nums[0]; i++)
{
if (stacks[static_cast<size_t>(nums[1]) - 1].empty())
break;
if (moveType == eCrateMover9001)
{
tempStack.push(stacks[static_cast<size_t>(nums[1]) - 1].top());
}
else
stacks[static_cast<size_t>(nums[2]) - 1].push(stacks[static_cast<size_t>(nums[1]) - 1].top());
stacks[static_cast<size_t>(nums[1]) - 1].pop();
}
if (moveType == eCrateMover9001)
{
while (!tempStack.empty())
{
stacks[static_cast<size_t>(nums[2]) - 1].push(tempStack.top());
tempStack.pop();
}
}
}
std::string getTops() {
std::string output;
for (auto& stack : stacks)
{
output += stack.top();
}
return output;
}
};

View File

@ -6,6 +6,50 @@ struct SDay06 : public SDay<Output> {
using SDay<Output>::SDay; using SDay<Output>::SDay;
//Solutions to both days //Solutions to both days
Output part1() override final { return Output(); } Output part1() override final {
Output part2() override final { return Output(); } //Find the first unique packet of length 4
}; return readPackets(4);
}
Output part2() override final {
//Find the first unique message of length 14
return readPackets(14);
}
int readPackets(int chunkLength) {
this->input.clear();
this->input.seekg(0, std::ios::beg);
int total{ 0 };
std::string line{ "" };
while (std::getline(this->input, line))
{
total += countUniqueSequence(line, chunkLength);
}
return total;
}
int countUniqueSequence(const std::string& input, int chunk) const {
for (int i = (chunk-1); i < input.size(); i++)
{
std::map<char, int> map;
bool flag{ false };
for (int j = (chunk-1); j >= 0; j--)
{//Look through chunk of 4 characters
if (map.count(input[i-j]) > 0)
{//If it has already appeared
flag = true;
break;
}
//Add it to the map
map[input[i-j]]++;
}
//If the chunk is unique
if (flag == false)
return i+1;
flag = false;
}
return 0;
}
};

View File

@ -1,11 +1,69 @@
#include "../aoc2022.h" #include "../aoc2022.h"
enum ECommand {
eCD,
eLS,
};
struct SFileStructure {
std::string name;
SFileStructure* parent;
std::vector<SFileStructure*> children;
};
struct SDirectory : public SFileStructure{};
struct SFile : public SFileStructure {
int fileSize;
};
template <typename Output> template <typename Output>
struct SDay07 : public SDay<Output> { struct SDay07 : public SDay<Output> {
//Class constructor //Class constructor
using SDay<Output>::SDay; using SDay<Output>::SDay;
SFileStructure* root = new SFileStructure{"/", nullptr, std::vector<SFileStructure*>};
//Solutions to both days //Solutions to both days
Output part1() override final { return Output(); } Output part1() override final { return Output(); }
Output part2() override final { return Output(); } Output part2() override final { return Output(); }
void parseInput() {
std::stringstream stream;
std::string line{ "" };
std::string instruction{ "" };
SFileStructure** current = root;
while (std::getline(this->input, line)) {
stream.clear();
stream.str(line);
stream >> instruction;
//Process a command
if (instruction == "$")
processCommand(stream, &current);
//Fill a directory
processDirectory();
}
}
SFileStructure** processCommand(std::stringstream& command, SFileStructure* directory) const {
std::string opcode, operand;
command >> opcode;
command >> operand;
if (opcode == "cd")
cd(directory, operand);
return &directory;
}
SFileStructure** processDirectory(std::stringstream& directoryElement, SFileStructure* directory) const {
std::string fileSize;
directory->children.push_back(new SFile{ newDirectory, directory, std::vector<SFileStructure*> });
directory = directory->children.back();
}
void cd(SFileStructure* directory, const std::string& newDirectory) const {
directory->children.push_back(new SDirectory{ newDirectory, directory, std::vector<SFileStructure*> });
directory = directory->children.back();
}
}; };

View File

@ -1,33 +1,32 @@
#include "days/days.h" #include "days/days.h"
template <typename Output>
void runSolutions() { void runSolutions() {
//Heap allocate all solutions //Heap allocate all solutions
std::vector<SDay<Output>*> solutions = { std::vector<SDay<int>*> solutions = {
new SDay01<Output>("day01"), new SDay01<int>("day01"),
new SDay02<Output>("day02"), new SDay02<int>("day02"),
new SDay03<Output>("day03"), new SDay03<int>("day03"),
new SDay04<Output>("day04"), new SDay04<int>("day04"),
new SDay05<Output>("day05"), new SDay05<int>("day05"),
new SDay06<Output>("day06"), new SDay06<int>("day06"),
new SDay07<Output>("day07"), new SDay07<int>("day07"),
new SDay08<Output>("day08"), new SDay08<int>("day08"),
new SDay09<Output>("day09"), new SDay09<int>("day09"),
new SDay11<Output>("day11"), new SDay11<int>("day11"),
new SDay12<Output>("day12"), new SDay12<int>("day12"),
new SDay13<Output>("day13"), new SDay13<int>("day13"),
new SDay14<Output>("day14"), new SDay14<int>("day14"),
new SDay15<Output>("day15"), new SDay15<int>("day15"),
new SDay16<Output>("day16"), new SDay16<int>("day16"),
new SDay17<Output>("day17"), new SDay17<int>("day17"),
new SDay18<Output>("day18"), new SDay18<int>("day18"),
new SDay19<Output>("day19"), new SDay19<int>("day19"),
new SDay20<Output>("day20"), new SDay20<int>("day20"),
new SDay21<Output>("day21"), new SDay21<int>("day21"),
new SDay22<Output>("day22"), new SDay22<int>("day22"),
new SDay23<Output>("day23"), new SDay23<int>("day23"),
new SDay24<Output>("day24"), new SDay24<int>("day24"),
new SDay25<Output>("day25") new SDay25<int>("day25")
}; };
for (auto& solution : solutions) for (auto& solution : solutions)
@ -51,9 +50,12 @@ void runSolutions() {
//Free memory for heap allocated solution //Free memory for heap allocated solution
delete solution; delete solution;
//Hold the console
std::cin;
} }
} }
int main() { int main() {
runSolutions<int>(); runSolutions();
} }