Overengineered Day3
This commit is contained in:
parent
6807ab3133
commit
2f85311df3
5 changed files with 381 additions and 0 deletions
|
@ -14,6 +14,7 @@ library
|
||||||
exposed-modules:
|
exposed-modules:
|
||||||
AoC.Day1
|
AoC.Day1
|
||||||
AoC.Day2
|
AoC.Day2
|
||||||
|
AoC.Day3
|
||||||
other-modules:
|
other-modules:
|
||||||
Paths_adventofcode
|
Paths_adventofcode
|
||||||
hs-source-dirs:
|
hs-source-dirs:
|
||||||
|
@ -22,6 +23,8 @@ library
|
||||||
build-depends:
|
build-depends:
|
||||||
attoparsec
|
attoparsec
|
||||||
, base ==4.*
|
, base ==4.*
|
||||||
|
, extra
|
||||||
|
, split
|
||||||
, text
|
, text
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
|
|
||||||
|
@ -36,5 +39,7 @@ executable adventofcode
|
||||||
adventofcode
|
adventofcode
|
||||||
, attoparsec
|
, attoparsec
|
||||||
, base ==4.*
|
, base ==4.*
|
||||||
|
, extra
|
||||||
|
, split
|
||||||
, text
|
, text
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
import AoC.Day1 as Day1
|
import AoC.Day1 as Day1
|
||||||
import AoC.Day2 as Day2
|
import AoC.Day2 as Day2
|
||||||
|
import AoC.Day3 as Day3
|
||||||
|
|
||||||
import qualified Data.Text.IO as T (readFile)
|
import qualified Data.Text.IO as T (readFile)
|
||||||
|
|
||||||
|
@ -17,3 +18,10 @@ main = do
|
||||||
putStrLn $ show $ Day2.solveA input2
|
putStrLn $ show $ Day2.solveA input2
|
||||||
putStrLn $ show $ Day2.solveB "A Y\nB X\nC Z"
|
putStrLn $ show $ Day2.solveB "A Y\nB X\nC Z"
|
||||||
putStrLn $ show $ Day2.solveB input2
|
putStrLn $ show $ Day2.solveB input2
|
||||||
|
|
||||||
|
input3 <- T.readFile "./input/day3.txt"
|
||||||
|
let demoInput3 = "vJrwpWtwJgWrhcsFMMfFFhFp\njqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL\nPmmdzqPrVvPwwTWBwg\nwMqvLMZHhHMvwLHjbvcjnnSBnvTQFn\nttgJtRGJQctTZtZT\nCrZsJsPPZsGzwwsLwLmpwMDw"
|
||||||
|
putStrLn $ show $ Day3.solveA demoInput3
|
||||||
|
putStrLn $ show $ Day3.solveA input3
|
||||||
|
putStrLn $ show $ Day3.solveB demoInput3
|
||||||
|
putStrLn $ show $ Day3.solveB input3
|
||||||
|
|
300
input/day3.txt
Normal file
300
input/day3.txt
Normal file
|
@ -0,0 +1,300 @@
|
||||||
|
qFdBBvtHHfvRlfvsqldvqjPpQmnQmjnjjjTRTLGRNG
|
||||||
|
ZCWhhCsJCzSJzSbzgsmPTGNNPPNGjgLTLjgn
|
||||||
|
WJZsbJMwJcszJcScwhVltFwBFBlqddvFdHDfqq
|
||||||
|
crtTsGTtqFThGQGCrsjTwdNJwpRdnJJwffRClpSf
|
||||||
|
PWVBPVHLvHHVgvZWBzmPpnfRSJJRQnSRflRPSNSl
|
||||||
|
gmzBzDgzmZQWLDLLgVmDrqGhsscrqDMGhcqtqcFr
|
||||||
|
HsbcdVrsbVbcLfPqqQsqqtPj
|
||||||
|
mMBFzZRnmFMRBDnDFBGZDGdDqLjtdQtPtgfPfttgtqgq
|
||||||
|
BZvZZdJMBFdJhSvhbhchcHll
|
||||||
|
GNRSqRfcNTpfGCcqjfzBpDQPWBzgDpQsPWzW
|
||||||
|
rrSdnVHlbMdLdBDzgtBtBmQt
|
||||||
|
rbFwwnLFLFwlMLrFwFhMVLrGNSTfZTRhfTqjGJRRZTCNcf
|
||||||
|
QWTnQCnWNNWmTnSPQwmqDbcscbpcjPjVPbrjpq
|
||||||
|
vJhzZNlNNgdzgzJdlGzHHcHDpjsHqrvbVrbvrD
|
||||||
|
RzRdRlhLgtCwCWSLnN
|
||||||
|
SFTJFTTwTVVSJBnSTdvNNfWbZCZWNZCNNhBv
|
||||||
|
srLrcHDcsjtLcLLcrLctjlcvbDNhmWCvNhZWGZZhNvhZmb
|
||||||
|
rclgtMPrrSgVTgJCng
|
||||||
|
DbrhDzcDffbzNbZvZWSSqSTNSVWv
|
||||||
|
gCPltPmCPglFnPFwtGPhGPwTCTdZZWZVRvWqdRqVVdTdvR
|
||||||
|
hLBhlmlstcffBzrpfj
|
||||||
|
wFLLmhMfwZLDwmMNRhZwRLDvJgldbJHPdQvcQHHJQPgH
|
||||||
|
bjrVrTSSJdQHcVll
|
||||||
|
CGCSsCCBpspBrqbSttpbqWmWZRmfFRZhZMNNLFqFLm
|
||||||
|
zWGjjBHGjzzTWMjhtDDWtPPlJZPJpvqQrmZTqQQpmr
|
||||||
|
RFbVLcBVLRcRVcCsCCqvpCZqmplqQJmPrlvQ
|
||||||
|
FLNRRSSRgScSVLLLNdFdwjHjnftBtGMgMjzHgzjWjj
|
||||||
|
znVSqnqbqzSbzTHqDDZmlcFcnhDMnDmn
|
||||||
|
LtjsvdvLJdjfFwRRCCMlChwCpMcclCcZ
|
||||||
|
LgvjjfjFQVgNTgWq
|
||||||
|
SJRJRFFCMSsGRMMwtZJRCVTgqgTVgTBCVpjTjmmWlB
|
||||||
|
ccvnnpnDVqTcBVTV
|
||||||
|
vPHprdHdpnzHSMsSrMRZJGws
|
||||||
|
GddGrcGNHnGvnCHddvCSWqTSWsTwTWShbHlhhb
|
||||||
|
gDPzLRVZgQfpRRFQDDVFDfzhSzsTBqqqnqbhnWTSSlST
|
||||||
|
QVFfFgRQQgLtgffZRfpFPfntjrcrjCmtCdMMmjMdJJJNtm
|
||||||
|
jjmNcpGCNmDqqsBfnZnGGGRLsZ
|
||||||
|
lrmlVWlQQtWllgtbQVrWBnZsJgsRLfZLhZBBBffL
|
||||||
|
rWMVQtrFlbFlSSMHVSdHHNHdcdDcddzppzzm
|
||||||
|
bTpjpjcVTLmphbLppJwqzqwJLqqzzzgRLJ
|
||||||
|
sdHNbrvNHrqPvZZZPRww
|
||||||
|
bNQCrCNtNsSlhffhVhpVWFCW
|
||||||
|
lpNnpMMZZDbNbnBjcrbjvScFmbGj
|
||||||
|
wqhdqVqdscrjdLsv
|
||||||
|
HQftVqWCfhwqtCCjWwfqzzVPZRJQgMlggZMMMZTNMNTnNRTN
|
||||||
|
fvvGbFtVmtTwgtMT
|
||||||
|
WcCcClzPCCcczJJScPWWZzBDmwbhBBHSghgDDMTHMDBD
|
||||||
|
nWPljWzZWnbcbRsNFjFFdFdVjFsj
|
||||||
|
NQrcLNmQGRfGLHHLZgbbnpjZJJJndbgnlv
|
||||||
|
DWtThDWtzzhltWTwjbdpvjbgqjgg
|
||||||
|
VtSPFWtBPBFSFBWCStshWBmlRfHfMRcfQLQLLlmCrCcN
|
||||||
|
pbmwqJnqSJVwwDPCjZZzrZfD
|
||||||
|
QtssBTvNdNvNtQvQGpGhdjPjDjczZDfjhgPPDcgjgr
|
||||||
|
GltptQpMGNNpRWlWFVFHJFHLWH
|
||||||
|
ZLLsDGGVhZcQQLhrLshrVFwHnWqJnWMnJJJnqfWfGn
|
||||||
|
jMlPdTlPlgCgFpngFWFnJfpw
|
||||||
|
TlTNbdSSTSTmTjPMTCdBPjBMrLDczsZcNrDhRNDRQRLLRVVz
|
||||||
|
HDLpBqDVVTvwGDDNRT
|
||||||
|
PlVWjfhsPMMmWtlFNTrhrrvCCCTNNbvw
|
||||||
|
lsglfgVJmsfMjJfSqSzdZnLgqcnLnp
|
||||||
|
pfCDJWBpfDffpJLgQJzzVzNrgNgNgNhNzmVr
|
||||||
|
ZnnGZbGTPZnsnRFdTlbrwdrNzrrmmWwmwVwttH
|
||||||
|
GbPGRvTnZljWnpqSMMCjqJQSCf
|
||||||
|
ZgnFgwggznFrfrwfHhNMMr
|
||||||
|
pctLCLRhPHBLMLWfBL
|
||||||
|
JJcdJcQCCJmQJppmlgndnFslsVnsvghZ
|
||||||
|
WpMgTppWGSWWJmJDpJcJJhqm
|
||||||
|
zZzjZNHvNjPvNsbZLbRLzsPcqhVJSVttdwhwmdRhtdJRVd
|
||||||
|
sLbvvCZCPSSSbbPfNlQQTQGBllCTnMnWQn
|
||||||
|
fwbwswddwSbBfDBggMBPDPhHcPWDmhHhmWnWPC
|
||||||
|
FQFlzLCzQTlrTTzvltFqFrmhPHjnhhnnchcJWcRRmRRq
|
||||||
|
lpLzlFZzCltrTNlTztQLZfSMGBNdSBVwbBNVSMSbVs
|
||||||
|
FMmgbTFdgLSgFQdjrRPrQBPDdj
|
||||||
|
ZqqWRvsfGrrPvvPC
|
||||||
|
wZzwnqccRwRNNpRSMztSMMFbgzLTFS
|
||||||
|
qTwBPfTfqQDMDrssHdvtRHccHMjR
|
||||||
|
gWSZGWzGFhnFFgnhNsRHtRdsVjZcRjHs
|
||||||
|
jgplhpJJFgnDrrwfqprwDP
|
||||||
|
CWhMSRfWhVVnRSZnVVdsLQqQMzGqLBvGMQqczv
|
||||||
|
PHbpNwrjJplttvcclLlQzzDszc
|
||||||
|
NrJbJrFNNJNPrmwrtbjtNmCfSWfWhSZZfSWCsfShfFVR
|
||||||
|
VLhRPLGLRPRSStRRLwfGqfmDwbmqbqqDlD
|
||||||
|
rBSFvppnzTbwDwlDcFWm
|
||||||
|
MJrnJTMvMsrTsPtshRNPZdSLhL
|
||||||
|
BZBrRCrnCQBBnZfGqhGGMMRcthMhMG
|
||||||
|
TLjsCdDCPTvNssjdsPsDgsgqGcPHczchtHczWzPWzzlWhG
|
||||||
|
gsTpsdNbvNNjNSpsNDTsmCnSVQFmSFwZnQBnmnQQ
|
||||||
|
llbsNsWrmbrGbWCNtBjcCFBzQFZBCFjF
|
||||||
|
LdSpwgdqSgzwJdRdLMRHLjQQjHjFHctjHBDTZj
|
||||||
|
gSppgpSJMhpzwrhblfbhhlWlnW
|
||||||
|
DwhTvvsJZWsBnDzPpBLbFp
|
||||||
|
GHtNGRGNdzbMBBtmBt
|
||||||
|
NljlCSVSHdjGSQRGlCQSCswqfWzhZfTcfzcJvshJ
|
||||||
|
lmsGNFsDGqCbFQBbffjjwpzptw
|
||||||
|
hRQdvdrvrvSngWnvnHrTMfzfzRtftzwVTwwpzB
|
||||||
|
HnSSWrvLJvWJGFDsmFLPDFcQ
|
||||||
|
bwwpGphpLghpTvpWphvJlFLJqqltjSjVlSStSR
|
||||||
|
cmszZdDdBZzcNcDCDcNsmNMcqVjMJStFRJltVPVrlVPjVJll
|
||||||
|
HcdmcCzzzQcHNcsCdpnGnhwGgnRggHvbbR
|
||||||
|
CfMBbwBGbMbDCFrDvhFFDT
|
||||||
|
mjzRjjRdSmjPnzFZgnnrTT
|
||||||
|
cmSsVcHjLHTwMfLBpBpBwM
|
||||||
|
whqqfZzgHvhSzzVNVDbpDbmbVbNpJD
|
||||||
|
GcQFntGTCCcCTMCTGBlJsJsDDWpRbWBsJpNS
|
||||||
|
FnPcrGFFdddMnCnTqgqgqPHfLjLqgSzz
|
||||||
|
zMSzzjssFdGnszRtNftqqwFHbbZw
|
||||||
|
RRPLVrgrwHqBqgwt
|
||||||
|
rPWmLCTCQlCQQmmrWLrQShJshhzdhhJjcSjlzRds
|
||||||
|
lvgvCDfPqLHppqpCCDJncbntttbBtBBVHjwtrB
|
||||||
|
TdddszSQsWcngjzVbcVZ
|
||||||
|
hRWsTRTGQhNRGhRTFSWmlpgfqlvLmplPqvvGgv
|
||||||
|
LbWFLQdWWPwWSjSHPHRfppHHDRpggR
|
||||||
|
zmqqNNzlzmnzzNCmVCmtBzpfGsfpBgDgspprcfcfsrRB
|
||||||
|
qNNVNJtNmmmNzznVJzvCTDZWhvZZjZFbWQQhFhbZSw
|
||||||
|
DjdHqJVVhHVZjhDHPWtDtZLFBRBFmSRTFSbwmRRTffTTJf
|
||||||
|
NNznnGlgMQsnQzNclzpfSRSMRmfPMmFRwBwB
|
||||||
|
vzrcGcNcPPvHvHPt
|
||||||
|
wLCcmZwWTNtZNdMSMGSCnJGGMB
|
||||||
|
RFbHsPhVvFPRjlshhrnQnGjQGSdSqJfqnQBM
|
||||||
|
HhzVlFHhPwzScmSTgL
|
||||||
|
TNlBhDNvNBFpJgpPPpDQ
|
||||||
|
jjfCdCZZqsCZsbdqPgFGGMRzSFMqQMRS
|
||||||
|
jnWPtWssCtWcmZbbtstvnrrvhVBhTNNhBHlBlL
|
||||||
|
DZwNWPDzPVWbJngrQjrNnrQcMg
|
||||||
|
GRRfttLBhhvTvmLmFcFcgFFSnjWrnsrG
|
||||||
|
TLthBWtTRLHqhlLLfmhBqVPDJVdPwzJCPPZHwdDdVd
|
||||||
|
GGVhrVSMQwQqfVssVvnWFgvgWn
|
||||||
|
jtlcRBBtQRmpWsjzFCvzWnvF
|
||||||
|
QPcRbpppDmNDtPPblZMfhZdDwdMrqSSGrq
|
||||||
|
ZRrdtBdQvQsWnnfWFZsF
|
||||||
|
bJLcMzNDLbMgwfnGMWFv
|
||||||
|
lpvhmzNDmDmlNbzbmrVVPrHRCPHQBVCP
|
||||||
|
rZllQrsRWrlQswccMVbGbVbTdcQQ
|
||||||
|
NtJCntLSHCjznfLTcGGGqWMdWM
|
||||||
|
jCtzzSFthhSSSjPJrFDlvWrlDZRpwpRZ
|
||||||
|
mQmbLjbrLQjLmTtwwWBTTvWjtt
|
||||||
|
BHSqdHclHHNFlppNqWPwfwDvTfDPPtCw
|
||||||
|
ddSGMGHcdcMhMZnBbmbZmgGJJg
|
||||||
|
lvvBzvDnlzjfPnfjnQPlldRbVbRqbqqCgsqqVpQQgVqc
|
||||||
|
NNFtGNMtTNFmJNGNZtZMwVRTTcsCpVTbbgCbgRhscp
|
||||||
|
FGNGZMtNLWmmJWGFWJGLSNtPrPnBfDzzvjnDBzpnvDBLnv
|
||||||
|
fwvQRFQvQqwpwNJrwN
|
||||||
|
BstDnBjhjBhnshSptpJzWqNppbfr
|
||||||
|
CsDjCdZcBCDcjnfDHfhnfggZMGlgQVmgMTRmgVGMMl
|
||||||
|
MwlBVqVlsgnmzwJsvjhWZhGPvjvRRWzG
|
||||||
|
QNQpQpftHdHHCHGfSpCrQNdSrDRDhchhjvjcPrRRWrPvhZjv
|
||||||
|
LtLSCTSGfHGdGwswnqsggssTqV
|
||||||
|
qDDCHjzjznTvWshZQWfnZZ
|
||||||
|
PFFmmNMMtNMVFtczcFPJNrLhZwQZQsSvvSvWvGQQJQssss
|
||||||
|
tFzrrPPNNFlzVrpRTpblRDqjTpDC
|
||||||
|
DWDrrBdpmdpBrCgDthdtfcHsqJsCqscqwfsjzHcq
|
||||||
|
TNLNFNSTQNQTSnlMcczVJjVzsqLDDfJJ
|
||||||
|
TFPZQRvvlMSPPtRWDtmDRWrBGr
|
||||||
|
LWGVZdrvWdpLGWRsjPMsHmdHdHldlj
|
||||||
|
zJzznChzzzCSfTgMhCPDmlDCbmlsmjDDQj
|
||||||
|
nSTTJhJtnShNtzwhgNrGRRWZZRvMWMtVrqGp
|
||||||
|
PbPmtNmBbPlqBvqlDJBT
|
||||||
|
LpGVDzVpVZqqSTvq
|
||||||
|
pMnWGLRLRppnGpGndrGPtgDCjMPmbPgCQmPPNN
|
||||||
|
sqcZcbZZpcZspcCCRMmznWGWdLWhwDRGTTWggT
|
||||||
|
NjFSJgVHrvfVtrGzWdSznDwLSTLn
|
||||||
|
jFrBNVVjBFNvHrFHBlBFFpMslPgPcpMPmcQPPZCgpP
|
||||||
|
frddqsThtsTfTbPcvhsrbsRLpRBNRpmDpGmRGcRNLpGp
|
||||||
|
QWJHCJwWzlHZQZHQCJJRzRqnLDGRGpnGBRnNDN
|
||||||
|
CVwHCClJjQgWCZVZQgMwSdthjrqvrSPPhdbqtPhs
|
||||||
|
TvdphBBhhhCgdLNNJJJLWz
|
||||||
|
fVcsqRVrPcnJWgDnJN
|
||||||
|
JlqsRJtssZwqwVtPwltRPsHHbFTwTFbpjHhQjTQbvpTF
|
||||||
|
cQSnPDDQJGNzwnNpZb
|
||||||
|
RHDrssVRDHRgsRFHRlrVwzzpNGZlfZdppZdwGNZb
|
||||||
|
sHCHtDgtCjVVLFChqPMhBCMcSTqB
|
||||||
|
hdbQbqcCCQcqFbCbVdcWCQQlRMBtGlRHBtBMpHhpHThZMR
|
||||||
|
LLsSLLfgJPrgPnssnmlZtlZpHGHVGfZVtZpl
|
||||||
|
PvmvgmvvnzmrSsSLJDqDNzqFDQdDwzWWbV
|
||||||
|
HNNjnLbpLGHvWJDhdWWPpWDW
|
||||||
|
lVcSNgcSVclhRlPZPRCDCR
|
||||||
|
cqmSQrwwrrVSrtQFqVNmFwjQnvjHzBbLLGjfjzHTzvnH
|
||||||
|
QmvWVppPHQQvbbvmSHSpPzfzwnWMTZFFzwFMCzLnwT
|
||||||
|
jGBljlNNjgDtGDrNjjtjqqDRnMzRLnFzCFnMfRfMzCnttF
|
||||||
|
jqNrrGdJcdgLjqDqBrDQbbmhdQQmmpPbphmbVv
|
||||||
|
ZHQCggVHHRDWvbfjGptVtLvL
|
||||||
|
nnFwnwrDDMShnhFrFLLLpjvPlPGGtLGb
|
||||||
|
dcNSMhrrTDCBCsWgCTQW
|
||||||
|
HqDDLGtDdCnhfDnwnV
|
||||||
|
PmlJsJTPlbdBTzTnzhnnCCWWzV
|
||||||
|
lSPjMScggsScgjSMMbqHLFGrRLGHRZZtdrcG
|
||||||
|
ZVVtNNppdZSdLtCPqnHhqJJFtb
|
||||||
|
zgwwQBfwmGgSrDfgrrGBggzHCnbJbqbCJFnqhHBhnHHCqJ
|
||||||
|
rvrzfmlRrgDgmrzfggvwzvdjjcccLjMjVcVcsVLjVSZR
|
||||||
|
dppcLRHpphchhNhSddjzHzWQWQLtrMsrWQCWCsMZssCZ
|
||||||
|
JGfBfJJfBqvGVlVbDBwDBDBfZnrQsMQtssMttssDsQMWZncn
|
||||||
|
qPVwlgPBmjpPhcmS
|
||||||
|
zGPnzBgPzPnPlHZlDDHnZBNCvrtcjcjmMcFzNcNFmFdc
|
||||||
|
qQpfsLTTSspqTfJdmdCtMjdtjvJcmr
|
||||||
|
bfQqqSrswLLrfpLTqprfTnDVDVBBbgHPDHnhDPgDbV
|
||||||
|
JssTnsdFztZLdNJnNtTsLNZGqlbGFBqrGMHqHBcFBqMFMH
|
||||||
|
CCgSfgPSvSfhpShSRppCdfrlqGHGGcHmclmqbbqbqlPc
|
||||||
|
wvVSVjQSSQhRVvfQChvZZsdtJstjLNLZDJnLss
|
||||||
|
CmfNNNZNqDrnDjMhZM
|
||||||
|
gdczzGtdFcddtWQgGGMnVhnjJwnrJFDPTwMP
|
||||||
|
dlvcdzdHtzQSLRSfmhLSqv
|
||||||
|
ZpFFLcHFZZRRmJVZgD
|
||||||
|
PzhrtQntzcrjCRJtbtRgBsBRVR
|
||||||
|
zdzWfCzhQzlhWfWhlvpFNlpSqcMSHHMv
|
||||||
|
NrrMgMhNQhNjQrtqtPtwVtZpggPw
|
||||||
|
TfRLndnLFCRFTFbbRDHwpVqqBBwsHwZsfH
|
||||||
|
TJFRdLlRThrlcvZcvQ
|
||||||
|
scrwRVjbQvQBzsBC
|
||||||
|
gMfVqNnVmnCBQDTvdn
|
||||||
|
SMqhWqVlmWSmqMVRSJjjpcFrcLpJrR
|
||||||
|
HtSQHQntHsHMrtHnGfHQVVzLvSBSVvVVSFNJzzVN
|
||||||
|
cmPRmpqlpPmcgTlTpjJNjjVDvDRFNVVBFD
|
||||||
|
hlmCpmqmpgqpZTlcdQHFQfbHHZttwMQwtr
|
||||||
|
VpWgbgfwCjbftwVPPpGQFQhzTBQTBGPzqFTS
|
||||||
|
dbRbDcRrsnsRrLZmLRDZldDZqTNTGqqFFzGGhSTNTFTzNmNT
|
||||||
|
MlLdHlDDHrHclMMrCwgHCCwWwCbCCjjg
|
||||||
|
GGNLhfDMVcVrcGsT
|
||||||
|
jSJQFjHbwPFSvQSHwZFvHSHrqCCrrTsqBwNBrcBNsVTsqq
|
||||||
|
QjZSjZJZPvNRZJQPnSZbJZRWLfnmgDlmhdhWgWLdMdfmhM
|
||||||
|
CgGnzPNggCJtNTgTZTPZzZZvvcDcDDdqDFcJssJDHDqvHq
|
||||||
|
jhhrrLVlmLRRnRflfVbFHHHqdVsDqcvbHVDb
|
||||||
|
jWfWwrlmRRnQmPzZNGZPBNCQTB
|
||||||
|
NzDDhwNmhvtrGmNCvWRVbcRRVTcHHcVFTbwV
|
||||||
|
LgsPlLsQgQdJsLdldtpgFFTMbnFqTcMbHqFcPncq
|
||||||
|
dgsJsLLLggljrhtGNNtSjvGm
|
||||||
|
ptzSrZtzhsmmtPrhLFRFnjnnLMsnfLRL
|
||||||
|
HvwVDHwWWgGDGdHgqVDWDMnRnTjFNTNjfLJvRRRRRR
|
||||||
|
DwDgWgQbDDDHwBBBWdwQGVHhlhlZZSSmztfcppSBhzZcZp
|
||||||
|
CWmWRzlMJqWDWqCJbqDlCBBVLMQHVMGrfMVtQZrsLL
|
||||||
|
SnhPdFFPNZsBBdHtVQ
|
||||||
|
SSPcFFgnwnSpwvcSjwzCqRzTmJbpJCRBmbbD
|
||||||
|
wQbqGWWSqwrbGWWWGjbNMJPfgfnnDmPnPNLfjN
|
||||||
|
tJFztRZCvVRCztZFZRVgmMhmgNLfRfnmDPNPhm
|
||||||
|
BFCVZzpVFlHCdbQqcTcGlJbbSG
|
||||||
|
tttfLPZZQZTlZPHHPWgMVvBnjmvjnjgGBQ
|
||||||
|
FzcNDDDrNzprrrshprhFJtVGVnjtjGvnhvVnnjnjGM
|
||||||
|
RDqJNszDPfdqPtlT
|
||||||
|
QCJdMjCQbdBjSbTHDsbWDDwHTP
|
||||||
|
zlvlmqzqGfgdNzLldrHwwPGpWDrPGZWprr
|
||||||
|
gfVfRczVqcRzmdcSQMjQSQCSjQCQ
|
||||||
|
RhhCGhRBShjjRfpwppFTfFHZHZZD
|
||||||
|
qzdqzlnPPctPdmtPdTZbwQvvwqvHHvZpwZ
|
||||||
|
nVTVTcsWmWSRhhRVrGVB
|
||||||
|
GmshRMnzqRGsPNwMwcrrpcVV
|
||||||
|
CDCbFCLvCgfDSFLslgDpwpLtTwwcPtNNtTTprt
|
||||||
|
JvSFbSbbFllJlgDvlJbgdRhRdqzBGnzshZnRRRnHBZ
|
||||||
|
ShJhtcsvvvQbnnsccVTLVTppWqddpVnLWp
|
||||||
|
NdzPrPZgPMNNrmzpTzpTCjWfzCpzVL
|
||||||
|
dZgHmZRPPZRlZmrPDtDRccvbtQQbJbRS
|
||||||
|
wqjLjwhznhBLqLWGfvSlvcmlrJsqrtJTJJ
|
||||||
|
PwbpFPQDRCDrDJTrTmvs
|
||||||
|
gbZVFbZHgwHbCdpCRMnffNLhWnnzMdzLLW
|
||||||
|
RVVGSNTTRlNqHblBNB
|
||||||
|
JfwJMvLLZwLsMJwWMJfwLHBqzFlvzpBQcqzblFbBqblq
|
||||||
|
wMCZJsgJCCCnsMHrgLLjSPSVTgShtRjTPhRRmt
|
||||||
|
lmQSSWdMHHLWgWqD
|
||||||
|
ZZtVGGGJrJvGVCwfgHNLccmNFFcqtc
|
||||||
|
vrCGPhvrTPdRBnsRTmmp
|
||||||
|
dDMDDjzCQjwCCcDgjSLLLsLNlmpplN
|
||||||
|
FqrHFTFRLCLVFBmS
|
||||||
|
JhHJhHRThrfPZPvhnTZZbWdwdwDDWtDzJDtbMtCW
|
||||||
|
ghwDzJRDwHmPthncSPncLLsPcvnv
|
||||||
|
MWCrNTCHrMVjQQMQcSdnpTLnFFdTcnTc
|
||||||
|
qbWMfWfNrWVQWfbjVBbqMfwDtqzmhmRRzGhtHhHhRwZh
|
||||||
|
fmSmnjTjrlzGlTzJdH
|
||||||
|
BrhRRQMrgQvgFFhQQbwpFvGGdZqZJqpJqHVpJGJLHdLJ
|
||||||
|
ggbDwQMsvsMQrFMFcWSPSCPmSsPfnnmP
|
||||||
|
cmNVbMrrrjcHDRcvfW
|
||||||
|
wQGdFfSThFsLhhHWvDCWDCJRCCjd
|
||||||
|
LtpStGhqrrpnfnpp
|
||||||
|
bvcccTqbgvpGndJtgdsgNd
|
||||||
|
wDQwQhtQhQRmSmjsJndJdBBJBJnlLS
|
||||||
|
hwhmRrzFVjtwzDmrVFrvPCcCMVPPvfqpCCTVVb
|
||||||
|
jRrRNPNRWjPRWPRQNjQjThTCzBBzDCFBGzgDFGGQ
|
||||||
|
dnppLwmwCnvtlqltvtnTGBThGhdFZhgzDzGccD
|
||||||
|
MvnqpLlMqCqCHMjWPPHMSHSs
|
||||||
|
NNpNNvpvBdtTrMFFMhSSwzjzchzwhzwL
|
||||||
|
VVndHqflQZZZgHSLLhjzRSmZRhcR
|
||||||
|
glGgnqbQlngnWCGJpJprtrtFrdPPGs
|
||||||
|
WqwRjzGtRzZZRRGjWBJzjwmfMTHGGssTTDsrLmmmQLMD
|
||||||
|
SNdvSdFlSNNhSPFFcPFclbQQslHmfHTDsTQMLgDTmHQQ
|
||||||
|
CNcCFvpdnWpjWwJf
|
||||||
|
PVPnVHcnRncGZqbVzHVPnnLbSMjwrzWMjSwDtWwWtwWhwDWz
|
||||||
|
pTfsQCshCllpglWWSjBMSQSrMrjM
|
||||||
|
hvpvppggCpJTvTmshgfsmZRRHqbcLPHZmPLRnmPZ
|
||||||
|
LQbhVZZmZhZjBdbGmgHqnHTmvqgnnWHr
|
||||||
|
SzCfDFFNRfsSFFMFfvprvpWzqzgqTwHTvp
|
||||||
|
CDNDFJgMDSQhjVdPJLQG
|
||||||
|
plpdLdpjjrrHJJjLrrHLFdbzzCcvzgFgcwggzPMFvvcMhM
|
||||||
|
GRtSBQNsQlMPRzRlzw
|
||||||
|
ZSTtsmBlmjLLpnpH
|
||||||
|
hglGNVSdNSghzSgCBhDFLBMBtFMMFtHtbtLL
|
||||||
|
frQZccRcqGFmFHrJ
|
||||||
|
nvfGZwvTwGTfQwvfTwfgnCSlpdnzgzslppCsCV
|
||||||
|
snTSPbQnTTnQgbmsTJsLfZwjffhpLnGRjpGfjL
|
||||||
|
dcNWcNHHlNtWHHlCtltWNFNMLZwjpGfpmrZfrFprrRGpwZfp
|
||||||
|
HmdNWCmDMVvQPDgqJs
|
||||||
|
GGFtSngQLfnSnQffgPnRgFRGRwmRJvwbBbJDwjvTbjrwhJvJ
|
||||||
|
WHClslcNNWcqNWlCZdcHsVrThBwBjbhDTDBhrvDZJTwm
|
||||||
|
NWVqqcHHNpsNcNVdVlhCMlHQQMQQzLfzQPttFGPMLSLgtF
|
|
@ -6,12 +6,15 @@ dependencies:
|
||||||
- base == 4.*
|
- base == 4.*
|
||||||
- text
|
- text
|
||||||
- attoparsec
|
- attoparsec
|
||||||
|
- split
|
||||||
|
- extra
|
||||||
|
|
||||||
library:
|
library:
|
||||||
source-dirs: src
|
source-dirs: src
|
||||||
exposed-modules:
|
exposed-modules:
|
||||||
- AoC.Day1
|
- AoC.Day1
|
||||||
- AoC.Day2
|
- AoC.Day2
|
||||||
|
- AoC.Day3
|
||||||
|
|
||||||
executable:
|
executable:
|
||||||
source-dirs: executable
|
source-dirs: executable
|
||||||
|
|
65
src/AoC/Day3.hs
Normal file
65
src/AoC/Day3.hs
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
|
||||||
|
module AoC.Day3 where
|
||||||
|
|
||||||
|
import Data.Text (Text)
|
||||||
|
import Data.Maybe (fromMaybe)
|
||||||
|
import Data.Monoid (Sum(..), getSum)
|
||||||
|
import Data.List.Split (chunksOf)
|
||||||
|
import Data.Tuple.Extra (uncurry3)
|
||||||
|
import qualified Data.Text as T
|
||||||
|
|
||||||
|
valueMap :: [(Char, Int)]
|
||||||
|
valueMap = zip (['a'..'z']++['A'..'Z']) [1..]
|
||||||
|
|
||||||
|
breakInTwoEqualLengthSubStrings :: Text -> (Text,Text)
|
||||||
|
breakInTwoEqualLengthSubStrings txt = T.splitAt (T.length txt `div` 2) txt
|
||||||
|
|
||||||
|
findCommonItem :: Text -> Text -> Char
|
||||||
|
findCommonItem _ "" = undefined
|
||||||
|
findCommonItem compartment1 compartment2 =
|
||||||
|
if (c `T.elem` compartment1)
|
||||||
|
then c
|
||||||
|
else findCommonItem compartment1 (T.tail compartment2)
|
||||||
|
where
|
||||||
|
c = T.head compartment2
|
||||||
|
|
||||||
|
|
||||||
|
solveAOnOne :: Text -> Int
|
||||||
|
solveAOnOne = fromMaybe undefined
|
||||||
|
. flip lookup valueMap
|
||||||
|
. uncurry findCommonItem
|
||||||
|
. breakInTwoEqualLengthSubStrings
|
||||||
|
|
||||||
|
solveA :: Text -> Int
|
||||||
|
solveA = getSum . mconcat . map (Sum . solveAOnOne) . T.lines
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- Part 2
|
||||||
|
|
||||||
|
findCommonItem3 :: Text -> Text -> Text -> Char
|
||||||
|
findCommonItem3 c1 c2 c3 = T.head $ go (go c1 c2) c3
|
||||||
|
where
|
||||||
|
go :: Text -> Text -> Text
|
||||||
|
go t1 = T.foldl (\acc c -> if c `T.elem` t1 then T.cons c acc else acc) ""
|
||||||
|
|
||||||
|
tupleMeUp3 :: [[Text]] -> [(Text,Text,Text)]
|
||||||
|
tupleMeUp3 = go []
|
||||||
|
where
|
||||||
|
go :: [(Text,Text,Text)] -> [[Text]] -> [(Text,Text,Text)]
|
||||||
|
go tuples [] = tuples
|
||||||
|
go tuples ([t1, t2, t3]:xs) = go ((t1,t2,t3):tuples) xs
|
||||||
|
go _ _ = undefined
|
||||||
|
|
||||||
|
solveBOnOne :: (Text,Text,Text) -> Int
|
||||||
|
solveBOnOne = fromMaybe undefined
|
||||||
|
. flip lookup valueMap
|
||||||
|
. uncurry3 findCommonItem3
|
||||||
|
|
||||||
|
solveB :: Text -> Int
|
||||||
|
solveB = getSum
|
||||||
|
. mconcat
|
||||||
|
. map (Sum . solveBOnOne)
|
||||||
|
. tupleMeUp3
|
||||||
|
. chunksOf 3
|
||||||
|
. T.lines
|
Loading…
Reference in a new issue