[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">
|
||||
<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="channel" value="DEFAULT" />
|
||||
<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 crate::day1::Day1;
|
||||
use crate::day2::Day2;
|
||||
use crate::day3::Day3;
|
||||
use crate::day_solver::DaySolver;
|
||||
|
||||
mod util;
|
||||
mod day1;
|
||||
mod day_solver;
|
||||
mod day2;
|
||||
mod day3;
|
||||
|
||||
const MAX_DAY: u8 = 2;
|
||||
const DEFAULT_BENCHMARK_AMOUNT: u32 = 100;
|
||||
@@ -74,6 +76,7 @@ fn build_day_solver(day: u8) -> Option<Box<dyn DaySolver>> {
|
||||
match day {
|
||||
1 => Some(Box::new(Day1::create())),
|
||||
2 => Some(Box::new(Day2::create())),
|
||||
3 => Some(Box::new(Day3::create())),
|
||||
_ => None
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user