first 13 stars

This commit is contained in:
Mark Hoekveen
2024-09-24 11:59:44 +02:00
commit 262ebfc619
20 changed files with 7895 additions and 0 deletions
+2249
View File
File diff suppressed because it is too large Load Diff
+11
View File
@@ -0,0 +1,11 @@
with open("input.txt", "r") as f:
biggest = 0
count = 0
for line in f.readlines():
try:
count += int(line)
if count > biggest:
biggest = count
except:
count = 0
print(biggest)
+19
View File
@@ -0,0 +1,19 @@
top_three = [0, 0, 0]
def insert(calories):
top_three.sort()
if calories > top_three[0]:
top_three.pop(0)
top_three.append(calories)
with open("input.txt", "r") as f:
count = 0
for line in f.readlines():
try:
count += int(line)
except:
insert(count)
count = 0
insert(count)
print(top_three[0] + top_three[1] + top_three[2])
+2500
View File
File diff suppressed because it is too large Load Diff
+29
View File
@@ -0,0 +1,29 @@
# The score for a single round is the score for the shape
# you selected (1 for Rock, 2 for Paper, and 3 for Scissors)
# plus the score for the outcome of the round
# (0 if you lost, 3 if the round was a draw, and 6 if you won).
scores = {
"X": 1, #Rock
"Y": 2, #Paper
"Z": 3, #Scissors
"A": 1, #Rock
"B": 2, #Paper
"C": 3 #Scissors
}
score = 0
with open("input.txt", "r") as f:
for line in f.readlines():
hands = line.strip("\n").split(" ")
theirs = scores[hands[0]]
ours = scores[hands[1]]
score += ours
if ours > theirs and not (ours == 3 and theirs == 1):
score += 6
if ours == theirs:
score += 3
if ours == 1 and theirs == 3:
score += 6
print(score)
+31
View File
@@ -0,0 +1,31 @@
# X means you need to lose,
# Y means you need to end the round in a draw,
# and Z means you need to win. Good luck!"
scores = {
"A": 1, #Rock
"B": 2, #Paper
"C": 3 #Scissors
}
score = 0
with open("input.txt", "r") as f:
for line in f.readlines():
strategy = line.strip("\n").split(" ")
theirs = scores[strategy[0]]
victory = strategy[1]
ours = 0
if victory == "X": # Lose
ours = theirs-1
elif victory == "Y": # Draw
ours = theirs
score += 3
elif victory == "Z": # Win
ours = theirs+1
score += 6
if ours == 0:
ours = 3
if ours > 3:
ours = 1
score += ours
print(score)
+300
View File
@@ -0,0 +1,300 @@
BzRmmzZHzVBzgVQmZLPtqqffPqWqJmPLlL
hpvvTDcrCjhpcrvcGGhfLHMlLtMCqflNlWPJlJ
hGjhncHhGnhbTHczBBZVVSbRwgSgRV
rWVQjPQQjGRWNSrWrPjcptwBpqqJBtJBBcZgMdtq
zzmmpzfTCFpTlMlJJwBgMlqMBt
TvLszpbhhTLmsnRQPDQGWDWRvQSR
zGzvLlGlQHLGBQZlhBWhdjRdmdWRcjPj
fTJNfTfNSRWPhjdjfj
pbsbVVnpSnbVTprnbqqrzvLLgQlGLPLHll
ZCCCsWvNvmsCsCmZLZmgMLRpQMhwQRpQRfphfprpTfpM
tlncPjzlndctbzcPPBcjwDphwrfGGDffbDRpDTGG
cdqnddwzqjNVWVLZZLZq
DTLbDbRrlQbwhhNrmmfwdt
zzMJMzjCjJJjvLjMPJpcgPpzfhHdfqWcqddwtwfqdttcNtdN
pJCzVpCvDZBLsVRQ
STzBBbJzRRBZBRTqCCsfZLtNNLClCsfh
jsQnnQjjHcvQFrcPwCmtLCNlvDfftfff
sGFscMQQMMpqzqbMbd
QlNDWGsjQjgQllWQsbtzqTJczTJcbFmmFJJP
MhLrhgLVndRmzJFzVqqJqP
pSLnMdwhwdRZRSwhLZwLhdGWQjlsgWjNQWWSvgBsWDlj
THjSRFSddTjdBTcPLcVVvVBw
GzWnWfndWfznDfsnsBsPVwVwPPLL
zNflzJWqqzQDdSStHNZNpFFtbj
FSzDmsFSFlDlBzqVjqHHjHHpVgHLbp
rTrTtTQQntRQnQJQgggHZttVgHLBLhZL
WTJJRRQCRRJTRdBCRdvRNDFSWFMPmDlPPSsNPSzS
WQldlMtMVQgVMQHnDGbHGGnRnQmD
rqcZPrCFjmHlbGjZ
zSScchqwchBzTzFzhhSlcCwNtdVWWJgsVdMtWNgNVWTJTd
lMZqjMWllrTTspjprWWSSwgWNSVNDmWGVwFwgN
cdCCdLHcnndHJnmCRntLBnRzDvFNtNDVzgSgwDgFNVzFVv
BRLcCCJCmJdcRhfjPPZphrlrPqlZ
GdGqcrrZGDrvDJJqJHcBvmFFgmFMMgMgBtMLTssLmF
NbPVPDlljPmTmsTj
VfQDhflCCRWdcrQwJvvnJv
RLcWgLCqqPQLcqZwzHgwmmrmmtgwTw
DhbhNrMpnJSDJwVTHmmTVnTTVj
lrsvblMDlcWcfQPQ
PVldlphHwGwJJGdjZZWsRbbsGsNWrWQbNbQR
SqcDvTmDLtfmSmtqppfqzTgTQBrRQsbCFWbNNFQFBBrRbLNb
MgtmTgtfpqVlnVddZMwV
BdmfmPBPSbSNdGSdvWrwcZrccZPPcZnH
jzzLsjsMRlQQVHwswvvZrCHrrT
VqhzVFzplFlpLwpMphLRQQVRmSqgbdGtNJBmNSmgGbtggSgt
DHVpNZjdZjFZWVFHpvFvzmlRzPnlfznFRz
lrTBTsBwwMbrrwLPPfwGmGzvRf
scrtMhMCtJBBBclbHdHttWZWDSqDSjHj
wzqsPmqsbsfqBwPMNRMMZcZmFFNtZM
CgCnhlvvLJgcRFNNBdCpWM
QnQrVgHSvVHjbjTGBbbTHb
HdrVrdqFDdZVmHgRmDRFHMnTdTssMGnLnPJLbPTbCs
SczlScjwcNzplNzQSSfjwQSrTGGsbTsnTCnGTMCMLMGGbN
wQlfjrhfhQFHqZhRZRtD
RsfJDGJvzPNcjpddSWJWMd
LLCbBCwCrCmVVnrmhQFmbVhdcdlWpjZzSpMdWSpcWczSBj
rrLCbTwnHTvzvNGT
wPhPhbCqqSCrtJDlqvlrJr
RVVZddLFRZZcQLvJJtzptlgPJp
TVQRZGVncFdTGWZdCNShHhfPNwwsWPwb
dzLVzPSgrgDDDCMSMLLPwFmdTTcsvmwNwjNsHcFF
nWBGntQfGNGBflWBBqlpRQGbWFvjwsbsFswbvTHjjbmHTc
tBNJBnGBflQnDPJrPhDgrPVg
VtWztWtqpqzWpWzqjNRjNpWTmrrmrSbnmJwSJwnMPrCSJVwM
sDHsBDhBdsBZGcHvLHDLhhCSnRSwCJMZrPbmnMbJSCSR
ccLRhgsLBdRsdHNTFFNNgqTglqzF
hztlmDhPhgPlPNNgmZMCbmwwQjcwjjwMjVCd
RSJRrRqnqQJFqvnTGrHCcHHCCHHbHHMcMvdM
qGJsnQTRsStsftPlhPNl
BFFBLPRCwsLwhlPlRmhcGGrbmmGjfNTTnp
VJMVpzgqggJnrjmjNcMjmT
VqdSZtQgZvtdzqHqHtVZdVQpCDWWFdwlRPDpWPPBCswlWD
fCWCsjPzcbzwRSzVTzhhDLqvdg
TmJtrNJrBLSLJqgS
ptNTQFHrZlnpFPwsWMbRjCpcjR
nJmQNCmbmlllmbClbfMLjMFqbGBsdLFq
ZcgTWcTnMqqMTBqF
tPgctSnPctZZgDWzZgQHwNmHlhlmzlQhlJlw
ZpTCwpffdslvgShCBhqhRz
FDMPnNFNmBPzvRPRBg
nNgMrnnDGjDmJMmnFdZTTsdsrZrslcwcQr
pTmczpCldcdDDnPttpvWSqbpJf
jgjRZMGHhGLgQrjvPWzPJgJvzStbbq
LGNLLNBBzcDFCBwwFC
nJTTqnrNvTzNMzzNfqrTPrJnwpwPpZpsHccZVsBRpcVHwpcp
bgDhgbghLWmFmStctVpZtBCVCCpfZp
LLSgLGSjggFGbSSbmMnrvqvzjfzTNrJrqM
RRpDmmPMTjwfGmJQgQ
WsNscdnvvdVZFVnnrZbjjflwljlbzfGFjQjq
NnLZsNnrrVVVcvdBLTPCPCRMwhPMBMPhCt
lbVvzngGJnVbJHpHtHNPpdSQvc
TsMBswFZsWMWBZMNwPtNNtRNHcNpSQ
CcZCTrZDsjZTsTsshWhrWrTnfgbLDfJzVVLVVlgfnzfVGV
JzTTRtJRZWmWjrMHCT
DDFGlLGcGlSSSLsFGBspPBmNMBHMghmWNmWjWCmWtH
nSSpnbsGlLDnpPsSSspFtVvffRQdVzqvvbqdfVQwRz
sMhzszlHHDsWbthHDqsbJjpLNtmjVJmVLLVLVLBp
nrTPrGwfPLdprzJzdL
wgPQcTGGzgccwCgnRwgRChFhlWSDqWWQMWhssSsMQl
NSNmwtpSpCpvMphCsr
PHcRGPLJMrsvzsqG
QHjbnRMcfbPbQZmlZgZlgBBQ
cPRPbhQjbQRdtPQdLqLHqzFZjCFCqLjC
mmfsnnwrfvwrfSNZFzHHLDCFNlLlqDlN
wsmrwswwGTffMrBnmQttJtcMZQQtPJPbZc
MvBPDDRRdnnvHPCHZLHZsFLL
rmJcbVqbcjWwWjQHLzTZFTHSzFrpsz
cmwllVqqGJbVVVmmqbQcmgRnRvGhGfgDRDZBBBvRdd
nMvMhMnvhnbTZWSSZgHmGJDFmmNDzBmbNmdGBN
rCsPLRCssRjrLLsrLlwRVrcNJQfDQfdBmmfNBGJNzmDPfB
CRjCpLltgtJgJJWq
jshCzJpjzTPpmCWvSlpfwHfSWglf
LQMMNMnHtDtLVRvwwgRWlldgWD
qHVrQNHVMFQtrrBBQMBcrrZsZbzCZhbbJZJsmmsmFPTC
JZQZnsQNMqTngZqJBVfBfPPVBNrwvfPw
SSmDstFjpDpCszDjcLLhrPVlGlrGGVBwrvwVPt
FSssFcLjFjbmFFCzjLcFLRDnMJnTHRnZZTdWqZZWnMnRnZ
GbHRHpldwGMpWhHpCMBlCbRdVSLhnqJLSrDPLPPLPDqVDrhh
gvjWWQvgZFtQFFNqLnVnDnSJzzztDD
ZccccfTsffHdWWdRWwsw
ClCtbHMlnnPPlszV
gSDWSLgWQWQJJNWqgtQjPsnfcdVcLVdVdzfzVzff
WQgqtFQgDgQSFqJhqhSJvNDRrZMZHwHMCbZhTpZbGHMTMG
pZJZlCQtHFhPfdNfCh
zcmLSVczwcMcLDNFHdLPhPWH
szvVVnBmnTGQtHTQ
RVVCNDlNGzlGZqHGHWqWhGqQwH
ZFLFTmpLvvmSqsbb
TrfpBfJpJMlnnNfNZD
qHHlDClHhltMqQsHDhHslGznwdTnzzwDGSdfnwGnwG
mZRNcNcLLPNPBFFbbPmLmbZFSCVfJJTVndVfSwnRzznfTwCS
CcCWFbbBLCWtgWgHjghqvv
TjbzlnlFmfqCFFVVCRWr
PhMcLpPDtMLpwPDvLPJbMhSgVCGqggVqQgCqCgCgSWvv
btbZbNZhJDJJhDtwtsTTTmBzzBBmlNlmHj
FqhjWtqlqmmsnFPTCvMCQMTTCjQd
pfffRfLpgrgGgzrNVzzpGVzRCdMCPJbwwcVMbQPCJVMVdbww
DGGDZRGrHggzSsFQnnWShmtH
vtHVVMMrvVMVrSHvLgvlHcZFCnRCZcccZtRRZfJFCJ
rdDjGsdTQDcNZfdncCRR
rBDsTwBbjbmbbQswswPhqVmmSvpVhlvvqMhHhh
vGBLrqMNvqSLBvvrNbllLHfwStWWtFttccjtRtjtcj
MhCDJmhMDzmcRRcjzWfztH
ZQDmDhVVCQbBVdVNMvvv
ptCtCzhWPWptnhVzzpGZbZTjTjVjFGjVFgVl
fQswRRffmRqZlgrqqFjjSgGg
HwsQDNNsDsmRLLHmffsfvHptBnhtzCvhWpZWBdhnMdCh
RlHzzTqczBPfbnvcpB
wVtNwpSZstppwwMsZhsdnLvnbtBBmbnLFFdnmF
WNQJMVWsZWwGJWhhSNrQzlgHrDCgQRHpCHrl
RrZWpJZRrZpdTGstlchLGGlLMd
NqjDPCQPnQCSvtMzSLhhjM
nQVQDDDDfwBwNCVCNVFNpWpgJgrRTmLTmTmgRTWF
SHMcrMHpcjGcjSrMMbvSvvSvwFTLJwJNtFGFWJNtDLFTLfWN
zqRnPfzQCRzqsmRPzznhszzLtLwQwwFTgWWLDLgWFTwTNQ
qVPZmRZhsCZPhZlRCqRRRCbfpccMBjvMVjdHjjMjSvdf
VVQdHwBZLVltlddtBczhrzvGcWWFRwgsFG
TDTTTqqTSSqjqnmTmPqPPmTmGhRszvsrzsjRsccgzrRzgWGF
DpJPqpWqHbZpllpt
cCSCFsnnZFnscDtNdJFJtJtdmb
VgBqBsqRrHtNdzmNrt
BGLLVVjRBsqPBfsGwPsMfSSZCSfTZTZQpSphfS
plCHCHlgglHHGpNbtngNrDvBDpfQDBQfZDfWZVrr
mTmMLhRfwhsLPQvQZDMZQBQWMB
cwsssmqRTFFfFgtbCtGl
LQPPrCPnMZwqtRMn
cWTSlJWlcplJdDTdGdpDlGcGgqmtwwZtqRrNRRmRdNZqmgNq
GSJcJSjsjTpsvWGWBHLLvVVBBBrFrzVz
NVPCSPMNDSNFVSWCsJJJmpGmZZGLLcpZLHGGtsHt
fwzlBBqghqvzqqlDrHbpHjZHmGZbLZrHLb
dnBgnDqQvwRnSnnFMFMP
BCbPsFFwCRHmDSBmWnvDDj
phhZVzdpVfQZphhZpRhSVnjmrcvvnrWtDrvWDS
TfQJMfLphMhJdfdzpQJRTPbwHHNlgbGwsTGgCP
ttWLlnnvnNnBBtlTqWlpvpndQdZsQQFssFDdsRFdVdRNFQ
jSgrScrbGZSGrrCGsFVMssFsPPFcDDMV
bzSmJbfCZCbzLwllflwqtvvw
zmFTJwFLPmzLztmjDzTJwfNrdFNrFppBSNRGNGdbrpBR
gqlhWQgsZMsvqMlMMvsvqsNlLbcdppbrRpdbbcSrrbbr
vssCgVgCsggZQZCgsnsqWgWvfJPDLwffwTPPmzTnjTPmPmwJ
SpcRTPQLBLWpNNzjmmwwwRrR
tGlfvGhfnbDlbqlChnfFMrwsmwNssTMHMHjFwv
ZlhtCtffCdWcZWZVVT
jTTCcWHWJNgCGTzTmnzrmnGn
BwRRbFvtvvQmJJFMpMJr
ZBBwLvqbBZsRsbVsZSqbcZdJjHHjhfPCJfJfHhgc
VrnDSvvrLrfTdTLGfdRp
zcJzmcFcHGfdGmWTVd
tHsMhwPVctccHFHFcbSDbbPjnNbBnbvBQB
QttWQwLTnLnWTtnffnLQSBFVjNvBjBFNgMdCsVWsjv
pDqcmmRPHqgVBddjvN
DcclzbcbPbJLnNTfnw
plRcpsZDGlGZvWvMCNcLtttq
SrfrwSjSVrSjwbmSrHzmHJCQQPQzqttNNQJMzJtqMW
wSHVnfHfWwwHWFVfSnfgmmRsslFZZDBBGZsZsDTdGRTp
qSFQSgQNgQBrBHHcrW
VTmjVJLTwlTmwTVmsMJMVlJmPvcbvvbCBbGBPjGvBbBGWcbb
DnJTZwmnZRhnpqNdWt
dTVHjZLLZDVCfVHtLDDjQbscjWbSJMJPjsbWWb
FnqrnmzzFllmsWwtsFtQMMFc
lmqzzzngGmlNNBqGllzlBNRvptHHpTCHpDLpgDZdgvHvDD
sdRZQbCfZTSTdlfTZCffccWPHPPcPPwLwctRnLWn
BBJDzFVgCDrCJrqDJJhqJVVMLPHwcctFwcWHHGLcwGwGHnWc
ghpJgqqjCZbQdZpd
tbcpzbHSszcHBgqHGZgJJJhhww
jfvdvRTffQQrrFCRFTnGwJRqNRZVpJGZLZggLh
nQTjTnMndlTdQFMvnrClCnpzmzDtbbmBbcPSzzlmmtzP
BqBqTCSTcqHsJHHM
WWPGVPLtzVgWtjWPGzVjzVGcbDhPsRbDcsbJwNRswRDRss
VQfWjfLFGWLjdFfVzTZZpJTpnmlTrSQlBl
jLNsZjqSHCsGdsmpsm
MvnVFzWMwMVWzfnVDwfBMfnnrCtdtPmPlRrdrJCJrtPDrrPD
zznfFWwMfMfFMwVTMQFnQjhjgjSZhCNbLSTcHHgbbC
GGtssttVmvnnGNMQrrVzgwVrCWMz
FdhfhhcCDhHLfzclZMcrwcQMZM
HHqqCBhHSSpdmjGqmGjtjtjj
bbQLtGMQQtQRQtrDtGprrrbCqwplZhhqSqmdwvdzqqqhSmpS
FsJjJBfnsJcFcFfjVPjWBzldqhqnlZZZzzhmnSvSnm
JPcFfFWjFHJVVsVjPVscsDlLNRHGDbLRMRCDNrCGbG
JdMdlMRJnTwdvcjv
CDLHbNSzzLFgHvnTjrswBNBTNT
QgbvzSFQmZQPQQRW
NTBrNzrpjjjCwGbB
FRbQlcvFvcRQQlRsMlRRRZjwCqMwjmjwJZdLJmjCZC
cVPPQcvlWDNhrbPz
VdbVtbbZJdtJVVdDVZmTLqqTSQvNLjjDShhvSG
zplpnBnFpnrrlghGNpLNqHvqvjNj
cWncllnlPFWzcMwtWWtsVLVRmJWCds
ShLSTnZnTSttTSbLQdfSZTMwcDHwwcHnJvDHnlnlclMM
NmPMsssRrVwjDclHJwwR
gNNMWGzNmqGdtfZTbGGb
sWNNlRHnmJtmntJt
brbbBTbbFbCbqqGgBTrCfmQVVZfSSQQSVtJZSrVZ
bbFqvbDvvGGLGbCCtBGDLbLlcPNHhhccPNcdPPchlsdR
DCFvDvnCnNfMBmMMslDZML
SQQQJHwpSgJSJHQWSWHqJWWbmcBBBLLTsmhhTcZbMhmlshcb
RJRgpJHssgwSQHRqsQPGGjjtNCrrFvvnFjjPrP
mThmsgjzTPjMpcvtWP
GNNBVqVGNZbbNbNqqZQVNVNbWcpdtMCcpCtMWCdCPpQccmpp
VSmNrmmbBfZVlsrssrLTRhRhTn
TdmCvLDCpTRNTdFbbWnnSWCfhjbbzn
GrrMsPVGcQHBGMbhjjSgWfHHDbjb
BPBVqqrQPsQqwrrmmmJdRLDDqFRplT
fpDDJljDlCfDTjprjrfbddWthCSCtdPPQFhSSSWW
HsLZgMGbgBBsNzMvGbdVtVQzFRQSthhFPdtP
sMBmGBmbNvLHGMnrDppTcJmcjpqljf
ptSpSJQqpbNGGDDhcMWrlNHcZZWWls
zRLRRRjvvgjHMMsMpWpc
vmCPLCgwvwdnCzmvLbpTbVQqJJPbJPpTVq
TJCfhhJVFffrJJQQllNWcvWhwvWD
GPSGjjpLslBbpLpLqqqPDvdwvwvNzQWGzDDNdzGN
msbRjbpPqsRpHnlZrmJlnVHT
GGfFsCCTvGDsfTTrhsCMMzptZJMdpdgtrpdMcV
LBlwBHPSqjwwlVggHpnMZcVHMt
ZlZZlBbRPGGTGfmRsD
CtCjbVvzQQZTWVdd
MlSqWlmsmGBSHJHTDFHZ
pcqsmsplwsqclwRtRWgtRnPPvb
zCrzCrsdjrhGDCFqGDjRRPtpWfQQcpfQZcCZPp
VSVwVMgLHHLTwMDTMMVnbWPRZQRcRQPptWnpbZcb
MNBBBlSMvLVwTlVTFdNdhNhFsqsGDrzm
rBLWTwTThWwVVDTwHBsZZWppvpGtpptppmRvFFFMFMfL
qPPNCCbqcbcNqbqQjjJQqzjRpptmlpMGmMlJtftmtFHpMt
QnCgzzQbbQqPcPQnncbdQdnVTwDssZgrShBTVgZZsBSDHT
PFGJFqnfqmPgFJQPWdbLdpDRhbphWjDm
rclNHvcrzCNwrWRprjdMMMph
wsZHwZNvRRQsQqBV
LqlGCPlPLTCPqqQlpqLlWfBfWgcHNRJRfWNsncGH
VVtdwVtDDdVmhrdwSBmjbdzNHgfgJnNnsSnHsNffHgRsgR
wVzhbjmDbDrwjdbztFDDthMCvqPppZQBQLZQTqTvFTvZ
BnQnQFwRmRwmwdBSFDFnmSDVLCJTCTppVVmGLVTCLcgVpC
ZlWvhvZjNrbNvqjNhlfPfqjCGHrsspggTpVLpsJCpcJVgg
vPzNvqjWhqFzGSnRGMDG
wZnMZzzZZchDRtVsqtCtwV
WmWpWWmPPWrmrmBmWrTlTFPNVqVCRSDCQHcqVTtTqsSDSTSD
PrppdFlWWlfrWmpWFffrdcGjJJGggnnhZGdLLgGGndvz
FShHNmNhRhNJmBnQBQJrmP
VTgzDTjwfffwzDvwlcczzVSJbQlBQSWBWCnPJPbJWWbC
tzSVtzvSvGSRZqqFMNtpRR
hPZhGDZpnCGtDhznjmLmdJffdNzJ
glwsSrQwBvLdgLzdcj
QsRbHllzzlHwHlBszWlTBFbpDPMhbPDVGpGFpPtFPp
SRjStRDctgDSBzLvPvNrDhmPLr
QqTHGTPJmmHmhNmH
TGQZsTqFnQZCJTPsnJnZQMjVRBVtcVRSVRBlwccSCtBS
bbsNsvsvnNPTRRllbblLqhtQCqQSLCGGHSqHNC
wFpzFgqVzqVJWFDwqJDmSBBmHBHhShLQhCGSBCGH
MJVpFMqgwMqRRbZsMbZMrP
PPdDhvNDQdmgQPZmQVHHtHGGWVGbffWGvs
MMLCTRRLlLclTLRMRLCwMLHWVctbVVHWWWFfVjVGsFWW
MRSMMlpTJRqClBCRqBDnzqgQPnqgznZPZqbP
MrMNPNNpjvdprWtrpMsthqBfqlnfqcGhVBqFRcnqFG
QbDgSSQbgSDDmDVmlqSCRllRcFqnqfBl
QVJbVmwwDQbzVTgbppNJNMWNjNNPrdpM
WwJJNbtHfpLpVgZZPVFhZh
vmmqlDvRvRfqBSrlzmmMjRBhcVhQVZhVghCQQQQTcTrPTP
jSqMmqRzMDDjvqlBqsBMBmmwGNJwJnwLNfbGwddswnJtJH
RLgRmRggbvbzzPmmRNmzsQWFtSGNtwSNQnntFwnnCw
pDBrBHpHhlldphHBHhJVFSLnWWFJttCtQSttSS
hfHrpphHBppfTvmzgMmbLbgf
+24
View File
@@ -0,0 +1,24 @@
def priority(item):
if item < 'a':
# uppercase
return ord(item)-38
else:
# lowercase
return ord(item)-96
priorities = []
with open("input.txt", "r") as f:
for line in f.readlines():
line = line.strip("\n")
#print(line)
h = int(len(line)/2)
left = line[:h]
right = line[h:]
print(left, end=" | ")
print(right)
for c in left:
if c in right:
priorities.append(priority(c))
print(c)
break
print(sum(priorities))
+22
View File
@@ -0,0 +1,22 @@
def priority(item):
if item < 'a':
# uppercase
return ord(item)-38
else:
# lowercase
return ord(item)-96
priorities = []
groups = []
with open("input.txt", "r") as f:
group = 0
for line in f.readlines():
line = line.strip("\n")
groups.append(line)
if len(groups) == 3:
for c in groups[0]:
if c in groups[1] and c in groups[2]:
priorities.append(priority(c))
groups = []
break
print(sum(priorities))
+1000
View File
File diff suppressed because it is too large Load Diff
+16
View File
@@ -0,0 +1,16 @@
elves = []
count = 0
with open("input.txt", "r") as f:
for line in f.readlines():
line = line.strip("\n")
# Some python magic to split out the strings and convert them to integers
pair = [x.split("-") for x in line.split(",")]
pair = [[int(y) for y in x] for x in pair]
elves.append(pair)
# Elves is now a list of list of lists.
for elf in elves:
if ((elf[0][0] <= elf[1][0] and elf[0][1] >= elf[1][1]) or
(elf[1][0] <= elf[0][0] and elf[1][1] >= elf[0][1])):
print(elf)
count += 1
print(count)
+26
View File
@@ -0,0 +1,26 @@
elves = []
count = 0
def inrange(lb, ub, check):
"""Returns true iff check is inclusive in-between lb and ub."""
return check >= lb and check <= ub
with open("input.txt", "r") as f:
for line in f.readlines():
line = line.strip("\n")
# Some python magic to split out the strings and convert them to integers
pair = [x.split("-") for x in line.split(",")]
pair = [[int(y) for y in x] for x in pair]
elves.append(pair)
# Elves is now a list of list of lists.
for elf in elves:
lb1 = elf[0][0]
lb2 = elf[1][0]
ub1 = elf[0][1]
ub2 = elf[1][1]
if (inrange(lb1, ub1, ub2) or
inrange(lb1, ub1, lb2) or
inrange(lb2, ub2, ub1) or
inrange(lb2, ub2, lb1)):
count += 1
print(count)
+511
View File
@@ -0,0 +1,511 @@
[V] [B] [C]
[C] [N] [G] [W] [P]
[W] [C] [Q] [S] [C] [M]
[L] [W] [B] [Z] [F] [S] [V]
[R] [G] [H] [F] [P] [V] [M] [T]
[M] [L] [R] [D] [L] [N] [P] [D] [W]
[F] [Q] [S] [C] [G] [G] [Z] [P] [N]
[Q] [D] [P] [L] [V] [D] [D] [C] [Z]
1 2 3 4 5 6 7 8 9
move 1 from 9 to 2
move 4 from 6 to 1
move 4 from 2 to 6
move 5 from 8 to 7
move 4 from 9 to 2
move 1 from 5 to 8
move 1 from 3 to 1
move 2 from 3 to 1
move 1 from 4 to 2
move 11 from 7 to 2
move 5 from 5 to 1
move 1 from 6 to 8
move 1 from 7 to 6
move 3 from 6 to 7
move 1 from 3 to 2
move 1 from 6 to 8
move 11 from 2 to 1
move 1 from 9 to 8
move 1 from 3 to 7
move 4 from 7 to 9
move 3 from 3 to 7
move 4 from 8 to 2
move 3 from 7 to 6
move 2 from 6 to 3
move 5 from 4 to 1
move 1 from 6 to 5
move 26 from 1 to 7
move 1 from 4 to 6
move 22 from 7 to 5
move 4 from 9 to 1
move 3 from 7 to 3
move 1 from 6 to 3
move 6 from 1 to 7
move 2 from 7 to 5
move 8 from 1 to 9
move 4 from 3 to 4
move 10 from 2 to 7
move 6 from 7 to 4
move 2 from 9 to 5
move 1 from 5 to 1
move 8 from 4 to 1
move 2 from 5 to 9
move 1 from 3 to 6
move 1 from 9 to 1
move 1 from 3 to 6
move 2 from 5 to 2
move 1 from 4 to 2
move 1 from 2 to 3
move 7 from 1 to 4
move 9 from 7 to 4
move 1 from 3 to 4
move 2 from 2 to 4
move 5 from 9 to 6
move 1 from 4 to 5
move 2 from 9 to 3
move 1 from 1 to 6
move 2 from 6 to 1
move 2 from 6 to 5
move 2 from 9 to 7
move 1 from 3 to 9
move 1 from 9 to 5
move 2 from 7 to 3
move 1 from 1 to 7
move 7 from 4 to 5
move 2 from 1 to 2
move 3 from 3 to 8
move 3 from 8 to 9
move 31 from 5 to 8
move 1 from 7 to 1
move 1 from 2 to 1
move 1 from 1 to 5
move 1 from 5 to 6
move 2 from 5 to 7
move 10 from 4 to 9
move 5 from 6 to 2
move 3 from 2 to 6
move 2 from 7 to 8
move 1 from 6 to 3
move 1 from 4 to 1
move 1 from 3 to 6
move 1 from 4 to 2
move 2 from 1 to 2
move 1 from 8 to 7
move 10 from 8 to 2
move 13 from 2 to 9
move 1 from 1 to 5
move 18 from 8 to 2
move 21 from 9 to 6
move 1 from 7 to 8
move 2 from 9 to 7
move 1 from 2 to 3
move 1 from 7 to 8
move 9 from 2 to 4
move 1 from 7 to 8
move 3 from 9 to 1
move 1 from 8 to 1
move 6 from 2 to 3
move 5 from 4 to 7
move 1 from 5 to 8
move 2 from 4 to 3
move 5 from 7 to 3
move 2 from 2 to 7
move 15 from 6 to 1
move 12 from 1 to 2
move 6 from 2 to 9
move 4 from 9 to 5
move 4 from 5 to 6
move 14 from 3 to 9
move 1 from 6 to 7
move 1 from 7 to 2
move 1 from 7 to 8
move 9 from 2 to 6
move 1 from 1 to 6
move 2 from 9 to 8
move 4 from 9 to 7
move 1 from 1 to 5
move 8 from 8 to 3
move 1 from 5 to 4
move 2 from 1 to 2
move 3 from 1 to 4
move 9 from 6 to 2
move 1 from 7 to 4
move 1 from 8 to 2
move 1 from 6 to 4
move 4 from 7 to 8
move 12 from 6 to 8
move 3 from 2 to 1
move 6 from 8 to 7
move 5 from 3 to 6
move 3 from 3 to 6
move 3 from 1 to 3
move 8 from 2 to 9
move 2 from 4 to 5
move 2 from 7 to 2
move 10 from 8 to 5
move 3 from 3 to 2
move 10 from 5 to 3
move 1 from 4 to 3
move 1 from 2 to 1
move 1 from 1 to 7
move 14 from 9 to 6
move 5 from 2 to 4
move 15 from 6 to 5
move 3 from 9 to 3
move 1 from 8 to 6
move 1 from 3 to 8
move 7 from 3 to 8
move 16 from 5 to 1
move 2 from 7 to 1
move 1 from 5 to 9
move 2 from 9 to 3
move 15 from 1 to 5
move 3 from 8 to 2
move 3 from 3 to 1
move 3 from 7 to 3
move 8 from 4 to 6
move 5 from 1 to 6
move 9 from 5 to 7
move 2 from 8 to 3
move 2 from 2 to 7
move 1 from 1 to 4
move 2 from 5 to 8
move 4 from 3 to 1
move 4 from 8 to 1
move 1 from 8 to 6
move 9 from 7 to 6
move 2 from 7 to 5
move 3 from 1 to 8
move 1 from 4 to 8
move 1 from 2 to 4
move 12 from 6 to 2
move 3 from 8 to 6
move 1 from 4 to 7
move 2 from 6 to 8
move 5 from 5 to 9
move 13 from 2 to 9
move 2 from 4 to 7
move 13 from 9 to 5
move 2 from 6 to 5
move 1 from 3 to 9
move 6 from 9 to 4
move 5 from 1 to 3
move 1 from 7 to 9
move 15 from 5 to 8
move 2 from 4 to 7
move 2 from 4 to 6
move 1 from 4 to 6
move 1 from 5 to 7
move 18 from 6 to 2
move 2 from 7 to 3
move 3 from 6 to 7
move 3 from 2 to 8
move 5 from 7 to 3
move 1 from 9 to 6
move 2 from 3 to 8
move 11 from 3 to 2
move 2 from 2 to 9
move 1 from 6 to 2
move 1 from 7 to 5
move 1 from 5 to 9
move 9 from 8 to 4
move 1 from 4 to 6
move 2 from 3 to 1
move 2 from 1 to 5
move 12 from 8 to 3
move 1 from 8 to 2
move 14 from 3 to 4
move 1 from 6 to 4
move 1 from 5 to 4
move 20 from 2 to 7
move 2 from 9 to 5
move 1 from 5 to 3
move 1 from 9 to 2
move 1 from 2 to 8
move 2 from 2 to 3
move 5 from 4 to 5
move 6 from 5 to 7
move 2 from 8 to 2
move 3 from 3 to 9
move 5 from 4 to 5
move 2 from 9 to 7
move 2 from 2 to 3
move 1 from 9 to 3
move 22 from 7 to 3
move 4 from 7 to 4
move 24 from 3 to 6
move 4 from 2 to 6
move 18 from 6 to 9
move 15 from 4 to 6
move 8 from 6 to 3
move 6 from 6 to 1
move 7 from 9 to 6
move 2 from 7 to 4
move 8 from 3 to 9
move 14 from 6 to 3
move 2 from 3 to 9
move 1 from 9 to 6
move 13 from 9 to 1
move 3 from 4 to 5
move 1 from 9 to 6
move 5 from 1 to 8
move 3 from 3 to 9
move 2 from 1 to 5
move 8 from 5 to 8
move 10 from 3 to 5
move 3 from 4 to 6
move 6 from 1 to 9
move 4 from 5 to 3
move 5 from 8 to 2
move 6 from 6 to 3
move 7 from 3 to 6
move 1 from 3 to 4
move 5 from 8 to 7
move 5 from 2 to 6
move 2 from 7 to 3
move 3 from 7 to 3
move 1 from 4 to 9
move 9 from 6 to 9
move 2 from 6 to 2
move 1 from 8 to 2
move 2 from 8 to 7
move 5 from 1 to 5
move 1 from 1 to 4
move 13 from 5 to 7
move 5 from 3 to 7
move 1 from 5 to 6
move 1 from 4 to 6
move 3 from 2 to 8
move 1 from 3 to 5
move 1 from 3 to 8
move 14 from 7 to 4
move 1 from 5 to 6
move 7 from 6 to 9
move 6 from 7 to 9
move 2 from 8 to 9
move 2 from 8 to 1
move 31 from 9 to 1
move 13 from 4 to 2
move 1 from 4 to 3
move 10 from 2 to 7
move 1 from 3 to 4
move 1 from 2 to 7
move 3 from 7 to 8
move 1 from 4 to 1
move 3 from 8 to 5
move 32 from 1 to 5
move 3 from 9 to 7
move 4 from 9 to 6
move 2 from 2 to 7
move 2 from 1 to 7
move 1 from 6 to 1
move 1 from 9 to 4
move 3 from 6 to 4
move 1 from 1 to 8
move 15 from 5 to 1
move 1 from 8 to 4
move 9 from 5 to 7
move 1 from 9 to 8
move 1 from 8 to 1
move 10 from 1 to 9
move 1 from 4 to 2
move 2 from 9 to 5
move 4 from 9 to 6
move 1 from 2 to 7
move 3 from 4 to 2
move 1 from 1 to 5
move 5 from 1 to 5
move 1 from 4 to 9
move 3 from 6 to 7
move 23 from 7 to 6
move 1 from 2 to 4
move 1 from 2 to 5
move 9 from 5 to 4
move 1 from 2 to 5
move 9 from 5 to 6
move 1 from 9 to 7
move 1 from 9 to 3
move 3 from 9 to 4
move 14 from 6 to 3
move 5 from 7 to 4
move 1 from 7 to 5
move 1 from 5 to 9
move 2 from 5 to 6
move 16 from 6 to 2
move 2 from 6 to 1
move 7 from 4 to 8
move 2 from 1 to 2
move 4 from 3 to 5
move 5 from 4 to 7
move 2 from 6 to 7
move 4 from 4 to 1
move 4 from 8 to 9
move 1 from 4 to 5
move 1 from 6 to 8
move 1 from 4 to 9
move 4 from 1 to 7
move 1 from 9 to 4
move 2 from 2 to 7
move 7 from 3 to 9
move 15 from 2 to 3
move 4 from 8 to 6
move 1 from 4 to 7
move 2 from 9 to 7
move 1 from 6 to 8
move 2 from 7 to 2
move 5 from 7 to 2
move 1 from 5 to 2
move 6 from 2 to 9
move 3 from 7 to 1
move 3 from 1 to 2
move 3 from 7 to 1
move 2 from 2 to 9
move 2 from 6 to 9
move 1 from 8 to 3
move 19 from 3 to 9
move 1 from 6 to 3
move 3 from 7 to 4
move 1 from 2 to 5
move 2 from 1 to 9
move 2 from 2 to 3
move 33 from 9 to 7
move 1 from 1 to 7
move 3 from 3 to 7
move 1 from 3 to 2
move 1 from 5 to 8
move 4 from 9 to 7
move 1 from 5 to 2
move 2 from 4 to 9
move 4 from 9 to 7
move 3 from 2 to 1
move 1 from 4 to 3
move 1 from 9 to 7
move 1 from 8 to 3
move 7 from 7 to 3
move 3 from 1 to 9
move 4 from 9 to 7
move 4 from 5 to 8
move 3 from 3 to 4
move 3 from 4 to 5
move 3 from 3 to 6
move 2 from 6 to 5
move 38 from 7 to 5
move 40 from 5 to 3
move 4 from 8 to 9
move 1 from 6 to 9
move 1 from 5 to 1
move 3 from 7 to 6
move 1 from 7 to 5
move 38 from 3 to 8
move 1 from 1 to 9
move 3 from 9 to 6
move 5 from 3 to 9
move 4 from 8 to 6
move 1 from 7 to 1
move 3 from 5 to 9
move 1 from 1 to 2
move 10 from 8 to 3
move 5 from 8 to 1
move 3 from 1 to 2
move 9 from 6 to 7
move 9 from 3 to 5
move 1 from 7 to 6
move 1 from 3 to 8
move 1 from 7 to 9
move 1 from 1 to 5
move 1 from 1 to 3
move 1 from 9 to 2
move 4 from 2 to 3
move 1 from 2 to 4
move 9 from 8 to 1
move 2 from 9 to 5
move 2 from 1 to 2
move 2 from 3 to 4
move 6 from 8 to 6
move 10 from 5 to 3
move 7 from 3 to 2
move 2 from 1 to 2
move 5 from 1 to 7
move 7 from 9 to 6
move 7 from 6 to 5
move 1 from 4 to 3
move 7 from 7 to 4
move 5 from 3 to 9
move 7 from 2 to 6
move 4 from 7 to 8
move 5 from 8 to 9
move 1 from 2 to 6
move 1 from 3 to 5
move 2 from 2 to 8
move 8 from 4 to 6
move 7 from 9 to 7
move 4 from 7 to 9
move 7 from 9 to 3
move 8 from 3 to 1
move 6 from 5 to 9
move 8 from 1 to 8
move 13 from 8 to 4
move 3 from 9 to 6
move 1 from 8 to 6
move 1 from 7 to 3
move 2 from 4 to 1
move 5 from 9 to 1
move 1 from 3 to 7
move 15 from 6 to 1
move 1 from 7 to 9
move 10 from 4 to 7
move 11 from 7 to 5
move 17 from 1 to 6
move 1 from 9 to 3
move 6 from 6 to 1
move 3 from 5 to 3
move 2 from 4 to 5
move 2 from 7 to 8
move 12 from 5 to 3
move 13 from 6 to 9
move 2 from 8 to 2
move 2 from 5 to 1
move 16 from 3 to 8
move 3 from 2 to 3
move 2 from 3 to 7
move 2 from 7 to 9
move 1 from 3 to 7
move 4 from 8 to 4
move 2 from 4 to 8
move 5 from 1 to 5
move 2 from 4 to 7
move 6 from 6 to 8
move 2 from 8 to 5
move 2 from 1 to 4
move 5 from 8 to 7
move 5 from 6 to 3
move 6 from 9 to 8
move 2 from 9 to 2
move 1 from 1 to 7
move 4 from 5 to 3
move 2 from 2 to 3
move 1 from 4 to 9
move 10 from 3 to 6
move 1 from 3 to 7
move 10 from 7 to 2
move 2 from 5 to 3
move 1 from 4 to 2
move 2 from 6 to 8
move 3 from 6 to 5
move 1 from 6 to 1
move 7 from 2 to 3
move 6 from 8 to 7
move 4 from 6 to 3
move 14 from 8 to 6
move 11 from 6 to 8
move 1 from 1 to 4
move 6 from 7 to 2
move 3 from 5 to 8
move 4 from 1 to 7
move 1 from 2 to 8
move 1 from 2 to 6
move 1 from 3 to 4
move 1 from 5 to 6
move 7 from 8 to 6
move 9 from 3 to 2
move 1 from 8 to 5
+53
View File
@@ -0,0 +1,53 @@
stacks = None
def initStacks(s):
global stacks
stacks = []
for i in range(s):
stacks.append([])
def reverseStacks():
global stacks
newStacks = []
for stack in stacks:
rstack = list(reversed(stack))
newStacks.append(rstack)
stacks = newStacks
def move(amount, source, dest):
for i in range(amount):
try:
srcstack = stacks[source-1]
dststack = stacks[dest-1]
m = srcstack.pop()
dststack.append(m)
except IndexError:
pass
def printAnswer():
answer = ""
for stack in stacks:
answer += stack[-1]
print(answer)
with open("input.txt", "r") as f:
line = "."
while line != "":
line = f.readline().strip()
s = int((len(line)-3)/4 + 1)
if stacks is None:
initStacks(s)
for i in range(s):
char = line[1+i*4]
if char != " ":
stacks[i].append(char)
reverseStacks()
print(stacks)
for line in f.readlines():
data = line.strip().split(" ")
amount = int(data[1])
source = int(data[3])
dest = int(data[5])
move(amount, source, dest)
print(stacks)
printAnswer()
+54
View File
@@ -0,0 +1,54 @@
stacks = None
def initStacks(s):
global stacks
stacks = []
for i in range(s):
stacks.append([])
def reverseStacks():
global stacks
newStacks = []
for stack in stacks:
rstack = list(reversed(stack))
newStacks.append(rstack)
stacks = newStacks
def move(amount, source, dest):
# Get substack of items to move
substack = stacks[source-1][-amount:]
# Remove the items from source
stacks[source-1] = stacks[source-1][:-amount]
# Get destination stack and place items
dststack = stacks[dest-1]
stacks[dest-1] = dststack + substack
def printAnswer():
answer = ""
for stack in stacks:
answer += stack[-1]
print(answer)
with open("input.txt", "r") as f:
line = "."
while line != "":
line = f.readline().strip()
s = int((len(line)-3)/4 + 1)
if stacks is None:
initStacks(s)
for i in range(s):
char = line[1+i*4]
if char != " ":
stacks[i].append(char)
reverseStacks()
print(stacks)
for line in f.readlines():
data = line.strip().split(" ")
amount = int(data[1])
source = int(data[3])
dest = int(data[5])
move(amount, source, dest)
print(stacks)
printAnswer()
+1
View File
@@ -0,0 +1 @@
dcbcsbblhhgdgssmcmqccdwdvwdvvcfvcfvvpvmmwccdqddshhdppcfpfbbfggfjfvvhzhmmsqswsttcgtctggjllhnnqbnnnldlglplvlbvbzztpzzvpphshwwfhhgssvgsvvpfvfzznbznndqqtsqttnvtvqqqrgqrrgzzlqzzbvzbzmzffnbfnbffcggdcggqhqpqzpqzqbbqvbqbhhtzhhrrrprlrclrcrssqspqpbblggfvvbpvbbssvttsztzpzjjwffnpnfnrrqhqgqrrzqzbzzdpdjpplpclpptltztjtztqthtmmmpsmmpjpqpvvshhsfshhrvrdvdggwssdbbzbttlmlmpprmrmlrrmqrqsshjhjljzjnjllbbvjvnnppqbppqqfffrbfbdfbbqppmtppfttqddtzzwbblqqbddgwgqwqzwwpzwzjjbccdjdwwrggrmrtmrtmrrvpptwwcdcwwsdshhjjhwjwqjwwqsshrrbsblssphspsjpssnsmsqswqwfwjwccdvccrqqnsqnsnwsnsmnmccvcqqfjjfljfljfjgjffjvffvjvhjhfhrfrlrrtpphbhwbbvmmnpndnlljdjfjsffvccnhchwhddrccljllmnnhmnmpnnhtnthnhvnhnwnqqjmmgzzvssphhjljbjwjbwwdnwwdvvzpvvhccvjjlclrrppgjgsshghvvzjvvpvvbjjqhjqqfcqffchcmmvdvtddftdtppfnppcnpnznwwpdpjpnpttlbbmmqfqmffqnfnbffbrbgbwggsmsbbfgbbfbzbtzbbvmmdlmlrlnlwwbswsjjpjhhwqwzqznqzqvvwccwvwwcbbpvvwcvcvzzhzchzccbnccjlljsjbjdbbvqbvvfdfgdfggzfzlzmzrznnqsnncmnnljjtcjcfftrthtrhrgrvvjggzpggrcrpcppggdfggpmmwnmnlmlglvvmjvvddsmsjsnjssqffffctczcjzjjlbbhpbbfdbdzbbsjbjnjbbqqjbqjbjjhwhssmvsschhhwppbjppllprpjrppdpfpgpjptjtptplpnptnptpjjmcmnnnhnjhjlhjlhjlhlwwhwmwjjbhhlfffrbbgvvqwvwswtstmmmfpmfpffmcfcrrqsqzqjjjnpnnztnznddlwdldsdbssstzstswwjtttmmwmsmwssvswszsjzsjjsffmccmfccqzzvpmbbbsqffgzdqbjtzhlqdzhlpwghlstcrcrffrnbwjnqgmbmpgttfmsswdqctlrpdnlsgnlldvbfpwtcptvbwftzcnbbscrrcpnwtmllcvsrmwzzlsdmfctdcwsqdlsnzgfpmzrnswhbqjhstztzzmzpcttsgsggnlhvjmcbbrhgqhsfmglpcbdvmmmnfbtbfrqbpcmttjtnwvznbshwrmznnsvpjqjntlzspljnbwtjcqztsfcqlrggrpzjgjsvqqcrmrjmzwdsshqfhbtfmlwmfvtbcgdmjgtcnphfmfmjlbjzrvjslccftnwcchgdwjnlthlwgldjwqwgdptdjdmzdrrzcdpbfrtdgcspjtqdqvzswwdwrhggdrqjjgwwrbwhhlrpqmszvlvjfqptncjlscvzbgzgmsttlbhbfrctnsphjcrcwlhcgrcrsjbrjvptgfbjgjrvtzmnhpzcgptbmrgvstsltnctjphsjdwpdqblfswzfhgjbpfrptlmhfwcpdlzqccgtdvbzhwngrhlqftmlhjprscflgzpflvvpfsjmlnmbzsrlrshvnsqrhhlqdlzhrcbjjjfrbqcdspwsmltcrtlbdnbnvhbbwgqdcncsztbfwztzdbqgcrnvndmpstpncbwvtctzdpmcpvrgqvjjztfwpvjtdqlvcvdpfzgcghsmbcwtzztmqwdpsprgsmfhphqsqmflrjdqzjscgzlnvcwcrlmpdscnhqpqjfdbdftqgttwntdbpnshdwnmwsrslfgnzlnwwwqgdbfnthhqtvbzsqgzjhhghtmvvfhlmlpbghnsvlttzsjlgndhdqmqqfdlqnbfscsnnqzcdwzdlqcnstcbsffghftqvwrsshgwmlnprhdnnwslwfwtmtfzdjwpmlvvdhjvdwrhvdsmpgrdpnqsjpqmhttrmdwllrmnbznwjwvvpjnnbnfzbdnhjbqqrnzgdqbspbqtwdpgsbwpzfdbpvzfjpsgmztnzrpvvhwlfscfvfpfblvplgdbhvjjpdjtnwrmvpjsphvglpsntvwtqwqvprcgwjltddpjngvmzfzhmqnnwglbzsbrcztpplpsmgmcfgzgpbtgsjrfvdzzcsthznvdpbwvdlcgdhncsjdvpcbbmtrqczctjljdfghsrvrsfjglqqhjttfdhqdqwhzhqrggsjwlldrntwmmbftgqjhpvvctpbtgltnttlhdqbsbwcqmctwlsnhmhncpmnzsllmjhcgnlfgvpcqrwzvsstgwbvjtnrlbblclzdrcwddrwnptqzgwdwtgrfwffpzjmwbqfmmrcfzfzjbwsslbhggtwtcrlhffzgfgrtljgnznnlgzwfmtwwqzhlthvpfclrtmrqfzrggbctzfsmjhrtwzpfrnhwwprnbwmvwvmvnzqpggmzgslctqbqdtvhgzjwzsnblqzmcpnpwllzhvzzmfqzfjlrsrcnjzqdzbpjftljtzvvmrjszvqllnhhgnrnqttnwlvllphjtnmlwqhcvmbsvnwtcdmhsmhdcwqwtvggcqfpdsrsscmhcvfzvdnffrfhdfmgbsghdbpwdwrdmlvsnzwcfchcqvccszdqrbnfvrpbftcwnjmczwgqzmtlmrthlhtjpmchltcmcqwgfgshtvtpmcmpbmlnjmhnpdsljjmjzddnlgtnjqztzsqqlhtqcscjvjncjvfcvsgjhqgzrmtjjcgvvmwswffmlcvlhqhbvrldrvbrfmmqcnqmfzlsghvclrdbsvcbqspgbzmjnlrdhvncnbcfmdlqrssggsmlwwglcjjzmcdwcnrgvvmgjcfbzlncmgqtllgldbdztbtfcjczqtjjlnpqmrgtjsmrbscvqlgqghfbgwccgwrjrzrsbbrqnjcqhllsqmrjtzmjnndwwmdjfhspjpgdcjjpdvwrsgjcfnpllnnnccvnfvqbpddgvbgbsbczmbzrbclczljdmbhpgmhwlqvnjzjwzzfjmsmcchjrqrtmhwlgjsptctlbtdnrqgntcvngcrqdqptfmhbvlhrqchdtwdwbrbqwtswzcrrfndldwmjbczppzrnncvvqsmpvvqcnsvhprhlmrhnjbwdvrbbwwdtmzrqttschrztgjcshlhfbmhmwrrmwgmfshpdhjwgdmcfdvqrmmwgmzbrlgbfltvlzmvqbgvhppdzglqbdlrhjnntnfvtmzjqccmqdbpjqphfggmjqdrndhclcfvqsjrsbcgdhcrbjsdjmwrzvpfpcjwjfdltztfzgmlzqzmztpvbflppgnhdzssznngfjggczdtdmcczjzfsnflpwqrbggmqdbbprfptzcdqvhrvszzjqqjlrlrdpwcnzhvgfhpcdbbgsfmtnszwbhwcdwdghqqctwqlqrlqbdwfvjnhcpmzchqfrwzhzgslzhncmrlrpzcjczvzwcvwcldbmscfqnnqnwwvrpfvjswqmhgmhgnmfzpsjmdhbpvsftccttvdpcdzcnzswqmtrwbctpbgmzrvrrshjjgdqsqrwfpcmsbvqhccvjqpztlttwjjdtbmwslschpqjjllvjcjwtmrtvvwdzglstvtpndmmzcpgqsvqgfdtqdjdctsbsbmqzqhtczhgqgwbdlrhjrwcmtbzfndsbnpnhmsdhtghwwzvtdwtscdnwzmrjrsrjvvbvrpbszchwbltrjbcqmlhqnzcfbhjqnsjghlnlbsrgzrrzfvslwpbqmgfswhgjdsdfrzsdhvdqvqfbcbvmbfhjfpzwlbspcbnvrgpfnmjbwbsnpqpqhjpsnwrlcmfhpdmjbvpnctcfqgdmwzblsnr
+20
View File
@@ -0,0 +1,20 @@
from collections import deque
LEN = 4
dups = deque(maxlen=LEN)
def hasdups():
for x in dups:
if dups.count(x) > 1:
return True
return False
with open("input.txt", "r") as f:
line = f.readline().strip()
for (index, char) in enumerate(line):
dups.append(char)
print(char)
print(dups)
if len(dups) >= LEN and not hasdups():
print(index+1)
break
+20
View File
@@ -0,0 +1,20 @@
from collections import deque
LEN = 14
dups = deque(maxlen=LEN)
def hasdups():
for x in dups:
if dups.count(x) > 1:
return True
return False
with open("input.txt", "r") as f:
line = f.readline().strip()
for (index, char) in enumerate(line):
dups.append(char)
print(char)
print(dups)
if len(dups) >= LEN and not hasdups():
print(index+1)
break
+980
View File
@@ -0,0 +1,980 @@
$ cd /
$ ls
dir csjncqmr
dir fnfjhvsp
dir mhfrct
dir pgmgbfcl
dir qcf
dir wrsjr
$ cd csjncqmr
$ ls
8827 vdrdm.pfj
$ cd ..
$ cd fnfjhvsp
$ ls
dir csjncqmr
dir czpmg
162385 dcgph
7135 hff.cdt
$ cd csjncqmr
$ ls
121543 gzjdsn.wlc
dir ljq
$ cd ljq
$ ls
dir cwlrlvf
dir jpqjhhpg
$ cd cwlrlvf
$ ls
151219 dcgph
$ cd ..
$ cd jpqjhhpg
$ ls
188355 dcgph
38458 gfgl.hlg
$ cd ..
$ cd ..
$ cd ..
$ cd czpmg
$ ls
168232 dcgph
143031 gzjdsn.wlc
$ cd ..
$ cd ..
$ cd mhfrct
$ ls
dir clm
66710 dcgph
232576 mtfhpcnj
$ cd clm
$ ls
dir pgmgbfcl
$ cd pgmgbfcl
$ ls
110296 qbfhj.tmn
$ cd ..
$ cd ..
$ cd ..
$ cd pgmgbfcl
$ ls
163613 cgchl
dir nnlr
123977 rrwbnmlh.jtt
dir tjhzggs
dir wfl
252837 wpgrl
$ cd nnlr
$ ls
103051 flp
dir qrhlzd
dir rcgmhz
dir snwrlr
dir vgj
dir znbzt
$ cd qrhlzd
$ ls
dir crg
246915 dcgph
264791 fcphzfb.fmb
299291 flp
dir mjqsg
297202 pgmgbfcl
dir sbbzgbz
dir wnsnssbg
$ cd crg
$ ls
55556 flp
185529 jswdvn
$ cd ..
$ cd mjqsg
$ ls
dir fnfjhvsp
dir jfbzjz
dir rwg
$ cd fnfjhvsp
$ ls
24945 cctwbs
170960 csjncqmr
316168 ljffgvvz.zld
187325 pgmgbfcl.fzv
74133 qbfhj.tmn
dir tjhzggs
dir vjmgmdz
$ cd tjhzggs
$ ls
287777 csjncqmr.nbd
$ cd ..
$ cd vjmgmdz
$ ls
dir vgpb
$ cd vgpb
$ ls
202578 bbbg.hlr
$ cd ..
$ cd ..
$ cd ..
$ cd jfbzjz
$ ls
207736 tjhzggs.cql
$ cd ..
$ cd rwg
$ ls
184997 csjncqmr
4378 dcgph
55767 qnc.wvv
$ cd ..
$ cd ..
$ cd sbbzgbz
$ ls
321376 csjncqmr
317438 flp
9263 hrs
$ cd ..
$ cd wnsnssbg
$ ls
dir jdjv
$ cd jdjv
$ ls
153354 gzjdsn.wlc
$ cd ..
$ cd ..
$ cd ..
$ cd rcgmhz
$ ls
dir tjhzggs
$ cd tjhzggs
$ ls
299192 jfbzjz.ttg
$ cd ..
$ cd ..
$ cd snwrlr
$ ls
30314 csjncqmr.jvn
dir hcf
$ cd hcf
$ ls
81979 jfbzjz.pfz
179459 ngh
$ cd ..
$ cd ..
$ cd vgj
$ ls
278579 jbn.rgz
dir jzj
dir lnbhh
dir pgmgbfcl
dir qgvspcpm
$ cd jzj
$ ls
295808 hrs
220437 vqbcl
$ cd ..
$ cd lnbhh
$ ls
212203 nfmhd.hbq
233853 qgz.mcd
$ cd ..
$ cd pgmgbfcl
$ ls
dir mmbdpj
138462 mwcdrpm.spr
288430 pgmgbfcl.pwd
132880 rdmwtn.qjj
41775 rfqb.djh
dir rnd
69597 thnbf
$ cd mmbdpj
$ ls
158542 hrs
306559 tjhzggs
$ cd ..
$ cd rnd
$ ls
223745 fnfjhvsp.hgt
138236 gdmtnffs.cdm
dir gmzb
dir hvl
266178 mzwmjl.rqq
dir njpq
33906 qbfhj.tmn
dir tjhzggs
$ cd gmzb
$ ls
186579 nsbfn.lsd
$ cd ..
$ cd hvl
$ ls
312925 csjncqmr.sbc
75264 gqp
81003 gzjdsn.wlc
$ cd ..
$ cd njpq
$ ls
188139 lbnrr.pwd
213545 qgqddvwf.hfl
$ cd ..
$ cd tjhzggs
$ ls
dir dlwvc
191782 jfbzjz
dir tbldpln
$ cd dlwvc
$ ls
75927 jvhjtnft
260563 qbfhj.tmn
dir vlg
$ cd vlg
$ ls
187660 hgm
dir rhr
273019 tdgr.crr
$ cd rhr
$ ls
286129 wnn.jgn
$ cd ..
$ cd ..
$ cd ..
$ cd tbldpln
$ ls
173546 pdfrsq.pnb
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd qgvspcpm
$ ls
dir dhrbsl
286566 fldhvbq
209725 gzjdsn.wlc
148148 nspz.gwc
111003 tjhzggs
$ cd dhrbsl
$ ls
58390 gzjdsn.wlc
150545 hrs
$ cd ..
$ cd ..
$ cd ..
$ cd znbzt
$ ls
211651 gwhb.mfz
$ cd ..
$ cd ..
$ cd tjhzggs
$ ls
dir hgr
229076 jfbzjz.dfh
dir ptfcbwwv
51893 qbfhj.tmn
97712 qgtvfh.hvs
$ cd hgr
$ ls
dir hwvgjdq
dir vwvbt
$ cd hwvgjdq
$ ls
dir pgmgbfcl
$ cd pgmgbfcl
$ ls
dir qgs
$ cd qgs
$ ls
188108 hrs
$ cd ..
$ cd ..
$ cd ..
$ cd vwvbt
$ ls
169212 tfrm.gjb
$ cd ..
$ cd ..
$ cd ptfcbwwv
$ ls
67829 lpszzl
$ cd ..
$ cd ..
$ cd wfl
$ ls
dir hfcm
$ cd hfcm
$ ls
73872 flp
$ cd ..
$ cd ..
$ cd ..
$ cd qcf
$ ls
dir ctjw
177175 dwzmnpr
dir fqldn
dir hmjnnjjj
301788 hrs
dir lgmld
dir pgmgbfcl
76771 qzsbm.zdb
dir scbgn
234764 vhrlgcf
$ cd ctjw
$ ls
139505 mflt.hnr
$ cd ..
$ cd fqldn
$ ls
dir bgq
7260 flgrh.tmt
dir fnfjhvsp
dir fnr
dir gsnqjmw
10529 gzjdsn.wlc
22877 hrs
dir hzbrgrfq
dir snmbwrzn
dir tjhzggs
6773 tzhsjsc
$ cd bgq
$ ls
40780 gzjdsn.wlc
233301 mnzdbpc
dir mpdjgbgf
303076 qbfhj.tmn
dir qjs
189723 sbzn.dtj
dir vhnqcrd
$ cd mpdjgbgf
$ ls
227105 dcgph
298219 dprcwts.vdt
$ cd ..
$ cd qjs
$ ls
214072 pgmgbfcl
264897 qbfhj.tmn
$ cd ..
$ cd vhnqcrd
$ ls
178950 fnfjhvsp
180561 pgmgbfcl.mst
312980 pgmgbfcl.twp
$ cd ..
$ cd ..
$ cd fnfjhvsp
$ ls
141191 fnfjhvsp.bng
81709 pgmgbfcl.sfw
$ cd ..
$ cd fnr
$ ls
316638 flp
dir fnfjhvsp
dir fqdnn
267054 gdnln
dir hfcrzwvm
dir rdljd
319112 wpcmfbr.zgp
$ cd fnfjhvsp
$ ls
115581 hrs
dir jfbzjz
$ cd jfbzjz
$ ls
170398 qbfhj.tmn
$ cd ..
$ cd ..
$ cd fqdnn
$ ls
dir cfg
dir jbjltw
$ cd cfg
$ ls
dir qljztr
dir tnsw
dir zhnqp
$ cd qljztr
$ ls
64638 bnlsrfb
63440 csjncqmr
206111 gzjdsn.wlc
207890 hrs
265995 pgmgbfcl.zcw
$ cd ..
$ cd tnsw
$ ls
85166 lsflqzmc
$ cd ..
$ cd zhnqp
$ ls
217666 csjncqmr.cch
$ cd ..
$ cd ..
$ cd jbjltw
$ ls
88043 dcgph
238483 hrs
189734 jnvwjs
243936 pgmgbfcl.wsr
$ cd ..
$ cd ..
$ cd hfcrzwvm
$ ls
dir vwc
$ cd vwc
$ ls
82566 shc.qhj
$ cd ..
$ cd ..
$ cd rdljd
$ ls
68011 ptw.bgd
$ cd ..
$ cd ..
$ cd gsnqjmw
$ ls
236818 gzjdsn.wlc
$ cd ..
$ cd hzbrgrfq
$ ls
240924 dcgph
dir dcjsv
dir dsrzdjfm
dir fnfjhvsp
dir hnzm
dir mqb
94014 smpnth.bbm
$ cd dcjsv
$ ls
316708 cmddvb
dir fnfjhvsp
$ cd fnfjhvsp
$ ls
dir fnfjhvsp
$ cd fnfjhvsp
$ ls
dir jqlcvds
$ cd jqlcvds
$ ls
51018 dqfbq.ggm
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd dsrzdjfm
$ ls
262938 csjncqmr.dmm
125129 mwcnlvhv.szp
150590 qbfhj.tmn
dir rrrzpsn
196430 vbdgb
dir vsfbwfdl
$ cd rrrzpsn
$ ls
dir tjhzggs
281655 tjhzggs.btg
dir tsjzf
$ cd tjhzggs
$ ls
291402 gbl
dir hctmr
dir hqdmpwl
225075 hrs
dir jfbzjz
51032 tjhzggs.qzr
$ cd hctmr
$ ls
113430 qbfhj.tmn
$ cd ..
$ cd hqdmpwl
$ ls
67634 tjhzggs
$ cd ..
$ cd jfbzjz
$ ls
193552 nmvl.tzj
197076 pgmgbfcl
11047 tjhzggs
$ cd ..
$ cd ..
$ cd tsjzf
$ ls
36205 jwmdtdjv
$ cd ..
$ cd ..
$ cd vsfbwfdl
$ ls
288660 flp
185921 jfbzjz
dir mqmvtddt
124423 nfbfq.dln
dir wzbc
$ cd mqmvtddt
$ ls
85529 bhjp.vvj
$ cd ..
$ cd wzbc
$ ls
77316 flp
271730 pgmgbfcl.lcd
$ cd ..
$ cd ..
$ cd ..
$ cd fnfjhvsp
$ ls
47666 mpwtvwd.fwr
$ cd ..
$ cd hnzm
$ ls
157672 flp
294957 gzjdsn.wlc
297187 lbssg
24223 qbfhj.tmn
dir rdnqrgt
177449 tld.tsd
$ cd rdnqrgt
$ ls
dir nltjzrrr
217347 vrb.gcd
$ cd nltjzrrr
$ ls
dir zzd
$ cd zzd
$ ls
47464 flp
dir fnfjhvsp
$ cd fnfjhvsp
$ ls
89424 qtzfddz.btd
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd mqb
$ ls
105537 tjhzggs.wns
$ cd ..
$ cd ..
$ cd snmbwrzn
$ ls
dir mqt
dir nsdrn
dir rjn
$ cd mqt
$ ls
233842 pgmgbfcl
$ cd ..
$ cd nsdrn
$ ls
67018 dcgph
17296 flp
274166 gzjdsn.wlc
186308 jfbzjz
280195 lvbsrvwm.zlq
dir pjv
dir thlp
$ cd pjv
$ ls
123190 rfbj.gmq
$ cd ..
$ cd thlp
$ ls
141308 flp
188164 jfbzjz
299013 pgmgbfcl
171259 qbfhj.tmn
dir qsljb
$ cd qsljb
$ ls
291980 glcnlj.swh
$ cd ..
$ cd ..
$ cd ..
$ cd rjn
$ ls
181047 fqmhpg.hpl
$ cd ..
$ cd ..
$ cd tjhzggs
$ ls
dir csjncqmr
274202 fhfjvdjc.swt
dir fnfjhvsp
97050 frbpp.wch
dir gnbtgdr
dir jfbzjz
dir lpg
dir pgmgbfcl
dir twcdfdcv
dir wzd
dir zllcflrn
$ cd csjncqmr
$ ls
dir chpmwsfj
dir csjncqmr
57088 fnfjhvsp.jqg
52097 vgcm.dpv
$ cd chpmwsfj
$ ls
279480 tjhzggs.srw
$ cd ..
$ cd csjncqmr
$ ls
13716 dcgph
dir fqb
dir jfbzjz
dir msvlnt
88312 pgmgbfcl.qcf
$ cd fqb
$ ls
dir mmjfbvq
$ cd mmjfbvq
$ ls
79822 flp
$ cd ..
$ cd ..
$ cd jfbzjz
$ ls
302531 csjncqmr
164326 dcgph
8277 fnfjhvsp.rbv
dir jgsrgrtc
dir zwdgcd
$ cd jgsrgrtc
$ ls
60317 gzjdsn.wlc
$ cd ..
$ cd zwdgcd
$ ls
171967 fpls.fvd
$ cd ..
$ cd ..
$ cd msvlnt
$ ls
83178 cnhzh
11226 tjhzggs
$ cd ..
$ cd ..
$ cd ..
$ cd fnfjhvsp
$ ls
89882 dcgph
212817 qbfhj.tmn
257899 tjhzggs
$ cd ..
$ cd gnbtgdr
$ ls
dir flltghn
dir fnfjhvsp
dir jfbzjz
300698 ngcsnwb
292809 qtcqhdq
dir vbwjgf
280270 wbzcr.sgn
$ cd flltghn
$ ls
111452 rhgfv
$ cd ..
$ cd fnfjhvsp
$ ls
dir lbznfb
31273 nrtrqqc.cth
$ cd lbznfb
$ ls
175736 ljpr.cwm
$ cd ..
$ cd ..
$ cd jfbzjz
$ ls
237625 tjhzggs
$ cd ..
$ cd vbwjgf
$ ls
269242 jrrw.ljb
106705 pqnbrbt
$ cd ..
$ cd ..
$ cd jfbzjz
$ ls
dir dnn
$ cd dnn
$ ls
19045 dcgph
187257 tjhzggs.qzg
$ cd ..
$ cd ..
$ cd lpg
$ ls
101509 fnfjhvsp.nnt
221211 ldgjngjq
$ cd ..
$ cd pgmgbfcl
$ ls
dir bzbdphz
37920 flp
dir wpsm
$ cd bzbdphz
$ ls
252099 ffsfqfdw
312106 htft
298880 jfbvz.znw
135204 lrwccthr
dir zhbqf
108144 zsbbfhz.drr
$ cd zhbqf
$ ls
dir gtw
298022 svpgsrgj.ljz
$ cd gtw
$ ls
dir csjncqmr
dir rpzjg
$ cd csjncqmr
$ ls
278962 flp
272127 tjhzggs
$ cd ..
$ cd rpzjg
$ ls
92241 flp
$ cd ..
$ cd ..
$ cd ..
$ cd ..
$ cd wpsm
$ ls
15936 flp
241514 qbfhj.tmn
245049 rjgwzlq.qrw
$ cd ..
$ cd ..
$ cd twcdfdcv
$ ls
140758 bjm
78772 dcgph
114059 mqsgrc.qcb
$ cd ..
$ cd wzd
$ ls
dir fnfjhvsp
dir mcbnp
$ cd fnfjhvsp
$ ls
72702 csjncqmr.jfn
120586 dcgph
$ cd ..
$ cd mcbnp
$ ls
12494 fnfjhvsp.frc
182092 gsv
17859 pdbvmblc.vng
116984 pfbdf
113843 prshrmg.srm
$ cd ..
$ cd ..
$ cd zllcflrn
$ ls
30966 flp
245820 jfbzjz.rnd
$ cd ..
$ cd ..
$ cd ..
$ cd hmjnnjjj
$ ls
134366 dcgph
212399 dtsb
255795 zhbcjtr
$ cd ..
$ cd lgmld
$ ls
55248 pgmgbfcl
62265 pgmgbfcl.nbg
240733 zhmff
$ cd ..
$ cd pgmgbfcl
$ ls
232717 fnfjhvsp
219581 gtcjbwpz.lmz
47399 gzjdsn.wlc
22814 hjqf
296672 hrs
dir nrzf
dir wqgcmnpp
dir wwvmdjz
dir zlhv
$ cd nrzf
$ ls
18406 dcgph
dir mhm
$ cd mhm
$ ls
95168 pgmgbfcl.hqv
$ cd ..
$ cd ..
$ cd wqgcmnpp
$ ls
dir csjncqmr
189963 dvcd.tnh
dir gzqrt
dir njffft
dir qvqp
6981 tjhzggs
dir wgfnlfsd
$ cd csjncqmr
$ ls
307371 cdptrw.rfm
$ cd ..
$ cd gzqrt
$ ls
dir pwsqss
$ cd pwsqss
$ ls
173397 flp
$ cd ..
$ cd ..
$ cd njffft
$ ls
dir bzhzg
dir tjhzggs
$ cd bzhzg
$ ls
213821 pgmgbfcl
$ cd ..
$ cd tjhzggs
$ ls
dir szvfzgj
$ cd szvfzgj
$ ls
196306 tjhzggs.hjh
$ cd ..
$ cd ..
$ cd ..
$ cd qvqp
$ ls
dir pgmgbfcl
$ cd pgmgbfcl
$ ls
114456 flp
252954 pgmgbfcl
$ cd ..
$ cd ..
$ cd wgfnlfsd
$ ls
212011 gzjdsn.wlc
$ cd ..
$ cd ..
$ cd wwvmdjz
$ ls
70022 dcgph
dir hjgvstp
dir jhgb
276853 qbfhj.tmn
242756 qdqswjjd.wnn
dir tjhzggs
292963 wcgmgmz.shb
$ cd hjgvstp
$ ls
24056 tdjwdw
$ cd ..
$ cd jhgb
$ ls
90571 gzjdsn.wlc
132326 rrvfml.dms
$ cd ..
$ cd tjhzggs
$ ls
29139 dmrsz.qhc
$ cd ..
$ cd ..
$ cd zlhv
$ ls
315120 dcgph
290175 pgvlcvpb
$ cd ..
$ cd ..
$ cd scbgn
$ ls
258300 bcchv.qsn
$ cd ..
$ cd ..
$ cd wrsjr
$ ls
dir csjncqmr
dir jfbzjz
dir nmfmqb
dir svgtrz
dir zjvhmd
$ cd csjncqmr
$ ls
148619 qbfhj.tmn
$ cd ..
$ cd jfbzjz
$ ls
dir csjncqmr
dir flrhpzt
dir fnfjhvsp
dir gpwv
dir lwrtc
$ cd csjncqmr
$ ls
dir czmlfmf
137365 flp
dir hggbs
107369 mpgm.lbl
$ cd czmlfmf
$ ls
dir hnpjvq
$ cd hnpjvq
$ ls
41339 fnfjhvsp.wnv
$ cd ..
$ cd ..
$ cd hggbs
$ ls
273367 qbfhj.tmn
$ cd ..
$ cd ..
$ cd flrhpzt
$ ls
200923 fwb
62059 hrs
$ cd ..
$ cd fnfjhvsp
$ ls
dir gdnmpgn
256037 hrs
$ cd gdnmpgn
$ ls
64024 jmww.gbb
$ cd ..
$ cd ..
$ cd gpwv
$ ls
159155 hrs
$ cd ..
$ cd lwrtc
$ ls
150299 nzvqj.dsv
129702 pgmgbfcl.lrt
dir zvgb
$ cd zvgb
$ ls
304137 hrs
$ cd ..
$ cd ..
$ cd ..
$ cd nmfmqb
$ ls
139823 jfbzjz
299946 nqqscdn.wsw
$ cd ..
$ cd svgtrz
$ ls
dir jdlvtm
123801 phhrgrbs
$ cd jdlvtm
$ ls
267972 tbgcnf.pqz
$ cd ..
$ cd ..
$ cd zjvhmd
$ ls
287427 csjncqmr.tfj
297578 hhhp.jvt
+29
View File
@@ -0,0 +1,29 @@
dirstack = [] # Stack of directories we are currently at
directories = {} # Maps paths to total filesums
def addsize(size):
for (i, dir) in enumerate(dirstack):
path = "/".join(dirstack[:i+1])
if not path in directories:
directories[path] = 0
directories[path] += size
with open("input.txt", "r") as f:
for line in f.readlines():
line = line.strip()
if line[0] == '$' and line[2] == 'c':
folder = line.split("$ cd ")[1]
if folder == '..':
dirstack.pop()
else:
dirstack.append(folder)
else:
indicator = line.split(" ")[0]
try:
size = int(indicator)
addsize(size)
except:
pass
sum = 0
[sum := sum + directories[x] for x in directories if directories[x] <= 100000]
print(sum)