Resolve days 2 to 6
parent
b5d8831fe8
commit
6078e7b72a
|
@ -0,0 +1,69 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
require_relative '../common'
|
||||||
|
|
||||||
|
class Day02 < Day
|
||||||
|
WIN = 6
|
||||||
|
DRAW = 3
|
||||||
|
LOSE = 0
|
||||||
|
|
||||||
|
class MovePart1
|
||||||
|
def self.game
|
||||||
|
{
|
||||||
|
"X" => new("A", "C", 1),
|
||||||
|
"Y" => new("B", "A", 2),
|
||||||
|
"Z" => new("C", "B", 3)
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.score(input)
|
||||||
|
game[input[2]].score(input[0])
|
||||||
|
end
|
||||||
|
|
||||||
|
def initialize(opponent_letter, beat_letter, score)
|
||||||
|
@opponent_letter = opponent_letter
|
||||||
|
@beat_letter = beat_letter
|
||||||
|
@score = score
|
||||||
|
end
|
||||||
|
|
||||||
|
def score(played_letter)
|
||||||
|
match_result = if @opponent_letter == played_letter
|
||||||
|
Day02::DRAW
|
||||||
|
elsif played_letter == @beat_letter
|
||||||
|
Day02::WIN
|
||||||
|
else
|
||||||
|
Day02::LOSE
|
||||||
|
end
|
||||||
|
|
||||||
|
match_result + @score
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class MovePart2
|
||||||
|
SCORES = {
|
||||||
|
"A" => 1,
|
||||||
|
"B" => 2,
|
||||||
|
"C" => 3
|
||||||
|
}
|
||||||
|
|
||||||
|
def self.score(input)
|
||||||
|
if input[2] == "X"
|
||||||
|
Day02::LOSE + SCORES[SCORES.keys[SCORES.keys.index(input[0]) - 1]]
|
||||||
|
elsif input[2] == "Y"
|
||||||
|
Day02::DRAW + SCORES[input[0]]
|
||||||
|
else
|
||||||
|
Day02::WIN + SCORES[SCORES.keys[(SCORES.keys.index(input[0]) + 1) % SCORES.keys.size]]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def part1
|
||||||
|
stdin.map { |i| MovePart1.score i }.sum
|
||||||
|
end
|
||||||
|
|
||||||
|
def part2
|
||||||
|
stdin.map { |i| MovePart2.score i }.sum
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Day02.run
|
|
@ -0,0 +1,300 @@
|
||||||
|
LLBPGtltrGPBMMsLcLMMVMpVRhhfCDTwRwRdTfwDllRRRDhC
|
||||||
|
gNFJHJFgtZFJjZJHNNFWZWZwwDjCwSDhfCDbdwjfwDTTDT
|
||||||
|
gmQNZnZNHWnqmQpLtVLMBsPpBqrL
|
||||||
|
HlHldQtHlctzppdQtjdczHhJRnnhGNVmVRJmVjCVFCNh
|
||||||
|
LgWNgggZJZGFhCZr
|
||||||
|
DbqPswwMvDPqzlBNHtzfHdwd
|
||||||
|
tJgtJwwCtNvPHHPtHzDsdRTsBRDDWgWTgT
|
||||||
|
QhLQjLGjZQFlFZmnmGLDrzWfRldrTrzTBRWTzs
|
||||||
|
bFFmFZjhSFHvBCvCvJpb
|
||||||
|
MSGcvnvMGMJgWJDpdndZwBnppfCp
|
||||||
|
VPVfQQVbshZNZwdNDwNs
|
||||||
|
LtLbjmQRLmVhQtTbfgWjJgFFcrqqrGSqWg
|
||||||
|
fHfCNCwwHfGhcntntrrgHrQnrn
|
||||||
|
FVqpSpbPpjSVMjqvVmVvMzlzwJnbtnnlzQQlrWzJgt
|
||||||
|
PTqqRRPSRSmqSpPpSpRZwGCLGscCNLZZZTNdNZ
|
||||||
|
pQQQslVSVzzCQnZSlplzbLcHZHcrrrbZqFbZjbFm
|
||||||
|
gWtvPgdMDDtFDHHjJJbbccbrLW
|
||||||
|
MhNvwwDfDfdtvRQnpFNNTlSRSn
|
||||||
|
ZTnSnTTzqvFmVzvWWm
|
||||||
|
ClpCgltHNrtgsHdpLCHtDCNLVvQvVwVmwcsWQGMMQvcGcFcv
|
||||||
|
JmrgCHCNJtlmHmNhnJjnnnjJhPfhSJ
|
||||||
|
BgRRZTgHHvRTRmRNLNNhQWlmGFfJlWlhsQshpF
|
||||||
|
qPqSSttwnnzqqqwtVrPwMthFsJllJJlGhpJhWJQlhVQd
|
||||||
|
MjMwScnDPzcwjtqDtztnctrvgNZTTvCvLgvQbLbvjTBvBg
|
||||||
|
SWQSbbqTTbPcfMZSwZZwwn
|
||||||
|
dghjghmNDmGsGgdnfmtMRCLCCRncfc
|
||||||
|
pJDJNdsNMMhpssgdprBTBzWlpBWlllWb
|
||||||
|
TwNLNZTwWCWLwWCSTZSLzWHGrDHHPmGdDHvndGdNfvMm
|
||||||
|
BgpjtpgjBjVbRjQRhVsDnvgGgPnGdrmvnMDfrf
|
||||||
|
rhRjRssQJplRtVbpthblbbLSLzFCJZFqLLFWCzqcqzLL
|
||||||
|
PBrdPMtBPvCQBVBjCfWPqSHbszhGGnsfSG
|
||||||
|
JpmDwJgWJgNzmShhmfSGzh
|
||||||
|
pRwNcNpFZNZRWgcNplpjVCMVjdvdMQtCMLZjMZ
|
||||||
|
lDrcnnlLqLRcDDZRLjFVTHzGCLGVPzGPVWGB
|
||||||
|
pNwHpdmsNJsbpwsbzJTCPWTVFzzQTWCQ
|
||||||
|
vbhswdtdwfdsmtNSssHwvllvMcZjnjcnZqlgMDZglM
|
||||||
|
GVVtJGtzVFsVsDTH
|
||||||
|
mQRgcBRmRLnBjrtFjCCrHmFF
|
||||||
|
gqpBnlRpgZcvdSdlMdSvMt
|
||||||
|
tMSCNGSflffNhnnGqlPPsrzWPrTrVpWr
|
||||||
|
bZHbmDBQmbDZQdbDcRFZZBTTWWWwqVzszWjrFPVwrzqq
|
||||||
|
HQBLHmQVQLDdCggMfgMNLvNG
|
||||||
|
HHNDzNJPJPmdPcNGGGhnhwnVhCQBwBjQ
|
||||||
|
bsSbLfrLtRSLRSRRRsBwhCpfpCzlwCBVjlCV
|
||||||
|
zvvsvqLtZqLtzRsqTrggRMHJNWJgHHHNJcgWNPdHcH
|
||||||
|
qgbNvqbgmmZgZLvZqgnZzlpzpzHtVPzttGPrrnnl
|
||||||
|
jwswGjQDMsQMjdBwdcjCHVtcPVpCVCrPlVSrpc
|
||||||
|
GsFWBfhGBfDFDFWqNbLNqbgvqbbvfN
|
||||||
|
HgwWqtcqHNWgnHcNNCfvJCCJJfJGvnPfrR
|
||||||
|
sbDhZSmdBbsSdmSDdrjjffRvdjPrprCd
|
||||||
|
vvZbSFFlFHtqFqqWNc
|
||||||
|
ZRjnbRsHlncZGjTRTfFVSQBQppQvvFBHpF
|
||||||
|
zrLwMdhDhqJJttDQSldQVPQSlSfPlV
|
||||||
|
hCWWCzqWnmcZlRRW
|
||||||
|
HfgfQflHjWgRQRdRBWVsnbvvscbbbwvmbHncSc
|
||||||
|
tJGLtPPGZPwVvSSPhw
|
||||||
|
CLGTLZqJtMGqLDFFDZZJFZJpWjRpVNRWpllDpjlBfgVjlp
|
||||||
|
rhhGZZhLNhPmfJqvfLlq
|
||||||
|
dHRTHRHQQWcTCRTHmmjJgfqqlGmgWgql
|
||||||
|
CCwRzTRRdCCRSQwzRcppprZtrMhGBMZMnDSt
|
||||||
|
WfffvnSnfSBshwsjhlvGlh
|
||||||
|
ZHpFNTmppVmNzVVmmFMZzbwwjHGrGlPhCGrljbgHsg
|
||||||
|
pLZMmqVsZVMMVVscDfdtSSStqcRRdn
|
||||||
|
RhRbLzRLHLCPmzznHLbzCRTJhdTVSJJVSjdFFNFFNTJv
|
||||||
|
MGgMfpMsBgpnMtGfnfwBtDBjFVdNSSSFdvJSQSpTJdJjNv
|
||||||
|
lMsBgDMsblmRblnz
|
||||||
|
ClNcJZttLfLvvRQzQWwRQN
|
||||||
|
hrpMdqMspsrGDdMphhdMMMMHBmRWmSVrRVzVTzQBQvSmzVWV
|
||||||
|
ppHDMGhMMDbGMdDMGbgFbgbMlJJnjjZtZfLPcfcngZfPPfCR
|
||||||
|
ZRslLRgCclZLZzQghQhfrbfGbJ
|
||||||
|
pVSHpBBBBDVDqDBldVzfrMzQbfSTSJrzzJrJ
|
||||||
|
DqqHnBDlpNDVVnpnjtDtNjCvFLcsFFPZRcPsNNmPcFcP
|
||||||
|
LmLWSmSRNdcpcRHFHrWzWHbMbwZlZlPSbTjlwPbTPJTf
|
||||||
|
DttBsvhnhqvGGBhGtBVNBVqJlPwslMMPJwTjZbbZPTfbPs
|
||||||
|
CDthQvVNVFCHHWCFdr
|
||||||
|
RRtCWSzQZdRMrtRWrSztMggcGDfQTcfFTGqTLgGDLc
|
||||||
|
bnVhnvPHhhdJJBTLDGcDTcBvvD
|
||||||
|
pmbnhmPPmHwdCjmdrRtCdj
|
||||||
|
lTPzwhzmHpTvrDCDHJnsNN
|
||||||
|
tdgtbMMBbWdFbtqJCnsrqnMMDsrq
|
||||||
|
FjWdtgLSWttWtLSWtDWBjGGmwGlzTRwPTQGhlQQm
|
||||||
|
wcbnTtTppNLrntznTBBccCGrVldRrZqdqRCZdFZCVZ
|
||||||
|
JfHDgjgPPfRRgRlLRddR
|
||||||
|
jhDhhLMfmJjMjDbNSTzbbbtmttmN
|
||||||
|
CfGlvzpvpTjzzCWjvDlfvbbJbCRSdSRhsSQCMhdbhR
|
||||||
|
wqrSmrLHHNcLqrrLBNsndssnnhPshnsQwbnJ
|
||||||
|
NtcmBLcNVDWzjSvWtv
|
||||||
|
vZPCSCvCJffvVvmCmPqCSlDSscczHDRcwcHzRlRHHs
|
||||||
|
LFGFNnGrdQttNMFpzpMRRDslsJwsJH
|
||||||
|
gjtLnFBJrLvhZvCbZhqB
|
||||||
|
DBcjVFjDhQMSJVZbHZbl
|
||||||
|
nfmsqppnLfTnfmMmzppwgllSrbSHHtllqbtSwZ
|
||||||
|
TRzTnfRWnfdzWssfnRfRpncQPBhdDjjDCPcMQcCBGPPj
|
||||||
|
NSjWCHjNHjpPWPpSFWdtqBMBBFVBvqvJGJwqBt
|
||||||
|
gQllgDrnhQQDGRshRsZfVtVMRqwMtccVJcBtvRqw
|
||||||
|
DQrzrDzhQgrsZLrZjWSSHNTWCjjNGTLH
|
||||||
|
CgdcCFcbTbBzPgmNRmpptP
|
||||||
|
rsZtsvVvHZZzPmqVNPzNmV
|
||||||
|
HZjrwrjnjtHSHwDGdFhCdhWWJnWchCFJ
|
||||||
|
RMTqQMRJqPtBtGBPtWjN
|
||||||
|
ssHfSfShCwwbhsbHhhsmSfhSGNpCpNCjBBBLptcGtpzBBBWW
|
||||||
|
HnwrSFwffHsFwrSSjfHglJJlTgZdFdgZRZTDDM
|
||||||
|
pDLDWlDSlJDmzSJnDScRPLGGvqFqLPccGLgv
|
||||||
|
CZHfwNMVNjsHNNqPgcbcBbRQGQ
|
||||||
|
dCffZCjVCdCHHTmnlSgTlTSrlStp
|
||||||
|
bFtlLCvLlVjpCGPJndrrMMCDDCnrMg
|
||||||
|
hRsTwcZcBjZRJrfMDnsHrJnH
|
||||||
|
mNZqcTSSBTScNzVQFtGtjpFtjmGG
|
||||||
|
bjHdLrHjRWpDCtLzhzps
|
||||||
|
lZcGfTvQcQfvlqqcNCcBvVwtGzmzthmwmpthMDmswgMt
|
||||||
|
NcqflNQTBTTvvQSvqSVvQJbHPHbHCRJdndJPSHjWHb
|
||||||
|
CVmRncrRVrhcmsBgfmtfdJsJmt
|
||||||
|
bZHvZZDJwpWtdZgtGNGd
|
||||||
|
vSbwHDMFMJqPQqQvvSPQqpSwjRcTVTLjLRhVCLFLjLFnFzCC
|
||||||
|
mtffsmBwfwBDBmmsLsHqtpftGrMVMPSMPsVvhNvFrGPMvjNV
|
||||||
|
TQTQCRWjJcdcQQSPrhhPSvVGPF
|
||||||
|
cTRJCnldWJZlTgbWgbdbpqfqmppjmtljpqzmjpLw
|
||||||
|
NNPmrmPWmrSSNNPmnglghmCvLCCflh
|
||||||
|
LFbsDQMQFtQFHbQHqhvnngCftpcllptJgJ
|
||||||
|
bDjsGqLLdRVjPZPP
|
||||||
|
tgrbBQlbtRblwtRGrbCNswDDCsvFszpssCss
|
||||||
|
SJVMhSZfHvpdhphN
|
||||||
|
SMLpWZSSZMjfgGBgRtbQgljQ
|
||||||
|
HsHHNDDHzHDDjsVBBZqtWBrSNcPwQvccvvdhPclSrQSc
|
||||||
|
fGCFCgpgTfnTmgTFLFgccclhwQhwrzSwSwrCrr
|
||||||
|
pmLJGfMRpFmfFMzmgGmRpgmVqWJDqZqqHtjBBVDBBqqssJ
|
||||||
|
mBTfcfCCmpBCCSzNQScQSTfddhdtwgttjghNwGtGdgwGtd
|
||||||
|
HvvqbvMLnFZVVPjJGRGzGRjZtwgw
|
||||||
|
VFHFbsFHHSmzQBmsmT
|
||||||
|
ZNmZCmNHHzzmPPzlbplvhbQh
|
||||||
|
GDSwldfdvggPfLvQ
|
||||||
|
ddqrtlnJDJlnjScRmMRCFHTHtFZF
|
||||||
|
FPvglHSPcpNcFNSHFHNvZjdmbwdbzZtzsHDzbsbj
|
||||||
|
MMnBLCCWBJCnrCVWCBstTZdZmdTtbDLswTtZ
|
||||||
|
BMDnRCrnGhPPSgcgpG
|
||||||
|
nsbgpbdrjMdGqnNRRWWRww
|
||||||
|
tZZhPzCJhsJBtJPllJBCtCvwwcwwWLvWvwWRThcGcqLq
|
||||||
|
mlBmZQPZmlppbgMmfssg
|
||||||
|
RFdZTHFCdvjhgGnFqj
|
||||||
|
zQLtNQpzNNtNpDtDPWLNMmGfBcjgjlgjhBnvcfnBvfjp
|
||||||
|
PtmLsPzQVWzWDswCSwHbRZsGZw
|
||||||
|
nPsfnPsFhTGjqGnmQppG
|
||||||
|
RZhBbNwbBRZHZSCCHQqSpCpqqm
|
||||||
|
VMbgNWRWMDfhtFJT
|
||||||
|
RWhRPDhBHZWgZghRZwZgGJPGdncFdLcdLCjscFcjCjNLLj
|
||||||
|
mQfSrlfTVqmSVTTTrprfFLqcdLHsLHFnvsFFqnNd
|
||||||
|
TtQmVHmMrbMWRggRPJZP
|
||||||
|
TTlCTVTdcpBlcchF
|
||||||
|
ZLhwSMZhqhtqwqLjFcBvFmvvssGBmmjj
|
||||||
|
LwSMRtqMHnqhhRZRRtJSVTgggVPdTdrVbQDJgTPW
|
||||||
|
CGFFWFFVgjfzgVfcJCcgTCcBBWqSqMMBMBShhwMLMwSSMq
|
||||||
|
fmQnflldltBZqlwqNZpB
|
||||||
|
dvtnvmtRtsPbzCfTHjHcPzGf
|
||||||
|
hzshzfshVhthgMmRsFRvFqmm
|
||||||
|
PDDcZWlWBbplvmRRGtlvqQ
|
||||||
|
ncjnDjbScnBWZjDVfwjfrrVtwLjzhr
|
||||||
|
QRWvffVVGfDhNNjzGZLLcGGZ
|
||||||
|
rgtpSSHpPrHSspvNLFlzTgNLlFglcc
|
||||||
|
SSpbMHpvmwMQhMBR
|
||||||
|
dHLtBqPCtPBHNsbRNdNNsZVN
|
||||||
|
nQwntMwJWhwWjvcjDMlntRsNpgSbNNpglFpVggbSVF
|
||||||
|
QDhJWwhzJtTqLzCmtT
|
||||||
|
PSLqTqrCrRvCSJWLdLwdVWdQWL
|
||||||
|
zNjHQnnHjHznnbDMnMMMdVZcpZZJpZWcdJFZ
|
||||||
|
BntfgNbzfBtHzgnbbbPPSstlQSSGGrlGsrTT
|
||||||
|
QpBNsBzztgqVtdmp
|
||||||
|
jvrhGljRhSTlGGvjwjSwGjRvHVdqLttrMgMbtMMMVmdqqHfV
|
||||||
|
ChTvTvljmCsQQQnNsQ
|
||||||
|
CQCNSQHHgCtNHCNHHNDJcBJwLPtJBGhMPPPJwM
|
||||||
|
zRTqmsdRRzrmdzVRpzPwcjdwwhLjMBMGBBLw
|
||||||
|
hprmzRmblTzTVTVrlbrmVHNWNnCZFWNNFZlnDFSWgQ
|
||||||
|
hGGqwwdwMqsRDGRBzlvDzB
|
||||||
|
LTNTfcCFFFCcNHFFBzRSZRBlzHPSZdvD
|
||||||
|
nLVTFNfVVLLWnwnwdrdbhnrhrr
|
||||||
|
hlTpcDTpHmHwDmMbbdMMMGTPdGPR
|
||||||
|
ZzFqNSQqHvBvzzqjFHtvSGRRMPQsJGJWRGWPMRdRsM
|
||||||
|
BZjLNqNqzVVHgLVgll
|
||||||
|
ZHHBzSZPVqghJgSnBhqJRQLRRMvQpwZvfNQRMMMp
|
||||||
|
ctFCDmdDWmDGNRFMpRlwwQPP
|
||||||
|
PrsmDmCGjtcmdjGtVqBSjJhnSbHnnghH
|
||||||
|
QmZHTjmmHRmmdPRvHdVlPdrNNLqWzffbRtqpzfWtWsWNNW
|
||||||
|
gwMcgnMGFGCjJLqfbtNtzzssCW
|
||||||
|
DwMFGBwcBFjhBBhcDSJQQVQTPldTvPlVVZQSdQ
|
||||||
|
NRTGfNffLghStLRR
|
||||||
|
QlnWsdJWmnbWnVqWbWqHPSpmjgCjtSwhPjgtptLS
|
||||||
|
JWchnllHqQJzGTZfTcFNDN
|
||||||
|
VtdtcTVVCRctVdJclCVtpphpPhNGDwNPmThwWmgG
|
||||||
|
ZjZMFnfBqqMjHZHMzBnzgPGwDmhmhDPfQNGPQGfD
|
||||||
|
BbgsnFgMgMlVdJtlcVSs
|
||||||
|
tlBMdBnClhLJnTbgph
|
||||||
|
PhDDczqDGPqsHGrRGPWHGPzcFJNLTTJZLNbNLfFZgTbffL
|
||||||
|
sHsmzzrGmPrRDRHqhHwmjBVtllwtdMdBSBtl
|
||||||
|
QscfZsGsVjVtqGmlzvRMvl
|
||||||
|
ThJNCHPTDDhHHJTJPHmlSMTtTTlBvlnMSzqn
|
||||||
|
HhCdrHrCcpmmdVmb
|
||||||
|
WPPBPvRWzvhWhWzGWtBqBSTLDZhgFSTCDgSgZZDCZs
|
||||||
|
flbJmMJnjdMqNdfZZrFZZNFZgrrsTZ
|
||||||
|
nQnqJlJdlQMMbVnVmdMplVnnBwcBPGttzQcvtHcWwWtHRHvB
|
||||||
|
LLsmpJTWCJmJppCmgHCCLjbFtRFghzjfjcjcZttbRg
|
||||||
|
SZlMPBdBtQfFSbSF
|
||||||
|
nPqldlDwlBVnvdLWJVsmVNZCCVmJ
|
||||||
|
HWvNVtHWJjHJsSgHsHzsDsmf
|
||||||
|
RwZGPFGMQgzpTGSD
|
||||||
|
PZMlwwqhFPPZqwFhPwnFbMjWJNNBtWNVJlCJJWJjWWzj
|
||||||
|
frBSzJDtztfNVGwRzVgGhqsV
|
||||||
|
MPMmjPWGMMmPCQCcbmRwVhTgVwTTqjvRTLww
|
||||||
|
cFpcMGFplDHfBHFS
|
||||||
|
gtjhjLffmgjgmbgVfbNdqFJMJMNbbwrwqq
|
||||||
|
sWHHPSJsHzTZzTGsCdrqCNNddGdGFGRC
|
||||||
|
ZpzHHTZWzsSSnBBPsTBnLVcpQfcJcQVQDQfcDfQt
|
||||||
|
qMPqChqjQPRCMqlBrmGmLbPSsTbSvz
|
||||||
|
nWNHZFVZZttWpfHsGSbBGTbWBSGmSm
|
||||||
|
nZfpVfdZdtFHnwVHZtNwZhCJRJhcCdDcQhCqDSSCQc
|
||||||
|
LlwSlZrftFSMpfLCdltTmmmSDmJqmssDVJBmJB
|
||||||
|
cRcGGhpvDTmTDgsG
|
||||||
|
nNPcjpWbNzjRRcWhbzWjvnLMddMLCwtdtMttddtrCdMz
|
||||||
|
NszSsDCMSDzdZpCMCSMpNszfTvJhlvmlmrTfrhlhHPrmhD
|
||||||
|
FRWBgRjWwqFWQFBBWjVncjRTvJfvvJvVrHhmVrHhmrdJTh
|
||||||
|
wnwnqwRGFqdbNNtCGpCp
|
||||||
|
zgsBvPVVDDrDtDgt
|
||||||
|
nTHldmJQNTTfflcJNrQlHWpmDDFDFhWpWCLtFbphCm
|
||||||
|
nTTNMlNfHQZTQPGSzVVZSVPSwr
|
||||||
|
bPLbtPpwsJhlpnhnnLNNZDWhRNzWQrWWffNr
|
||||||
|
SczqFdFHSTFjmMSMFVqFGCWWNRrWQQQRZCVWgQQgrZ
|
||||||
|
dFdzFGHvjmqGMFwwLLsPnvBspnsn
|
||||||
|
lwJwwmblVdvjbbbJvVnlmjGTTNTLqffpqDJffqGLqDLD
|
||||||
|
ZtWgPtRMtQRQnTGDQNTTqL
|
||||||
|
gCztMgWgchHhvwlllbnl
|
||||||
|
cCwSSCVbqwCCWSbZMmGdtBllWBfdlvdt
|
||||||
|
jzRsJjhPjnLthJNNpmpvmvvMfGvjQpGv
|
||||||
|
nPHPFgRHLtCHZrqTcq
|
||||||
|
dVJwCJGCVrQQGTNtLtGm
|
||||||
|
hWWgDHBzWWWpZlhWBssLDTDsQTLLtswswL
|
||||||
|
gPhBHpjwHcljpggwwWqvbFvdCVRqPPnnqVRb
|
||||||
|
zRRRRNqzpQZNNRRmRcZscQcCDmCTTTDGfTbfGhrTCTrbFF
|
||||||
|
HMvMtjgtLHVlLVfhCGfrfhJhhrvh
|
||||||
|
LBgStjnHBjLVgggBgHndnSNNQdNWcQQNGZccwsccdQpw
|
||||||
|
jLRqmZNGtZtvZvHzPfCvSSzhCP
|
||||||
|
QbwDVHFrVbDVrDFbzPwSThSfddhWPWzS
|
||||||
|
rpnFDccHFHtZNmMmRntj
|
||||||
|
RFVdzzlNtrwSTltb
|
||||||
|
hHGcqqBcGLQZffHhMwSswSWGrnnbMStC
|
||||||
|
cgqLBgQgpgbbPbPz
|
||||||
|
lfcgglhfTvmlBvclbgztnSRtSmttwRJwptWR
|
||||||
|
FMjDjsdNDjNMQLFFLCMQdtwGGzRwzpGwzdWzzJpGhn
|
||||||
|
ZQVNsVZMPsVhCQsFCFsHHlqlcBZrHHfBflbHBB
|
||||||
|
vGGQQdwNCTJfQJHJbM
|
||||||
|
FFqmzghlzhgqjlFqzZhmhPlRgBDLLRTTcHMbRcJHBLcgRH
|
||||||
|
qFrPjnhZmqnhZZjhhmpPzZmtvbpwtdvsSCCsGwdNwvwNCp
|
||||||
|
nrFdSHScdRwvdvRm
|
||||||
|
NNpPLJJbNbppCvmzbHTbmsTw
|
||||||
|
fWLHPlPtpMNBgGQgqggQSMGc
|
||||||
|
BcHtrBcnjflfHslsrnltbTgvMwpWnnWpwwwCwCCRRW
|
||||||
|
dzGhLSSGDdPNgLLdPWTqWWRMqwRWpvzMMv
|
||||||
|
VPZZNhhNSSDhLNSLdFZBVgBbjHcgsgfrbBJbfs
|
||||||
|
VMnWjjWTnNNCzzhblbbjlj
|
||||||
|
FmHwfFHqpDrJzPQLPLbCDs
|
||||||
|
GrdFfHqqSmmwHSqHfpdMNTtTtZCMMZtTRggGZR
|
||||||
|
QRlnlTphqNfqdjZNmd
|
||||||
|
rDtPmGctFrcgDjJcNjvNJNCcNw
|
||||||
|
bgGDtgDbBWBSBVlblmVmsRMmLM
|
||||||
|
CcQTQTrrmfQQhZZBpZpSSZ
|
||||||
|
JFqSvLlLbWggDvDDFHjsdnshBZpjHBBhBW
|
||||||
|
FgJqNvLRMlMMDDblrtfrTCStmCVtNttz
|
||||||
|
MRRbbddqtHbMZbqMHHTFTFgwZglWPfgsZWgW
|
||||||
|
LCcLjzCNGNcvpvLTFPmzlFsfTgFlgs
|
||||||
|
NhNGcrCGrsrvcDpvVcSbtHQJQbnQbSdHMtJV
|
||||||
|
bfMfBFcWFsWZHBWRPQpRqdwmMpmddm
|
||||||
|
rSShvvVTNVhvVCCvThDlSvCwpGCmRmGQmPwmpLRLRdpq
|
||||||
|
DhRzzVNVVgSzTFcgtnbHnHbfBB
|
||||||
|
HsTGHHvlvvGTGlHBvlbZstrVrwNjrjVStwVVZR
|
||||||
|
PPmgcFJPFcFWmWMgdNtVtQZtDVDVdZZjjR
|
||||||
|
LLqWnMnmNvlBLCTzCT
|
||||||
|
qTttLqLvGCQqCDlhml
|
||||||
|
FJjzrRBrpjRWrCwrBrrwpRbbDzgghSmmNhPQhgNshmDSzSNm
|
||||||
|
bJBrbFRjBVnWBrRBnHLfHGfdVtvHttcCdT
|
||||||
|
mTzjGPmPPmPNjNBTvlJRlNJzZqrzrSZZSpcZqpgcgcggFr
|
||||||
|
QWCwwMwWWhVZFbpQDSpSJS
|
||||||
|
stMMsWwMwVWtwJTNNPvvRmTsNPsl
|
||||||
|
gGFFNWMMNFTBlLpGpSll
|
||||||
|
qvccssdDwDbhMhzwHLppTSHLrdBpBVLV
|
||||||
|
PhJhzhMJzwDJwhZZtZQJCjgWtFjZ
|
||||||
|
pGqWfqqGcspGqWqppHprpTrzhCzttMBCtbtJmtJbSBvWBt
|
||||||
|
QDnVPgVPgDCJBMhmBJgv
|
||||||
|
NlZwFlnnPLLlFwDlDlnPPFFHTMTdMZjTTcjsqqcsdfGdcp
|
||||||
|
HLzZfHWWQwpgVHjVHr
|
||||||
|
JlMlMGGDMtJGdtJhqtlccDgVCSTFFSCSDTggpvFTjSgS
|
||||||
|
JcGRMlthtlVNMJRfzWsPnQsnnZNZns
|
||||||
|
zVfvMpsbtQmtBlFWBZ
|
||||||
|
lLSrlNTNRSFRFhhHRmPR
|
||||||
|
dnSJjjwJJGwwnzVlvpszvccM
|
||||||
|
SmlcCrpnrnznGzSBBSfzNbtsQsWZQcFbWctcbbZb
|
||||||
|
JHgwJPjvdghbbWdDZGNLZb
|
||||||
|
JjghvvhRwhwJVhHTzmfRfzGSMrzBfnGC
|
||||||
|
JbCmrbnzmntnVJjbCHJJFQFvqgJgQgqLDQ
|
||||||
|
NGhhhhPMGhWsSSchWlNsCLBBlLFQCgqvgCFFgQBg
|
||||||
|
PdcNWWcdGdPssPPNTSNNtzbTwjntzbbVwtZpCVnb
|
||||||
|
tGNgtsNQHsJmwwzddmQw
|
||||||
|
hMhhDBwMhDDfCRRBjFDDTTWjdWmrmdWqjlmmmjJz
|
||||||
|
RSpSSBhppDhRncRLswZLGvtGvNcNtL
|
|
@ -0,0 +1,23 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
require_relative '../common'
|
||||||
|
|
||||||
|
class Day03 < Day
|
||||||
|
def self.priority(char)
|
||||||
|
(("a".."z").to_a + ("A".."Z").to_a).index(char) + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
def part1
|
||||||
|
stdin.map(&:chars).map do |rucksack|
|
||||||
|
self.class.priority((rucksack[0..(rucksack.size / 2) - 1] & rucksack[(rucksack.size / 2)..]).first)
|
||||||
|
end.sum
|
||||||
|
end
|
||||||
|
|
||||||
|
def part2
|
||||||
|
stdin.map(&:chars).each_slice(3).map do |group|
|
||||||
|
self.class.priority group.inject { |res, g| res & g }.first
|
||||||
|
end.sum
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Day03.run
|
|
@ -0,0 +1,24 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
require_relative '../common'
|
||||||
|
|
||||||
|
class Day04 < Day
|
||||||
|
def part1
|
||||||
|
stdin.map do |pair|
|
||||||
|
pair.split(',').map { |elve| first, last = elve.split('-'); first.to_i..last.to_i }
|
||||||
|
end.select do |pair|
|
||||||
|
pair.first.cover?(pair.last) || pair.last.cover?(pair.first)
|
||||||
|
end.size
|
||||||
|
end
|
||||||
|
|
||||||
|
def part2
|
||||||
|
stdin.map do |pair|
|
||||||
|
pair.split(',').map { |elve| first, last = elve.split('-'); first.to_i..last.to_i }
|
||||||
|
end.select do |pair|
|
||||||
|
pair.first.include?(pair.last.first) || pair.first.include?(pair.last.last) ||
|
||||||
|
pair.last.include?(pair.first.first) || pair.last.include?(pair.first.last)
|
||||||
|
end.size
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Day04.run
|
|
@ -0,0 +1,512 @@
|
||||||
|
[S] [T] [Q]
|
||||||
|
[L] [B] [M] [P] [T]
|
||||||
|
[F] [S] [Z] [N] [S] [R]
|
||||||
|
[Z] [R] [N] [R] [D] [F] [V]
|
||||||
|
[D] [Z] [H] [J] [W] [G] [W] [G]
|
||||||
|
[B] [M] [C] [F] [H] [Z] [N] [R] [L]
|
||||||
|
[R] [B] [L] [C] [G] [J] [L] [Z] [C]
|
||||||
|
[H] [T] [Z] [S] [P] [V] [G] [M] [M]
|
||||||
|
1 2 3 4 5 6 7 8 9
|
||||||
|
|
||||||
|
move 6 from 1 to 7
|
||||||
|
move 2 from 2 to 4
|
||||||
|
move 2 from 7 to 4
|
||||||
|
move 6 from 4 to 3
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 3 from 8 to 3
|
||||||
|
move 15 from 3 to 4
|
||||||
|
move 6 from 5 to 9
|
||||||
|
move 14 from 4 to 2
|
||||||
|
move 3 from 2 to 7
|
||||||
|
move 1 from 2 to 7
|
||||||
|
move 9 from 9 to 1
|
||||||
|
move 3 from 2 to 1
|
||||||
|
move 7 from 6 to 7
|
||||||
|
move 1 from 6 to 8
|
||||||
|
move 2 from 9 to 1
|
||||||
|
move 9 from 2 to 3
|
||||||
|
move 8 from 3 to 9
|
||||||
|
move 1 from 1 to 4
|
||||||
|
move 1 from 8 to 6
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 5 from 9 to 8
|
||||||
|
move 2 from 9 to 1
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 17 from 1 to 9
|
||||||
|
move 1 from 3 to 1
|
||||||
|
move 3 from 2 to 3
|
||||||
|
move 2 from 4 to 5
|
||||||
|
move 12 from 7 to 3
|
||||||
|
move 16 from 9 to 2
|
||||||
|
move 5 from 7 to 5
|
||||||
|
move 2 from 1 to 2
|
||||||
|
move 1 from 3 to 6
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 1 from 7 to 3
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 7 from 3 to 4
|
||||||
|
move 5 from 8 to 3
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 7 from 3 to 4
|
||||||
|
move 6 from 3 to 1
|
||||||
|
move 2 from 4 to 8
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 10 from 4 to 5
|
||||||
|
move 3 from 5 to 2
|
||||||
|
move 2 from 8 to 9
|
||||||
|
move 5 from 2 to 8
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 2 from 5 to 8
|
||||||
|
move 12 from 5 to 7
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 5 from 9 to 4
|
||||||
|
move 1 from 2 to 5
|
||||||
|
move 6 from 1 to 3
|
||||||
|
move 6 from 3 to 5
|
||||||
|
move 10 from 7 to 4
|
||||||
|
move 2 from 7 to 3
|
||||||
|
move 4 from 7 to 6
|
||||||
|
move 1 from 9 to 5
|
||||||
|
move 12 from 2 to 1
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 3 from 7 to 4
|
||||||
|
move 4 from 4 to 8
|
||||||
|
move 7 from 5 to 3
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 10 from 1 to 5
|
||||||
|
move 2 from 1 to 2
|
||||||
|
move 4 from 6 to 7
|
||||||
|
move 8 from 8 to 3
|
||||||
|
move 5 from 4 to 9
|
||||||
|
move 12 from 3 to 8
|
||||||
|
move 4 from 3 to 8
|
||||||
|
move 2 from 9 to 2
|
||||||
|
move 3 from 5 to 4
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 14 from 4 to 6
|
||||||
|
move 6 from 5 to 9
|
||||||
|
move 8 from 2 to 8
|
||||||
|
move 3 from 5 to 7
|
||||||
|
move 21 from 8 to 4
|
||||||
|
move 16 from 4 to 9
|
||||||
|
move 8 from 6 to 2
|
||||||
|
move 4 from 6 to 1
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 2 from 4 to 8
|
||||||
|
move 3 from 1 to 8
|
||||||
|
move 2 from 4 to 6
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 3 from 8 to 4
|
||||||
|
move 2 from 2 to 5
|
||||||
|
move 2 from 5 to 7
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 1 from 4 to 9
|
||||||
|
move 1 from 1 to 6
|
||||||
|
move 3 from 6 to 3
|
||||||
|
move 3 from 2 to 3
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 3 from 6 to 7
|
||||||
|
move 10 from 9 to 7
|
||||||
|
move 1 from 4 to 7
|
||||||
|
move 6 from 8 to 3
|
||||||
|
move 1 from 6 to 8
|
||||||
|
move 2 from 2 to 5
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 1 from 2 to 8
|
||||||
|
move 1 from 1 to 9
|
||||||
|
move 7 from 9 to 1
|
||||||
|
move 1 from 8 to 5
|
||||||
|
move 7 from 1 to 7
|
||||||
|
move 3 from 5 to 8
|
||||||
|
move 3 from 7 to 2
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 2 from 4 to 6
|
||||||
|
move 5 from 3 to 1
|
||||||
|
move 9 from 7 to 2
|
||||||
|
move 6 from 3 to 8
|
||||||
|
move 8 from 2 to 7
|
||||||
|
move 2 from 6 to 4
|
||||||
|
move 2 from 1 to 7
|
||||||
|
move 2 from 1 to 4
|
||||||
|
move 24 from 7 to 4
|
||||||
|
move 4 from 8 to 9
|
||||||
|
move 2 from 7 to 5
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 4 from 2 to 8
|
||||||
|
move 13 from 9 to 2
|
||||||
|
move 2 from 8 to 6
|
||||||
|
move 3 from 9 to 6
|
||||||
|
move 26 from 4 to 2
|
||||||
|
move 1 from 5 to 7
|
||||||
|
move 2 from 6 to 2
|
||||||
|
move 2 from 4 to 1
|
||||||
|
move 7 from 2 to 1
|
||||||
|
move 15 from 2 to 6
|
||||||
|
move 8 from 2 to 8
|
||||||
|
move 4 from 6 to 8
|
||||||
|
move 9 from 2 to 9
|
||||||
|
move 13 from 6 to 7
|
||||||
|
move 6 from 1 to 9
|
||||||
|
move 2 from 2 to 4
|
||||||
|
move 4 from 1 to 6
|
||||||
|
move 3 from 8 to 3
|
||||||
|
move 1 from 4 to 9
|
||||||
|
move 2 from 6 to 7
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 3 from 3 to 2
|
||||||
|
move 14 from 7 to 4
|
||||||
|
move 5 from 9 to 5
|
||||||
|
move 9 from 8 to 5
|
||||||
|
move 7 from 9 to 6
|
||||||
|
move 2 from 5 to 6
|
||||||
|
move 2 from 9 to 2
|
||||||
|
move 10 from 5 to 1
|
||||||
|
move 1 from 3 to 1
|
||||||
|
move 2 from 8 to 1
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 1 from 7 to 5
|
||||||
|
move 4 from 2 to 1
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 3 from 4 to 1
|
||||||
|
move 1 from 8 to 6
|
||||||
|
move 12 from 1 to 5
|
||||||
|
move 1 from 1 to 6
|
||||||
|
move 1 from 7 to 5
|
||||||
|
move 4 from 6 to 9
|
||||||
|
move 2 from 2 to 4
|
||||||
|
move 1 from 9 to 6
|
||||||
|
move 1 from 1 to 5
|
||||||
|
move 2 from 9 to 7
|
||||||
|
move 10 from 6 to 5
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 20 from 5 to 1
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 2 from 9 to 1
|
||||||
|
move 3 from 5 to 1
|
||||||
|
move 2 from 8 to 4
|
||||||
|
move 2 from 8 to 7
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 22 from 1 to 7
|
||||||
|
move 5 from 4 to 8
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 19 from 7 to 4
|
||||||
|
move 2 from 9 to 1
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 10 from 1 to 8
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 1 from 8 to 3
|
||||||
|
move 8 from 4 to 7
|
||||||
|
move 1 from 5 to 6
|
||||||
|
move 3 from 4 to 5
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 11 from 7 to 4
|
||||||
|
move 4 from 4 to 9
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 5 from 9 to 4
|
||||||
|
move 5 from 7 to 9
|
||||||
|
move 23 from 4 to 2
|
||||||
|
move 17 from 2 to 7
|
||||||
|
move 2 from 2 to 8
|
||||||
|
move 4 from 4 to 7
|
||||||
|
move 1 from 4 to 5
|
||||||
|
move 2 from 5 to 2
|
||||||
|
move 5 from 8 to 9
|
||||||
|
move 5 from 2 to 7
|
||||||
|
move 9 from 7 to 5
|
||||||
|
move 11 from 9 to 2
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 5 from 8 to 7
|
||||||
|
move 3 from 8 to 5
|
||||||
|
move 2 from 1 to 3
|
||||||
|
move 2 from 3 to 9
|
||||||
|
move 1 from 5 to 8
|
||||||
|
move 5 from 7 to 5
|
||||||
|
move 15 from 5 to 4
|
||||||
|
move 2 from 8 to 1
|
||||||
|
move 2 from 5 to 1
|
||||||
|
move 4 from 4 to 1
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 8 from 2 to 1
|
||||||
|
move 4 from 2 to 8
|
||||||
|
move 2 from 7 to 4
|
||||||
|
move 5 from 8 to 6
|
||||||
|
move 5 from 7 to 9
|
||||||
|
move 4 from 6 to 5
|
||||||
|
move 7 from 4 to 8
|
||||||
|
move 1 from 6 to 1
|
||||||
|
move 1 from 3 to 1
|
||||||
|
move 2 from 5 to 1
|
||||||
|
move 7 from 1 to 5
|
||||||
|
move 5 from 1 to 3
|
||||||
|
move 4 from 7 to 9
|
||||||
|
move 4 from 3 to 9
|
||||||
|
move 2 from 9 to 7
|
||||||
|
move 6 from 9 to 2
|
||||||
|
move 1 from 4 to 1
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 1 from 2 to 5
|
||||||
|
move 5 from 9 to 4
|
||||||
|
move 4 from 4 to 6
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 8 from 4 to 3
|
||||||
|
move 7 from 7 to 3
|
||||||
|
move 5 from 1 to 3
|
||||||
|
move 11 from 5 to 9
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 2 from 3 to 5
|
||||||
|
move 1 from 3 to 1
|
||||||
|
move 3 from 6 to 2
|
||||||
|
move 2 from 5 to 1
|
||||||
|
move 2 from 1 to 2
|
||||||
|
move 3 from 1 to 5
|
||||||
|
move 5 from 9 to 2
|
||||||
|
move 2 from 6 to 8
|
||||||
|
move 2 from 3 to 8
|
||||||
|
move 4 from 9 to 7
|
||||||
|
move 3 from 5 to 2
|
||||||
|
move 2 from 1 to 8
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 4 from 7 to 9
|
||||||
|
move 11 from 8 to 7
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 6 from 9 to 7
|
||||||
|
move 3 from 7 to 1
|
||||||
|
move 13 from 2 to 7
|
||||||
|
move 24 from 7 to 1
|
||||||
|
move 2 from 2 to 6
|
||||||
|
move 1 from 8 to 3
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 5 from 2 to 4
|
||||||
|
move 1 from 2 to 5
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 3 from 7 to 3
|
||||||
|
move 2 from 1 to 7
|
||||||
|
move 2 from 3 to 8
|
||||||
|
move 2 from 7 to 8
|
||||||
|
move 9 from 3 to 2
|
||||||
|
move 3 from 4 to 8
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 9 from 2 to 1
|
||||||
|
move 3 from 4 to 9
|
||||||
|
move 1 from 7 to 8
|
||||||
|
move 6 from 3 to 9
|
||||||
|
move 2 from 1 to 5
|
||||||
|
move 15 from 1 to 3
|
||||||
|
move 13 from 3 to 9
|
||||||
|
move 11 from 1 to 4
|
||||||
|
move 5 from 4 to 1
|
||||||
|
move 6 from 3 to 6
|
||||||
|
move 4 from 4 to 8
|
||||||
|
move 6 from 1 to 4
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 3 from 4 to 2
|
||||||
|
move 2 from 8 to 5
|
||||||
|
move 2 from 4 to 2
|
||||||
|
move 9 from 9 to 3
|
||||||
|
move 9 from 3 to 5
|
||||||
|
move 2 from 9 to 4
|
||||||
|
move 5 from 2 to 6
|
||||||
|
move 1 from 1 to 8
|
||||||
|
move 1 from 4 to 1
|
||||||
|
move 10 from 9 to 2
|
||||||
|
move 9 from 2 to 4
|
||||||
|
move 10 from 4 to 1
|
||||||
|
move 3 from 1 to 3
|
||||||
|
move 4 from 1 to 2
|
||||||
|
move 5 from 2 to 4
|
||||||
|
move 2 from 5 to 2
|
||||||
|
move 4 from 1 to 7
|
||||||
|
move 10 from 5 to 4
|
||||||
|
move 2 from 2 to 4
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 2 from 3 to 5
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 3 from 6 to 7
|
||||||
|
move 8 from 4 to 9
|
||||||
|
move 6 from 6 to 1
|
||||||
|
move 4 from 9 to 5
|
||||||
|
move 2 from 9 to 1
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 6 from 5 to 2
|
||||||
|
move 3 from 7 to 9
|
||||||
|
move 4 from 8 to 2
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 1 from 5 to 3
|
||||||
|
move 2 from 7 to 4
|
||||||
|
move 1 from 7 to 1
|
||||||
|
move 14 from 1 to 9
|
||||||
|
move 1 from 1 to 9
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 3 from 2 to 5
|
||||||
|
move 2 from 4 to 2
|
||||||
|
move 6 from 8 to 1
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 5 from 1 to 9
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 2 from 8 to 5
|
||||||
|
move 1 from 5 to 4
|
||||||
|
move 1 from 6 to 1
|
||||||
|
move 8 from 2 to 7
|
||||||
|
move 2 from 6 to 1
|
||||||
|
move 9 from 9 to 5
|
||||||
|
move 11 from 4 to 8
|
||||||
|
move 4 from 7 to 4
|
||||||
|
move 6 from 4 to 6
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 6 from 6 to 7
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 6 from 8 to 9
|
||||||
|
move 8 from 9 to 5
|
||||||
|
move 1 from 4 to 5
|
||||||
|
move 15 from 9 to 3
|
||||||
|
move 3 from 1 to 4
|
||||||
|
move 6 from 7 to 2
|
||||||
|
move 3 from 4 to 9
|
||||||
|
move 2 from 7 to 3
|
||||||
|
move 1 from 7 to 3
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 2 from 8 to 1
|
||||||
|
move 3 from 8 to 5
|
||||||
|
move 2 from 1 to 7
|
||||||
|
move 8 from 3 to 6
|
||||||
|
move 3 from 6 to 5
|
||||||
|
move 1 from 6 to 1
|
||||||
|
move 10 from 5 to 7
|
||||||
|
move 6 from 5 to 4
|
||||||
|
move 4 from 2 to 4
|
||||||
|
move 6 from 5 to 1
|
||||||
|
move 6 from 1 to 8
|
||||||
|
move 2 from 9 to 2
|
||||||
|
move 2 from 9 to 7
|
||||||
|
move 6 from 3 to 7
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 1 from 1 to 9
|
||||||
|
move 2 from 8 to 1
|
||||||
|
move 2 from 5 to 4
|
||||||
|
move 3 from 3 to 7
|
||||||
|
move 10 from 4 to 6
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 12 from 7 to 3
|
||||||
|
move 12 from 3 to 8
|
||||||
|
move 2 from 1 to 5
|
||||||
|
move 1 from 1 to 3
|
||||||
|
move 13 from 8 to 1
|
||||||
|
move 7 from 7 to 1
|
||||||
|
move 13 from 6 to 9
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 6 from 5 to 3
|
||||||
|
move 3 from 4 to 3
|
||||||
|
move 6 from 3 to 1
|
||||||
|
move 10 from 9 to 4
|
||||||
|
move 2 from 7 to 6
|
||||||
|
move 8 from 1 to 9
|
||||||
|
move 3 from 2 to 9
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 1 from 1 to 4
|
||||||
|
move 6 from 9 to 3
|
||||||
|
move 2 from 6 to 7
|
||||||
|
move 4 from 9 to 5
|
||||||
|
move 4 from 1 to 6
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 6 from 1 to 4
|
||||||
|
move 3 from 9 to 3
|
||||||
|
move 3 from 6 to 8
|
||||||
|
move 3 from 8 to 7
|
||||||
|
move 5 from 5 to 1
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 1 from 9 to 5
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 2 from 5 to 1
|
||||||
|
move 1 from 6 to 9
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 2 from 9 to 7
|
||||||
|
move 2 from 8 to 1
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 1 from 2 to 5
|
||||||
|
move 1 from 7 to 1
|
||||||
|
move 7 from 7 to 9
|
||||||
|
move 12 from 1 to 9
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 1 from 7 to 1
|
||||||
|
move 13 from 4 to 7
|
||||||
|
move 1 from 9 to 4
|
||||||
|
move 5 from 7 to 3
|
||||||
|
move 4 from 9 to 1
|
||||||
|
move 8 from 7 to 9
|
||||||
|
move 3 from 2 to 3
|
||||||
|
move 4 from 3 to 7
|
||||||
|
move 5 from 4 to 6
|
||||||
|
move 3 from 9 to 4
|
||||||
|
move 10 from 1 to 5
|
||||||
|
move 3 from 4 to 7
|
||||||
|
move 16 from 9 to 2
|
||||||
|
move 3 from 9 to 2
|
||||||
|
move 6 from 5 to 3
|
||||||
|
move 4 from 6 to 2
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 2 from 6 to 8
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 1 from 5 to 8
|
||||||
|
move 7 from 7 to 2
|
||||||
|
move 16 from 2 to 1
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 10 from 2 to 8
|
||||||
|
move 14 from 8 to 5
|
||||||
|
move 2 from 2 to 6
|
||||||
|
move 1 from 2 to 5
|
||||||
|
move 2 from 2 to 1
|
||||||
|
move 8 from 1 to 7
|
||||||
|
move 4 from 1 to 7
|
||||||
|
move 2 from 1 to 7
|
||||||
|
move 5 from 3 to 2
|
||||||
|
move 1 from 1 to 6
|
||||||
|
move 2 from 2 to 5
|
||||||
|
move 4 from 1 to 7
|
||||||
|
move 1 from 2 to 8
|
||||||
|
move 1 from 2 to 8
|
||||||
|
move 3 from 6 to 7
|
||||||
|
move 10 from 7 to 5
|
||||||
|
move 1 from 2 to 8
|
||||||
|
move 27 from 5 to 9
|
||||||
|
move 1 from 5 to 6
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 3 from 3 to 7
|
||||||
|
move 4 from 3 to 6
|
||||||
|
move 2 from 6 to 4
|
||||||
|
move 3 from 8 to 1
|
||||||
|
move 2 from 6 to 1
|
||||||
|
move 12 from 7 to 8
|
||||||
|
move 2 from 3 to 9
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 1 from 2 to 8
|
||||||
|
move 2 from 1 to 2
|
||||||
|
move 6 from 3 to 8
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 15 from 9 to 5
|
||||||
|
move 7 from 9 to 4
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 16 from 8 to 2
|
||||||
|
move 8 from 5 to 2
|
||||||
|
move 24 from 2 to 9
|
||||||
|
move 3 from 1 to 2
|
||||||
|
move 24 from 9 to 1
|
||||||
|
move 5 from 5 to 9
|
||||||
|
move 3 from 4 to 1
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 3 from 2 to 3
|
||||||
|
move 1 from 5 to 6
|
||||||
|
move 1 from 2 to 7
|
|
@ -0,0 +1,63 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
require_relative '../common'
|
||||||
|
|
||||||
|
class Day05 < Day
|
||||||
|
class Store
|
||||||
|
def self.parse(input)
|
||||||
|
stacks_data = input.take_while { |line| line != "" }
|
||||||
|
instructions_data = input.drop_while { |line| !line.start_with?("move") }
|
||||||
|
|
||||||
|
stacks = stacks_data.pop.tr_s(' ', ' ').strip.split(' ')
|
||||||
|
crates = stacks_data.reverse
|
||||||
|
|
||||||
|
Store.new(stacks.map do |stack|
|
||||||
|
[
|
||||||
|
stack,
|
||||||
|
crates.map { |row| row[1 + 4 * (stack.to_i - 1)] }
|
||||||
|
.take_while { |crate| crate != " " }
|
||||||
|
]
|
||||||
|
end.to_h, instructions_data)
|
||||||
|
end
|
||||||
|
|
||||||
|
attr_reader :stacks
|
||||||
|
|
||||||
|
def initialize(stacks, instructions)
|
||||||
|
@stacks = stacks
|
||||||
|
@instructions = instructions
|
||||||
|
end
|
||||||
|
|
||||||
|
def parse(instruction)
|
||||||
|
count, from, to = instruction.match(/move ([0-9]+) from ([0-9]+) to ([0-9]+)/).captures
|
||||||
|
[from, to, count.to_i]
|
||||||
|
end
|
||||||
|
|
||||||
|
def move_one_by_one(from, to, count)
|
||||||
|
count.times { stacks[to] << stacks[from].pop }
|
||||||
|
end
|
||||||
|
|
||||||
|
def move_multiple(from, to, count)
|
||||||
|
stacks[to] += stacks[from].pop(count)
|
||||||
|
end
|
||||||
|
|
||||||
|
def result_part1
|
||||||
|
@instructions.each { |instruction| move_one_by_one(*parse(instruction)) }
|
||||||
|
stacks.map { |_,v| v.last }.join
|
||||||
|
end
|
||||||
|
|
||||||
|
def result_part2
|
||||||
|
@instructions.each { |instruction| move_multiple(*parse(instruction)) }
|
||||||
|
stacks.map { |_,v| v.last }.join
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def part1
|
||||||
|
Store.parse(stdin).result_part1
|
||||||
|
end
|
||||||
|
|
||||||
|
def part2
|
||||||
|
Store.parse(stdin).result_part2
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Day05.run
|
|
@ -0,0 +1 @@
|
||||||
|
[4,14].each_with_object($<.read.chars){|i,s|p i+s.each_cons(i).find_index{_1.uniq==_1}}
|
|
@ -0,0 +1 @@
|
||||||
|
hrbbjllllspssblslvvrdrbbpbbmcccfppvbbwvbbmrmjrjrfrgfgbffgfqfqlltlwttscsncscchssrppffvwwvvpnnwwwpvwvhhnvhhbttvzzdlzdlzzwmmjhhznnjdnnnqddbtdbdbsdsmdsdrrdpdwpdppgcgqgcctftsfszslljbljbjwbwbnwnqqrnnztntmtrmmzwzdwzwgwwwjhjsjgjtjjhpjhhppqzqdqffrvrtvvsmmgwmgwgbbclltctptzpzhpzptzppcfpcfftflfzftztddzgzmmfsmsrmmsstttvbvmbvvsmsqmqlldjdtthwtwbwggrzzjrzrcctffsshqshhpthhlnhlhqhdqqrwrmmcttpfttzfzgzdgdzzwrrtsrrsnrnccrbbsssbpbjjvzzwlwtwjwsjwjggzqgzzrsszzjnzjzwjzzcrzczncnqqztzfzhfhvvtjvjdvjjmrjrppvzppczpczcggshghvhnhhsrsnsdszzdpzpzlpzzhwwmnwmwmcwwfnwfwjjcbcncllcsllqdqzzhqhmqmbbjvjjwwcjjpnpllzfzddtmtccqrcrtrwrpphpmpplslmltthnnvhhvrvbblhhrrdqqmbqqgtqggdgcdcvvsbsswvvpggbbtftlflglzlmlbbfhhrshswhshffhhdnnrfrvrmrnrprrmfmpmnpnfnggvvcncdcrczrzccpmmssrbbdjdtdrdwrrwhrrvrtvvszvvwvzzmhhjhhwlhlqlvlttzftztdtstftrfrdddmtmzzsqzqvvpdpdcpcncnrrtntznzrzgznztnznhhsqqnrqrhhlzhzthhfddrzdrrqmqggcmmllnjjvwwjccfjfqfcfzccwvcwvcvjcjtjtnnqsqmqrmrzrszrszzfwfggnmmcdmdjmmhwwgfwfnwnlwwcffsrffvnvbvnvwnwgnwnmmbzbmbpplmplpspzpmzpzdzgzrzrtrjrbbppwvwgwmggqwgghqqshhcwcqwcqcfcbbnsnrrtztzrtrvtvhthzhmmrqqrwqqsjqjcctgtwthhqmmnffmgmdgdlgljjhwjwggrqqfrqqjvqvhqqgsqsgsttmrrbprbppmjppslpsllvlfvlvrvhvtqmrjcdzwsbzfmgmwmwqwhztqrsdzhqjqvbjbntnbndflthljcczdmmhszfgsplrtlqnfzbrlqngwdqtfwcmrdjrsmdpmjmqwrbwfjzwnvqhfmlqtvvnlfzbfccwslqpbzzjccbvrzhghqwtvqgwrmsfzqnmnqqjsjtpcmngpqgllfsnpqtjjbqcdppnsmtwrslnrbqtwvnbctzvwfmgctscmzjbqqgqdwbpzmrdwgfcjzftzgmfcjhchbnmnqnrgtqngwrmncjvptqqdtjtgtpzzdrfsdgmwlwrjnqldbwrqjrhwcczlzvlhpgrnwzhbwjnpthggczfgtrjnzvnlfdfbwcnzfbwlwlmgnnjnpvhbhqgnzhqsnmvbcftsmrcgpvnnnmgnrvpbzlpwnbwpzmwpgqvbfgjwfrjqnvvgmqwwcfddqmdznmfhpjcfgptqdqwmplrglbwlmsqzjshrlhflcjvptgrcfhjfgqmlfzrtphpbvcqzwpcnwljjdlmqzhcctqshdngrgtlfsrfccdtlvmqcdgnpcvphdsrpzfzwclvsqcpzqlfvvqzggdhpfzdvhshglvfzfmcllrdfjfsjtngjgddcpqnlmrnplwtlvwdvzftltnsnspcdztgqhlhvvbnwvnmhscfnqbngpvprzfrjcmfpfzfftrlnwgllhnjndpjdrwcgqpcgcqngnbfzlvzvhnqdjthflmwvppmbdssddmgsbgrqnpjzrjpzdddqgsdlmwnhhpjbthclvqhgrsnrbqgtnsjhncnzbhrdgftvbptrqssvsqfpqnddhmgwcrfqndqjsqgffmhdvqhjrdlmrlcqctqccprwlbqgqrwmtfhwmfjfqzdqbsdsjbtsvfvgbsrvqwnqqqqthpsqgcfslsqtnjwtsrcdcctggdghrjwpbfccrtwgszwbrsjswmjmjbcqrsgbcfsdjzsbjnnssnddnnvwgftlrqvphnqcgjszscrlhhjnljlqcjqtqfwbmdmrgdlcqqwmbsmsdhpplvlfglqwspbfptlbzqjwhqmfvzvsvpjclcdzsbvntmhdqdvhghcmmflpjbglsghbswdshtsbdrgpsrsclrmfwwqbrgdjsqztgttqpwhnfhszlgbfpzhczsnwqflmshlgbrpmdzgpqwtsbssgfjbtrwbmztlwwfmsdgpgfgdjfdccwlfgztbcbqjvjtvslmddjplrswwcszspgplsrhrnwnmrrfbcgdmntcrlvnfqtwwcczsglrhtrfqnmhvgzjpmlplqvqhmnfgvzqcmzhqszgslvndqtqhvrbvbmclbcbjdswvcjrzgfdmdwnnlzlzqcffsrqdfmmpzfnmdsnqlpcrhzsdnsflblcjsfsgcnsspftjrlmdjsmfpqtmlgfvnlfnjscsgwzwvpjrvvclhsbqldlnmtglhbjfwlzmvrbvgtprfjbjhhnlqnbrswwlqtcgrjrltdrnfrjhrntllptlsbhqrwvdsfrlghtfcndznzjwcgmtdvffltgrdmljlqhdtmdvnfsfsrvdpmhlrrsttvqlwfptddwbpfrbclwwzmfpttmrmmqzjnbbnnfvzwmmcfshvrlbdbjzprftbqvdsghnnzwbjccpthdsvsdlgvphsgjdqjwsgmzqnqpqvgqjvwgjtzpmqqwnlwrwhqqjjclcbhjgpwhqdclwmqfmwbwmwwvcbhfznfhcfbprfcdqlbcttnvgnjwswcmpbrghtzgdbppbprffzjgvddzpwmdctrhnrfzdfhtmnfrsfdqvzcnrtncflhvldcndwqtvbggmwlzhchlcwtcbqcvlfhdwljgddwpvcfczvfqmphgtdsnsqwdpvvmwnwqjbrjwbdhhgtffphsdrvspsbgmfrmwmhnrgqdfppzgfpgmqjcsnglczgwhjthfhztzrlpgzjhcfrjpjvtjptptbvflftjtcfhmbwlhlbhvnjnbfmwjrgbvvhmdlncdgncgfjcnnpdljfcjsmsfscqpwsgcmlhhqmldsnjfrrqpghwncmgwgnjsdtvbhrbbnmpqjrrctqqnqzztmbqmdsgdvmmlwmbvprllzgntnmttrlzrttmjjlrwpwmtfznmwnsjmjhjdnsppfhcrjpzhjqzdtdbsjshfzzvrwvjbjbgtsfpgggbdztczwlhpmthfjdgsbrvlwmlrvgdrpjzccwmgpcnqqzmqdjqmwsrzwsmtmdjdhmjrwfwnzlmfnqtcgtslwtlnwhvmqntmglhntnsjlnmzfvfdztcfwmpchsrsdmqvqcwljzrmmssjvbmvvnmqlbsdwnrbmqctdtmfzlgfzpmjcnftgftvjpfbwwmzfdrrwjwcfwfcfmzbbnppgjrmbcvmvnjpdrzmvndvddtvshlnjjwgtsvnwtwnhcbfpnthpjlrhgrqccdgppjvdqjwqrfrrgnvhfwvjhnwhntnpmghphrtgqhwtbrqhqljfdjbgnlgmqqgfcqpqfhcpgspdbvlbfjvlrgmtjztwdzlrhqwwtcpdvsqgssjbjjgqlwbcctzzqvvmdzpfrmspmqhtzwgcfsslpnhpjfwqrrfbwbndrvhnnsjnlvlvqdsgwzjsrprhgtvsfbhbcpljdczbtdwzcnhzntrwcrjctmhtjfdlthznzmqblppzcqgpjhlzjrmcvpptfjjzltdhmvwphwlccscwrwfcqpqwwrzcmnltzdcfvtjrcvsqwtchrmdfzjmzjfhppjzbhglwqggzqqnspfmzrfwrqdqdrsdbsdhcgdqrrnjlwrqhfhpzjhrvjndqphndnnnbwhrjvqrrbvlhhbljjcwmfpvnhcszfshlsnczgtcfhjslbhzczdqdmdnvqdzhbmbpcnbntwgllfscrcwhfrgtfvftmwhbgfhjzjrbvvwc
|
|
@ -0,0 +1,21 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
require_relative '../common'
|
||||||
|
|
||||||
|
class Day06 < Day
|
||||||
|
def part1
|
||||||
|
find_marker 4
|
||||||
|
end
|
||||||
|
|
||||||
|
def part2
|
||||||
|
find_marker 14
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def find_marker(size)
|
||||||
|
size + stdin.join.chars.each_cons(size).find_index { |chars| chars == chars.uniq }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Day06.run
|
Loading…
Reference in New Issue