[TASK] Implemented Day 3
This commit is contained in:
19
.run/Run-aoc2022-bench-dayX.run.xml
Normal file
19
.run/Run-aoc2022-bench-dayX.run.xml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="Run-aoc2022-bench-dayX" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
||||||
|
<option name="command" value="run --package advent-of-code-2022-rust --bin advent-of-code-2022-rust --release -- -d 3 -b 1000" />
|
||||||
|
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
|
||||||
|
<option name="channel" value="DEFAULT" />
|
||||||
|
<option name="requiredFeatures" value="true" />
|
||||||
|
<option name="allFeatures" value="false" />
|
||||||
|
<option name="emulateTerminal" value="false" />
|
||||||
|
<option name="withSudo" value="false" />
|
||||||
|
<option name="buildTarget" value="REMOTE" />
|
||||||
|
<option name="backtrace" value="NO" />
|
||||||
|
<envs />
|
||||||
|
<option name="isRedirectInput" value="false" />
|
||||||
|
<option name="redirectInputPath" value="" />
|
||||||
|
<method v="2">
|
||||||
|
<option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<component name="ProjectRunConfigurationManager">
|
<component name="ProjectRunConfigurationManager">
|
||||||
<configuration default="false" name="Run-aoc2022-bench" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
<configuration default="false" name="Run-aoc2022-bench" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
||||||
<option name="command" value="run --package advent-of-code-2022-rust --bin advent-of-code-2022-rust --release -- -b 1000" />
|
<option name="command" value="run --package advent-of-code-2022-rust --bin advent-of-code-2022-rust --release -- -b 100" />
|
||||||
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
|
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
|
||||||
<option name="channel" value="DEFAULT" />
|
<option name="channel" value="DEFAULT" />
|
||||||
<option name="requiredFeatures" value="true" />
|
<option name="requiredFeatures" value="true" />
|
||||||
|
|||||||
19
.run/run-day-3.run.xml
Normal file
19
.run/run-day-3.run.xml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="run-day-3" type="CargoCommandRunConfiguration" factoryName="Cargo Command">
|
||||||
|
<option name="command" value="run --package advent-of-code-2022-rust --bin advent-of-code-2022-rust -- -d 3" />
|
||||||
|
<option name="workingDirectory" value="file://$PROJECT_DIR$" />
|
||||||
|
<option name="channel" value="DEFAULT" />
|
||||||
|
<option name="requiredFeatures" value="true" />
|
||||||
|
<option name="allFeatures" value="false" />
|
||||||
|
<option name="emulateTerminal" value="false" />
|
||||||
|
<option name="withSudo" value="false" />
|
||||||
|
<option name="buildTarget" value="REMOTE" />
|
||||||
|
<option name="backtrace" value="SHORT" />
|
||||||
|
<envs />
|
||||||
|
<option name="isRedirectInput" value="false" />
|
||||||
|
<option name="redirectInputPath" value="" />
|
||||||
|
<method v="2">
|
||||||
|
<option name="CARGO.BUILD_TASK_PROVIDER" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
300
input/day3.txt
Normal file
300
input/day3.txt
Normal file
@@ -0,0 +1,300 @@
|
|||||||
|
BzRmmzZHzVBzgVQmZLPtqqffPqWqJmPLlL
|
||||||
|
hpvvTDcrCjhpcrvcGGhfLHMlLtMCqflNlWPJlJ
|
||||||
|
hGjhncHhGnhbTHczBBZVVSbRwgSgRV
|
||||||
|
rWVQjPQQjGRWNSrWrPjcptwBpqqJBtJBBcZgMdtq
|
||||||
|
zzmmpzfTCFpTlMlJJwBgMlqMBt
|
||||||
|
TvLszpbhhTLmsnRQPDQGWDWRvQSR
|
||||||
|
zGzvLlGlQHLGBQZlhBWhdjRdmdWRcjPj
|
||||||
|
fTJNfTfNSRWPhjdjfj
|
||||||
|
pbsbVVnpSnbVTprnbqqrzvLLgQlGLPLHll
|
||||||
|
ZCCCsWvNvmsCsCmZLZmgMLRpQMhwQRpQRfphfprpTfpM
|
||||||
|
tlncPjzlndctbzcPPBcjwDphwrfGGDffbDRpDTGG
|
||||||
|
cdqnddwzqjNVWVLZZLZq
|
||||||
|
DTLbDbRrlQbwhhNrmmfwdt
|
||||||
|
zzMJMzjCjJJjvLjMPJpcgPpzfhHdfqWcqddwtwfqdttcNtdN
|
||||||
|
pJCzVpCvDZBLsVRQ
|
||||||
|
STzBBbJzRRBZBRTqCCsfZLtNNLClCsfh
|
||||||
|
jsQnnQjjHcvQFrcPwCmtLCNlvDfftfff
|
||||||
|
sGFscMQQMMpqzqbMbd
|
||||||
|
QlNDWGsjQjgQllWQsbtzqTJczTJcbFmmFJJP
|
||||||
|
MhLrhgLVndRmzJFzVqqJqP
|
||||||
|
pSLnMdwhwdRZRSwhLZwLhdGWQjlsgWjNQWWSvgBsWDlj
|
||||||
|
THjSRFSddTjdBTcPLcVVvVBw
|
||||||
|
GzWnWfndWfznDfsnsBsPVwVwPPLL
|
||||||
|
zNflzJWqqzQDdSStHNZNpFFtbj
|
||||||
|
FSzDmsFSFlDlBzqVjqHHjHHpVgHLbp
|
||||||
|
rTrTtTQQntRQnQJQgggHZttVgHLBLhZL
|
||||||
|
WTJJRRQCRRJTRdBCRdvRNDFSWFMPmDlPPSsNPSzS
|
||||||
|
WQldlMtMVQgVMQHnDGbHGGnRnQmD
|
||||||
|
rqcZPrCFjmHlbGjZ
|
||||||
|
zSScchqwchBzTzFzhhSlcCwNtdVWWJgsVdMtWNgNVWTJTd
|
||||||
|
lMZqjMWllrTTspjprWWSSwgWNSVNDmWGVwFwgN
|
||||||
|
cdCCdLHcnndHJnmCRntLBnRzDvFNtNDVzgSgwDgFNVzFVv
|
||||||
|
BRLcCCJCmJdcRhfjPPZphrlrPqlZ
|
||||||
|
GdGqcrrZGDrvDJJqJHcBvmFFgmFMMgMgBtMLTssLmF
|
||||||
|
NbPVPDlljPmTmsTj
|
||||||
|
VfQDhflCCRWdcrQwJvvnJv
|
||||||
|
RLcWgLCqqPQLcqZwzHgwmmrmmtgwTw
|
||||||
|
DhbhNrMpnJSDJwVTHmmTVnTTVj
|
||||||
|
lrsvblMDlcWcfQPQ
|
||||||
|
PVldlphHwGwJJGdjZZWsRbbsGsNWrWQbNbQR
|
||||||
|
SqcDvTmDLtfmSmtqppfqzTgTQBrRQsbCFWbNNFQFBBrRbLNb
|
||||||
|
MgtmTgtfpqVlnVddZMwV
|
||||||
|
BdmfmPBPSbSNdGSdvWrwcZrccZPPcZnH
|
||||||
|
jzzLsjsMRlQQVHwswvvZrCHrrT
|
||||||
|
VqhzVFzplFlpLwpMphLRQQVRmSqgbdGtNJBmNSmgGbtggSgt
|
||||||
|
DHVpNZjdZjFZWVFHpvFvzmlRzPnlfznFRz
|
||||||
|
lrTBTsBwwMbrrwLPPfwGmGzvRf
|
||||||
|
scrtMhMCtJBBBclbHdHttWZWDSqDSjHj
|
||||||
|
wzqsPmqsbsfqBwPMNRMMZcZmFFNtZM
|
||||||
|
CgCnhlvvLJgcRFNNBdCpWM
|
||||||
|
QnQrVgHSvVHjbjTGBbbTHb
|
||||||
|
HdrVrdqFDdZVmHgRmDRFHMnTdTssMGnLnPJLbPTbCs
|
||||||
|
SczlScjwcNzplNzQSSfjwQSrTGGsbTsnTCnGTMCMLMGGbN
|
||||||
|
wQlfjrhfhQFHqZhRZRtD
|
||||||
|
RsfJDGJvzPNcjpddSWJWMd
|
||||||
|
LLCbBCwCrCmVVnrmhQFmbVhdcdlWpjZzSpMdWSpcWczSBj
|
||||||
|
rrLCbTwnHTvzvNGT
|
||||||
|
wPhPhbCqqSCrtJDlqvlrJr
|
||||||
|
RVVZddLFRZZcQLvJJtzptlgPJp
|
||||||
|
TVQRZGVncFdTGWZdCNShHhfPNwwsWPwb
|
||||||
|
dzLVzPSgrgDDDCMSMLLPwFmdTTcsvmwNwjNsHcFF
|
||||||
|
nWBGntQfGNGBflWBBqlpRQGbWFvjwsbsFswbvTHjjbmHTc
|
||||||
|
tBNJBnGBflQnDPJrPhDgrPVg
|
||||||
|
VtWztWtqpqzWpWzqjNRjNpWTmrrmrSbnmJwSJwnMPrCSJVwM
|
||||||
|
sDHsBDhBdsBZGcHvLHDLhhCSnRSwCJMZrPbmnMbJSCSR
|
||||||
|
ccLRhgsLBdRsdHNTFFNNgqTglqzF
|
||||||
|
hztlmDhPhgPlPNNgmZMCbmwwQjcwjjwMjVCd
|
||||||
|
RSJRrRqnqQJFqvnTGrHCcHHCCHHbHHMcMvdM
|
||||||
|
qGJsnQTRsStsftPlhPNl
|
||||||
|
BFFBLPRCwsLwhlPlRmhcGGrbmmGjfNTTnp
|
||||||
|
VJMVpzgqggJnrjmjNcMjmT
|
||||||
|
VqdSZtQgZvtdzqHqHtVZdVQpCDWWFdwlRPDpWPPBCswlWD
|
||||||
|
fCWCsjPzcbzwRSzVTzhhDLqvdg
|
||||||
|
TmJtrNJrBLSLJqgS
|
||||||
|
ptNTQFHrZlnpFPwsWMbRjCpcjR
|
||||||
|
nJmQNCmbmlllmbClbfMLjMFqbGBsdLFq
|
||||||
|
ZcgTWcTnMqqMTBqF
|
||||||
|
tPgctSnPctZZgDWzZgQHwNmHlhlmzlQhlJlw
|
||||||
|
ZpTCwpffdslvgShCBhqhRz
|
||||||
|
FDMPnNFNmBPzvRPRBg
|
||||||
|
nNgMrnnDGjDmJMmnFdZTTsdsrZrslcwcQr
|
||||||
|
pTmczpCldcdDDnPttpvWSqbpJf
|
||||||
|
jgjRZMGHhGLgQrjvPWzPJgJvzStbbq
|
||||||
|
LGNLLNBBzcDFCBwwFC
|
||||||
|
nJTTqnrNvTzNMzzNfqrTPrJnwpwPpZpsHccZVsBRpcVHwpcp
|
||||||
|
bgDhgbghLWmFmStctVpZtBCVCCpfZp
|
||||||
|
LLSgLGSjggFGbSSbmMnrvqvzjfzTNrJrqM
|
||||||
|
RRpDmmPMTjwfGmJQgQ
|
||||||
|
WsNscdnvvdVZFVnnrZbjjflwljlbzfGFjQjq
|
||||||
|
NnLZsNnrrVVVcvdBLTPCPCRMwhPMBMPhCt
|
||||||
|
lbVvzngGJnVbJHpHtHNPpdSQvc
|
||||||
|
TsMBswFZsWMWBZMNwPtNNtRNHcNpSQ
|
||||||
|
CcZCTrZDsjZTsTsshWhrWrTnfgbLDfJzVVLVVlgfnzfVGV
|
||||||
|
JzTTRtJRZWmWjrMHCT
|
||||||
|
DDFGlLGcGlSSSLsFGBspPBmNMBHMghmWNmWjWCmWtH
|
||||||
|
nSSpnbsGlLDnpPsSSspFtVvffRQdVzqvvbqdfVQwRz
|
||||||
|
sMhzszlHHDsWbthHDqsbJjpLNtmjVJmVLLVLVLBp
|
||||||
|
nrTPrGwfPLdprzJzdL
|
||||||
|
wgPQcTGGzgccwCgnRwgRChFhlWSDqWWQMWhssSsMQl
|
||||||
|
NSNmwtpSpCpvMphCsr
|
||||||
|
PHcRGPLJMrsvzsqG
|
||||||
|
QHjbnRMcfbPbQZmlZgZlgBBQ
|
||||||
|
cPRPbhQjbQRdtPQdLqLHqzFZjCFCqLjC
|
||||||
|
mmfsnnwrfvwrfSNZFzHHLDCFNlLlqDlN
|
||||||
|
wsmrwswwGTffMrBnmQttJtcMZQQtPJPbZc
|
||||||
|
MvBPDDRRdnnvHPCHZLHZsFLL
|
||||||
|
rmJcbVqbcjWwWjQHLzTZFTHSzFrpsz
|
||||||
|
cmwllVqqGJbVVVmmqbQcmgRnRvGhGfgDRDZBBBvRdd
|
||||||
|
nMvMhMnvhnbTZWSSZgHmGJDFmmNDzBmbNmdGBN
|
||||||
|
rCsPLRCssRjrLLsrLlwRVrcNJQfDQfdBmmfNBGJNzmDPfB
|
||||||
|
CRjCpLltgtJgJJWq
|
||||||
|
jshCzJpjzTPpmCWvSlpfwHfSWglf
|
||||||
|
LQMMNMnHtDtLVRvwwgRWlldgWD
|
||||||
|
qHVrQNHVMFQtrrBBQMBcrrZsZbzCZhbbJZJsmmsmFPTC
|
||||||
|
JZQZnsQNMqTngZqJBVfBfPPVBNrwvfPw
|
||||||
|
SSmDstFjpDpCszDjcLLhrPVlGlrGGVBwrvwVPt
|
||||||
|
FSssFcLjFjbmFFCzjLcFLRDnMJnTHRnZZTdWqZZWnMnRnZ
|
||||||
|
GbHRHpldwGMpWhHpCMBlCbRdVSLhnqJLSrDPLPPLPDqVDrhh
|
||||||
|
gvjWWQvgZFtQFFNqLnVnDnSJzzztDD
|
||||||
|
ZccccfTsffHdWWdRWwsw
|
||||||
|
ClCtbHMlnnPPlszV
|
||||||
|
gSDWSLgWQWQJJNWqgtQjPsnfcdVcLVdVdzfzVzff
|
||||||
|
WQgqtFQgDgQSFqJhqhSJvNDRrZMZHwHMCbZhTpZbGHMTMG
|
||||||
|
pZJZlCQtHFhPfdNfCh
|
||||||
|
zcmLSVczwcMcLDNFHdLPhPWH
|
||||||
|
szvVVnBmnTGQtHTQ
|
||||||
|
RVVCNDlNGzlGZqHGHWqWhGqQwH
|
||||||
|
ZFLFTmpLvvmSqsbb
|
||||||
|
TrfpBfJpJMlnnNfNZD
|
||||||
|
qHHlDClHhltMqQsHDhHslGznwdTnzzwDGSdfnwGnwG
|
||||||
|
mZRNcNcLLPNPBFFbbPmLmbZFSCVfJJTVndVfSwnRzznfTwCS
|
||||||
|
CcCWFbbBLCWtgWgHjghqvv
|
||||||
|
TjbzlnlFmfqCFFVVCRWr
|
||||||
|
PhMcLpPDtMLpwPDvLPJbMhSgVCGqggVqQgCqCgCgSWvv
|
||||||
|
btbZbNZhJDJJhDtwtsTTTmBzzBBmlNlmHj
|
||||||
|
FqhjWtqlqmmsnFPTCvMCQMTTCjQd
|
||||||
|
pfffRfLpgrgGgzrNVzzpGVzRCdMCPJbwwcVMbQPCJVMVdbww
|
||||||
|
DGGDZRGrHggzSsFQnnWShmtH
|
||||||
|
vtHVVMMrvVMVrSHvLgvlHcZFCnRCZcccZtRRZfJFCJ
|
||||||
|
rdDjGsdTQDcNZfdncCRR
|
||||||
|
rBDsTwBbjbmbbQswswPhqVmmSvpVhlvvqMhHhh
|
||||||
|
vGBLrqMNvqSLBvvrNbllLHfwStWWtFttccjtRtjtcj
|
||||||
|
MhCDJmhMDzmcRRcjzWfztH
|
||||||
|
ZQDmDhVVCQbBVdVNMvvv
|
||||||
|
ptCtCzhWPWptnhVzzpGZbZTjTjVjFGjVFgVl
|
||||||
|
fQswRRffmRqZlgrqqFjjSgGg
|
||||||
|
HwsQDNNsDsmRLLHmffsfvHptBnhtzCvhWpZWBdhnMdCh
|
||||||
|
RlHzzTqczBPfbnvcpB
|
||||||
|
wVtNwpSZstppwwMsZhsdnLvnbtBBmbnLFFdnmF
|
||||||
|
WNQJMVWsZWwGJWhhSNrQzlgHrDCgQRHpCHrl
|
||||||
|
RrZWpJZRrZpdTGstlchLGGlLMd
|
||||||
|
NqjDPCQPnQCSvtMzSLhhjM
|
||||||
|
nQVQDDDDfwBwNCVCNVFNpWpgJgrRTmLTmTmgRTWF
|
||||||
|
SHMcrMHpcjGcjSrMMbvSvvSvwFTLJwJNtFGFWJNtDLFTLfWN
|
||||||
|
zqRnPfzQCRzqsmRPzznhszzLtLwQwwFTgWWLDLgWFTwTNQ
|
||||||
|
qVPZmRZhsCZPhZlRCqRRRCbfpccMBjvMVjdHjjMjSvdf
|
||||||
|
VVQdHwBZLVltlddtBczhrzvGcWWFRwgsFG
|
||||||
|
TDTTTqqTSSqjqnmTmPqPPmTmGhRszvsrzsjRsccgzrRzgWGF
|
||||||
|
DpJPqpWqHbZpllpt
|
||||||
|
cCSCFsnnZFnscDtNdJFJtJtdmb
|
||||||
|
VgBqBsqRrHtNdzmNrt
|
||||||
|
BGLLVVjRBsqPBfsGwPsMfSSZCSfTZTZQpSphfS
|
||||||
|
plCHCHlgglHHGpNbtngNrDvBDpfQDBQfZDfWZVrr
|
||||||
|
mTmMLhRfwhsLPQvQZDMZQBQWMB
|
||||||
|
cwsssmqRTFFfFgtbCtGl
|
||||||
|
LQPPrCPnMZwqtRMn
|
||||||
|
cWTSlJWlcplJdDTdGdpDlGcGgqmtwwZtqRrNRRmRdNZqmgNq
|
||||||
|
GSJcJSjsjTpsvWGWBHLLvVVBBBrFrzVz
|
||||||
|
NVPCSPMNDSNFVSWCsJJJmpGmZZGLLcpZLHGGtsHt
|
||||||
|
fwzlBBqghqvzqqlDrHbpHjZHmGZbLZrHLb
|
||||||
|
dnBgnDqQvwRnSnnFMFMP
|
||||||
|
BCbPsFFwCRHmDSBmWnvDDj
|
||||||
|
phhZVzdpVfQZphhZpRhSVnjmrcvvnrWtDrvWDS
|
||||||
|
TfQJMfLphMhJdfdzpQJRTPbwHHNlgbGwsTGgCP
|
||||||
|
ttWLlnnvnNnBBtlTqWlpvpndQdZsQQFssFDdsRFdVdRNFQ
|
||||||
|
jSgrScrbGZSGrrCGsFVMssFsPPFcDDMV
|
||||||
|
bzSmJbfCZCbzLwllflwqtvvw
|
||||||
|
zmFTJwFLPmzLztmjDzTJwfNrdFNrFppBSNRGNGdbrpBR
|
||||||
|
gqlhWQgsZMsvqMlMMvsvqsNlLbcdppbrRpdbbcSrrbbr
|
||||||
|
vssCgVgCsggZQZCgsnsqWgWvfJPDLwffwTPPmzTnjTPmPmwJ
|
||||||
|
SpcRTPQLBLWpNNzjmmwwwRrR
|
||||||
|
tGlfvGhfnbDlbqlChnfFMrwsmwNssTMHMHjFwv
|
||||||
|
ZlhtCtffCdWcZWZVVT
|
||||||
|
jTTCcWHWJNgCGTzTmnzrmnGn
|
||||||
|
BwRRbFvtvvQmJJFMpMJr
|
||||||
|
ZBBwLvqbBZsRsbVsZSqbcZdJjHHjhfPCJfJfHhgc
|
||||||
|
VrnDSvvrLrfTdTLGfdRp
|
||||||
|
zcJzmcFcHGfdGmWTVd
|
||||||
|
tHsMhwPVctccHFHFcbSDbbPjnNbBnbvBQB
|
||||||
|
QttWQwLTnLnWTtnffnLQSBFVjNvBjBFNgMdCsVWsjv
|
||||||
|
pDqcmmRPHqgVBddjvN
|
||||||
|
DcclzbcbPbJLnNTfnw
|
||||||
|
plRcpsZDGlGZvWvMCNcLtttq
|
||||||
|
SrfrwSjSVrSjwbmSrHzmHJCQQPQzqttNNQJMzJtqMW
|
||||||
|
wSHVnfHfWwwHWFVfSnfgmmRsslFZZDBBGZsZsDTdGRTp
|
||||||
|
qSFQSgQNgQBrBHHcrW
|
||||||
|
VTmjVJLTwlTmwTVmsMJMVlJmPvcbvvbCBbGBPjGvBbBGWcbb
|
||||||
|
DnJTZwmnZRhnpqNdWt
|
||||||
|
dTVHjZLLZDVCfVHtLDDjQbscjWbSJMJPjsbWWb
|
||||||
|
FnqrnmzzFllmsWwtsFtQMMFc
|
||||||
|
lmqzzzngGmlNNBqGllzlBNRvptHHpTCHpDLpgDZdgvHvDD
|
||||||
|
sdRZQbCfZTSTdlfTZCffccWPHPPcPPwLwctRnLWn
|
||||||
|
BBJDzFVgCDrCJrqDJJhqJVVMLPHwcctFwcWHHGLcwGwGHnWc
|
||||||
|
ghpJgqqjCZbQdZpd
|
||||||
|
tbcpzbHSszcHBgqHGZgJJJhhww
|
||||||
|
jfvdvRTffQQrrFCRFTnGwJRqNRZVpJGZLZggLh
|
||||||
|
nQTjTnMndlTdQFMvnrClCnpzmzDtbbmBbcPSzzlmmtzP
|
||||||
|
BqBqTCSTcqHsJHHM
|
||||||
|
WWPGVPLtzVgWtjWPGzVjzVGcbDhPsRbDcsbJwNRswRDRss
|
||||||
|
VQfWjfLFGWLjdFfVzTZZpJTpnmlTrSQlBl
|
||||||
|
jLNsZjqSHCsGdsmpsm
|
||||||
|
MvnVFzWMwMVWzfnVDwfBMfnnrCtdtPmPlRrdrJCJrtPDrrPD
|
||||||
|
zznfFWwMfMfFMwVTMQFnQjhjgjSZhCNbLSTcHHgbbC
|
||||||
|
GGtssttVmvnnGNMQrrVzgwVrCWMz
|
||||||
|
FdhfhhcCDhHLfzclZMcrwcQMZM
|
||||||
|
HHqqCBhHSSpdmjGqmGjtjtjj
|
||||||
|
bbQLtGMQQtQRQtrDtGprrrbCqwplZhhqSqmdwvdzqqqhSmpS
|
||||||
|
FsJjJBfnsJcFcFfjVPjWBzldqhqnlZZZzzhmnSvSnm
|
||||||
|
JPcFfFWjFHJVVsVjPVscsDlLNRHGDbLRMRCDNrCGbG
|
||||||
|
JdMdlMRJnTwdvcjv
|
||||||
|
CDLHbNSzzLFgHvnTjrswBNBTNT
|
||||||
|
QgbvzSFQmZQPQQRW
|
||||||
|
NTBrNzrpjjjCwGbB
|
||||||
|
FRbQlcvFvcRQQlRsMlRRRZjwCqMwjmjwJZdLJmjCZC
|
||||||
|
cVPPQcvlWDNhrbPz
|
||||||
|
VdbVtbbZJdtJVVdDVZmTLqqTSQvNLjjDShhvSG
|
||||||
|
zplpnBnFpnrrlghGNpLNqHvqvjNj
|
||||||
|
cWncllnlPFWzcMwtWWtsVLVRmJWCds
|
||||||
|
ShLSTnZnTSttTSbLQdfSZTMwcDHwwcHnJvDHnlnlclMM
|
||||||
|
NmPMsssRrVwjDclHJwwR
|
||||||
|
gNNMWGzNmqGdtfZTbGGb
|
||||||
|
sWNNlRHnmJtmntJt
|
||||||
|
brbbBTbbFbCbqqGgBTrCfmQVVZfSSQQSVtJZSrVZ
|
||||||
|
bbFqvbDvvGGLGbCCtBGDLbLlcPNHhhccPNcdPPchlsdR
|
||||||
|
DCFvDvnCnNfMBmMMslDZML
|
||||||
|
SQQQJHwpSgJSJHQWSWHqJWWbmcBBBLLTsmhhTcZbMhmlshcb
|
||||||
|
RJRgpJHssgwSQHRqsQPGGjjtNCrrFvvnFjjPrP
|
||||||
|
mThmsgjzTPjMpcvtWP
|
||||||
|
GNNBVqVGNZbbNbNqqZQVNVNbWcpdtMCcpCtMWCdCPpQccmpp
|
||||||
|
VSmNrmmbBfZVlsrssrLTRhRhTn
|
||||||
|
TdmCvLDCpTRNTdFbbWnnSWCfhjbbzn
|
||||||
|
GrrMsPVGcQHBGMbhjjSgWfHHDbjb
|
||||||
|
BPBVqqrQPsQqwrrmmmJdRLDDqFRplT
|
||||||
|
fpDDJljDlCfDTjprjrfbddWthCSCtdPPQFhSSSWW
|
||||||
|
HsLZgMGbgBBsNzMvGbdVtVQzFRQSthhFPdtP
|
||||||
|
sMBmGBmbNvLHGMnrDppTcJmcjpqljf
|
||||||
|
ptSpSJQqpbNGGDDhcMWrlNHcZZWWls
|
||||||
|
zRLRRRjvvgjHMMsMpWpc
|
||||||
|
vmCPLCgwvwdnCzmvLbpTbVQqJJPbJPpTVq
|
||||||
|
TJCfhhJVFffrJJQQllNWcvWhwvWD
|
||||||
|
GPSGjjpLslBbpLpLqqqPDvdwvwvNzQWGzDDNdzGN
|
||||||
|
msbRjbpPqsRpHnlZrmJlnVHT
|
||||||
|
GGfFsCCTvGDsfTTrhsCMMzptZJMdpdgtrpdMcV
|
||||||
|
LBlwBHPSqjwwlVggHpnMZcVHMt
|
||||||
|
ZlZZlBbRPGGTGfmRsD
|
||||||
|
CtCjbVvzQQZTWVdd
|
||||||
|
MlSqWlmsmGBSHJHTDFHZ
|
||||||
|
pcqsmsplwsqclwRtRWgtRnPPvb
|
||||||
|
zCrzCrsdjrhGDCFqGDjRRPtpWfQQcpfQZcCZPp
|
||||||
|
VSVwVMgLHHLTwMDTMMVnbWPRZQRcRQPptWnpbZcb
|
||||||
|
MNBBBlSMvLVwTlVTFdNdhNhFsqsGDrzm
|
||||||
|
rBLWTwTThWwVVDTwHBsZZWppvpGtpptppmRvFFFMFMfL
|
||||||
|
qPPNCCbqcbcNqbqQjjJQqzjRpptmlpMGmMlJtftmtFHpMt
|
||||||
|
QnCgzzQbbQqPcPQnncbdQdnVTwDssZgrShBTVgZZsBSDHT
|
||||||
|
PFGJFqnfqmPgFJQPWdbLdpDRhbphWjDm
|
||||||
|
rclNHvcrzCNwrWRprjdMMMph
|
||||||
|
wsZHwZNvRRQsQqBV
|
||||||
|
LqlGCPlPLTCPqqQlpqLlWfBfWgcHNRJRfWNsncGH
|
||||||
|
VVtdwVtDDdVmhrdwSBmjbdzNHgfgJnNnsSnHsNffHgRsgR
|
||||||
|
wVzhbjmDbDrwjdbztFDDthMCvqPppZQBQLZQTqTvFTvZ
|
||||||
|
BnQnQFwRmRwmwdBSFDFnmSDVLCJTCTppVVmGLVTCLcgVpC
|
||||||
|
ZlWvhvZjNrbNvqjNhlfPfqjCGHrsspggTpVLpsJCpcJVgg
|
||||||
|
vPzNvqjWhqFzGSnRGMDG
|
||||||
|
wZnMZzzZZchDRtVsqtCtwV
|
||||||
|
WmWpWWmPPWrmrmBmWrTlTFPNVqVCRSDCQHcqVTtTqsSDSTSD
|
||||||
|
PrppdFlWWlfrWmpWFffrdcGjJJGggnnhZGdLLgGGndvz
|
||||||
|
FShHNmNhRhNJmBnQBQJrmP
|
||||||
|
VTgzDTjwfffwzDvwlcczzVSJbQlBQSWBWCnPJPbJWWbC
|
||||||
|
tzSVtzvSvGSRZqqFMNtpRR
|
||||||
|
hPZhGDZpnCGtDhznjmLmdJffdNzJ
|
||||||
|
glwsSrQwBvLdgLzdcj
|
||||||
|
QsRbHllzzlHwHlBszWlTBFbpDPMhbPDVGpGFpPtFPp
|
||||||
|
SRjStRDctgDSBzLvPvNrDhmPLr
|
||||||
|
QqTHGTPJmmHmhNmH
|
||||||
|
TGQZsTqFnQZCJTPsnJnZQMjVRBVtcVRSVRBlwccSCtBS
|
||||||
|
bbsNsvsvnNPTRRllbblLqhtQCqQSLCGGHSqHNC
|
||||||
|
wFpzFgqVzqVJWFDwqJDmSBBmHBHhShLQhCGSBCGH
|
||||||
|
MJVpFMqgwMqRRbZsMbZMrP
|
||||||
|
PPdDhvNDQdmgQPZmQVHHtHGGWVGbffWGvs
|
||||||
|
MMLCTRRLlLclTLRMRLCwMLHWVctbVVHWWWFfVjVGsFWW
|
||||||
|
MRSMMlpTJRqClBCRqBDnzqgQPnqgznZPZqbP
|
||||||
|
MrMNPNNpjvdprWtrpMsthqBfqlnfqcGhVBqFRcnqFG
|
||||||
|
QbDgSSQbgSDDmDVmlqSCRllRcFqnqfBl
|
||||||
|
QVJbVmwwDQbzVTgbppNJNMWNjNNPrdpM
|
||||||
|
WwJJNbtHfpLpVgZZPVFhZh
|
||||||
|
vmmqlDvRvRfqBSrlzmmMjRBhcVhQVZhVghCQQQQTcTrPTP
|
||||||
|
jSqMmqRzMDDjvqlBqsBMBmmwGNJwJnwLNfbGwddswnJtJH
|
||||||
|
RLgRmRggbvbzzPmmRNmzsQWFtSGNtwSNQnntFwnnCw
|
||||||
|
pDBrBHpHhlldphHBHhJVFSLnWWFJttCtQSttSS
|
||||||
|
hfHrpphHBppfTvmzgMmbLbgf
|
||||||
6
input/day3_example.txt
Normal file
6
input/day3_example.txt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
vJrwpWtwJgWrhcsFMMfFFhFp
|
||||||
|
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
|
||||||
|
PmmdzqPrVvPwwTWBwg
|
||||||
|
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
|
||||||
|
ttgJtRGJQctTZtZT
|
||||||
|
CrZsJsPPZsGzwwsLwLmpwMDw
|
||||||
127
src/day3.rs
Normal file
127
src/day3.rs
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
use crate::day_solver::DaySolver;
|
||||||
|
use std::fmt;
|
||||||
|
use std::fmt::Formatter;
|
||||||
|
|
||||||
|
use super::util;
|
||||||
|
|
||||||
|
struct Bag {
|
||||||
|
left: Vec<char>,
|
||||||
|
right: Vec<char>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl fmt::Display for Bag {
|
||||||
|
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
|
||||||
|
write!(
|
||||||
|
f,
|
||||||
|
"{} and {}",
|
||||||
|
self.left.iter().cloned().collect::<String>(),
|
||||||
|
self.right.iter().cloned().collect::<String>()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const POW_MASK: [u64; 6] = [
|
||||||
|
0xAAAAAAAAAAAAAAAAu64,
|
||||||
|
0xCCCCCCCCCCCCCCCCu64,
|
||||||
|
0xF0F0F0F0F0F0F0F0u64,
|
||||||
|
0xFF00FF00FF00FF00u64,
|
||||||
|
0xFFFF0000FFFF0000u64,
|
||||||
|
0xFFFFFFFF00000000u64,
|
||||||
|
];
|
||||||
|
|
||||||
|
impl Bag {
|
||||||
|
fn priority(c: char) -> u8 {
|
||||||
|
return if c >= 'a' && c <= 'z' {
|
||||||
|
c as u8 - 'a' as u8 + 1
|
||||||
|
} else {
|
||||||
|
c as u8 - 'A' as u8 + 27
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
fn find_duplicate_priority(&self) -> u8 {
|
||||||
|
let left_mask = Bag::build_mask(&self.left, 0);
|
||||||
|
let right_mask = Bag::build_mask(&self.right, 0);
|
||||||
|
|
||||||
|
return Bag::match_masks(left_mask, right_mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn build_full_mask(&self) -> u64 {
|
||||||
|
return Bag::build_mask(&self.right, Bag::build_mask(&self.left, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn build_mask(chars: &Vec<char>, initial: u64) -> u64 {
|
||||||
|
let mut mask = initial;
|
||||||
|
for c in chars {
|
||||||
|
mask = mask | (1 << Bag::priority(c.to_owned()));
|
||||||
|
}
|
||||||
|
mask
|
||||||
|
}
|
||||||
|
|
||||||
|
fn match_masks(mask1: u64, mask2: u64) -> u8 {
|
||||||
|
Bag::find_set_bit(mask1 & mask2)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn find_set_bit(v: u64) -> u8 {
|
||||||
|
let mut r: u8 = 0;
|
||||||
|
let mut i: u8 = 0;
|
||||||
|
for m in POW_MASK {
|
||||||
|
if v & m != 0 {
|
||||||
|
r |= 1 << i;
|
||||||
|
}
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
// println!("log2 {} = {}", v, r);
|
||||||
|
r
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct Day3 {
|
||||||
|
bags: Vec<Bag>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Day3 {
|
||||||
|
pub fn create() -> Self {
|
||||||
|
// let lines = util::read_file("input/day3_example.txt");
|
||||||
|
let lines = util::read_file("input/day3.txt");
|
||||||
|
|
||||||
|
// Put the input into the day struct
|
||||||
|
return Day3 {
|
||||||
|
bags: lines
|
||||||
|
.iter()
|
||||||
|
.map(|s| {
|
||||||
|
let (left_str, right_str) = s.split_at(s.len() / 2);
|
||||||
|
assert_eq!(left_str.len(), right_str.len());
|
||||||
|
Bag {
|
||||||
|
left: left_str.chars().collect(),
|
||||||
|
right: right_str.chars().collect(),
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.collect(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl DaySolver for Day3 {
|
||||||
|
fn solve_part1(&mut self) -> String {
|
||||||
|
self.bags
|
||||||
|
.iter()
|
||||||
|
.map(|b| b.find_duplicate_priority() as u64)
|
||||||
|
.sum::<u64>()
|
||||||
|
.to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn solve_part2(&mut self) -> String {
|
||||||
|
return self
|
||||||
|
.bags
|
||||||
|
.chunks(3)
|
||||||
|
.map(|bags| {
|
||||||
|
Bag::find_set_bit(
|
||||||
|
bags[0].build_full_mask()
|
||||||
|
& bags[1].build_full_mask()
|
||||||
|
& bags[2].build_full_mask(),
|
||||||
|
) as u64
|
||||||
|
})
|
||||||
|
.sum::<u64>()
|
||||||
|
.to_string();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,12 +1,14 @@
|
|||||||
use std::time::Instant;
|
use std::time::Instant;
|
||||||
use crate::day1::Day1;
|
use crate::day1::Day1;
|
||||||
use crate::day2::Day2;
|
use crate::day2::Day2;
|
||||||
|
use crate::day3::Day3;
|
||||||
use crate::day_solver::DaySolver;
|
use crate::day_solver::DaySolver;
|
||||||
|
|
||||||
mod util;
|
mod util;
|
||||||
mod day1;
|
mod day1;
|
||||||
mod day_solver;
|
mod day_solver;
|
||||||
mod day2;
|
mod day2;
|
||||||
|
mod day3;
|
||||||
|
|
||||||
const MAX_DAY: u8 = 2;
|
const MAX_DAY: u8 = 2;
|
||||||
const DEFAULT_BENCHMARK_AMOUNT: u32 = 100;
|
const DEFAULT_BENCHMARK_AMOUNT: u32 = 100;
|
||||||
@@ -74,6 +76,7 @@ fn build_day_solver(day: u8) -> Option<Box<dyn DaySolver>> {
|
|||||||
match day {
|
match day {
|
||||||
1 => Some(Box::new(Day1::create())),
|
1 => Some(Box::new(Day1::create())),
|
||||||
2 => Some(Box::new(Day2::create())),
|
2 => Some(Box::new(Day2::create())),
|
||||||
|
3 => Some(Box::new(Day3::create())),
|
||||||
_ => None
|
_ => None
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user