init
This commit is contained in:
commit
84bb9e78e8
8
.gitignore
vendored
Normal file
8
.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
.DS_Store
|
||||||
|
/.build
|
||||||
|
/Packages
|
||||||
|
xcuserdata/
|
||||||
|
DerivedData/
|
||||||
|
.swiftpm/configuration/registries.json
|
||||||
|
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
|
||||||
|
.netrc
|
2248
Input/day01.txt
Normal file
2248
Input/day01.txt
Normal file
File diff suppressed because it is too large
Load Diff
2500
Input/day02.txt
Normal file
2500
Input/day02.txt
Normal file
File diff suppressed because it is too large
Load Diff
300
Input/day03.txt
Normal file
300
Input/day03.txt
Normal file
@ -0,0 +1,300 @@
|
|||||||
|
DsPhSBQQQhqmBDhPDsFwjwsLjlRjlttvjvvtRb
|
||||||
|
rNJMNNbrHrtjHLHjvwtg
|
||||||
|
fNbNzZdrZnMnMPnQShFPDmnqFm
|
||||||
|
QWVCFfQffgQCVZzVVpHsHJBqtpspJFRHqq
|
||||||
|
mwDbmnnGNlNcwNDDNRbnNDlJTpBJBtJGtPTLsBGqTqqsqp
|
||||||
|
MlSdnScRnnmmDjSdNSdCzvggWzrgzjvfvrgVzW
|
||||||
|
gsMljbrjlZlWcWMJrWwTwbmwQbmmLDQQLhwL
|
||||||
|
CdgpzdgpgnfThHfFRwhfRf
|
||||||
|
SptgpSpnCNpVSGNPvPGSddcMWjMrjqBsJcWqMcBWcVlZ
|
||||||
|
JcJLQQFWhQJPJpWcwjHvMQvnnlMvzBHd
|
||||||
|
tCtGZrmVRmVGTVTtCfRTCHHNNvdNzmdMvMlNzvwdvw
|
||||||
|
CTGGRftfSGtGTGDLbFchSgSWWWcM
|
||||||
|
QcMFQrvrQbvtczbVbjbMzZzRpqmDDmqqnNzCDCDC
|
||||||
|
SHHfPJssGLPSdHThLhHdRmqNmNssnNmNCNnpjmsn
|
||||||
|
LhLJfTdLJwfgPTdfGccrtjcMrccwvcrrFr
|
||||||
|
jFLLLqDGjbtqLCChpMMhMBvpwMTmffpZ
|
||||||
|
ZnJHRncHHgnrsrZffTdMdMBfmMvfvR
|
||||||
|
NWWPnZrVHrZPCDDQtzDCPLCq
|
||||||
|
jpFjvBZhDFHZdwcmslcslBLLNl
|
||||||
|
dVtTVVCzzfrrMPNLLcnVcPLRns
|
||||||
|
CrzWzTqdWtGCzJtbJCrMjjDFHZQjZSpvFGFgHhHp
|
||||||
|
JjJqMctnhtDZDQtf
|
||||||
|
TrFFlrrCCHPwHwlPHFPzDhsffQQDsVfWwVJQJB
|
||||||
|
HHHGdFlHldTpCCFFlLHdCRJccMnqvqMgnNjjMjjvLMLcSv
|
||||||
|
cMfFcMFcrqgJLFZdrTDdthPGsGmtGs
|
||||||
|
WwjNwnjjBQzVVQHwRDnmtPGhPPsPnnTGld
|
||||||
|
bWHBjWVzpbRzbmScqgZMFcqf
|
||||||
|
RJjPTBJhTNNjfPhRBdqtlgdbGldwtCPgdb
|
||||||
|
ZmrHHmzpvSvvpzvmvDVCGlWVwCWtGtWCddggqf
|
||||||
|
QQpzFrHHQnzHvfTcNshcLRNFJhcR
|
||||||
|
QrPQDrppBQmCmFQm
|
||||||
|
TzqzsLfmsfSTfqzVLftNdJJNJGCwwGdgCwSGNC
|
||||||
|
TVHTfzWsfftsZstnbvrbWbrbppPbrmmP
|
||||||
|
BQrfqrLtJnttqqtQBJDDtBnDzRgldhVVpJlgzpzhpzsgslhV
|
||||||
|
TTNcPZCvZjmPFZjvPHLlWdNLghVhzzlllpVd
|
||||||
|
jcFPbTcZTFcmcjMjjFjbLwbnDBtfqbtBwfwSBnrbGw
|
||||||
|
SZJNJtrNzjjNCzlBBmqmQDBBmDBBjB
|
||||||
|
PGPbGwhLsnvwnVbGPVMZsDsTBBgcZgBBDBfDBf
|
||||||
|
pnnhhvphGVpvRPnJlSFRNNJHZHSdSR
|
||||||
|
hbmDDmwnnVGbhmjNrrWwLNLsWBrw
|
||||||
|
dMrgvcQqdjlBLlfW
|
||||||
|
HzzPSrcHqFHQgzpPcMpQqrtmbbbRhHHVGnZDnVHhVbVZ
|
||||||
|
RwtvdPRvSlTQmHHBQBRL
|
||||||
|
FjVSjrsFVnFQnTHmnT
|
||||||
|
VCVVMrWWjVGgbcNVGCCVdlvfdqfvwbSzwqfwZzwv
|
||||||
|
fmPDwJPDFRmRgPdwwwDNwgwPzhSQzVSzVTQdzHZzHhzQMQzQ
|
||||||
|
sWtGCWtpcqqpNnQjjzhVTTVQczhj
|
||||||
|
tWBGntsCNlqrWswDRfFrbFrPDbPf
|
||||||
|
dmzmjcbQjjQztFNqsqBcMJqNPF
|
||||||
|
nlTWnClWwQDTVnTrsMsCRBPZRJRJqRJq
|
||||||
|
wTrhwpVVvgvlDpTvVWVDdLfzgbLtbzSQLSzzjzLz
|
||||||
|
RWZdHvRdBRGbbvCjJnbn
|
||||||
|
pqqpSwzpSSbCwPwjlwjl
|
||||||
|
gDzzqSVzqrThpDBtRtCZdQRQLrQQ
|
||||||
|
GRqTGqtmTVdGHHVVNNlhPlMqbNqNDbqW
|
||||||
|
LzQSdFnfznfwBcLcnFppBBDDMPMPhDbhlwbWPlbWMjrD
|
||||||
|
QznFnLZFvVvHRgsddG
|
||||||
|
BBHBfBHFdSltmWJvqtNtHq
|
||||||
|
TQDrrVMzVDnWnNZDJc
|
||||||
|
gWzprTCrCMQzGGjjhwFwdffjfl
|
||||||
|
LLLSSSzBBlBLsszncCBZSPSMMMpdWTdrmmnfVGVmMfmrmm
|
||||||
|
DghttvwhHRvjJthNJwhVtDHGpddMWdMmrMmfGdppjWTfpq
|
||||||
|
gbJRthQDDRvwtDhQhDFPcVcbPczLzPBScBBF
|
||||||
|
sZsZpTtLCsbspZtTwrCwrwtDmNNdJmmqSJfqmfNGNmHqGdqb
|
||||||
|
nQvjTcjQglFVlllMFMVFqWfNqnNHHHdfSfHqfSJq
|
||||||
|
hFvvgFcFVzphpTrrwZDp
|
||||||
|
qJqfhsBpfSpchpqcrqwCDvvCDQndmpwDtnRQ
|
||||||
|
jWHPZWWjZsCmCWRDmQ
|
||||||
|
PPzMGHlzMNsPLPlZsllgsNrhNVBqhFVBbBSqFFBFrV
|
||||||
|
RnRsFFdSzmgwvQsqwc
|
||||||
|
lbgHGMBHlWWWlfWGGBtGwqDpDwmcpMrrqrQDZrMZ
|
||||||
|
GGJLBVJbVGjGtHVfJtWGHBLLPdzdCghnRnRnSShgNnhnddhj
|
||||||
|
VgzLFjjwhhSwFhVZgRhRgHHCCvdZdrqqCTvBCrqvvr
|
||||||
|
ncnNbGMcPpvHFrssdBHM
|
||||||
|
cnctcNNbQGWFJctftgVmzShzzwwVwgmwfR
|
||||||
|
pFWmSSFGQlvTbwWTwH
|
||||||
|
jdBgNhRgMftNBhPbhHnZHlTTZcwZ
|
||||||
|
lfBNRjCtCfMjsBfCjgfNBRMppGpJqsJQGrrmmJDpGmDDFG
|
||||||
|
GznngnhzccVdgjbbVjVjVbVLwwQJmQMrLTZhJmZLQTJWmm
|
||||||
|
pDBSslPCFPCpvCqvpPBQTlQLrdlJWrLJLmrlrr
|
||||||
|
psSsBptpCBdjtcjNVcGG
|
||||||
|
sssppsmchwspFLtvHhQJMtFb
|
||||||
|
rRLDqRVLNSMvFSSV
|
||||||
|
WDrLnzrDqzRqRzzfLgRnzrnsssZZZsZBgCwwmBppwBspZc
|
||||||
|
MtPbwvzzVtzfsqGGVpdSjsLd
|
||||||
|
DnNRCDJBnHJDHDnrDTRcnNZpZSsSLqjpdqqqSMqdddTj
|
||||||
|
CFRFRFHgDRnRgMtfFvvwzwvwvzWv
|
||||||
|
PNpFPncvvchPpNjpFhvPhPLmBwMgDRRwRgMDhBmLzBDD
|
||||||
|
trHSrdTtslWrSWmfzgmMnfBzmn
|
||||||
|
JsrQsJHHlsVqTjjpbbNnQNNpGG
|
||||||
|
sVQCdsmGlnlCmnGmQQhGCJJNvNjpgqhqhvPgpgPqjpcpcW
|
||||||
|
DMSfSbHLHbSDBBzLNvccWRcddvPjNj
|
||||||
|
FSwHfTFdFsmJlnTTmV
|
||||||
|
FctwtTTCScvShFqtwScrcTSCJQGNndGHWJNQHWHZdgJrJgGN
|
||||||
|
jspLlfPlpfsDjBspfllWgdWHQggZHngHNGdsWJ
|
||||||
|
lRMpBlPmSFRTcvZv
|
||||||
|
TVZpRRVvFRVpTZRfFhFvvzGVwrwwwdDBMwQrgcDtMtDDwZrL
|
||||||
|
jsNsWqWjNQCNWbjPMcBLPgBtrdMwdrdL
|
||||||
|
SJSsmqlSNljbmlNjsbQVffzGRvzmmVhQpVGz
|
||||||
|
BFFMvcwMwwpFFfpbDMqPVgLVgmLDPR
|
||||||
|
JtSsSzJssQJJWjRZzgLnDgqLPZgzbg
|
||||||
|
dsdtWQWdRGjTRNQNQvGfHCCFpvfGwlCfCp
|
||||||
|
zzWGqWnqnwWCvCrHffHRpBpBBRSJzRFFDhSQFR
|
||||||
|
VPVsZMNTLsMvPsmBJhllFpFBTJFQpl
|
||||||
|
sZtsNsZtdZgjbwggjnbvqr
|
||||||
|
QpTvrphmDvvddfcJJHTTncMlMG
|
||||||
|
bRZZPRwjgzzlSSjGlnlSJS
|
||||||
|
BZzBzssWgwzzwNBsgsPBgszmQptqrrGdvdWmqdhhFQDpQF
|
||||||
|
FfMtzSqlDlzfMhPFhPtffNRsCgSgCCGspRpRGSsgsg
|
||||||
|
WTcWLTTVnWmrVdLrcHmNGNCZwCCggpgDRwpCnR
|
||||||
|
JcdWJHTJWdJdjJccrLvlFltFQQvPFDMjqqlP
|
||||||
|
NfjFNNZPDQVJVWpCbQpJ
|
||||||
|
lcmdzlmzBtRSTlTTcncsVSbhpLWpWgsWghgsVS
|
||||||
|
mBTRRmGccRtBwDbrGPbrMMrF
|
||||||
|
VVQqlsGrVsMWBNFNMQHF
|
||||||
|
TfzZfDgjgnLGjjztTncCFwwNmdvNcwwNBvHNFwvd
|
||||||
|
jzjDgZzjntGJZzCnhrrSlPVsJslpslPq
|
||||||
|
dVhpjGPdjHhqHgtHJJ
|
||||||
|
sFzrzllQswDwFbcmBlgvZTCgvqTCfgHQJtqT
|
||||||
|
nDbBsFzzrrtFrlwzPdSVMWMVVMSnGNLd
|
||||||
|
wqJCjqChmwMLmMmprNgG
|
||||||
|
DNTtdsdWcHdNspGQggnrgLnQpc
|
||||||
|
SZvFftdddDsDTtttTDJNCCwJJZzbbCjwwVPj
|
||||||
|
VstwZCwslBZQDBjfDDBDfS
|
||||||
|
rvHnmMRrTzmMrmhRppbhDfpjfbjbctjD
|
||||||
|
rPFLRLmFvvLvHvTCtqsVVwldGZGPGV
|
||||||
|
SNZDJGfvwgMgfgmLmLcmBqgWgQWr
|
||||||
|
hPnPTnVGsPRqLWpTmQqQ
|
||||||
|
tsbnFhhjhSdGJNCjSf
|
||||||
|
QSbGgBjfTCMWFNPFFtDghPrP
|
||||||
|
JqHqJVzZzwJJHLlqQptDhPrctpPDtnLF
|
||||||
|
zZmwJwdwdvHddVJvZqdzHlfGBbsCmMTsWCBCjsGGBbMQ
|
||||||
|
gVmLtpWrFTFBLtpcFNbvhNNnTnvnQRlQQv
|
||||||
|
GHjjqsMqwZZJdqGfZjfZGjQDDhvQNzznzRzRwDNbvgzv
|
||||||
|
sZGPgssMqHZpPptmCcpCrP
|
||||||
|
CZCNNLmwzwCGMZQMQsFNWplvpsJBWpFHBp
|
||||||
|
SPbSbDRRbnDqggnbVbVrbRWHJFTlBBcTvWvsPvFpHTcl
|
||||||
|
tVgSvqVbnqDdgQzMQMGMmzthCw
|
||||||
|
mpbPQlblbwSlfSPGBpBGPpBFgMMtLFSHMLVVDVdtHLNctF
|
||||||
|
WnhZsrJhTnWrgZdZgHNLcLtt
|
||||||
|
hjCsCWRhjzhTjnWnQBbmPQQPLBGfqjwQ
|
||||||
|
BFrzdtmRmpFtFwwmjjzNQllPshqHvjNh
|
||||||
|
fWCLLCMJnCDbgfMJhPsPHvqvqVsssQ
|
||||||
|
WbLnCZnvprpmZrGd
|
||||||
|
gjMzTGBjWFBCCSSrBC
|
||||||
|
bddJJndbdJfwPPthrrSSSsFSSg
|
||||||
|
NJHbZbbvvWGgjWgT
|
||||||
|
dpfphMggHdQcwftMMgdtzWGfGWnDBnmvnVJVvfmn
|
||||||
|
CqPFTZPSNCTsZZZRLzGmcGVzDLGvLWBWJm
|
||||||
|
TCrTNSScPlplpHrQrQ
|
||||||
|
lqrCvhWFvMGWgfHPgLfjfdgG
|
||||||
|
zjmbjSnzRzVVRmzBRtwjVQnNLfdPgfLdfTtNLPHTNNpppf
|
||||||
|
mbSZRzQRBnnzbQJbmjmSbmVhlslZMrclWFrrqWCWsFhchF
|
||||||
|
mpfNshshflNthWfJCBBdmnQbQBZQdn
|
||||||
|
VFVRccgGTqTrHTbWBFjJBCFFJCCQ
|
||||||
|
PvTDHqHqPPGVqqhwfNlWlDhMltlh
|
||||||
|
HmLLgWVjJwhwWLgjjhmVHLLLlSzBlBlSvBvBFGvtdStJSSvq
|
||||||
|
TRRrPMsfQTbRRCZRnTMRZZTCcvSccqBqBBlzdFvBqFsGBcts
|
||||||
|
bRNPbRCZMCrQNfPLdhVpLDVgDhNHWV
|
||||||
|
sPJFDsSsVLgHjLHPbj
|
||||||
|
vCnRQhhRQdVQZlZdbHNMlqNNjgjbpbBL
|
||||||
|
ChhCCCWTWnnmvmGtztStzScwrcVcFW
|
||||||
|
NRBTNDBglSSgDwCClQQSFFHdLLsFbPFFLt
|
||||||
|
McpmWccMWHZPcLstbt
|
||||||
|
MWnWphVMvvzJzpWJWmVphjrDDBBTRwRDDDRRCnPDnqgg
|
||||||
|
hsnnhhLljLPTmZwvdZdZjmmz
|
||||||
|
RQNNDpNMSZwvsmqstN
|
||||||
|
QFMFRDVDsHSpRpHSMRHfGGGTLhCChBGhBhBFBJ
|
||||||
|
TTbltCvClzvzCZtwtwLTtQQQgjNgmjgQRRRQSjQLjR
|
||||||
|
HPpnZHcJsdnnfsdVHHSSqghhmqBSSqSmBfNj
|
||||||
|
VMJJdnMPrMGVrzvCZwZWCzCt
|
||||||
|
CcQnBBCfBvRzDlsS
|
||||||
|
PdbPPCbhGGpDSDlDDhvDJl
|
||||||
|
HmHWPWdbHnCwCHCr
|
||||||
|
JHlmJcMWHQcPmlmJMmMZPfwTTRDfgdDBfRtgQgdfBw
|
||||||
|
zVvFrqGjzWGVrqvjvNFpspvVBgNNddtTgghhRTwgdDwwwBfT
|
||||||
|
bVFrrvsvjWGVsCsqpSHZmMPJlJnCcLcPZZ
|
||||||
|
QrrQZFZnRtnFRTrnlFTtRZwpGGwzGszhjzbsGzzhmjjhhmhf
|
||||||
|
SgvpDSJSgPBSDPDNgpggmsMhMmffsMmzfJmzHHMj
|
||||||
|
WNVcCPgSSDCddSdWCpNBclCQQFRQQlnTLFLRZQnLtt
|
||||||
|
tgvqWqzvntdlzNzzHrbPrMhHMhhrVrjPmC
|
||||||
|
FGTGGRGTffcJRpQcJJwmjhPLhjnCQPrLPVQrMr
|
||||||
|
SppRSDRwFnJJwwswTDdtzBzqWWzZDldNgtvl
|
||||||
|
sjzPjLphMSrlppSp
|
||||||
|
fbGqgwTqgVTFFcgGTTGcQvfHQZRlSrSlSmMNMBRNNNrZmm
|
||||||
|
MVcFGTFtqjsJLjjtCd
|
||||||
|
jVJqTRHjjtDjZnVJVVjnNdwfCFPZmPgCCgCZGCFFrrFg
|
||||||
|
LSLBMBWsbBBCgfdrFd
|
||||||
|
ShbbzdzQRNNNVhDN
|
||||||
|
JwbSRqmSwRwcpmbSSVfhNBTVGGRnNNzRNh
|
||||||
|
ZPfQPjZZrffQZszhzTnVGBvntsNz
|
||||||
|
rLjggjQgQgFdPQjLFQZgwLMbWccLSwWHqHfSqpwc
|
||||||
|
cBhzNpztzHNrpHSHQrhZjZqdJRRgPqjhjqqP
|
||||||
|
bQwsMTswwVjdZMVRJM
|
||||||
|
vGWCTDCTQvvtlvQQ
|
||||||
|
mHVmTTsmzRmRHffmmfMGBzSPMhSWWdDWDSGB
|
||||||
|
VNcnNbtqqJbcbvgvWhShDBDPhjgPhSjB
|
||||||
|
FrrbCnqJcbCJcFFbnqJlppCTfQmfmZQTLVswRLZp
|
||||||
|
rWWppSStfRBLfHPdHHDzlldZ
|
||||||
|
QrTnQmmVCqvrvJvzJZPHvzHsDs
|
||||||
|
qgMMmrTTCcnQQmCNQNQmgTpwRWRtwtpcBWwjSRSSpttW
|
||||||
|
SzWQwwqVbQzwGSfVwffVwbqhFGFFMgGLGMlNMcnNgcvlMg
|
||||||
|
ddZHHsrCdBssDsHmChFLNNnMvmNnnnFncL
|
||||||
|
rpJJdHZJdZHQSRJbSfVhww
|
||||||
|
jLtFhNwNNvHnjFVvQLQLHhfbGDMPfffpllpttZMPPZZb
|
||||||
|
VmrqszVmgCWWggbPGclPlZbcZCbf
|
||||||
|
JdrTmVTVsqsRJHvQnnhwhBLH
|
||||||
|
vpdBvsvdVvSPhvQFCgrRmhjqqRgWcWWgmf
|
||||||
|
tJDGbZHbjRHNrrBj
|
||||||
|
DnMnzGJJwtzVSzzBzTBSTF
|
||||||
|
hZMDbQhMhlMDJrDrPMJRRqGJSvFvSwFSVdvGvwSFqq
|
||||||
|
HjjzcRTnpGVSGGFWHH
|
||||||
|
pssmjctLzpsRRnhlQbPfPrgDbZls
|
||||||
|
FJMhPhnTMGmBFdnmlrfqfCcwlwCwCv
|
||||||
|
pjHLsLbjjRHsHsjDjVsgDRjzCnfCfzqrqvwgflcvcvvgqz
|
||||||
|
njtpHZnLLQGhTtTWSSSh
|
||||||
|
NMddMTDrrjNnrnMWMrlnPwNwftBtGvptGjBHgBgpfCCSfgvf
|
||||||
|
mqRqLFZRVFbtgBSCbGWWHp
|
||||||
|
LZZRmQhVLLFzZdTQPndPNTTnQW
|
||||||
|
CprQrcpqhHhpppchpphdcdpLMRMGsVGGsMsLbZbtbfMRmtbG
|
||||||
|
DzlgTjwPTlSSSCDSlggNmMRtbsstsMfbwtVssMmt
|
||||||
|
TNCNSBNJJTNPJjCTBDzjlJrvvcQrrhphWBqHhHdqrnrr
|
||||||
|
ScbcbglMPRSmvclTlzMTdhVHhhjfdsdhrVDzfjrD
|
||||||
|
LJGtpQwpQBBCttJLGqtqGHhPfDdHwjjhrVrhdrdshr
|
||||||
|
WCpZQCGqtqQWtQWplZPcvMmgmvPccbvT
|
||||||
|
tGWqthqGVdzBWwdd
|
||||||
|
BZvZHFFHZrHZvZNRRHHZNHrMMTzRMTdTzbgDVMVssTDTwg
|
||||||
|
JnNmrHHNrCGBPPnGGc
|
||||||
|
wvFvZBmppBdSLcvshcLrgl
|
||||||
|
bTQqJJHJzJjDQjQtzRVJztDHslgNNVLcgSrsSsWrSslWgrgL
|
||||||
|
TqHHjQnbHTbbmZBBcFMpmBwn
|
||||||
|
ZFCqSlCPdCRTLWWTQQLLQS
|
||||||
|
GjggHcvsggHVTVBLnlcpBQ
|
||||||
|
hvGhlrtjmjrHHhjsMPFNPdtqMPqqRfCf
|
||||||
|
cgRwVfVzrgqqwZctTztFMFMTCdPmmF
|
||||||
|
bWJsSJHpTDRDTWMC
|
||||||
|
sHHNbshnlJhJjBsjsbnBHbZcqrZZQwqvvZcrwwvRcZnr
|
||||||
|
ttgVBtMbttngmHJVpzlzZlppzw
|
||||||
|
cPcsRPmPPQfGcccRQSSZzzvzlflzZHvJppzJzT
|
||||||
|
sQPSCPPWccWWWqsQqRCQFNRMmnbnjjNbgDdBjhBrdbdDbd
|
||||||
|
gSsZDSgdQZgWSgddwLDLLfCDBqvlhBlClqtqjhvBhB
|
||||||
|
RMcsVMcsbVsrPrmJcPHHVvfjjCnvvfCqhlqvqqqq
|
||||||
|
NFMRRpHPgzszGppG
|
||||||
|
WmmZZNJCgCBZCzPvmBCmjWjjqFtFqjFjbVwqwjtt
|
||||||
|
ppDMpdMfSfSSNtlwqbqwwq
|
||||||
|
dTGDhdnfLMLhfDDpQvZNZgmrmrQJgrLQ
|
||||||
|
jrqRqfNNhrVvcTVdpTscpd
|
||||||
|
tGWBlLggWGddTspZZd
|
||||||
|
JJzWtQgQsDbBgDWsgbFrPrRJNMJMPqMNfHjH
|
||||||
|
GdvVbbWsWdvWGDvWZcbFBTBZCzCjwzrhPBJjzF
|
||||||
|
nQPfSHnglfpnMSngnMgJTprJCCwwrwCwpTpCFj
|
||||||
|
SQQHSttRqggmlVsNcvWdRvbWPN
|
||||||
|
WLNLCWLsSJgHFrSHrM
|
||||||
|
gDbzRTcmbzPPgPPdtBctfHfrMMQfGFJrhQnMfGJR
|
||||||
|
dmmzzqZdDqqTLLwjgZgNljws
|
||||||
|
TCqsDHssmDsDGVGlVcMccGDV
|
||||||
|
FLntWWnnFzFgzzbtbznLBtlfjGZmcfFGVNFGlVZcMNlN
|
||||||
|
PpbLLmpgbRzqpCHwChQqwh
|
||||||
|
lVBPVgflgBVVrVTTwgwBPmgflDQjnnGvqjGDDFjGlGnvqHHJ
|
||||||
|
ScCLzdCZdbLSbFdFqvDDdGMQGQ
|
||||||
|
bchNCLRWSbzCbNRzbWRmsrhQwVVwBhmQpPwpgV
|
||||||
|
GmfHCCPqWqHLWLCfRJpbrrbQphwZbZ
|
||||||
|
STVDQzNnzMzNdstMDzzNtZwFhrlwVJJrJlFFJRFwFR
|
||||||
|
DzSvzstnszMnjQcqggjPqQBcqq
|
||||||
|
BzNwLTqwTjrBrljWpBlrQpBpsCGGCtpssCMttDtHsttMDCHp
|
||||||
|
mnrJVmRhhvJVcHtsGHMCnZCPZM
|
||||||
|
bvSmVbRhbgmmSJflzNLrzqzfWfqBWr
|
||||||
|
qsZLqqFNhfrGnJFv
|
||||||
|
DVjVmWlcjVjdDTDlbbTDTzmrCnMmJGnHnmCHfJGfvnfM
|
||||||
|
lVRdDglTlTgVlVjbWWVzVjvNZqSBsLZNtqRsLBqLqQtL
|
||||||
|
ffRRfLVHZHfJHVJcMrMZZwwTzGBBzBTBjGTwrwdSCj
|
||||||
|
qmWbWQbqnbvWhbQPGnGNnpvwSzltpBldtSdzllptCSjTTt
|
||||||
|
vWsbnbWnNvQQQQvsRRLfJRRVGfDcfV
|
||||||
|
PpqrvswPvvvPsNqmDLDttCCcHHZVrCtW
|
||||||
|
hgSddBhghQMdbhbwhgSdQgCCctZcDtLntLttCVLtSLCc
|
||||||
|
dGzdQMFzQMdgGGlGJMzBgBwRqNNfmmTsvfRfJTpwjmpP
|
||||||
|
pcphpdrWDmTgHWMtRWqHRVVH
|
||||||
|
SbGcGGQnvNQGvsjBtVHBLjvqVPVB
|
||||||
|
lzbQCzbZllSzQslpCJpJJDggcggfDT
|
||||||
|
ffrTlhrVrfCsDVTsWzGBBZcBRBqRBWtGtZcq
|
||||||
|
QNFmFHrHNSSmSLJdJrNGZLbGjbcBjBGjqcbgjc
|
||||||
|
ddQvPnHddnQJHSHSFPdnFfDDTfDMMCrwMlPTwDCsrC
|
||||||
|
NBnrNHQHBscvhfBM
|
||||||
|
bbGtgWWWqZFmnZGZbmVCdMzvvShfzfGcdcfMSS
|
||||||
|
WqbjnmbnjWgmFFgtWVbWZwNTNLjNprNwQLDwrTrHQr
|
||||||
|
lwwlcjlzQRBcBccbdLCVnNVWJJzfLndd
|
||||||
|
pZDMtZpSDMZpMZMsPtHVNJVfRCRddVndnJLSJd
|
||||||
|
mDTZvTqtDDHttRPcqhQlwgGlghbqBh
|
||||||
|
DTspTqssqTbdmCMwVmnmlfCD
|
||||||
|
PLPWjjrSjvPzqZvjvRqjLtPwnnHCmWVcncMnnwmncHcHll
|
||||||
|
RFztFjjqjQFQTbdTbQ
|
||||||
|
hTFSVSdhMMVMFjjgbthcbzczcg
|
||||||
|
DvwCJVJWWJDRnfmbDmccfmmgfb
|
||||||
|
QrJvPGWWnpVMqdZsZpqM
|
||||||
|
gRLcHbgnfpgpJjlqqp
|
||||||
|
SFwrTHFBqlZtBPZq
|
||||||
|
HTzDwmSvCvCmsmmvTSwvFwcfRRNRLcQRWNssNNbRWLWL
|
||||||
|
PpMgDMDnsWSnjBQnrjbn
|
||||||
|
LFcVVGChCFdhdVFZVpVCdVbvQbRrbvBBbBjQSJZrrJrR
|
||||||
|
FNwGNCCFHcVTHcFdHHHTDzMzfsgzwpPWMmPflmtt
|
24
Package.resolved
Normal file
24
Package.resolved
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"originHash" : "23baadbc515ba47de84bba41a92b072f7e94d25235c8c91b5566b691c2085e3c",
|
||||||
|
"pins" : [
|
||||||
|
{
|
||||||
|
"identity" : "swift-syntax",
|
||||||
|
"kind" : "remoteSourceControl",
|
||||||
|
"location" : "https://github.com/swiftlang/swift-syntax.git",
|
||||||
|
"state" : {
|
||||||
|
"revision" : "515f79b522918f83483068d99c68daeb5116342d",
|
||||||
|
"version" : "600.0.0-prerelease-2024-08-14"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identity" : "swift-testing",
|
||||||
|
"kind" : "remoteSourceControl",
|
||||||
|
"location" : "https://github.com/swiftlang/swift-testing.git",
|
||||||
|
"state" : {
|
||||||
|
"revision" : "c55848b2aa4b29a4df542b235dfdd792a6fbe341",
|
||||||
|
"version" : "0.12.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"version" : 3
|
||||||
|
}
|
26
Package.swift
Normal file
26
Package.swift
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
// swift-tools-version: 6.0
|
||||||
|
// The swift-tools-version declares the minimum version of Swift required to build this package.
|
||||||
|
|
||||||
|
import PackageDescription
|
||||||
|
|
||||||
|
let package = Package(
|
||||||
|
name: "aoc2022",
|
||||||
|
products: [
|
||||||
|
// Products define the executables and libraries a package produces, making them visible to other packages.
|
||||||
|
.library(
|
||||||
|
name: "aoc2022",
|
||||||
|
targets: ["aoc2022"]),
|
||||||
|
],
|
||||||
|
dependencies: [
|
||||||
|
.package(url: "https://github.com/swiftlang/swift-testing.git", from: "0.12.0"),
|
||||||
|
],
|
||||||
|
targets: [
|
||||||
|
// Targets are the basic building blocks of a package, defining a module or a test suite.
|
||||||
|
// Targets can depend on other targets in this package and products from dependencies.
|
||||||
|
.target(
|
||||||
|
name: "aoc2022"),
|
||||||
|
.testTarget(
|
||||||
|
name: "aoc2022Tests",
|
||||||
|
dependencies: ["aoc2022", .product(name: "Testing", package: "swift-testing")]),
|
||||||
|
]
|
||||||
|
)
|
5
Sources/aoc2022/aoc2022.swift
Normal file
5
Sources/aoc2022/aoc2022.swift
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
// The Swift Programming Language
|
||||||
|
// https://docs.swift.org/swift-book
|
||||||
|
enum Err: Error {
|
||||||
|
case NotImplemented
|
||||||
|
}
|
25
Sources/aoc2022/day01.swift
Normal file
25
Sources/aoc2022/day01.swift
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
struct Day01 {
|
||||||
|
static func part1(_ input: String) -> Int {
|
||||||
|
let elves = input
|
||||||
|
.split(separator: "\n\n")
|
||||||
|
.map({ elf in
|
||||||
|
elf.split(separator: "\n")
|
||||||
|
.map({snack in Int(snack)!})
|
||||||
|
.reduce(0, +)
|
||||||
|
})
|
||||||
|
return elves.max()!
|
||||||
|
}
|
||||||
|
|
||||||
|
static func part2(_ input: String) -> Int {
|
||||||
|
let elves = input
|
||||||
|
.split(separator: "\n\n")
|
||||||
|
.map({ elf in
|
||||||
|
elf.split(separator: "\n")
|
||||||
|
.map({snack in Int(snack)!})
|
||||||
|
.reduce(0, +)
|
||||||
|
})
|
||||||
|
.sorted(by: >)
|
||||||
|
|
||||||
|
return elves[0..<3].reduce(0,+)
|
||||||
|
}
|
||||||
|
}
|
127
Sources/aoc2022/day02.swift
Normal file
127
Sources/aoc2022/day02.swift
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
struct Day02 {
|
||||||
|
enum JankenResponse: Character, RawRepresentable {
|
||||||
|
case rock = "X"
|
||||||
|
case paper = "Y"
|
||||||
|
case scissors = "Z"
|
||||||
|
|
||||||
|
func getResult(against: JankenPrompt) -> JankenResult {
|
||||||
|
switch self {
|
||||||
|
case .rock:
|
||||||
|
switch against {
|
||||||
|
case .rock:
|
||||||
|
return .tie
|
||||||
|
case .paper:
|
||||||
|
return .lose
|
||||||
|
case .scissors:
|
||||||
|
return .win
|
||||||
|
}
|
||||||
|
case .paper:
|
||||||
|
switch against {
|
||||||
|
case .rock:
|
||||||
|
return .win
|
||||||
|
case .paper:
|
||||||
|
return .tie
|
||||||
|
case .scissors:
|
||||||
|
return .lose
|
||||||
|
}
|
||||||
|
case .scissors:
|
||||||
|
switch against {
|
||||||
|
case .rock:
|
||||||
|
return .lose
|
||||||
|
case .paper:
|
||||||
|
return .win
|
||||||
|
case .scissors:
|
||||||
|
return .tie
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func getPointVal() -> Int {
|
||||||
|
return switch self {
|
||||||
|
case .rock:
|
||||||
|
1
|
||||||
|
case .paper:
|
||||||
|
2
|
||||||
|
case .scissors:
|
||||||
|
3
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
enum JankenPrompt: Character, RawRepresentable {
|
||||||
|
case rock = "A"
|
||||||
|
case paper = "B"
|
||||||
|
case scissors = "C"
|
||||||
|
|
||||||
|
func getResponse(result: JankenResult) -> JankenResponse {
|
||||||
|
switch self {
|
||||||
|
case .rock:
|
||||||
|
switch result {
|
||||||
|
case .win:
|
||||||
|
return .paper
|
||||||
|
case .tie:
|
||||||
|
return .rock
|
||||||
|
case .lose:
|
||||||
|
return .scissors
|
||||||
|
}
|
||||||
|
case .paper:
|
||||||
|
switch result {
|
||||||
|
case .win:
|
||||||
|
return .scissors
|
||||||
|
case .tie:
|
||||||
|
return .paper
|
||||||
|
case .lose:
|
||||||
|
return .rock
|
||||||
|
}
|
||||||
|
case .scissors:
|
||||||
|
switch result {
|
||||||
|
case .win:
|
||||||
|
return .rock
|
||||||
|
case .tie:
|
||||||
|
return .scissors
|
||||||
|
case .lose:
|
||||||
|
return .paper
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
enum JankenResult: Int {
|
||||||
|
case win = 6
|
||||||
|
case lose = 0
|
||||||
|
case tie = 3
|
||||||
|
|
||||||
|
init(char: Character) {
|
||||||
|
switch char {
|
||||||
|
case "X":
|
||||||
|
self = .lose
|
||||||
|
case "Y":
|
||||||
|
self = .tie
|
||||||
|
case "Z":
|
||||||
|
self = .win
|
||||||
|
default:
|
||||||
|
fatalError("\(char) is not a valid JankenResult")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static func part1(_ input: String) -> Int {
|
||||||
|
let roundScores = input.split(separator: "\n")
|
||||||
|
.map({ round in
|
||||||
|
let prompt = JankenPrompt(rawValue: round.first!)!
|
||||||
|
let response = JankenResponse(rawValue: round.last!)!
|
||||||
|
return response.getResult(against: prompt).rawValue + response.getPointVal()
|
||||||
|
})
|
||||||
|
return roundScores.reduce(0, +)
|
||||||
|
}
|
||||||
|
|
||||||
|
static func part2(_ input: String) -> Int {
|
||||||
|
let roundScores = input.split(separator: "\n")
|
||||||
|
.map({ round in
|
||||||
|
let prompt = JankenPrompt(rawValue: round.first!)!
|
||||||
|
let result = JankenResult(char: round.last!)
|
||||||
|
return prompt.getResponse(result: result).getPointVal() + result.rawValue
|
||||||
|
})
|
||||||
|
return roundScores.reduce(0, +)
|
||||||
|
}
|
||||||
|
}
|
26
Sources/aoc2022/day03.swift
Normal file
26
Sources/aoc2022/day03.swift
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
struct Day03 {
|
||||||
|
static func part1(_ input: String) -> Int {
|
||||||
|
let itemPriority = input.split(separator: "\n")
|
||||||
|
.map({ sack in
|
||||||
|
let start = sack.startIndex
|
||||||
|
let end = sack.endIndex
|
||||||
|
let mid = ((end - start) / 2) + start
|
||||||
|
return sack[start..<mid].filter(sack[mid..<end].contains).first!
|
||||||
|
})
|
||||||
|
.map(charToPriority)
|
||||||
|
|
||||||
|
return itemPriority.reduce(0, +)
|
||||||
|
}
|
||||||
|
|
||||||
|
static func charToPriority(_ char: Character) -> Int {
|
||||||
|
let ascii = Int(char.asciiValue!)
|
||||||
|
switch ascii {
|
||||||
|
case 97...122:
|
||||||
|
return ascii - 96
|
||||||
|
case 65...90:
|
||||||
|
return ascii - (64 - 26)
|
||||||
|
default:
|
||||||
|
fatalError("\(char) is not a valid character!")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
66
Tests/aoc2022Tests/day01.swift
Normal file
66
Tests/aoc2022Tests/day01.swift
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
import Testing
|
||||||
|
@testable import aoc2022
|
||||||
|
|
||||||
|
@Suite("Day 1 Tests") struct Day01Tests {
|
||||||
|
@Test("Part 1 Test") func testPart1() {
|
||||||
|
let input = """
|
||||||
|
1000
|
||||||
|
2000
|
||||||
|
3000
|
||||||
|
|
||||||
|
4000
|
||||||
|
|
||||||
|
5000
|
||||||
|
6000
|
||||||
|
|
||||||
|
7000
|
||||||
|
8000
|
||||||
|
9000
|
||||||
|
|
||||||
|
10000
|
||||||
|
"""
|
||||||
|
|
||||||
|
let out = Day01.part1(input)
|
||||||
|
|
||||||
|
#expect(24000 == out, "\(out) should be 24000")
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test("Part 1 Actual") func runPart1() throws {
|
||||||
|
let input = try String(contentsOfFile: "Input/day01.txt", encoding: .utf8)
|
||||||
|
|
||||||
|
let out = Day01.part1(input)
|
||||||
|
|
||||||
|
#expect(67016 == out, "\(out) should be 67016")
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test("Part 2 Test") func testPart2() {
|
||||||
|
let input = """
|
||||||
|
1000
|
||||||
|
2000
|
||||||
|
3000
|
||||||
|
|
||||||
|
4000
|
||||||
|
|
||||||
|
5000
|
||||||
|
6000
|
||||||
|
|
||||||
|
7000
|
||||||
|
8000
|
||||||
|
9000
|
||||||
|
|
||||||
|
10000
|
||||||
|
"""
|
||||||
|
|
||||||
|
let out = Day01.part2(input)
|
||||||
|
|
||||||
|
#expect(45000 == out, "\(out) should be 45000")
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test("Part 2 Actual") func runPart2() throws {
|
||||||
|
let input = try String(contentsOfFile: "Input/day01.txt", encoding: .utf8)
|
||||||
|
|
||||||
|
let out = Day01.part2(input)
|
||||||
|
|
||||||
|
#expect(200116 == out, "\(out) should be 200116")
|
||||||
|
}
|
||||||
|
}
|
36
Tests/aoc2022Tests/day02.swift
Normal file
36
Tests/aoc2022Tests/day02.swift
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
import Testing
|
||||||
|
@testable import aoc2022
|
||||||
|
|
||||||
|
@Suite("Day 2") struct Day02Test {
|
||||||
|
@Test("Part 1 Test") func testPart1() {
|
||||||
|
let input = """
|
||||||
|
A Y
|
||||||
|
B X
|
||||||
|
C Z
|
||||||
|
"""
|
||||||
|
let out = Day02.part1(input)
|
||||||
|
#expect(out == 15)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test("Part 1 actual") func runPart1() throws {
|
||||||
|
let input = try String(contentsOfFile: "Input/day02.txt")
|
||||||
|
let out = Day02.part1(input)
|
||||||
|
#expect(out == 12740)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test("Part 2 Test") func testPart2() {
|
||||||
|
let input = """
|
||||||
|
A Y
|
||||||
|
B X
|
||||||
|
C Z
|
||||||
|
"""
|
||||||
|
let out = Day02.part2(input)
|
||||||
|
#expect(out == 12)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test("Part 2 actual") func runPart2() throws {
|
||||||
|
let input = try String(contentsOfFile: "Input/day02.txt")
|
||||||
|
let out = Day02.part2(input)
|
||||||
|
#expect(out == 11980)
|
||||||
|
}
|
||||||
|
}
|
23
Tests/aoc2022Tests/day03.swift
Normal file
23
Tests/aoc2022Tests/day03.swift
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import Testing
|
||||||
|
@testable import aoc2022
|
||||||
|
|
||||||
|
@Suite("Day 3 Tests") struct Day03Test {
|
||||||
|
@Test("Part 1 Test") func testPart1() {
|
||||||
|
let input = """
|
||||||
|
vJrwpWtwJgWrhcsFMMfFFhFp
|
||||||
|
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
|
||||||
|
PmmdzqPrVvPwwTWBwg
|
||||||
|
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
|
||||||
|
ttgJtRGJQctTZtZT
|
||||||
|
CrZsJsPPZsGzwwsLwLmpwMDw
|
||||||
|
"""
|
||||||
|
let out = Day03.part1(input)
|
||||||
|
#expect(out == 157)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test("Part 1 Actual") func runPart1() throws {
|
||||||
|
let input = try String(contentsOfFile: "Input/day03.txt")
|
||||||
|
let out = Day03.part1(input)
|
||||||
|
#expect(out == 8176)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user