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