mirror of
https://gitlab.com/MisterBiggs/aoc-2023-rust.git
synced 2025-06-15 14:36:50 +00:00
day 1 leggoo
This commit is contained in:
parent
4d197e403a
commit
9cbaf311d9
4
.vscode/settings.json
vendored
Normal file
4
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"editor.formatOnPaste": true,
|
||||||
|
"editor.formatOnSave": true
|
||||||
|
}
|
4
Cargo.lock
generated
4
Cargo.lock
generated
@ -27,9 +27,9 @@ checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "itertools"
|
name = "itertools"
|
||||||
version = "0.10.5"
|
version = "0.12.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
|
checksum = "25db6b064527c5d482d0423354fcd07a89a2dfe07b67892e62411946db7f07b0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"either",
|
"either",
|
||||||
]
|
]
|
||||||
|
@ -3,8 +3,7 @@ name = "aoc_2022"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
itertools = "0.10.5"
|
itertools = "0.12.0"
|
||||||
scan_fmt = "0.2.6"
|
scan_fmt = "0.2.6"
|
||||||
|
3231
inputs/day1.txt
3231
inputs/day1.txt
File diff suppressed because it is too large
Load Diff
2500
inputs/day2.txt
2500
inputs/day2.txt
File diff suppressed because it is too large
Load Diff
300
inputs/day3.txt
300
inputs/day3.txt
@ -1,300 +0,0 @@
|
|||||||
lflZfgnSnlmmlgGfjGthQPtLNsQhvbHLLpSS
|
|
||||||
zrCVDVFMJTCTcCJMwCThWbtbpbWpPbtbHPLQssLsHP
|
|
||||||
rBFcrwFzFwwVDcDrzTzJfnRGjllBdGZnnZfhqmdn
|
|
||||||
FjpnFRDmbRtnbJrFJmSTsGShWVhGqGVVsmqs
|
|
||||||
ZwPvNPdzNZwfzBNLdNNNNcLvhnQhqMTVsTGSWSqGqTdVWhMT
|
|
||||||
vgLZHfvLffNLPbggnrbFpJnCbC
|
|
||||||
hzJzGjGfqmGtDQtDSvVV
|
|
||||||
plpcMBNBcCTlTgCMbvtrsSVsVJDJlrwDQr
|
|
||||||
McHBMMcTTHgJnWqnRqjzZnnRzR
|
|
||||||
ppvsGZhDGprrSjSllwfZ
|
|
||||||
TTFMMFJMgMHmHmdqdSvNqlSSSNJv
|
|
||||||
mgBPHTRWFRVcpvsVttppbv
|
|
||||||
ZZDssfMDMtqqppZLLJzmzSTwNJplTSgpgm
|
|
||||||
BdCRRHFRbccWWBvBHCdcJVngNVSvTgVNzgNNVmnz
|
|
||||||
QHFFrBdcGtqPmmQh
|
|
||||||
qLvQFRgLSSNgqQvRrqLTQvLttwDBFWDwjwFttDdlBBwBwM
|
|
||||||
nbsmZnbmHbZVCGPVmHWtwlStBDtwBMtwWHMj
|
|
||||||
CnCbhGCPpPCSnZmrgRNRqNRrLNgrzh
|
|
||||||
vgLWWHRNLnWwLggWzwLFFzMmBMRMhMhTbhsmmsbbmQTm
|
|
||||||
rScpJJDDpjtSDPPPJDpjqPCHBBtlTdblmmlhBsMMmTsbmtsl
|
|
||||||
GHZHCPprSSwgvWNVwVZv
|
|
||||||
dMrCMJMqvtdFwcjczjQzThtm
|
|
||||||
gGbLblLpZlHvllQhlQwcjT
|
|
||||||
GHRWvPRbPHPRvNGbvdRBqdqBBfRqBqnrfF
|
|
||||||
VsHcljlbhmHbHHlcjVcVShJSCdJCfMrMMQDfRNFCfMRGfNrQ
|
|
||||||
tGtvLtpgBTGvDMMRdMMgdCNM
|
|
||||||
pnGnGqGtvtzTLjWqmSSjHhWhWs
|
|
||||||
NJTDntDNDVjNnjBfjjjcCZCZcVqCSCLqcSScCc
|
|
||||||
zvhgRgQvvdllgQbHghlvHrRHSScBCRqqwCLGqSMCZCGGGqMZ
|
|
||||||
pvvrHzdgvlgzQphQsDFmnsNTTtjfjJJmPB
|
|
||||||
ScnSZSZZlmjmHjjWHHWZftJVJpppwtVVnLJtnptnwt
|
|
||||||
CFFlQBbbPQqrBwJrJJrGJD
|
|
||||||
PgTqRddFzgdRPFFbFgqQFgsSjfHWfSHmSMWcjZlmZmjTZM
|
|
||||||
lzBRtctbnBRBRBBWnDnDWjlLVvwGMrvwrHHQHGmDvHQvHGrV
|
|
||||||
FsTgFCTSgsCNspzhCGMfTHQVwVMfMmMmrH
|
|
||||||
hSdSFgghhqpRbLqjntqnPz
|
|
||||||
DCDnNGFFDQdQmVDNdFVNFccpJLHWSvPLrvvvPtGGhSttLv
|
|
||||||
sBgTzzZqrBlfljslWBhvHSvPBhSBJSSL
|
|
||||||
lRlTgMzlzrwRrnmbCMCFnNVMnc
|
|
||||||
MJQJMJHBrsdrHwts
|
|
||||||
dbbSVGgbjVqGTVfqddCTpmWWcprgNgWmcWwWswpN
|
|
||||||
LPdGGdVGPCVdLBlBMlDRRRMD
|
|
||||||
vdcwZLTdTFFRDHVgmpppMmqZ
|
|
||||||
jGPzCnQPjlsDVqDpqDHbgP
|
|
||||||
BjWJrlGQQzrCzBzlzBCGBznzwNRNcwLJdwTJFTHRSTvtLcNN
|
|
||||||
ngrgqTjJJZnjFJpnqnnVTLzBbbHbLQdLHLHbrdHdHG
|
|
||||||
lNcltCCtvftfWssPbMQdMBzhbbcBDLdh
|
|
||||||
PRtWsQCmWsmSsCNCSvCSWlspwgqjqmqjTpnJZwnZVpFwgq
|
|
||||||
PjWjGDCjmrmWPNmvWDWFmgCNfVJRLfJRfLDLJQlfHplpRbfR
|
|
||||||
MtZMtcSbccZshTtQTVVTpzHlLRRQLV
|
|
||||||
cZhbwMnwqsqnhnqtMBnvNFrnGPNPPmgPGCgW
|
|
||||||
WBjWjWjqZwQJnJZCZZbf
|
|
||||||
StHSDRPHHcTrTrJpLCCMbrqnJn
|
|
||||||
RvTTvGqcqTFvSvSRDHvRjlhgWBWBdhjwjGgNjhlj
|
|
||||||
FSbCqcFsbCPtrcrqhCScbshMjHDGGWBLHBnjGLPBHGGBGnHj
|
|
||||||
flQdlsgQgGnQHBHjDn
|
|
||||||
vllgRZdmvsvpgdwZgzJdwRmprqccSFcSShJbTSttqMCrCCch
|
|
||||||
GwwgCtvHgwcHVVDqpWdfnqVv
|
|
||||||
sllBsSNBjSrLfqhLgjfqhL
|
|
||||||
ZbQbZQzgQQPSblBggNQRHGZHHCmwmHFGGcwtJm
|
|
||||||
CmGVGBTVTmmTWTNLLCVgCSFvDQppQQDDnDQDJpMggfnQft
|
|
||||||
RrtdqtldPbHzRbnjRfQZjJfMDnMj
|
|
||||||
wcwhccqrdrrlFmLGCwCtSwtL
|
|
||||||
pzZznZphZnpcNWSwGwVVPzrPrG
|
|
||||||
lgFllLLltgbDsrBCwrjWGmwmtw
|
|
||||||
MgJbDLlMQRJccchrhc
|
|
||||||
wbbjzZhdGDwLzZSBWqqHmZgssCWqFtMZ
|
|
||||||
VRJccfvPlTTlQlHQCWQhMMhCCHqQ
|
|
||||||
RlVfVJcPTVTfvvvJfNJVlcBjGjwhSLdBNGGnjLLBwzGb
|
|
||||||
bvpqHMVTTpZnqnWRQQQw
|
|
||||||
tfhFFdSFggfhbldhhZcnRscRcQmnRs
|
|
||||||
DPzgFJzFLfFbFSgPFgdPglMHpvBpHTCMGpjvMMpLvvNG
|
|
||||||
JggGLQgQpLpSPRJgGPSnGlFTDBjjRFvRjtBFjWvFjqRj
|
|
||||||
cmHhZcMHcWjrTBjrvm
|
|
||||||
dbHwdNNHhwTNThZHdlwQJJwngpgnJGnSPw
|
|
||||||
DbZjVfjVLhZDLpWPHpMZPmmGNp
|
|
||||||
lFcJJGcFqnBFqwJCHHMmNHPsdCNp
|
|
||||||
BlwccRQtBwBrwLGbGhGggzLgzR
|
|
||||||
RBhZPjlWqgbNbgGLBr
|
|
||||||
MzSmSzpFdHwpswzzHnzjnvLCbgtrtLGLbJLLJNtJtbwJ
|
|
||||||
MsSHdmMdpFfmFjpfcPWRhRVZfWQThZ
|
|
||||||
mqmssPCFhhsJccVg
|
|
||||||
FTttfwdjjHznJgfngpnc
|
|
||||||
dNFTjQNRtRNQldRNrRdHMRrlPZqCGlGBCqqZmmbPqDmDCmGW
|
|
||||||
ZJVRRZZJRcvmPhCJrvhm
|
|
||||||
PPWQDTfWbnnstlCGvjGrWMGMvr
|
|
||||||
TbbwddndsnsfDpwFqZFVHBVPqc
|
|
||||||
tFmpJmgJJgmFDWgRgFrrlGSltSQvZChMtCMM
|
|
||||||
TLcZHsjLVNBwGQCCGlsCShvh
|
|
||||||
nqNdwwccBwVLwjjDznZzppbgzFZfDF
|
|
||||||
qsTqCCCszjlqTssBShlQSSZFgZZhgB
|
|
||||||
LDPmVgDDJdLPrPgLgPZSFZQfhQGGBQJcSFJS
|
|
||||||
mvmVbVvtggVtvgdLVvtmptCsNTtjRnpRTTjpsqCp
|
|
||||||
BdNPLnmFvLFNgnmBmnFGnwSZZZWwqWgqjwWssTHWSS
|
|
||||||
bJhMzhbVMbDCcVpZtjHMqTMwtttSjH
|
|
||||||
hzclfCppVqQfbzQVbpzPQLNFBdrvdNGGBnmrmP
|
|
||||||
nLVLzBDJCCHqdLncqVJgSsDlGsbssmvvvbvbff
|
|
||||||
jMNHFWNTZZNwMPrPWrrPMMrrvSllbgsllfgbgvQsvGmglZbv
|
|
||||||
RjPjrjRPtNrwHhBtncCJtJtL
|
|
||||||
jbhhjhNjvqNbmjMjqhtCFdmPFdlzJzfFfJQJfR
|
|
||||||
GBBZWrZWgpSsnSngrrSgHzFzFFdClzfFQFlRZftQPR
|
|
||||||
TrGTrGWHpHWGHWVWsngprHpLbLLVvcqMcNbVNLhwVNbtNb
|
|
||||||
sQDvDmDLQFDRsdchzhBczLhhPhVz
|
|
||||||
MbGGMjjGZSjvfHvHSbfwBqcPnqqcPVhPNnqnzjcn
|
|
||||||
ZwMMHrWvSHbfJfTrbJwSMMfMsQDtsFRptlpdCRpWmptQDRmC
|
|
||||||
TwMHdcTznLqzTrHdzzzHTdgMRQWRhJhNjjvgQvQQWNjl
|
|
||||||
tbfsVbDCVSSDtSPQJWPvRNhQtghN
|
|
||||||
FVGBpGCVFCbfCbVbZCSHqmwqcqLcdHJGwHqqTd
|
|
||||||
lTlGfjLGwHNMggscsDRwsC
|
|
||||||
MrFtrzZZPZrtVQtnrrFdQhhDPDSphgDRhDcsCCgWpW
|
|
||||||
ZJmJVzVVJFHfGbqJGMLv
|
|
||||||
zsFZVjzlHPfTzGfLGt
|
|
||||||
mdrrmdMMcBcmNqNbPqfRDLPWPlqTWD
|
|
||||||
BNQhmmrBrQghgSmNBQQSmvwssjZZSJHljJFFHZJvZV
|
|
||||||
rLZCsZdMJfdNCsfZMrLdFmssnwgTRQgBBwgRwcngTNVRVQjV
|
|
||||||
StqDHlStDPgRTqcwjT
|
|
||||||
GlDGDhbpHhvSHWlzbWlhpzhJdrFLrCLmvdmFZsmJJjJfdv
|
|
||||||
pJHJMJsJjSMFdHhszFvMhlmmGNlSmmBGllWmVlwcTw
|
|
||||||
ZqZRDrZCZDtPDPDrCngrnnPQGVmGHVBWGWtGmWVwVlmTlGNl
|
|
||||||
ZQPgRqrrQPqLnrLMvLphHdvdjpJddb
|
|
||||||
NwbBjljFbcjtTcccqW
|
|
||||||
RHZrPHPpNgZTzTqc
|
|
||||||
sfrPdmPdpsmPPPrfQPVGlwGVBwbGVnFlNQCG
|
|
||||||
hQdNTlzhdTvrhdnTBqcWBLsBHgWQgBPg
|
|
||||||
zwzRDbDfqZBLHDLB
|
|
||||||
wFbFmjjRzfmjGGMGMfmJwwGCCnvNhpvSCNnrvJvCprnnSp
|
|
||||||
zshNNJbwGFJfGJzzzNRnHGnCnRHcRPgTmPmn
|
|
||||||
LMDVtZLStrrZClBrVDllLSBWRPTPPRRPmgWPVmPTPHTWgR
|
|
||||||
SDSqLMlrtLlLtrBqBdlMZjvffCNzwvhjvvzhdfNhvf
|
|
||||||
SLQmGBmhLSLQTBGBGwdwpJjwwQjwcVpJZJ
|
|
||||||
sNrWrWPNbHghrbgnNNzbWbFWdZpMpzVpdMZMzMMVZcwwJdwd
|
|
||||||
frrPNNWshWhhHDvDGDRSBSRvttqv
|
|
||||||
FJqpgvhJJRjFjZTqDsMHrzwjsSsSszMrMm
|
|
||||||
PPPQWGtnbbfBmPsFswwsMrcc
|
|
||||||
QfBtbldtWQfbWbnfGlFqZppvpFZZLhFlpq
|
|
||||||
ZqSMZHHCMpHTZTWmFTFZPZQJBgVGVJQvVVSDBvBtcBBG
|
|
||||||
RNsndwsNjsbsgGCgjQBttcBg
|
|
||||||
NRszRRNzLNNNwNfhCCrfdmTqFZllFFHFFpWhlTmWpq
|
|
||||||
llbbzDmSspGRpHpzsldzRRsVtFBBFJMMVVFLTTTMVtLTDM
|
|
||||||
cqgjqvNgvqCjQZqgGGnhMTnMJVLBLMtFhhVFWB
|
|
||||||
PfGGvQrPCjvjZgGCCCZZZbSmmmHlRpprlHrHwssSRr
|
|
||||||
mRmpFpWpfMMgLnmS
|
|
||||||
CdCsqzdRzqStLjSqfMnL
|
|
||||||
wQRHdTzCQbzCwsTrZBlFZGpVlpFGQD
|
|
||||||
qnMTnTVSTPTHTHcMZMvVpmppmFmVzFLLFLlFpG
|
|
||||||
gBjDsjRRwhDDghthwwWZwLmpmwWWLWLbGZ
|
|
||||||
NhZtZtBgPTNJJNTS
|
|
||||||
jLjjmpHvzvZrfzQjmfHHWrfbqblLsSlTsqsgqPJbPqVglb
|
|
||||||
FBcCwDwtwgcgnCwcGchtJSsRqVRVJPPqDlbSDRPq
|
|
||||||
MBhthFNtMGCwhcwnpQfWjNrQprpvzpgQ
|
|
||||||
RfCnWfnhCbwHgWjzBgzB
|
|
||||||
PsVqDsSTshsgszpsph
|
|
||||||
DPDvTVtTShhSZhmqSvLlQJFnQJJZnbCnlCCZ
|
|
||||||
pRRdJngltnwwvTNSWqWffqgBqD
|
|
||||||
HQGcsdrjzMDDBfGMGG
|
|
||||||
FLhsdbzCLLHjhntpVnRPRvZV
|
|
||||||
gZNwQHHNRlGvhvhGRvRb
|
|
||||||
dpSSBDrzdCfcSzfrzZrfCfMbthWWWPttDthvMFWvvvPj
|
|
||||||
ZdpBpZCrssBJZfSJBzBdCTcnmQwmnVVlmqTQTTQlHLwNnN
|
|
||||||
ssCpTttVVVpzZDVvRpCsRtDgWBWBBFBJvvJHMBghGghrMJ
|
|
||||||
lwLmNNLwSblbmSQLfhJHZgHrHhhJJhHHmW
|
|
||||||
QLSdbdPqndlNlLdSLNQncpRtRTcRVTPPZRCjVCcc
|
|
||||||
wzzJclzcTThvWSSCqRlQSsNN
|
|
||||||
rDpVjpVVDpsQSRDRfQmm
|
|
||||||
GLbjrLpFbgLVLLgdbjVpchcFZhvBwJvtvtJcZwRB
|
|
||||||
wPgZgLVMfWVTgmTZZZftJjtfjtJCcdpjdCqc
|
|
||||||
zGGbQQnQGvBBhGQvvvBBSBvQdhdqqCpdddDmJlCcDjCtJdmJ
|
|
||||||
HszzHBzQBSmGSwTWgswZPWTVgZ
|
|
||||||
GDFvzCFdrszSdNJrFfjjfqZjRfsjpqmcwZ
|
|
||||||
WbbVtVnBPWMgBLMBnQQnBQHcjfjpZRwqcwMfcNTZRqqNmT
|
|
||||||
WQQnVVPHtggLghWWhHnPVQbvlJhSlrvJDlFGJDdDCzGNFF
|
|
||||||
dVhTBjBHtTVqWRJZRqhJZQ
|
|
||||||
brSDTbDfcCwDzfCSbwMQnlqCRJnMgWWnZngM
|
|
||||||
DFwNSrwNwbDzbFTTFtjmBpVdGpHs
|
|
||||||
dPQfdfTzDrFDmFDBgBFj
|
|
||||||
RlJRclcswJRvnwPcpjbjbbCZjFjbBmsbFZ
|
|
||||||
pqncGlcRJpHGpllGHhvPhRTHrQrttVVfrdQzfrTdftfV
|
|
||||||
RCzTzRMTfCfRRDzRfhSmZZlCslBbZZBVtZBZsqBL
|
|
||||||
nvvJPpdcFnPcWnFnVZvBqVlZMbZBNVlV
|
|
||||||
FpWPMdjdPhSTmwfSjD
|
|
||||||
NDJjNHLLNWjcLLWCLJLZjLDtRqqtgtMqgtqnRqnSRgggtZ
|
|
||||||
BwrlfFwmQwhwfPBFhsBdFmbQggCgqQVtbRSqttqMngnp
|
|
||||||
llPPwsPlGshBJGWJLcHvCzNv
|
|
||||||
rBvTmwdTSbnrvVWsWVftGfJQGT
|
|
||||||
gNRLLjlPRWnFVRFDFW
|
|
||||||
lpCpPNZqZCdvdppnSnBr
|
|
||||||
ShRdCrJgHClZJtZDGMMz
|
|
||||||
LvqVVTTNbVPLQNFTnwwMtzFZGDDwmtnM
|
|
||||||
VLbNvpPvTNVqVbbNpbVPGNLPrRWrcRCWdSrCjWSHcHSdWpCh
|
|
||||||
tNmZnLSZPFLDnLTmhJMWczQdhmWhWH
|
|
||||||
bGqbgrpsCsWhcChNQfJz
|
|
||||||
vwlNbppsRGRRSSSDvjTjLZjZ
|
|
||||||
zgMZhgfBtftSZQQmLHpSWH
|
|
||||||
cdqcqnrJVGjjqPVjrPnfpJmsQHQQpsSsbsSDmm
|
|
||||||
NNnrNqNlrNcPTlBvBvgggfMv
|
|
||||||
llPrrLHBHCrRRBjrHCjBdrPmvJZzZgZbmgJlZmZhMhhmvh
|
|
||||||
pNDstVtNtGFNSDFScQtfwzzFJwmJhgqzbMwqZJmh
|
|
||||||
fpNsptGtQcTsSTccprddCWPrWdTRBMMCMd
|
|
||||||
TTtDVqTsTcJFgbCqmbCq
|
|
||||||
NWZQnllzfBFZPBGWQGzFPFRNNgHbHrrwbNrmCbggJRHR
|
|
||||||
nBZjGFjMQBMPZnjfWjstpcctttvVtcTttMpL
|
|
||||||
qphVCCwnHqhnRVznFwvLtBTLDTWZtwLWWS
|
|
||||||
JmdlsdlsjfJfrtjTcvtctDZSSB
|
|
||||||
rsmfPGbrPbPJfPmrsgMrdJdlFTHhFCqhNqVHnNHHCFznhphG
|
|
||||||
JsWFMJJzrhSSdFdldmmdmdQc
|
|
||||||
qLLgCVTgLbBvqsQPVdQGcRRmQmdc
|
|
||||||
bBCBgCCDbLDqTvqqjpShHfzrzMfjtHHSHsfz
|
|
||||||
nvFSBFlvvgQFFBzQnlQglmRRzqwsrrMJJMrsMqrfrwzf
|
|
||||||
CjZNCNhLDNbPZZLZZhwVjpcfrqRhsdJqdsshRTTdqJrJ
|
|
||||||
jNNDDppjpjDWNVLCVVDpGVVPBFtlSQFWvvQvSSQHSgwQnvtB
|
|
||||||
WhrQWBRWwhzgmpnSpH
|
|
||||||
LqMVsJVvFMJLJMsfNjsTJvCgFbSmzgpSHzmngHbGPCbm
|
|
||||||
jvMjjtqVjTRnwZQwBWwt
|
|
||||||
jfTWSGSTTWhgcngQfbtJfNzztBQBzz
|
|
||||||
pVVwsdppRVPLVmPsVVHsjPLPzQdzBzQFzFBNNrJZZQBzbbFF
|
|
||||||
VmsqHmjHmpvGDSWDvlclSl
|
|
||||||
PNZfTFSFfTFGCHqqmbFm
|
|
||||||
WjzRWrjVgnjzplrWWjJVppgGPGsgstmPCCtcmssQqGQt
|
|
||||||
pzjzJVvnzJjWvpPlnVRVrvnlTDLNNhwfdNZLfMZLwLhTNvTw
|
|
||||||
QFrQZMFVrVpVszzcNTdMRCCb
|
|
||||||
SvljGmlvLfwLhLLLHlHdNzsRthhbbRccRCRNbC
|
|
||||||
LfwlDmlvGBSjjlLLgpPpFJqgQndQgZBJ
|
|
||||||
RBjPRHdjPfqQcfhcdv
|
|
||||||
SngFcJZJlcnctSlhhsQvGsDGDsDnfs
|
|
||||||
pSmFgSWNJFNtStrmNtpCCjPVcbjjHbcWTBHBHL
|
|
||||||
vGjqCPqNPGFGNftLwmZwfQNTLp
|
|
||||||
hrdBCSHcCJJcCBShJswmLQpLbbQZTLLJmmZp
|
|
||||||
BdHHSzrBWdzchzzCcdzHddcDVWFnjPjllGggVlWljPFFFWPM
|
|
||||||
hBtZZnpbhbPZJbnhDtPnpBtpfjfNNzrrCzjFzFzFTjfjjWzJ
|
|
||||||
gHllMqRSmqcqMTdggMqHlcFzRrFQWNfvrRvzQrWjWvWf
|
|
||||||
gwqlgHmmdsgwlwMHZtpsbBbtDBThbBht
|
|
||||||
CsDLFFLFCvczsCsJrCrJJLRgbQQgmMmPbDDQbPnMgMmg
|
|
||||||
VlwNBNVhjNVNWBwWjtbRMRZzPmQnfQMPnlZP
|
|
||||||
VWWSSwGTwtwWWNVwwpqJJrcJGvzqCJCqJF
|
|
||||||
wLwSSbzwCvddlvvlSj
|
|
||||||
THnQnnHttcvpQzrZRllZ
|
|
||||||
sTntBHTnVbPbgzsbgL
|
|
||||||
FwHgrHvFQQwpHhNhTBLdpNNNLd
|
|
||||||
fCGqCVtszfSslCSzSGsfCssjNTqLTdmjNLBLdnTTTMTjTg
|
|
||||||
DccfslfgRSSVVzlcSVtzDRVHwQZFrwwvwFWbbbRRWwrFJb
|
|
||||||
CwwWwwFNRpFFpZQHtsmfqbQDTQTTqb
|
|
||||||
VcjzLjGjzGjGjVjLdzqmDqHrsmsqGRrHqGqH
|
|
||||||
RjdVlgdnljlBnSgPCpNwwMWwMM
|
|
||||||
tCCtqtbPGzsSQVzQTq
|
|
||||||
mzMmHMpRsRQTsFFV
|
|
||||||
DpzDwgdMzMLppNmNpDpfgrbhLcGtPrbtrbrbhnbBcC
|
|
||||||
BvsQBBBLvDQGjDvSQLTvrHprHlRpVlVllgRbRbHPqq
|
|
||||||
MMMMCpfJFZZMmCzwpVPCWRtHgqWgqClgtt
|
|
||||||
FwzmfzhFFdFcpvSDSBDThs
|
|
||||||
fQrGQbFFFrHHtlHPclzzPLvc
|
|
||||||
mTnwpNCCqMqjmCThpTpSvvtBczstlLznvsztsPPP
|
|
||||||
mCpTNhmmpCqCmjmpTjmLCpSJQZVfFVrDVfffFFgfgJQFdbgG
|
|
||||||
GmWjRBSfttcGfRcSclVVJqsTMllsgJVMVZwV
|
|
||||||
pPFNpfNCdNzCVMTTNqVssqJN
|
|
||||||
dzPfHCLLhdjjLGRnmnmr
|
|
||||||
GPhPfGWgggfslffPsVPGsqJMzLQJtBprwQJJGQwLpQrw
|
|
||||||
ZNdmvbDDbNvHbmZCcJQwMmzMwWWQrrwttp
|
|
||||||
bvdDNdnvNbnHDdnDHHRSbnqhqhWfjWFVTVhRVjfjFTfP
|
|
||||||
hTThfWNCDRfsVCDhpgzgbpPZZwbnZQns
|
|
||||||
GSjGGcCBGmdjdSlGBcmZwzJzpPpJzwPwQbzgPd
|
|
||||||
BGmcrcStcMMMmrSLmSMCvFVRFDhfFhhNDWWTqFqTvf
|
|
||||||
ZmjDTTbmqQCCQQSwvhsL
|
|
||||||
FGVJPmPmtRVRsCvvRLwwhC
|
|
||||||
JgdHJgmfbjzTpTMf
|
|
||||||
fTbsVCsssgLNrfNrgm
|
|
||||||
zQvzZlRvddvpNLpZrMNNLZ
|
|
||||||
HLvWFHHlFQvzHnnlnvQqhzWvstBwbGVtstjGqjjwqGGCcwGq
|
|
||||||
JNpNdzzdJhNnfNGBZLqZqlhvSZSG
|
|
||||||
QswtcmmwwmTmwwcwZSLlZLDSvSvlBZQD
|
|
||||||
FsVFBbFgFsPwtVBTwgTPcsmpzdNngfzfpCzJdzCJzNCndn
|
|
||||||
qcvrLBppgpWWWgLcpzPfhNDqdzqwDDzwhV
|
|
||||||
MZFjFnHFMHbMntMtnwStfddPhDffDfzDfS
|
|
||||||
QmnjMZnlHjmnMGFnFlMmjlZWzLgsGgcrspBBLCBcgvgBRC
|
|
||||||
sdfWHjZfrZrSPMCQ
|
|
||||||
zqtWRDDDRMbrQJPQ
|
|
||||||
zwhwzmqwzmFpWzvFqBmFvjNHlHfgVLBgdfVfNVjLsl
|
|
||||||
lRlBTlvlZfhtbGBWtFBz
|
|
||||||
cqCNjjqjrNrcNjwDqNPCVrSQStSWshFhtQhbQzGzmFCG
|
|
||||||
HjPPzMcdNqjcNHMqPjdpgpZflfdgnTfdlvlJ
|
|
||||||
VpwQJVRtHplnnwtppHhqWBCfVdNNPqPBPWsBDq
|
|
||||||
jzLZCrvvrZjZvqNffvDNDcWDWd
|
|
||||||
LTrZZLFZbgTzgjZZjFClJhTHTplQpmnQlpmpQR
|
|
||||||
JGJnSWLGSpWHVHwGGJHpZdwPdTTPMdTMDdlzccPMPv
|
|
||||||
gqrrmtbrbgggqgBtqmRSrFgNCzvMDvlMPDdddvzBcPMMMDBd
|
|
||||||
gjrmRgmtRggFtqjbhgbjrtnJJHWLHQWZZLhZsLLGHhSL
|
|
||||||
BtTDNggLRPdWQHqggg
|
|
||||||
wrVpVVlCJVGMMJVdHWSdPSqqRwSQSP
|
|
||||||
vCVrpvvGjlphBRmZBhmBhBND
|
|
||||||
lqDcZGcSSqSqbDnccSLJgHgLRfnvvJRLmvWJ
|
|
||||||
FVCFPChQzVhmsFBgddRgJBfdNfJdfv
|
|
||||||
FzCpmTQzjQCThppTSttqDccMTDGcDG
|
|
||||||
QCSGBGCrCsMBTCQwMGSfvvLNNnnVLDlNVNDdVdlr
|
|
||||||
ZHtPffjWbqgtmnNdvljFnFhdVv
|
|
||||||
JRWbmgmRJtmJMGGwSBBRRRfQ
|
|
||||||
LqNrCfCQQhtgnPnc
|
|
||||||
JWBrWrVlbWgbbtcb
|
|
||||||
VwvTBprdrVJVNLNMNNqfqpjN
|
|
||||||
bjVqdHrdqVHPsPNbqHbqNdjFGRwRGlttRtMtRtFFGMLHJw
|
|
||||||
cfSpZnBZWQBZJlGRJJcwGMGL
|
|
||||||
WWBhTMgDTZghVjgjssbrbddd
|
|
1000
inputs/day4.txt
1000
inputs/day4.txt
File diff suppressed because it is too large
Load Diff
513
inputs/day5.txt
513
inputs/day5.txt
@ -1,513 +0,0 @@
|
|||||||
[M] [V] [L]
|
|
||||||
[G] [V] [C] [G] [D]
|
|
||||||
[J] [Q] [W] [Z] [C] [J]
|
|
||||||
[W] [W] [G] [V] [D] [G] [C]
|
|
||||||
[R] [G] [N] [B] [D] [C] [M] [W]
|
|
||||||
[F] [M] [H] [C] [S] [T] [N] [N] [N]
|
|
||||||
[T] [W] [N] [R] [F] [R] [B] [J] [P]
|
|
||||||
[Z] [G] [J] [J] [W] [S] [H] [S] [G]
|
|
||||||
1 2 3 4 5 6 7 8 9
|
|
||||||
|
|
||||||
move 1 from 5 to 2
|
|
||||||
move 7 from 7 to 1
|
|
||||||
move 1 from 1 to 7
|
|
||||||
move 1 from 4 to 1
|
|
||||||
move 7 from 9 to 1
|
|
||||||
move 1 from 3 to 7
|
|
||||||
move 4 from 5 to 4
|
|
||||||
move 6 from 4 to 9
|
|
||||||
move 2 from 7 to 6
|
|
||||||
move 6 from 8 to 2
|
|
||||||
move 2 from 4 to 5
|
|
||||||
move 2 from 3 to 7
|
|
||||||
move 11 from 1 to 4
|
|
||||||
move 6 from 6 to 1
|
|
||||||
move 3 from 5 to 3
|
|
||||||
move 5 from 9 to 8
|
|
||||||
move 1 from 2 to 3
|
|
||||||
move 2 from 7 to 9
|
|
||||||
move 7 from 1 to 2
|
|
||||||
move 1 from 5 to 3
|
|
||||||
move 1 from 5 to 3
|
|
||||||
move 5 from 8 to 5
|
|
||||||
move 3 from 5 to 4
|
|
||||||
move 1 from 1 to 7
|
|
||||||
move 1 from 3 to 8
|
|
||||||
move 2 from 6 to 3
|
|
||||||
move 3 from 3 to 4
|
|
||||||
move 1 from 6 to 2
|
|
||||||
move 5 from 4 to 2
|
|
||||||
move 2 from 5 to 3
|
|
||||||
move 2 from 7 to 1
|
|
||||||
move 1 from 8 to 1
|
|
||||||
move 7 from 1 to 7
|
|
||||||
move 4 from 4 to 2
|
|
||||||
move 7 from 4 to 1
|
|
||||||
move 10 from 1 to 5
|
|
||||||
move 10 from 5 to 2
|
|
||||||
move 11 from 2 to 3
|
|
||||||
move 1 from 1 to 6
|
|
||||||
move 1 from 4 to 7
|
|
||||||
move 4 from 7 to 1
|
|
||||||
move 6 from 2 to 5
|
|
||||||
move 2 from 1 to 3
|
|
||||||
move 1 from 9 to 5
|
|
||||||
move 2 from 9 to 6
|
|
||||||
move 1 from 6 to 1
|
|
||||||
move 3 from 5 to 4
|
|
||||||
move 20 from 3 to 9
|
|
||||||
move 3 from 7 to 1
|
|
||||||
move 3 from 5 to 2
|
|
||||||
move 3 from 4 to 8
|
|
||||||
move 3 from 1 to 3
|
|
||||||
move 3 from 1 to 2
|
|
||||||
move 2 from 6 to 1
|
|
||||||
move 10 from 9 to 6
|
|
||||||
move 6 from 6 to 7
|
|
||||||
move 4 from 6 to 3
|
|
||||||
move 11 from 2 to 6
|
|
||||||
move 1 from 8 to 9
|
|
||||||
move 13 from 2 to 3
|
|
||||||
move 1 from 1 to 9
|
|
||||||
move 1 from 9 to 4
|
|
||||||
move 1 from 8 to 2
|
|
||||||
move 1 from 8 to 2
|
|
||||||
move 4 from 7 to 8
|
|
||||||
move 8 from 6 to 9
|
|
||||||
move 3 from 2 to 3
|
|
||||||
move 3 from 8 to 4
|
|
||||||
move 11 from 9 to 2
|
|
||||||
move 7 from 9 to 6
|
|
||||||
move 1 from 1 to 5
|
|
||||||
move 4 from 4 to 9
|
|
||||||
move 21 from 3 to 1
|
|
||||||
move 1 from 3 to 9
|
|
||||||
move 7 from 6 to 3
|
|
||||||
move 6 from 1 to 2
|
|
||||||
move 13 from 1 to 5
|
|
||||||
move 2 from 1 to 2
|
|
||||||
move 3 from 9 to 3
|
|
||||||
move 2 from 2 to 3
|
|
||||||
move 2 from 6 to 4
|
|
||||||
move 3 from 3 to 5
|
|
||||||
move 13 from 5 to 2
|
|
||||||
move 5 from 3 to 4
|
|
||||||
move 2 from 7 to 9
|
|
||||||
move 2 from 4 to 2
|
|
||||||
move 1 from 3 to 8
|
|
||||||
move 1 from 6 to 1
|
|
||||||
move 4 from 3 to 7
|
|
||||||
move 2 from 5 to 7
|
|
||||||
move 1 from 7 to 2
|
|
||||||
move 1 from 5 to 9
|
|
||||||
move 4 from 7 to 8
|
|
||||||
move 1 from 1 to 9
|
|
||||||
move 6 from 8 to 1
|
|
||||||
move 4 from 4 to 8
|
|
||||||
move 25 from 2 to 9
|
|
||||||
move 1 from 4 to 3
|
|
||||||
move 1 from 3 to 7
|
|
||||||
move 4 from 8 to 1
|
|
||||||
move 1 from 7 to 4
|
|
||||||
move 3 from 1 to 6
|
|
||||||
move 5 from 2 to 1
|
|
||||||
move 1 from 5 to 1
|
|
||||||
move 1 from 4 to 1
|
|
||||||
move 24 from 9 to 6
|
|
||||||
move 9 from 1 to 6
|
|
||||||
move 1 from 5 to 6
|
|
||||||
move 1 from 1 to 9
|
|
||||||
move 1 from 2 to 8
|
|
||||||
move 1 from 8 to 1
|
|
||||||
move 3 from 1 to 8
|
|
||||||
move 36 from 6 to 3
|
|
||||||
move 2 from 7 to 3
|
|
||||||
move 1 from 2 to 5
|
|
||||||
move 1 from 5 to 2
|
|
||||||
move 1 from 6 to 2
|
|
||||||
move 10 from 3 to 2
|
|
||||||
move 3 from 8 to 2
|
|
||||||
move 1 from 1 to 7
|
|
||||||
move 2 from 2 to 6
|
|
||||||
move 10 from 9 to 1
|
|
||||||
move 2 from 6 to 4
|
|
||||||
move 13 from 3 to 4
|
|
||||||
move 8 from 3 to 7
|
|
||||||
move 8 from 1 to 2
|
|
||||||
move 5 from 3 to 8
|
|
||||||
move 3 from 1 to 9
|
|
||||||
move 1 from 7 to 1
|
|
||||||
move 7 from 4 to 5
|
|
||||||
move 1 from 1 to 2
|
|
||||||
move 14 from 2 to 6
|
|
||||||
move 2 from 7 to 2
|
|
||||||
move 8 from 4 to 8
|
|
||||||
move 3 from 7 to 9
|
|
||||||
move 2 from 9 to 8
|
|
||||||
move 2 from 7 to 1
|
|
||||||
move 1 from 7 to 8
|
|
||||||
move 1 from 6 to 8
|
|
||||||
move 1 from 9 to 3
|
|
||||||
move 4 from 2 to 7
|
|
||||||
move 6 from 6 to 1
|
|
||||||
move 3 from 1 to 9
|
|
||||||
move 1 from 1 to 7
|
|
||||||
move 6 from 5 to 6
|
|
||||||
move 1 from 5 to 2
|
|
||||||
move 1 from 6 to 8
|
|
||||||
move 5 from 7 to 5
|
|
||||||
move 1 from 2 to 9
|
|
||||||
move 2 from 3 to 4
|
|
||||||
move 9 from 8 to 4
|
|
||||||
move 8 from 4 to 8
|
|
||||||
move 6 from 6 to 7
|
|
||||||
move 5 from 6 to 4
|
|
||||||
move 7 from 9 to 7
|
|
||||||
move 7 from 8 to 7
|
|
||||||
move 5 from 8 to 4
|
|
||||||
move 3 from 1 to 6
|
|
||||||
move 1 from 2 to 7
|
|
||||||
move 1 from 1 to 4
|
|
||||||
move 4 from 5 to 2
|
|
||||||
move 2 from 6 to 9
|
|
||||||
move 1 from 3 to 7
|
|
||||||
move 1 from 5 to 1
|
|
||||||
move 1 from 8 to 9
|
|
||||||
move 1 from 6 to 1
|
|
||||||
move 1 from 2 to 7
|
|
||||||
move 2 from 8 to 1
|
|
||||||
move 2 from 1 to 8
|
|
||||||
move 3 from 2 to 4
|
|
||||||
move 1 from 6 to 1
|
|
||||||
move 17 from 4 to 1
|
|
||||||
move 3 from 2 to 7
|
|
||||||
move 13 from 7 to 8
|
|
||||||
move 1 from 2 to 6
|
|
||||||
move 14 from 1 to 4
|
|
||||||
move 2 from 8 to 5
|
|
||||||
move 1 from 9 to 7
|
|
||||||
move 2 from 5 to 4
|
|
||||||
move 1 from 9 to 3
|
|
||||||
move 5 from 1 to 5
|
|
||||||
move 3 from 4 to 1
|
|
||||||
move 1 from 3 to 2
|
|
||||||
move 7 from 4 to 5
|
|
||||||
move 9 from 7 to 8
|
|
||||||
move 5 from 4 to 2
|
|
||||||
move 1 from 1 to 3
|
|
||||||
move 1 from 9 to 2
|
|
||||||
move 15 from 8 to 6
|
|
||||||
move 1 from 3 to 7
|
|
||||||
move 11 from 6 to 5
|
|
||||||
move 1 from 4 to 8
|
|
||||||
move 3 from 1 to 7
|
|
||||||
move 5 from 7 to 5
|
|
||||||
move 27 from 5 to 1
|
|
||||||
move 8 from 8 to 4
|
|
||||||
move 1 from 2 to 6
|
|
||||||
move 3 from 6 to 1
|
|
||||||
move 9 from 1 to 5
|
|
||||||
move 5 from 5 to 7
|
|
||||||
move 2 from 2 to 1
|
|
||||||
move 2 from 5 to 4
|
|
||||||
move 6 from 7 to 6
|
|
||||||
move 1 from 5 to 2
|
|
||||||
move 1 from 7 to 8
|
|
||||||
move 4 from 6 to 8
|
|
||||||
move 5 from 6 to 3
|
|
||||||
move 1 from 7 to 1
|
|
||||||
move 5 from 4 to 3
|
|
||||||
move 6 from 8 to 2
|
|
||||||
move 1 from 7 to 8
|
|
||||||
move 2 from 8 to 9
|
|
||||||
move 10 from 3 to 5
|
|
||||||
move 9 from 5 to 2
|
|
||||||
move 3 from 4 to 8
|
|
||||||
move 1 from 5 to 7
|
|
||||||
move 2 from 9 to 7
|
|
||||||
move 2 from 8 to 3
|
|
||||||
move 1 from 3 to 8
|
|
||||||
move 19 from 1 to 7
|
|
||||||
move 4 from 2 to 7
|
|
||||||
move 2 from 4 to 3
|
|
||||||
move 3 from 3 to 2
|
|
||||||
move 2 from 8 to 3
|
|
||||||
move 2 from 5 to 8
|
|
||||||
move 1 from 2 to 3
|
|
||||||
move 2 from 8 to 3
|
|
||||||
move 5 from 2 to 5
|
|
||||||
move 9 from 7 to 5
|
|
||||||
move 13 from 5 to 9
|
|
||||||
move 7 from 2 to 6
|
|
||||||
move 2 from 6 to 9
|
|
||||||
move 1 from 2 to 1
|
|
||||||
move 5 from 6 to 7
|
|
||||||
move 1 from 5 to 7
|
|
||||||
move 6 from 1 to 2
|
|
||||||
move 5 from 3 to 6
|
|
||||||
move 6 from 7 to 2
|
|
||||||
move 3 from 6 to 4
|
|
||||||
move 3 from 7 to 4
|
|
||||||
move 12 from 7 to 6
|
|
||||||
move 5 from 4 to 1
|
|
||||||
move 2 from 7 to 4
|
|
||||||
move 3 from 4 to 6
|
|
||||||
move 16 from 6 to 3
|
|
||||||
move 4 from 1 to 4
|
|
||||||
move 1 from 1 to 9
|
|
||||||
move 3 from 9 to 2
|
|
||||||
move 1 from 4 to 6
|
|
||||||
move 9 from 3 to 7
|
|
||||||
move 2 from 6 to 3
|
|
||||||
move 3 from 3 to 9
|
|
||||||
move 15 from 2 to 7
|
|
||||||
move 19 from 7 to 4
|
|
||||||
move 15 from 9 to 2
|
|
||||||
move 16 from 2 to 8
|
|
||||||
move 6 from 3 to 5
|
|
||||||
move 4 from 7 to 5
|
|
||||||
move 15 from 8 to 7
|
|
||||||
move 19 from 4 to 2
|
|
||||||
move 1 from 8 to 3
|
|
||||||
move 16 from 2 to 1
|
|
||||||
move 9 from 7 to 6
|
|
||||||
move 7 from 2 to 8
|
|
||||||
move 2 from 2 to 7
|
|
||||||
move 1 from 9 to 5
|
|
||||||
move 1 from 3 to 4
|
|
||||||
move 6 from 1 to 2
|
|
||||||
move 8 from 5 to 1
|
|
||||||
move 1 from 5 to 1
|
|
||||||
move 18 from 1 to 8
|
|
||||||
move 7 from 7 to 5
|
|
||||||
move 7 from 5 to 3
|
|
||||||
move 4 from 3 to 6
|
|
||||||
move 13 from 8 to 5
|
|
||||||
move 12 from 8 to 1
|
|
||||||
move 5 from 1 to 6
|
|
||||||
move 15 from 5 to 4
|
|
||||||
move 1 from 1 to 6
|
|
||||||
move 12 from 6 to 3
|
|
||||||
move 8 from 3 to 4
|
|
||||||
move 2 from 7 to 3
|
|
||||||
move 9 from 3 to 1
|
|
||||||
move 5 from 2 to 9
|
|
||||||
move 16 from 4 to 3
|
|
||||||
move 10 from 1 to 3
|
|
||||||
move 2 from 1 to 5
|
|
||||||
move 1 from 3 to 1
|
|
||||||
move 5 from 6 to 1
|
|
||||||
move 4 from 9 to 3
|
|
||||||
move 1 from 2 to 8
|
|
||||||
move 1 from 8 to 1
|
|
||||||
move 1 from 9 to 8
|
|
||||||
move 2 from 5 to 9
|
|
||||||
move 9 from 4 to 1
|
|
||||||
move 3 from 1 to 3
|
|
||||||
move 2 from 6 to 8
|
|
||||||
move 3 from 8 to 5
|
|
||||||
move 2 from 1 to 5
|
|
||||||
move 2 from 9 to 8
|
|
||||||
move 1 from 8 to 6
|
|
||||||
move 2 from 5 to 3
|
|
||||||
move 19 from 3 to 1
|
|
||||||
move 2 from 4 to 2
|
|
||||||
move 1 from 5 to 6
|
|
||||||
move 2 from 2 to 3
|
|
||||||
move 1 from 8 to 6
|
|
||||||
move 8 from 3 to 9
|
|
||||||
move 6 from 3 to 7
|
|
||||||
move 2 from 6 to 2
|
|
||||||
move 1 from 6 to 1
|
|
||||||
move 1 from 1 to 8
|
|
||||||
move 1 from 8 to 9
|
|
||||||
move 1 from 7 to 3
|
|
||||||
move 19 from 1 to 5
|
|
||||||
move 21 from 5 to 2
|
|
||||||
move 13 from 2 to 6
|
|
||||||
move 13 from 1 to 8
|
|
||||||
move 7 from 9 to 7
|
|
||||||
move 2 from 9 to 2
|
|
||||||
move 10 from 8 to 3
|
|
||||||
move 1 from 1 to 6
|
|
||||||
move 10 from 2 to 4
|
|
||||||
move 11 from 3 to 5
|
|
||||||
move 8 from 5 to 6
|
|
||||||
move 1 from 3 to 7
|
|
||||||
move 2 from 8 to 6
|
|
||||||
move 2 from 2 to 8
|
|
||||||
move 3 from 7 to 6
|
|
||||||
move 2 from 8 to 6
|
|
||||||
move 1 from 1 to 2
|
|
||||||
move 24 from 6 to 5
|
|
||||||
move 2 from 3 to 8
|
|
||||||
move 1 from 8 to 6
|
|
||||||
move 7 from 7 to 9
|
|
||||||
move 4 from 6 to 9
|
|
||||||
move 1 from 8 to 9
|
|
||||||
move 21 from 5 to 9
|
|
||||||
move 2 from 7 to 2
|
|
||||||
move 1 from 8 to 5
|
|
||||||
move 1 from 7 to 3
|
|
||||||
move 12 from 9 to 6
|
|
||||||
move 6 from 6 to 3
|
|
||||||
move 12 from 9 to 4
|
|
||||||
move 4 from 5 to 6
|
|
||||||
move 13 from 4 to 2
|
|
||||||
move 8 from 4 to 8
|
|
||||||
move 10 from 6 to 8
|
|
||||||
move 11 from 8 to 9
|
|
||||||
move 4 from 8 to 4
|
|
||||||
move 2 from 4 to 3
|
|
||||||
move 8 from 3 to 8
|
|
||||||
move 2 from 6 to 8
|
|
||||||
move 1 from 3 to 8
|
|
||||||
move 6 from 2 to 4
|
|
||||||
move 1 from 4 to 8
|
|
||||||
move 1 from 9 to 7
|
|
||||||
move 13 from 8 to 4
|
|
||||||
move 1 from 7 to 1
|
|
||||||
move 1 from 1 to 4
|
|
||||||
move 8 from 4 to 7
|
|
||||||
move 3 from 5 to 7
|
|
||||||
move 19 from 9 to 7
|
|
||||||
move 3 from 2 to 7
|
|
||||||
move 1 from 8 to 2
|
|
||||||
move 13 from 7 to 6
|
|
||||||
move 1 from 2 to 4
|
|
||||||
move 4 from 6 to 2
|
|
||||||
move 1 from 8 to 3
|
|
||||||
move 7 from 6 to 8
|
|
||||||
move 1 from 6 to 2
|
|
||||||
move 1 from 2 to 7
|
|
||||||
move 9 from 2 to 3
|
|
||||||
move 1 from 6 to 2
|
|
||||||
move 21 from 7 to 5
|
|
||||||
move 9 from 5 to 3
|
|
||||||
move 19 from 3 to 9
|
|
||||||
move 5 from 8 to 5
|
|
||||||
move 2 from 2 to 1
|
|
||||||
move 2 from 1 to 8
|
|
||||||
move 6 from 4 to 5
|
|
||||||
move 3 from 8 to 7
|
|
||||||
move 15 from 9 to 2
|
|
||||||
move 2 from 2 to 5
|
|
||||||
move 3 from 9 to 6
|
|
||||||
move 5 from 4 to 5
|
|
||||||
move 11 from 2 to 6
|
|
||||||
move 1 from 8 to 6
|
|
||||||
move 1 from 9 to 5
|
|
||||||
move 1 from 7 to 3
|
|
||||||
move 6 from 5 to 6
|
|
||||||
move 1 from 4 to 6
|
|
||||||
move 1 from 3 to 4
|
|
||||||
move 13 from 5 to 2
|
|
||||||
move 16 from 6 to 9
|
|
||||||
move 4 from 4 to 5
|
|
||||||
move 2 from 6 to 2
|
|
||||||
move 2 from 6 to 4
|
|
||||||
move 2 from 4 to 5
|
|
||||||
move 2 from 7 to 8
|
|
||||||
move 2 from 6 to 3
|
|
||||||
move 2 from 5 to 8
|
|
||||||
move 14 from 5 to 7
|
|
||||||
move 4 from 8 to 1
|
|
||||||
move 4 from 1 to 6
|
|
||||||
move 1 from 3 to 9
|
|
||||||
move 1 from 6 to 1
|
|
||||||
move 2 from 7 to 3
|
|
||||||
move 2 from 3 to 7
|
|
||||||
move 2 from 5 to 2
|
|
||||||
move 9 from 9 to 2
|
|
||||||
move 13 from 7 to 3
|
|
||||||
move 12 from 3 to 9
|
|
||||||
move 2 from 6 to 8
|
|
||||||
move 14 from 2 to 9
|
|
||||||
move 2 from 8 to 9
|
|
||||||
move 10 from 2 to 1
|
|
||||||
move 1 from 7 to 4
|
|
||||||
move 2 from 3 to 8
|
|
||||||
move 4 from 2 to 1
|
|
||||||
move 1 from 8 to 3
|
|
||||||
move 1 from 2 to 6
|
|
||||||
move 1 from 8 to 3
|
|
||||||
move 4 from 9 to 4
|
|
||||||
move 1 from 3 to 5
|
|
||||||
move 1 from 5 to 1
|
|
||||||
move 1 from 3 to 9
|
|
||||||
move 12 from 1 to 8
|
|
||||||
move 10 from 8 to 5
|
|
||||||
move 7 from 5 to 6
|
|
||||||
move 1 from 1 to 9
|
|
||||||
move 3 from 5 to 1
|
|
||||||
move 1 from 1 to 3
|
|
||||||
move 16 from 9 to 7
|
|
||||||
move 4 from 4 to 3
|
|
||||||
move 1 from 4 to 9
|
|
||||||
move 15 from 7 to 8
|
|
||||||
move 15 from 9 to 1
|
|
||||||
move 8 from 1 to 6
|
|
||||||
move 1 from 9 to 3
|
|
||||||
move 17 from 6 to 2
|
|
||||||
move 1 from 9 to 1
|
|
||||||
move 15 from 2 to 7
|
|
||||||
move 14 from 8 to 9
|
|
||||||
move 12 from 7 to 9
|
|
||||||
move 12 from 9 to 3
|
|
||||||
move 3 from 7 to 9
|
|
||||||
move 1 from 7 to 4
|
|
||||||
move 7 from 9 to 6
|
|
||||||
move 1 from 4 to 6
|
|
||||||
move 11 from 9 to 6
|
|
||||||
move 2 from 1 to 2
|
|
||||||
move 18 from 6 to 4
|
|
||||||
move 4 from 2 to 7
|
|
||||||
move 2 from 7 to 3
|
|
||||||
move 2 from 7 to 8
|
|
||||||
move 4 from 1 to 5
|
|
||||||
move 1 from 9 to 2
|
|
||||||
move 2 from 5 to 4
|
|
||||||
move 5 from 1 to 3
|
|
||||||
move 2 from 3 to 7
|
|
||||||
move 2 from 3 to 9
|
|
||||||
move 1 from 6 to 7
|
|
||||||
move 1 from 2 to 9
|
|
||||||
move 2 from 8 to 1
|
|
||||||
move 3 from 1 to 3
|
|
||||||
move 2 from 5 to 8
|
|
||||||
move 2 from 3 to 5
|
|
||||||
move 1 from 5 to 2
|
|
||||||
move 1 from 1 to 3
|
|
||||||
move 1 from 9 to 2
|
|
||||||
move 1 from 9 to 1
|
|
||||||
move 3 from 7 to 6
|
|
||||||
move 1 from 1 to 9
|
|
||||||
move 2 from 8 to 9
|
|
||||||
move 1 from 2 to 3
|
|
||||||
move 2 from 8 to 2
|
|
||||||
move 2 from 6 to 5
|
|
||||||
move 1 from 8 to 5
|
|
||||||
move 3 from 2 to 5
|
|
||||||
move 3 from 4 to 8
|
|
||||||
move 1 from 8 to 2
|
|
||||||
move 3 from 9 to 7
|
|
||||||
move 3 from 7 to 1
|
|
||||||
move 1 from 9 to 6
|
|
||||||
move 3 from 1 to 2
|
|
||||||
move 2 from 8 to 7
|
|
||||||
move 2 from 7 to 9
|
|
||||||
move 2 from 6 to 5
|
|
||||||
move 3 from 5 to 3
|
|
||||||
move 1 from 2 to 5
|
|
||||||
move 3 from 2 to 7
|
|
||||||
move 2 from 5 to 6
|
|
||||||
move 15 from 4 to 9
|
|
||||||
move 1 from 3 to 1
|
|
||||||
move 25 from 3 to 4
|
|
||||||
move 3 from 7 to 3
|
|
||||||
move 5 from 9 to 5
|
|
||||||
move 10 from 9 to 5
|
|
||||||
move 9 from 5 to 1
|
|
||||||
move 5 from 5 to 2
|
|
||||||
move 1 from 6 to 7
|
|
||||||
move 5 from 5 to 8
|
|
126
src/day1.rs
126
src/day1.rs
@ -1,4 +1,4 @@
|
|||||||
use itertools::Itertools;
|
// use itertools::Itertools;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
|
|
||||||
pub fn run() {
|
pub fn run() {
|
||||||
@ -9,32 +9,69 @@ pub fn run() {
|
|||||||
println!("\tPart 2: {}", part2(&input));
|
println!("\tPart 2: {}", part2(&input));
|
||||||
}
|
}
|
||||||
|
|
||||||
fn part1(food_input: &str) -> usize {
|
fn part1(calibration_input: &str) -> usize {
|
||||||
food_input
|
calibration_input
|
||||||
.split("\n\n")
|
.split("\n")
|
||||||
.into_iter()
|
.map(|line| {
|
||||||
.map(|elf| {
|
let digits = line.chars().filter(|c| c.is_digit(10)).collect::<String>();
|
||||||
elf.split_whitespace()
|
|
||||||
.map(|food| food.parse::<usize>().unwrap())
|
if digits.len() == 1 {
|
||||||
.sum()
|
digits.parse::<usize>().unwrap() * 11
|
||||||
|
} else {
|
||||||
|
let tens = digits.chars().nth(0).unwrap().to_digit(10).unwrap();
|
||||||
|
let ones = digits.chars().last().unwrap().to_digit(10).unwrap();
|
||||||
|
(tens * 10 + ones) as usize
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.max()
|
.sum()
|
||||||
.unwrap()
|
|
||||||
}
|
}
|
||||||
fn part2(food_input: &str) -> usize {
|
|
||||||
food_input
|
fn part2(calibration_input: &str) -> usize {
|
||||||
.split("\n\n")
|
let word_to_digit_map: [(&str, usize); 9] = [
|
||||||
.collect::<Vec<&str>>()
|
("one", 1),
|
||||||
.into_iter()
|
("two", 2),
|
||||||
.map(|elf| {
|
("three", 3),
|
||||||
elf.split_whitespace()
|
("four", 4),
|
||||||
.map(|food| food.parse::<usize>().unwrap())
|
("five", 5),
|
||||||
.sum::<usize>()
|
("six", 6),
|
||||||
|
("seven", 7),
|
||||||
|
("eight", 8),
|
||||||
|
("nine", 9),
|
||||||
|
];
|
||||||
|
|
||||||
|
calibration_input
|
||||||
|
.split("\n")
|
||||||
|
.map(|line| {
|
||||||
|
let mut index_and_digit: Vec<(usize, usize)> = vec![];
|
||||||
|
|
||||||
|
for (word, digit) in word_to_digit_map {
|
||||||
|
for (index, _) in line.match_indices(word).collect::<Vec<_>>() {
|
||||||
|
index_and_digit.push((index, digit));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (index, c) in line.chars().enumerate() {
|
||||||
|
match c.to_digit(10) {
|
||||||
|
Some(digit) => index_and_digit.push((index, digit as usize)),
|
||||||
|
None => continue,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if index_and_digit.len() == 1 {
|
||||||
|
index_and_digit[0].1 * 11
|
||||||
|
} else {
|
||||||
|
index_and_digit.sort_by(|a, b| a.0.cmp(&b.0));
|
||||||
|
println!(
|
||||||
|
"{} {}",
|
||||||
|
&line,
|
||||||
|
index_and_digit[0].1 * 10 + index_and_digit.last().unwrap().1
|
||||||
|
);
|
||||||
|
|
||||||
|
index_and_digit[0].1 * 10 + index_and_digit.last().unwrap().1
|
||||||
|
}
|
||||||
})
|
})
|
||||||
.sorted()
|
.into_iter()
|
||||||
.rev()
|
|
||||||
.take(3)
|
|
||||||
.sum()
|
.sum()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,41 +81,24 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_1() {
|
fn test_1() {
|
||||||
let input = "1000
|
let input = "1abc2
|
||||||
2000
|
pqr3stu8vwx
|
||||||
3000
|
a1b2c3d4e5f
|
||||||
|
treb7uchet";
|
||||||
|
|
||||||
4000
|
assert_eq!(part1(input), 142);
|
||||||
|
|
||||||
5000
|
|
||||||
6000
|
|
||||||
|
|
||||||
7000
|
|
||||||
8000
|
|
||||||
9000
|
|
||||||
|
|
||||||
10000";
|
|
||||||
|
|
||||||
assert_eq!(part1(input), 24000);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_2() {
|
fn test_2() {
|
||||||
let input = "1000
|
let input = "two1nine
|
||||||
2000
|
eightwothree
|
||||||
3000
|
abcone2threexyz
|
||||||
|
xtwone3four
|
||||||
|
4nineeightseven2
|
||||||
|
zoneight234
|
||||||
|
7pqrstsixteen";
|
||||||
|
|
||||||
4000
|
assert_eq!(part2(input), 281);
|
||||||
|
|
||||||
5000
|
|
||||||
6000
|
|
||||||
|
|
||||||
7000
|
|
||||||
8000
|
|
||||||
9000
|
|
||||||
|
|
||||||
10000";
|
|
||||||
|
|
||||||
assert_eq!(part2(input), 45000);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
110
src/day2.rs
110
src/day2.rs
@ -1,110 +0,0 @@
|
|||||||
use itertools::Itertools;
|
|
||||||
use std::fs;
|
|
||||||
|
|
||||||
pub fn run() {
|
|
||||||
println!("Day 2:");
|
|
||||||
let input = fs::read_to_string("./inputs/day2.txt").expect("Could not read file");
|
|
||||||
|
|
||||||
println!("\tPart 1: {}", part1(&input));
|
|
||||||
println!("\tPart 2: {}", part2(&input));
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(PartialEq, Clone, Copy)]
|
|
||||||
enum Hand {
|
|
||||||
Rock = 1,
|
|
||||||
Paper,
|
|
||||||
Scissors,
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Clone, Copy)]
|
|
||||||
enum Outcome {
|
|
||||||
Lost = 0,
|
|
||||||
Draw = 3,
|
|
||||||
Win = 6,
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part1(input: &str) -> usize {
|
|
||||||
input
|
|
||||||
.trim()
|
|
||||||
.split('\n')
|
|
||||||
.map(|round_str| {
|
|
||||||
let round = round_str.split_once(' ').unwrap();
|
|
||||||
let opponent = match round.0 {
|
|
||||||
"A" => Hand::Rock,
|
|
||||||
"B" => Hand::Paper,
|
|
||||||
"C" => Hand::Scissors,
|
|
||||||
_ => panic!(),
|
|
||||||
};
|
|
||||||
let me = match round.1 {
|
|
||||||
"X" => Hand::Rock,
|
|
||||||
"Y" => Hand::Paper,
|
|
||||||
"Z" => Hand::Scissors,
|
|
||||||
_ => panic!(),
|
|
||||||
};
|
|
||||||
|
|
||||||
let outcome = match (opponent, me) {
|
|
||||||
(l, r) if l == r => Outcome::Draw,
|
|
||||||
(Hand::Rock, Hand::Paper) => Outcome::Win,
|
|
||||||
(Hand::Paper, Hand::Scissors) => Outcome::Win,
|
|
||||||
(Hand::Scissors, Hand::Rock) => Outcome::Win,
|
|
||||||
_ => Outcome::Lost,
|
|
||||||
};
|
|
||||||
outcome as usize + me as usize
|
|
||||||
})
|
|
||||||
.sum()
|
|
||||||
}
|
|
||||||
fn part2(input: &str) -> usize {
|
|
||||||
input
|
|
||||||
.trim()
|
|
||||||
.split('\n')
|
|
||||||
.map(|round_str| {
|
|
||||||
let round = round_str.split_once(' ').unwrap();
|
|
||||||
let opponent = match round.0 {
|
|
||||||
"A" => Hand::Rock,
|
|
||||||
"B" => Hand::Paper,
|
|
||||||
"C" => Hand::Scissors,
|
|
||||||
_ => panic!(),
|
|
||||||
};
|
|
||||||
let outcome = match round.1 {
|
|
||||||
"X" => Outcome::Lost,
|
|
||||||
"Y" => Outcome::Draw,
|
|
||||||
"Z" => Outcome::Win,
|
|
||||||
_ => panic!(),
|
|
||||||
};
|
|
||||||
|
|
||||||
let me = match (outcome, opponent) {
|
|
||||||
(Outcome::Draw, _) => opponent,
|
|
||||||
(Outcome::Win, Hand::Rock) => Hand::Paper,
|
|
||||||
(Outcome::Win, Hand::Paper) => Hand::Scissors,
|
|
||||||
(Outcome::Win, Hand::Scissors) => Hand::Rock,
|
|
||||||
(Outcome::Lost, Hand::Rock) => Hand::Scissors,
|
|
||||||
(Outcome::Lost, Hand::Paper) => Hand::Rock,
|
|
||||||
(Outcome::Lost, Hand::Scissors) => Hand::Paper,
|
|
||||||
};
|
|
||||||
outcome as usize + me as usize
|
|
||||||
})
|
|
||||||
.sum()
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_1() {
|
|
||||||
let input = "A Y
|
|
||||||
B X
|
|
||||||
C Z";
|
|
||||||
|
|
||||||
assert_eq!(part1(input), 15);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_2() {
|
|
||||||
let input = "A Y
|
|
||||||
B X
|
|
||||||
C Z";
|
|
||||||
|
|
||||||
assert_eq!(part2(input), 12);
|
|
||||||
}
|
|
||||||
}
|
|
112
src/day3.rs
112
src/day3.rs
@ -1,112 +0,0 @@
|
|||||||
use itertools::Itertools;
|
|
||||||
use std::collections::HashMap;
|
|
||||||
use std::collections::HashSet;
|
|
||||||
use std::fs;
|
|
||||||
|
|
||||||
pub fn run() {
|
|
||||||
println!("Day 3:");
|
|
||||||
let input = fs::read_to_string("./inputs/day3.txt").expect("Could not read file");
|
|
||||||
|
|
||||||
println!("\tPart 1: {}", part1(&input));
|
|
||||||
println!("\tPart 2: {}", part2(&input));
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part1(input: &str) -> usize {
|
|
||||||
let mut alphabet_map = HashMap::new();
|
|
||||||
let alph = "abcdefghijklmnopqrstuvwxyz";
|
|
||||||
for (value, letter) in format!("{}{}", alph, alph.to_uppercase())
|
|
||||||
.chars()
|
|
||||||
.enumerate()
|
|
||||||
{
|
|
||||||
alphabet_map.insert(letter, value + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
input
|
|
||||||
.split_whitespace()
|
|
||||||
.map(|line| {
|
|
||||||
let (left, right) = line.split_at(line.len() / 2);
|
|
||||||
assert!(left.len() == right.len());
|
|
||||||
|
|
||||||
let bag_intersection = left
|
|
||||||
.chars()
|
|
||||||
.collect::<HashSet<char>>()
|
|
||||||
.intersection(&right.chars().collect::<HashSet<char>>())
|
|
||||||
.collect::<HashSet<&char>>()
|
|
||||||
.into_iter()
|
|
||||||
.copied()
|
|
||||||
.collect::<Vec<char>>();
|
|
||||||
|
|
||||||
assert!(bag_intersection.len() == 1);
|
|
||||||
|
|
||||||
alphabet_map.get(&bag_intersection[0]).unwrap()
|
|
||||||
})
|
|
||||||
.sum()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part2(input: &str) -> usize {
|
|
||||||
let mut alphabet_map = HashMap::new();
|
|
||||||
let alph = "abcdefghijklmnopqrstuvwxyz";
|
|
||||||
for (value, letter) in format!("{}{}", alph, alph.to_uppercase())
|
|
||||||
.chars()
|
|
||||||
.enumerate()
|
|
||||||
{
|
|
||||||
alphabet_map.insert(letter, value + 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
input
|
|
||||||
.split_whitespace()
|
|
||||||
.collect::<Vec<&str>>()
|
|
||||||
.into_iter()
|
|
||||||
.tuples()
|
|
||||||
.map(|line| {
|
|
||||||
let (left, mid, right) = line;
|
|
||||||
|
|
||||||
let bag_intersection = left
|
|
||||||
.chars()
|
|
||||||
.collect::<HashSet<char>>()
|
|
||||||
.intersection(&right.chars().collect::<HashSet<char>>())
|
|
||||||
.collect::<HashSet<&char>>()
|
|
||||||
.into_iter()
|
|
||||||
.copied()
|
|
||||||
.collect::<HashSet<char>>()
|
|
||||||
.intersection(&mid.chars().collect::<HashSet<char>>())
|
|
||||||
.collect::<HashSet<&char>>()
|
|
||||||
.into_iter()
|
|
||||||
.copied()
|
|
||||||
.collect::<Vec<char>>();
|
|
||||||
|
|
||||||
assert!(bag_intersection.len() == 1);
|
|
||||||
|
|
||||||
alphabet_map.get(&bag_intersection[0]).unwrap()
|
|
||||||
})
|
|
||||||
.sum()
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_1() {
|
|
||||||
let input = "vJrwpWtwJgWrhcsFMMfFFhFp
|
|
||||||
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
|
|
||||||
PmmdzqPrVvPwwTWBwg
|
|
||||||
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
|
|
||||||
ttgJtRGJQctTZtZT
|
|
||||||
CrZsJsPPZsGzwwsLwLmpwMDw";
|
|
||||||
|
|
||||||
assert_eq!(part1(input), 157);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_2() {
|
|
||||||
let input = "vJrwpWtwJgWrhcsFMMfFFhFp
|
|
||||||
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
|
|
||||||
PmmdzqPrVvPwwTWBwg
|
|
||||||
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
|
|
||||||
ttgJtRGJQctTZtZT
|
|
||||||
CrZsJsPPZsGzwwsLwLmpwMDw";
|
|
||||||
|
|
||||||
assert_eq!(part2(input), 70);
|
|
||||||
}
|
|
||||||
}
|
|
84
src/day4.rs
84
src/day4.rs
@ -1,84 +0,0 @@
|
|||||||
use std::collections::HashSet;
|
|
||||||
use std::fs;
|
|
||||||
|
|
||||||
pub fn run() {
|
|
||||||
println!("Day 4:");
|
|
||||||
let input = fs::read_to_string("./inputs/day4.txt").expect("Could not read file");
|
|
||||||
|
|
||||||
println!("\tPart 1: {}", part1(&input));
|
|
||||||
println!("\tPart 2: {}", part2(&input));
|
|
||||||
}
|
|
||||||
|
|
||||||
struct SectionAssignment {
|
|
||||||
left: HashSet<usize>,
|
|
||||||
right: HashSet<usize>,
|
|
||||||
}
|
|
||||||
|
|
||||||
fn deserialize(line: &str) -> SectionAssignment {
|
|
||||||
let (left, right) = line.split_once(',').unwrap();
|
|
||||||
let left = left
|
|
||||||
.split_once('-')
|
|
||||||
.map(|(l, r)| l.parse().unwrap()..=r.parse().unwrap())
|
|
||||||
.unwrap()
|
|
||||||
.collect();
|
|
||||||
let right = right
|
|
||||||
.split_once('-')
|
|
||||||
.map(|(l, r)| l.parse().unwrap()..=r.parse().unwrap())
|
|
||||||
.unwrap()
|
|
||||||
.collect();
|
|
||||||
|
|
||||||
SectionAssignment { left, right }
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part1(input: &str) -> usize {
|
|
||||||
let assignments = input.split_whitespace().map(deserialize);
|
|
||||||
let mut sum = 0;
|
|
||||||
for assignment in assignments {
|
|
||||||
if assignment.left.is_subset(&assignment.right)
|
|
||||||
|| assignment.right.is_subset(&assignment.left)
|
|
||||||
{
|
|
||||||
sum += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
sum
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part2(input: &str) -> usize {
|
|
||||||
let assignments = input.split_whitespace().map(deserialize);
|
|
||||||
let mut sum = 0;
|
|
||||||
for assignment in assignments {
|
|
||||||
if assignment.left.intersection(&assignment.right).count() >= 1 {
|
|
||||||
sum += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
sum
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_1() {
|
|
||||||
let input = "2-4,6-8
|
|
||||||
2-3,4-5
|
|
||||||
5-7,7-9
|
|
||||||
2-8,3-7
|
|
||||||
6-6,4-6
|
|
||||||
2-6,4-8";
|
|
||||||
|
|
||||||
assert_eq!(part1(input), 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_2() {
|
|
||||||
let input = "2-4,6-8
|
|
||||||
2-3,4-5
|
|
||||||
5-7,7-9
|
|
||||||
2-8,3-7
|
|
||||||
6-6,4-6
|
|
||||||
2-6,4-8";
|
|
||||||
|
|
||||||
assert_eq!(part2(input), 4);
|
|
||||||
}
|
|
||||||
}
|
|
163
src/day5.rs
163
src/day5.rs
@ -1,163 +0,0 @@
|
|||||||
use std::collections::{HashMap, VecDeque};
|
|
||||||
use std::fmt::format;
|
|
||||||
use std::fs;
|
|
||||||
|
|
||||||
use itertools::Itertools;
|
|
||||||
|
|
||||||
pub fn run() {
|
|
||||||
println!("Day 5:");
|
|
||||||
let input = fs::read_to_string("./inputs/day5.txt").expect("Could not read file");
|
|
||||||
|
|
||||||
println!("\tPart 1: {}", part1(&input));
|
|
||||||
println!("\tPart 2: {}", part2(&input));
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug)]
|
|
||||||
struct Command {
|
|
||||||
amount: usize,
|
|
||||||
from: usize,
|
|
||||||
to: usize,
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part1(input: &str) -> String {
|
|
||||||
let (stack_input, moves_input) = input.split_once("\n\n").unwrap();
|
|
||||||
|
|
||||||
let mut containers: HashMap<usize, VecDeque<char>> = HashMap::new();
|
|
||||||
for row in stack_input.lines() {
|
|
||||||
for (column, (lbracket, container, _rbracket, _)) in
|
|
||||||
format!("{} ", row).chars().tuples().enumerate()
|
|
||||||
{
|
|
||||||
if lbracket == '[' && !container.is_whitespace() {
|
|
||||||
containers
|
|
||||||
.entry(column + 1)
|
|
||||||
.or_insert_with(VecDeque::new)
|
|
||||||
.push_back(container);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let commands = moves_input.lines().map(|line| {
|
|
||||||
let (amount, from, to) =
|
|
||||||
scan_fmt!(line, "move {} from {} to {}", usize, usize, usize).unwrap();
|
|
||||||
Command { amount, from, to }
|
|
||||||
});
|
|
||||||
|
|
||||||
for command in commands {
|
|
||||||
for _ in 0..command.amount {
|
|
||||||
let container = containers
|
|
||||||
.entry(command.from)
|
|
||||||
.or_insert_with(VecDeque::new)
|
|
||||||
.pop_front()
|
|
||||||
.unwrap_or(' ');
|
|
||||||
|
|
||||||
if container != ' ' {
|
|
||||||
containers
|
|
||||||
.entry(command.to)
|
|
||||||
.or_insert_with(VecDeque::new)
|
|
||||||
.push_front(container)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut answer = "".to_string();
|
|
||||||
for column in 1..=containers.len() {
|
|
||||||
answer = format!(
|
|
||||||
"{}{}",
|
|
||||||
answer,
|
|
||||||
containers.get(&column).unwrap().front().unwrap()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
answer
|
|
||||||
}
|
|
||||||
|
|
||||||
fn part2(input: &str) -> String {
|
|
||||||
let (stack_input, moves_input) = input.split_once("\n\n").unwrap();
|
|
||||||
|
|
||||||
let mut containers: HashMap<usize, VecDeque<char>> = HashMap::new();
|
|
||||||
for row in stack_input.lines() {
|
|
||||||
for (column, (lbracket, container, _rbracket, _)) in
|
|
||||||
format!("{} ", row).chars().tuples().enumerate()
|
|
||||||
{
|
|
||||||
if lbracket == '[' && !container.is_whitespace() {
|
|
||||||
containers
|
|
||||||
.entry(column + 1)
|
|
||||||
.or_insert_with(VecDeque::new)
|
|
||||||
.push_back(container);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let commands = moves_input.lines().map(|line| {
|
|
||||||
let (amount, from, to) =
|
|
||||||
scan_fmt!(line, "move {} from {} to {}", usize, usize, usize).unwrap();
|
|
||||||
Command { amount, from, to }
|
|
||||||
});
|
|
||||||
|
|
||||||
let mut crane = VecDeque::new();
|
|
||||||
|
|
||||||
for command in commands {
|
|
||||||
for _ in 0..command.amount {
|
|
||||||
let container = containers
|
|
||||||
.entry(command.from)
|
|
||||||
.or_insert_with(VecDeque::new)
|
|
||||||
.pop_front()
|
|
||||||
.unwrap_or(' ');
|
|
||||||
|
|
||||||
crane.push_back(container);
|
|
||||||
}
|
|
||||||
for _ in 0..command.amount {
|
|
||||||
let container = crane.pop_back().unwrap();
|
|
||||||
if container != ' ' {
|
|
||||||
containers
|
|
||||||
.entry(command.to)
|
|
||||||
.or_insert_with(VecDeque::new)
|
|
||||||
.push_front(container)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut answer = "".to_string();
|
|
||||||
for column in 1..=containers.len() {
|
|
||||||
answer = format!(
|
|
||||||
"{}{}",
|
|
||||||
answer,
|
|
||||||
containers.get(&column).unwrap().front().unwrap()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
answer
|
|
||||||
}
|
|
||||||
|
|
||||||
#[cfg(test)]
|
|
||||||
mod tests {
|
|
||||||
use super::*;
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_1() {
|
|
||||||
let input = " [D]
|
|
||||||
[N] [C]
|
|
||||||
[Z] [M] [P]
|
|
||||||
1 2 3
|
|
||||||
|
|
||||||
move 1 from 2 to 1
|
|
||||||
move 3 from 1 to 3
|
|
||||||
move 2 from 2 to 1
|
|
||||||
move 1 from 1 to 2";
|
|
||||||
|
|
||||||
assert_eq!(part1(input), "CMZ");
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_2() {
|
|
||||||
let input = " [D]
|
|
||||||
[N] [C]
|
|
||||||
[Z] [M] [P]
|
|
||||||
1 2 3
|
|
||||||
|
|
||||||
move 1 from 2 to 1
|
|
||||||
move 3 from 1 to 3
|
|
||||||
move 2 from 2 to 1
|
|
||||||
move 1 from 1 to 2";
|
|
||||||
|
|
||||||
assert_eq!(part2(input), "MCD");
|
|
||||||
}
|
|
||||||
}
|
|
13
src/main.rs
13
src/main.rs
@ -1,16 +1,9 @@
|
|||||||
#[macro_use]
|
// #[macro_use]
|
||||||
extern crate scan_fmt;
|
extern crate scan_fmt;
|
||||||
|
|
||||||
mod day1;
|
mod day1;
|
||||||
mod day2;
|
|
||||||
mod day3;
|
|
||||||
mod day4;
|
|
||||||
mod day5;
|
|
||||||
fn main() {
|
fn main() {
|
||||||
println!("Running Advent of Code 2022");
|
println!("Running Advent of Code 2023");
|
||||||
day1::run();
|
day1::run();
|
||||||
day2::run();
|
|
||||||
day3::run();
|
|
||||||
day4::run();
|
|
||||||
day5::run();
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user