Compare commits
19 Commits
cb0c5fa868
...
main
Author | SHA1 | Date | |
---|---|---|---|
85b64b3ef6 | |||
762f9b0700 | |||
47a16a9b6a | |||
c474e4b25e | |||
4de4e05050 | |||
afcbbaea49 | |||
83a09fb74b | |||
e2515cc93a | |||
9a84104dbe | |||
dae686df17 | |||
35b065f882 | |||
4678f22963 | |||
3ccc8b3ebf | |||
2c9c2248ab | |||
e0dabfc0a1 | |||
ac039d70e3 | |||
e29c8b94eb | |||
d7416215e7 | |||
bf5c0da352 |
2000
2021/01/input
Normal file
2000
2021/01/input
Normal file
File diff suppressed because it is too large
Load Diff
14
2021/01/part1
Executable file
14
2021/01/part1
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
last_depth = -1
|
||||||
|
count = 0
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
for line in f:
|
||||||
|
depth = int(line)
|
||||||
|
if last_depth > 0 and last_depth < depth:
|
||||||
|
count = count +1
|
||||||
|
last_depth = depth
|
||||||
|
|
||||||
|
print(count)
|
||||||
|
|
25
2021/01/part2
Executable file
25
2021/01/part2
Executable file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
last = -1
|
||||||
|
count = 0
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
window = []
|
||||||
|
for line in f:
|
||||||
|
depth = int(line)
|
||||||
|
|
||||||
|
window.append(depth)
|
||||||
|
if len(window) < 3:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if len(window) > 3:
|
||||||
|
window.pop(0)
|
||||||
|
|
||||||
|
cur = sum(window)
|
||||||
|
|
||||||
|
if last > 0 and last < cur:
|
||||||
|
count = count +1
|
||||||
|
last = cur
|
||||||
|
|
||||||
|
print(count)
|
||||||
|
|
1000
2021/02/input
Normal file
1000
2021/02/input
Normal file
File diff suppressed because it is too large
Load Diff
24
2021/02/part1
Executable file
24
2021/02/part1
Executable file
@@ -0,0 +1,24 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
depth = 0
|
||||||
|
hPos = 0
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
for line in f:
|
||||||
|
cmd, numStr = line.split(" ", 2)
|
||||||
|
num = int(numStr)
|
||||||
|
|
||||||
|
# match...case is python 3.10+
|
||||||
|
if cmd == "forward":
|
||||||
|
hPos = hPos + num
|
||||||
|
elif cmd == "backward":
|
||||||
|
hPos = hPos - num
|
||||||
|
elif cmd == "up":
|
||||||
|
depth = depth - num
|
||||||
|
elif cmd == "down":
|
||||||
|
depth = depth + num
|
||||||
|
else:
|
||||||
|
raise "unknown command: "+cmd
|
||||||
|
|
||||||
|
print(depth * hPos)
|
||||||
|
|
26
2021/02/part2
Executable file
26
2021/02/part2
Executable file
@@ -0,0 +1,26 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
depth = 0
|
||||||
|
hPos = 0
|
||||||
|
aim = 0
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
for line in f:
|
||||||
|
cmd, numStr = line.split(" ", 2)
|
||||||
|
num = int(numStr)
|
||||||
|
|
||||||
|
# match...case is python 3.10+
|
||||||
|
if cmd == "forward":
|
||||||
|
hPos = hPos + num
|
||||||
|
depth = depth + (aim*num)
|
||||||
|
elif cmd == "backward":
|
||||||
|
hPos = hPos - num
|
||||||
|
elif cmd == "up":
|
||||||
|
aim = aim - num
|
||||||
|
elif cmd == "down":
|
||||||
|
aim = aim + num
|
||||||
|
else:
|
||||||
|
raise "unknown command: "+cmd
|
||||||
|
|
||||||
|
print(depth * hPos)
|
||||||
|
|
1000
2021/03/input
Normal file
1000
2021/03/input
Normal file
File diff suppressed because it is too large
Load Diff
28
2021/03/part1
Executable file
28
2021/03/part1
Executable file
@@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
gamma = 0
|
||||||
|
epsilon = 0
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
total = 0
|
||||||
|
g_counts = [0,0,0,0,0,0,0,0,0,0,0,0]
|
||||||
|
e_counts = [0,0,0,0,0,0,0,0,0,0,0,0]
|
||||||
|
|
||||||
|
for line in f:
|
||||||
|
total += 1
|
||||||
|
for idx, chr in enumerate(line[0:12]):
|
||||||
|
if chr == '1':
|
||||||
|
g_counts[idx]+=1
|
||||||
|
else:
|
||||||
|
e_counts[idx]+=1
|
||||||
|
|
||||||
|
target = total / 2
|
||||||
|
for idx, val in enumerate(g_counts):
|
||||||
|
if val > target:
|
||||||
|
gamma += (1 << (11-idx))
|
||||||
|
for idx, val in enumerate(e_counts):
|
||||||
|
if val > target:
|
||||||
|
epsilon += (1 << (11-idx))
|
||||||
|
|
||||||
|
print(gamma * epsilon)
|
||||||
|
|
2267
2022/01/input
Normal file
2267
2022/01/input
Normal file
File diff suppressed because it is too large
Load Diff
23
2022/01/part1
Executable file
23
2022/01/part1
Executable file
@@ -0,0 +1,23 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
elves = []
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
elf = []
|
||||||
|
for line in f:
|
||||||
|
if line == "\n":
|
||||||
|
elves.append(elf)
|
||||||
|
elf = []
|
||||||
|
else:
|
||||||
|
calories = int(line)
|
||||||
|
elf.append(calories)
|
||||||
|
|
||||||
|
most = 0
|
||||||
|
|
||||||
|
for elf in elves:
|
||||||
|
calories = sum(elf)
|
||||||
|
if calories > most:
|
||||||
|
most = calories
|
||||||
|
|
||||||
|
print(most)
|
||||||
|
|
15
2022/01/part2
Executable file
15
2022/01/part2
Executable file
@@ -0,0 +1,15 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
elves = []
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
elf = []
|
||||||
|
for line in f:
|
||||||
|
if line == "\n":
|
||||||
|
elves.append(elf)
|
||||||
|
elf = []
|
||||||
|
else:
|
||||||
|
calories = int(line)
|
||||||
|
elf.append(calories)
|
||||||
|
|
||||||
|
print(sum(sorted(map(sum, elves), reverse=True)[0:3]))
|
2500
2022/02/input
Normal file
2500
2022/02/input
Normal file
File diff suppressed because it is too large
Load Diff
33
2022/02/part1
Executable file
33
2022/02/part1
Executable file
@@ -0,0 +1,33 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
# lose: 0
|
||||||
|
# draw: 3
|
||||||
|
# win: 6
|
||||||
|
|
||||||
|
outcomes = {
|
||||||
|
'A': { # rock: 1
|
||||||
|
'X': 1 + 3, # rock
|
||||||
|
'Y': 2 + 6, # paper
|
||||||
|
'Z': 3 + 0 # scissors
|
||||||
|
},
|
||||||
|
'B': { # paper: 2
|
||||||
|
'X': 1 + 0, # rock
|
||||||
|
'Y': 2 + 3, # paper
|
||||||
|
'Z': 3 + 6 # scissors
|
||||||
|
},
|
||||||
|
'C': { # scissors: 3
|
||||||
|
'X': 1 + 6, # rock
|
||||||
|
'Y': 2 + 0, # paper
|
||||||
|
'Z': 3 + 3 # scissors
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
score = 0
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
for line in f:
|
||||||
|
moves = line.rstrip().split(" ")
|
||||||
|
score = score + outcomes[moves[0]][moves[1]]
|
||||||
|
|
||||||
|
print(score)
|
||||||
|
|
66
2022/02/part2
Executable file
66
2022/02/part2
Executable file
@@ -0,0 +1,66 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
# lose: 0
|
||||||
|
# draw: 3
|
||||||
|
# win: 6
|
||||||
|
|
||||||
|
# x: need to lose
|
||||||
|
# y: need to draw
|
||||||
|
# z: need to win
|
||||||
|
|
||||||
|
ROCK = 'A'
|
||||||
|
PAPER = 'B'
|
||||||
|
SCISSORS = 'C'
|
||||||
|
|
||||||
|
LOSE = 'X'
|
||||||
|
DRAW = 'Y'
|
||||||
|
WIN = 'Z'
|
||||||
|
|
||||||
|
outcomes = {
|
||||||
|
ROCK: { # rock: 1
|
||||||
|
ROCK: 1 + 3, # rock
|
||||||
|
PAPER: 2 + 6, # paper
|
||||||
|
SCISSORS: 3 + 0 # scissors
|
||||||
|
},
|
||||||
|
PAPER: { # paper: 2
|
||||||
|
ROCK: 1 + 0, # rock
|
||||||
|
PAPER: 2 + 3, # paper
|
||||||
|
SCISSORS: 3 + 6 # scissors
|
||||||
|
},
|
||||||
|
SCISSORS: { # scissors: 3
|
||||||
|
ROCK: 1 + 6, # rock
|
||||||
|
PAPER: 2 + 0, # paper
|
||||||
|
SCISSORS: 3 + 3 # scissors
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
strategies = {
|
||||||
|
ROCK: {
|
||||||
|
LOSE: SCISSORS,
|
||||||
|
DRAW: ROCK,
|
||||||
|
WIN: PAPER
|
||||||
|
},
|
||||||
|
PAPER: {
|
||||||
|
LOSE: ROCK,
|
||||||
|
DRAW: PAPER,
|
||||||
|
WIN: SCISSORS
|
||||||
|
},
|
||||||
|
SCISSORS: {
|
||||||
|
LOSE: PAPER,
|
||||||
|
DRAW: SCISSORS,
|
||||||
|
WIN: ROCK
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
score = 0
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
for line in f:
|
||||||
|
parts = line.rstrip().split(" ")
|
||||||
|
|
||||||
|
oppo_move = parts[0]
|
||||||
|
our_move = strategies[oppo_move][parts[1]]
|
||||||
|
score = score + outcomes[oppo_move][our_move]
|
||||||
|
|
||||||
|
print(score)
|
||||||
|
|
300
2022/03/input
Normal file
300
2022/03/input
Normal file
@@ -0,0 +1,300 @@
|
|||||||
|
fzmmmfwDWFzlQQqjCQjDGnqq
|
||||||
|
tJHJvLJVVttNsvTtTvgHHSVwCsQRQQZCZZMqQMQBnqBMQs
|
||||||
|
LgThNJhNSgTJVgvgtghPhbpfWzfbwfPmpprb
|
||||||
|
lDLnSnLZRjmWrlhrFF
|
||||||
|
PffQJNqJbPZbpmjrrCVNFmCh
|
||||||
|
qzbcbqfMfZMTfQTqqzzTPPLMHgBBBtHRStvgHRDBnSRL
|
||||||
|
WPZfJlZZCMwwZPWCwWzVHQhsshVSsfNQHdvQNN
|
||||||
|
FLGDGGnGdVjQQQDQ
|
||||||
|
ccFFbggLnRcLFRtFBmnJzdZZzZBMpwJlZMppMp
|
||||||
|
RZsnCZssCnDccJCnfcQfHTdzMzhdLdMTqdRqpRLwqq
|
||||||
|
tNrGNrrvGhTThQqw
|
||||||
|
rrFStPgrFWWgvmPgQjtmNtmJcfJcsJsZblDZfbfHDFHnfl
|
||||||
|
RdTfgbbPbJWDDqRvsDsmVG
|
||||||
|
NSQZLQZHpFGLqnLszrJm
|
||||||
|
ZMSNMHhNZMMSQwhQJWPBJCbhbcgtgfcJ
|
||||||
|
qZfqPvLnnZGpGpCJlvsMsMlHJJHB
|
||||||
|
mTWFFFTTtVSJMzzjWgSH
|
||||||
|
RbVdtdFtcrmbRQDDVHDQTbDNwLPLfnqZnhZhQnNwfNqnnn
|
||||||
|
nhHfSGHGThhZjnhrrSnsSczdzlfzzdQQVzRNFNcFdl
|
||||||
|
JJvCDvmCbtvpvbMmDvLbCJpmqdVVVcMcNGzRcNFcRRzRclQd
|
||||||
|
vwDCwtLmwLBDJmCHHjHHWGZHBnsnnj
|
||||||
|
QWTMqZhThbTbLwtGBrQfQQNr
|
||||||
|
jdzSSccVPPcgcLrDBtDVwCfNNC
|
||||||
|
vcBgcmssccplTnnTqsMhWW
|
||||||
|
FlcwZhBhGZhFJnGtZZFwlGsWRLHdWqMzPjWRLTLJHHjdWq
|
||||||
|
vfmrmbpfpMfzjHjfdM
|
||||||
|
VCSmVpmrNDMZhSMcsFnh
|
||||||
|
nHqQVtVZGGwwwnSF
|
||||||
|
fMBBBWCsCfMMbWfbsGmGzFjQGQFCPhFQhF
|
||||||
|
fbcsWpJRsWlcNVLtqtLLQcZQ
|
||||||
|
rgNJdfNJpgpJVMMVfmfVJgCtCTqqqzwTqrBsTswcCCss
|
||||||
|
lFLHGWLvHQFhnQFhbFnbHWWPBtwqzBPTcsPTswZCPBGCTC
|
||||||
|
QQtbRtLhtjgdfMRMDV
|
||||||
|
jTRhJpGhQPfPLsDhWh
|
||||||
|
wVVMbqbHwVwwMplHWfsfNmWcSLqcLmSs
|
||||||
|
lVCZlHnwHdRpRGvZTBGJ
|
||||||
|
csppppDDbGLbSqndFHHNdHsH
|
||||||
|
lVTlgWgjzCzfgvfggZWWlnHPPBHrSCqBmrSBrHHBnF
|
||||||
|
QFgvFfjTvZjzlvVTWljvTtMbLcccbRRMbwLMMLQLbw
|
||||||
|
tjhLjLJzpJpwjsqqfQqNrNfRnsRR
|
||||||
|
WvwGBPwWZZrnbBNrNnnC
|
||||||
|
PDvGVTgvTMGvZTGTPvWDZVJjljtLzhtmLlJjwJVJLm
|
||||||
|
WbzpSNswNWszwSLgSNMcrrBfPJJcfsHMrvMv
|
||||||
|
CFllhlGFDVFRCmhQDlDTBBcvgBCTcHPHrfrHTJ
|
||||||
|
qGRgVFhDDZmDnDqhgQFGqzwtzSjddwZbzwpLNzjpdS
|
||||||
|
FlpZrQSJJmQpSpqlQgbbRZCgGCZdDdbNdd
|
||||||
|
WswHfjfnhWPFDsFRDcbBbR
|
||||||
|
WjHvjjWTfTvHFjzvPnPtttVTTJVLtJSpmtlltp
|
||||||
|
tnjrnnnnhNlPBtbbcWpZScpjbZSz
|
||||||
|
wmsFqfqqqGHTLbzpLLbgzMcH
|
||||||
|
FGJqsmQGRVFwwQJschPdhPrBndBhtPhrQQ
|
||||||
|
dRdJRfTnCRNlJjPBDmBJsbBDzm
|
||||||
|
wSFWSgGVSLwpFhpLhQjzgPzbtDPDbPBsztrP
|
||||||
|
WMGvVMLLBCclNHHRlM
|
||||||
|
gfSffQBDBtZvwwpWDHcbwb
|
||||||
|
JnCmmJCRmztsVPJRFjFchcGGWFWcGcHFvGLvHF
|
||||||
|
VCPzJnsPVCjtPjdMsMdmVmMBfgTZBTMfSfZSSlfNNgSSfg
|
||||||
|
lwHJSVZHWWVwJQwbbVVtwWVVdpdPfRfgDLPZLTZLDLgRDTZL
|
||||||
|
hhBrBqRcnhsFFfddmdmmCmmppn
|
||||||
|
MNNBBRRshNHbtVMzQJMM
|
||||||
|
NBsSNtLNTtNsvlTBBRLgFSCbFmbHFCFhgcghSm
|
||||||
|
WJWWDdVzDZJjDJQcCDHmmhCnmHmHFm
|
||||||
|
zQVdQZQwqVQHjqzWWWdHpzMwGMBlGLLtTvRvRNsMwwNN
|
||||||
|
ZCztttSjGSqRZgRPDNQQNr
|
||||||
|
hLvmHshLmLcFwwhhwLqMVRRRJQQVNnRJMVRDNNRr
|
||||||
|
HFhTpFqqLcssmqmFftblBSjCjStjbGWBfj
|
||||||
|
crffjHDfrQfnfpLPgbgP
|
||||||
|
TmFvFCmFTFFCtNsmMsRvlRTpPbLGMnGSngPppShGpbdgGJ
|
||||||
|
vmslmwTNmtstzFsCvRFrHBrDZzcQnWqcDDHqQB
|
||||||
|
LQLPVLGdGrRPRhHgwMhllhhs
|
||||||
|
ZbSZTNqSZfNqNCtSSmTttbpSWMlzWlslpWHsWgJWhwJzBMlz
|
||||||
|
bqjqqFFjHqTTTZTmSNbfmdrFQnDdcvVDGQDvvVnQnr
|
||||||
|
mQdcdsSThlccSWhMgDnQnFtjQPtnjPNvtR
|
||||||
|
zzsGwzrrHGBfZJGrJpDtNHFjvNvDvVRvNRtV
|
||||||
|
wZBCGrbrszTbThcTcLcb
|
||||||
|
gJDDDDcPQgQfNFPhhZGDDcZZSLVtlCqzsMlzqpszlsVtFSql
|
||||||
|
bBrdwHTrHWTrTtzLlSMCCCprCq
|
||||||
|
dnBwRvmnbmBvTpbnbWbTjZPQJhhchmJcmcQPfmGNcJ
|
||||||
|
sjMGBLWGZjsLjJTBCCbvNrBCHC
|
||||||
|
mpcRfDSSdqDdlRqdwRvFrHFbrHJFJVvDVrTb
|
||||||
|
qvlgqwpcSQSfLjjhzgnMzsnP
|
||||||
|
VgmLHHNRNVLNhsNgRHLltjjbCWnCWZbldntW
|
||||||
|
GGMFPJqPwJGTvvCCdqdqlqCj
|
||||||
|
rGwGrMQzJQBjJwTVHgDQDHcsfhVhVg
|
||||||
|
pblwGBlFlWwwlgCSFwbLvQZFvzvZhzvmQTLLzJ
|
||||||
|
HfqccHzVDNqLmmPmPPQZ
|
||||||
|
MNtrVdDjHtrzGBdbGWCblw
|
||||||
|
NNhnnLdnnfhdhVjvThvqVvCj
|
||||||
|
tHtHBzBGWHBWGtPBSvvpGZVbSsTFjSqqVbscgjCjqqSC
|
||||||
|
HBtzJHzzpDZpzMWpGPtWHvZwQmNLlmQnmNdfMmNRmwmlwd
|
||||||
|
QzGqGwmbfTdPBgRRcgmMPC
|
||||||
|
NtNZhljrNjrSrtltWlCJCJJfcVVRcJcRgPjf
|
||||||
|
NlWSZZWsHhWWlprSSvZWHrWfQLLQbLGfQpQzzTFQbwzQdd
|
||||||
|
gcwcSnccnwLRRSzcBQRvZZdvtNtvRbQJQv
|
||||||
|
CqrCrrPsVstvbfDfbb
|
||||||
|
TPlPVhWFFMGMnMjbcT
|
||||||
|
gjjHGvcHgsgbSRQbRFWbjC
|
||||||
|
ttnBTNSSfwBLzplWPPdlLlMPlMCQ
|
||||||
|
TBZpDtmnnZNvhJDHggqqgS
|
||||||
|
zfqzzGwMbllcJFqm
|
||||||
|
NpHgpRZrRpSrSZLghlTjchNlNbhFmchb
|
||||||
|
RHLWHgLBggZpHpgHRZrLgZLQCMzCfDWGMCzMQQGvPmvvfC
|
||||||
|
bBWWlFFBBFdVMLfvsfjrtBvTrr
|
||||||
|
qZsgNZzcwfjZrfPf
|
||||||
|
gcnNNcDncsDGzggDnNRJnzHhmlMVSSbhVVVmMbbhVmMlGl
|
||||||
|
dNNRQszqRhPNfddWltvDltMMNlnncv
|
||||||
|
ZjZbpgpSpjpJgpCCpbFlTnSDTlzclDnMvnnMlT
|
||||||
|
GCJpjbgzJCpwZwrHZrgHsRBwBVRRsqdqPhLBQqsP
|
||||||
|
mnnVCcwGwnsVJntmfnBtBhTDzpzzpDWbDbsLLzpWDz
|
||||||
|
FcHQdZSRHbhZZWWhrW
|
||||||
|
dNljMlPPHdMPvRlHMRdjRRNBnwJfCVqwqqffCfCwtcBV
|
||||||
|
ZGtGzBBGjvdZvLWLcrPVcZcsNVNmVpcH
|
||||||
|
MnlgngCJMgJbhfDbCDPrHHVcNNrVpbVpVmmcVq
|
||||||
|
lSPhlClftSSBvdGS
|
||||||
|
jFhGqVCcPMMdGFqczBltzrtglrsrjBgB
|
||||||
|
wWgwvfDZvnpmnHwHTfNpDbtRWbzltRlSrRlbBSbbzt
|
||||||
|
fHJvJvvTwwJPhCccgQCM
|
||||||
|
BrrrBVgNppDVBbTgDvqWdWZqWqwNmNNHvH
|
||||||
|
sHsHnHlcJjFwMMFFvGdPvv
|
||||||
|
HllCQCJQJsnjgtVTbBgpQrSr
|
||||||
|
JgLPLwbhBrCbLBCJPFFlPFZRTNTZFRqlRq
|
||||||
|
pmffSWvDcfSfGmvsNHZsTRsWllssbT
|
||||||
|
vDddMmScdStfzGcpzzwhJwJwnCbLwwLLCwht
|
||||||
|
sWSSvmsZsdZPWdLPRRsmSrrnlnvJjfnggfrgtfjnjr
|
||||||
|
VWWWBhhHBBHtljMMfJHrrt
|
||||||
|
WWqpWVqQqLNGRNZP
|
||||||
|
QHjjGVBQpffpjqppQsSsQHWJcVVgJFWcFTWgNLggFPNc
|
||||||
|
bzzmbzzZnZztFTNJWRqmqcgJ
|
||||||
|
zDZlqMtbwhCBBfppvHDGvf
|
||||||
|
BNTdfWJmzHNHHzzTdLCfCfCswQjRjljVsh
|
||||||
|
FbGnrFnrPGSSvGPFZFFPGClLQpjQRwLjLplQhRlsrQ
|
||||||
|
GbnvvgvPFwbwcnZMMGSFvFHdNHmTBNJNmmmDTJDBmWcT
|
||||||
|
rBhRPrjJrRtTHtWHWcjc
|
||||||
|
SDdGqmhdFSqblLGlHHfHWl
|
||||||
|
DSSmFqhsFqFdzqFgwsVnvBQPPQPQVrnRsJMR
|
||||||
|
NZcgQdmSwZgdPFPVNFPqqVVF
|
||||||
|
hlhhjMhGjLhLDGDhCBJDCrRFRrqqpLPfpfPRVPprPm
|
||||||
|
MlhjlMDDJTCmZddQQSTcTT
|
||||||
|
zRddrwzwNhrzrtCLtLfsLrqflC
|
||||||
|
MbSDZvVwGZpJwvHvBVfsqtjqlsPPfsqsfclb
|
||||||
|
vJpvJvZTVgTdTgwdTn
|
||||||
|
SZMsTTScDMqwtDDJ
|
||||||
|
VWrbzFvnrvFQQtnhzdPFmfwGfqmGPfDwmfPJ
|
||||||
|
rrLbrnVrLvVQpLHSHjsTBBjZBt
|
||||||
|
bSrpbWpPpfzPRWrWvhJgddrcccgFnFss
|
||||||
|
ljGNTCtMNLGQjNMjQMGtZJDDggcldcFcvhdFddnhhF
|
||||||
|
vNCmQMjmvGzpRPPzzmfw
|
||||||
|
BrbdcqcdSZRLQltNDqFpCpHH
|
||||||
|
jnTzWsWjWjwTQnzMvFlCzNDhNhDCFGpHpH
|
||||||
|
wmmvjVQMvwmsQMMwnsTPgVfgJcLcgfSbbBdBbJSdbSBS
|
||||||
|
bJFbMdcmgFSFgmggJFcGwjRdzPWZWGDDGGRwGD
|
||||||
|
hrttffCVVCTVlrttQwzRzwWTqRGDGwjTvG
|
||||||
|
rfLChHhlpHrfHlnWlpWCpQVcMSmMmSJMmggbmMSMLFNSSs
|
||||||
|
JRMBJfMJQJTcNNdD
|
||||||
|
LHsLmspghmmpdwwwcwRCpPTT
|
||||||
|
ttLLlRSlqjrMqFtZ
|
||||||
|
VjtHVHtvVqttCdnGpHtplcshglNgprrlMhrcNghw
|
||||||
|
WTWRvRWFZQLWDvDWzwscNfcflcshlshFlw
|
||||||
|
WQmBQWPTVGnJPnvn
|
||||||
|
cpRwjcQwVfQzQPQl
|
||||||
|
BZgGDBZBsgWBDDJzlhfhJVmzVfmThm
|
||||||
|
FqWDDGrGDFNqFrDZFnplNHnSwtnSRwRplN
|
||||||
|
VMLVRhRLRfhfgGdfVdZWRdTHNqHCDTrSJNBBBgJNQgND
|
||||||
|
swlcpsFPcPwzpSlTTDrNrQPQqQBBrH
|
||||||
|
zsppFscsscmbzsFsbsZbMfRZdVdVMbVSWhLG
|
||||||
|
NjcjHFjrHHFpjGtVtGWVZW
|
||||||
|
fwPlsJqdndPnwJfQdfllwNtWGdtWMMbtbmbGWbMWGN
|
||||||
|
CPlwnCwnwqClTJThTDzzFcHNSShrRh
|
||||||
|
llqlsNsPNTpDNTDNNf
|
||||||
|
cnvcWFjSrMSFnvWHTzTggHCcllzLpg
|
||||||
|
wjJSSrFrrMMJGrFFFGjGvJnFswsRwRdmBdZbbqqsPtQqPZls
|
||||||
|
jlclpqjcRqpjzjnVPgTmBmjCrC
|
||||||
|
vGvsFNGGMZNvdGshQNJvJgbVMrnbrHVBgBTTbBBPBT
|
||||||
|
SvJNGhvvvFdfQvFshSpqPqLzRRPctRcLWwlf
|
||||||
|
LWSSqLVBbNqqLrWHLSHzWbbqQfFgZtmtJCQZzgtCFCQCCnJQ
|
||||||
|
PlldGDGdjGsMPhssjPmQZFJQQZQghChZQJgv
|
||||||
|
jwMcMpsPRRdsRjPwNpTWBLSBqVqTNJWT
|
||||||
|
hWnMWgTffWFbMLfHnFMNfHgjtBSNRzjBBSzSBBcStdzBtz
|
||||||
|
VGrVCGcVJswvPqJQjtQppBzpSwdjpt
|
||||||
|
ZqqsCrmmsfmWcHhngg
|
||||||
|
vnNnssMcZnlnlMFMsnFcZMGqJCbLbNLNqgLbgLNTCpLgwC
|
||||||
|
hmjzBzHmRSfBfmqgQwpQQJbQJmwT
|
||||||
|
WVVtthRtRdsdqtddZd
|
||||||
|
LhZBLfZpmcsFpFzm
|
||||||
|
vTRRwTRRPnCTwlFgmsczzLmgLvFs
|
||||||
|
HVVVNCPPHTTtClRVNSnwLTHSQHBMMHrHWBhrQbJhWMMbZbJZ
|
||||||
|
WPTnnDPjvPlChhJPcgCC
|
||||||
|
DRQdBqsDQHQLHsBSmVLBcbwgCClbgCGlJghgmhgw
|
||||||
|
dHMHQDVVRBsMWTNfWfzWzf
|
||||||
|
PlgFPFFJGgJhhMGZwGbpBtQjjjStBttptlSb
|
||||||
|
TTcDzmHvdvnDDzdTVnTDmSspWspQLpWmSsmqppsWtb
|
||||||
|
CHVdcHvdbrwJCMPRGJwP
|
||||||
|
BtBfcPfBhBGDhwHMlCmrNSCM
|
||||||
|
dQdzLFTQnRnQVvgLnNlrCCpFrJCNrHJrwm
|
||||||
|
zRVLZQRRvQGbwtWfbGZb
|
||||||
|
PPcWcwMmCwwgnphCCLpjHp
|
||||||
|
TtZsJTzzJSSSZJsdJtTrpblhRlHHHMngpLnnjHps
|
||||||
|
ZDrvdFZtJqtStrZfMcGDVwfwffmWmP
|
||||||
|
wCwSzzsHChhMVMhCPsSVLFWcdcWGPccRdjFdJjDR
|
||||||
|
wBTTlBfgTlfpQQltmfgGGctRdGJJJFDJDDWdDt
|
||||||
|
TppwnmlnQQqnlpqlmmwqlpphHqrVrZZSzshzShqzsrZVqs
|
||||||
|
CCqCTgmdMCCCMMsWgqqnTCmJDGJcGGJfrGNGrSrrQpwFFSwG
|
||||||
|
vZbDZvhDbzHzwNzwNGFNpNGc
|
||||||
|
ZjBRVHPRtRLjLMWsCDlmgMdBmW
|
||||||
|
MMsstRChwbChqRBqDrJNpNDsHdlNlJdr
|
||||||
|
vLmPLfGGGGcTmFfTSgvPCvpZQlHHZpdrFJplQdZHQdHH
|
||||||
|
GgPLmvGVSPfmfcfgBtjwCRwwjBbtVWbh
|
||||||
|
LPPgFPccLPRswfsHfJgDsH
|
||||||
|
bpbpTnCCrnmCtjBnTfDshHDwQVTwsDhQ
|
||||||
|
BbrjnjnWCbBWZbPWzLDzDWdNlMWS
|
||||||
|
pnncvLbcppBHgBRpddGd
|
||||||
|
MtJfjVMtMmFJDjWSjVWzGdGgNQRBzBGNBMCGNB
|
||||||
|
ZdDdsJFdDmtJmLTbwcvcbcnwZv
|
||||||
|
FGsfFdNdhfbDdbhbLMhbNNTPJVCCZTLJnCRVJLPCRTVR
|
||||||
|
qHjsczptHpmgHZBBVVTrrPzrBP
|
||||||
|
lmpSlcglQtqWtcWjpQQfWsGDMhGFwdbGGNWhDv
|
||||||
|
hNNNjMFMwthjFfvZBjFFvNSdnzSGGdGmHzHgGWSfHWSR
|
||||||
|
ppJpcCVslpQJpJJDWHCHmRHHWWGSDn
|
||||||
|
QbsrJQTQJVJNMNnZTZNZvZ
|
||||||
|
NmRNLtGNmfcRrtDtrJCnWHJD
|
||||||
|
blSzzSBssgfslWCCCJWFWHrsZF
|
||||||
|
zTzbPBhMlTVSzMlMldlgMvvvvMLGcQRmqLLfvRwQ
|
||||||
|
nnZsfsPLLfZfHLWdsZWZHdmcSpTcGmNScJTRGsTJmNcF
|
||||||
|
gqVqDMgBlDbwwCqVbQFpTNFcTRSJNSrqqTSm
|
||||||
|
jlMVMjljQBjMwhLfWWzhhfhZtmLH
|
||||||
|
bfHwMvzwFBNpRjfZ
|
||||||
|
nddcVJpGVpGqPVBBFBmhBhmsNRJs
|
||||||
|
DWcPgPcPgnqCPlWWVWGMwbzwvQSSLbvgLpHHMz
|
||||||
|
NMVqtdPVHgVlrfVrpnjCwNjjpCpNNpCb
|
||||||
|
zhSvfWWzRfRLfvSpQjwbmmmvQvwwCD
|
||||||
|
LBRRTRcLJSgqqMJlVVft
|
||||||
|
GpgNzzSMGpGTrgzgMzJTrPgzjRwBdBlBbLRBjdBwVbLRVbSR
|
||||||
|
sQWCfQcflhtQQcWCmsmlsbLnRdwqqBmmbBVbLVLwnB
|
||||||
|
fCtQWFWDZFCQhCctFDsftNpzPPzZJpgJJNTgNlPZgH
|
||||||
|
DqLtMSDLLttjdDSRdjZtdpdqVWFslFWrqWPqhwhfFwwCFw
|
||||||
|
CvTbNvvTJNGHnVJwPfwFFFwsrh
|
||||||
|
cQBzGBHnTQGgcNtdMMBpDBtCdtLL
|
||||||
|
QsNDfdDNQsSTtrQZQtJJZC
|
||||||
|
lLvRWMVMLzWbRjvVgVVGvmTtCrZBrTFFbmJCmsBCrr
|
||||||
|
lljvlgpMGgRpsjsRlGGsMdqDdpDqNqfhqqSdncpqdP
|
||||||
|
sVSJVmmtmsCCwschrbNMbcBs
|
||||||
|
ZgLLfqvzzqgfdqHQLnTLfQQFhFMrhbNGBwgGbMlNcFclwN
|
||||||
|
LTzqZrHHQvjLHnHdQTdTQvZQJjCpCJDPmCRRtCpStRRmVtmm
|
||||||
|
ccQVcVHwnnDqNqSWNnVvqwcgJblgRslgmdGlssmGbQdddb
|
||||||
|
rpFtPrzrMFZvZTLPpglhdssFshssJhsggG
|
||||||
|
pTtLtBMjZLfHvNWqcBHf
|
||||||
|
PZnSjnnsVfjfLLff
|
||||||
|
crvccpglrtHfNbzbHLzmGN
|
||||||
|
lptTLFFpdgvttFWltTclplDvhJMSMPhJPhChShPBZBMJhPMT
|
||||||
|
mPSPdnhznPdhSmPGchJdFDtBhghgFgWpFBQhTBMg
|
||||||
|
rHNNvbqHHHwZwMGMWtgtQMZQFQ
|
||||||
|
wRqqRffvvNHwrHqrNqLvCrqvmPnzdsGJsSsSdSsLPVVPnjsn
|
||||||
|
CzlngWpClJlzRJpDnpmzCndrhBcrhwcsBcLsNcsmLdQQ
|
||||||
|
qqSjqFGTFbPFSPTVjcBcBsDdQrwBVLrNcc
|
||||||
|
PtDDtZTvGDvFCMzZlRJCfWfJ
|
||||||
|
vtQDpvpvVvvcSFrrljZZsVjFrV
|
||||||
|
RqcTTRddRrlsjZrwrT
|
||||||
|
zmbdRdMmMgbPDcGhGmnDpcQn
|
||||||
|
gZqJRZRZdltFVGZQDZwV
|
||||||
|
MCMSRHCMRHBBVtVCGwDCFGtD
|
||||||
|
jcHsTMBNSSrBMjmMrcTMpRqpJggllnprqzRPzdlP
|
||||||
|
mWSWHdmHWZWjBnGs
|
||||||
|
TvchwtTfcTvhzwVGNtdrbjnnBnsnNr
|
||||||
|
JTdwghvMzwfdcMVJqPmQFRPpCDJRJFFC
|
||||||
|
DsHDCrszvvhHsshvsrrsgwdPpdLFgWLpbRpWFfMjWjWF
|
||||||
|
BVJPJmPmGZVnfbVfMWpdLMWb
|
||||||
|
cNGtnttqmJHNvNzDPPHN
|
||||||
|
gpjmMQMrfmMntCSCNmSNCm
|
||||||
|
vDRqphDhzHSdtqdCNH
|
||||||
|
LFLLcbJRJLppFQlpMFfF
|
||||||
|
SnSdvchzZZczndNvwcwnQrGfqrTTfhhTDgRGGLQQ
|
||||||
|
lVWHWMmWmttsFBMLLqLTRRRqqDBGTf
|
||||||
|
bsFPbFFssmFjWRmjVFjHbczvpZCwvwZccndpvzpzCP
|
||||||
|
jzngbHrlHQllcbcTCtHGWtftGCHqWC
|
||||||
|
JJgmsJRwFqChLGtqGs
|
||||||
|
SmJmSmDdSPRwSMppJdPPwVvvzNQvjrNMNjMZZrQgZNgQ
|
||||||
|
PvPlPcZPZFllzNzCDdhhdHjrpHNjHBHB
|
||||||
|
VmgWtJWrqbQmqGDBdGQjjhBGdG
|
||||||
|
tmbgggbgnMWnStttgnfnTzrCfPvFnccnPclT
|
||||||
|
RQQbdSRdpprQSNVqqqfrffjvnjnJnhnVvHhBhVjJtjJz
|
||||||
|
WGgGgLmLgGZMPDBhDJDHjMBFnD
|
||||||
|
WPPwPGwlLgZwmWlslCLRNbrsTrfRrNNQqsspBT
|
||||||
|
dNNpHpchLppdccTNtZZTRRPSSnwPPSbSnhhrhnSJ
|
||||||
|
qfqsFsqffgQMznJrPznbMrrB
|
||||||
|
vglfqQCgDgFjglCDCjLZpTHNPHttdcZVVN
|
||||||
|
FWtDHDStZwrFCDwrgWPFDsWQJZzlMdpZzlNpNjdjjQzNzj
|
||||||
|
BqnVGVcbTmGfHLGVzvpQpvJvQlflMdJp
|
||||||
|
ThRRchnHqLTGbFCCCrrSSFhFCs
|
||||||
|
wJrwdZPnJwqPbJPCnjFZdvHtMvsLsTsDtHsHDDqvpH
|
||||||
|
RWzNRWjRfgjNMMLvcMcLNt
|
||||||
|
WGGRQzzRmRmVQSgwrwJjjCbJhnbShJ
|
||||||
|
cjngcvcwbMwWnbMWjbgvnsjPftsqfthqsBtsJJJJBt
|
||||||
|
HrGFmDDzpmLTHpDsPfsBNBPfzZNPqN
|
||||||
|
DDVmDplDrpGSVSTTHGlpLnPwCRnWcvWCdPbbMvcVdW
|
||||||
|
BVRlBfPBffWswVWQsfwBNNPMFMmmGFZGnWZGtztrzMZMnz
|
||||||
|
HqSJchHTHbTgHhGhvmRzFmnFtzRF
|
||||||
|
RJqHTpgDLJDSqLJJPNVjsfPwBVsVLlfN
|
||||||
|
NDrBlSmrFBlbbJllmtHHwhNNhZztqHVRzQ
|
||||||
|
CMTCGLcvvtfCdCcCvCnMTMcTzjHwVZVRLjRRjQjRHRwzwjVH
|
||||||
|
dfGdgGMGPggnvfvgbtDtlSJPDSFJPslJ
|
25
2022/03/part1
Executable file
25
2022/03/part1
Executable file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
VALS = {}
|
||||||
|
|
||||||
|
for i in range(ord('a'), ord('z')+1):
|
||||||
|
VALS[chr(i)] = i - ord('a') + 1
|
||||||
|
|
||||||
|
for i in range(ord('A'), ord('Z')+1):
|
||||||
|
VALS[chr(i)] = i - ord('A') + 27
|
||||||
|
|
||||||
|
score = 0
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
for line in f:
|
||||||
|
line = line.rstrip()
|
||||||
|
half = len(line)//2
|
||||||
|
compA = line[0:half]
|
||||||
|
compB = line[half:len(line)]
|
||||||
|
common = set(compA) & set(compB)
|
||||||
|
|
||||||
|
score = score + VALS[common.pop()]
|
||||||
|
|
||||||
|
print(score)
|
||||||
|
|
||||||
|
|
26
2022/03/part2
Executable file
26
2022/03/part2
Executable file
@@ -0,0 +1,26 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
import itertools
|
||||||
|
|
||||||
|
VALS = {}
|
||||||
|
|
||||||
|
for i in range(ord('a'), ord('z')+1):
|
||||||
|
VALS[chr(i)] = i - ord('a') + 1
|
||||||
|
|
||||||
|
for i in range(ord('A'), ord('Z')+1):
|
||||||
|
VALS[chr(i)] = i - ord('A') + 27
|
||||||
|
|
||||||
|
score = 0
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
for elfA,elfB,elfC in itertools.zip_longest(*[f]*3):
|
||||||
|
elfA = elfA.rstrip()
|
||||||
|
elfB = elfB.rstrip()
|
||||||
|
elfC = elfC.rstrip()
|
||||||
|
|
||||||
|
common = set(elfA) & set(elfB) & set(elfC)
|
||||||
|
|
||||||
|
score = score + VALS[common.pop()]
|
||||||
|
|
||||||
|
print(score)
|
||||||
|
|
||||||
|
|
1000
2022/04/input
Normal file
1000
2022/04/input
Normal file
File diff suppressed because it is too large
Load Diff
20
2022/04/part1
Executable file
20
2022/04/part1
Executable file
@@ -0,0 +1,20 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
def build_range(text):
|
||||||
|
first, last = text.split("-")
|
||||||
|
return range(int(first), int(last)+1)
|
||||||
|
|
||||||
|
count = 0
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
for line in f:
|
||||||
|
aS, bS = line.rstrip().split(",")
|
||||||
|
a = build_range(aS)
|
||||||
|
b = build_range(bS)
|
||||||
|
|
||||||
|
if (a[0] in b and a[-1] in b) or (b[0] in a and b[-1] in a):
|
||||||
|
count = count + 1
|
||||||
|
|
||||||
|
print(count)
|
||||||
|
|
||||||
|
|
20
2022/04/part2
Executable file
20
2022/04/part2
Executable file
@@ -0,0 +1,20 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
def build_range(text):
|
||||||
|
first, last = text.split("-")
|
||||||
|
return range(int(first), int(last)+1)
|
||||||
|
|
||||||
|
count = 0
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
for line in f:
|
||||||
|
aS, bS = line.rstrip().split(",")
|
||||||
|
a = build_range(aS)
|
||||||
|
b = build_range(bS)
|
||||||
|
|
||||||
|
if (a[0] in b or a[-1] in b) or (b[0] in a or b[-1] in a):
|
||||||
|
count = count + 1
|
||||||
|
|
||||||
|
print(count)
|
||||||
|
|
||||||
|
|
513
2022/05/input
Normal file
513
2022/05/input
Normal file
@@ -0,0 +1,513 @@
|
|||||||
|
[N] [C] [Z]
|
||||||
|
[Q] [G] [V] [S] [V]
|
||||||
|
[L] [C] [M] [T] [W] [L]
|
||||||
|
[S] [H] [L] [C] [D] [H] [S]
|
||||||
|
[C] [V] [F] [D] [D] [B] [Q] [F]
|
||||||
|
[Z] [T] [Z] [T] [C] [J] [G] [S] [Q]
|
||||||
|
[P] [P] [C] [W] [W] [F] [W] [J] [C]
|
||||||
|
[T] [L] [D] [G] [P] [P] [V] [N] [R]
|
||||||
|
1 2 3 4 5 6 7 8 9
|
||||||
|
|
||||||
|
move 6 from 2 to 1
|
||||||
|
move 4 from 6 to 3
|
||||||
|
move 1 from 6 to 5
|
||||||
|
move 8 from 3 to 8
|
||||||
|
move 13 from 8 to 2
|
||||||
|
move 2 from 7 to 6
|
||||||
|
move 10 from 1 to 6
|
||||||
|
move 3 from 2 to 8
|
||||||
|
move 5 from 4 to 2
|
||||||
|
move 15 from 6 to 5
|
||||||
|
move 1 from 1 to 4
|
||||||
|
move 2 from 7 to 3
|
||||||
|
move 2 from 4 to 2
|
||||||
|
move 12 from 5 to 1
|
||||||
|
move 4 from 8 to 9
|
||||||
|
move 15 from 1 to 3
|
||||||
|
move 10 from 9 to 7
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 3 from 7 to 6
|
||||||
|
move 8 from 2 to 6
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 5 from 2 to 3
|
||||||
|
move 1 from 4 to 1
|
||||||
|
move 16 from 3 to 1
|
||||||
|
move 2 from 2 to 7
|
||||||
|
move 13 from 1 to 6
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 2 from 2 to 9
|
||||||
|
move 1 from 4 to 7
|
||||||
|
move 2 from 8 to 2
|
||||||
|
move 2 from 2 to 9
|
||||||
|
move 1 from 6 to 8
|
||||||
|
move 2 from 3 to 8
|
||||||
|
move 2 from 1 to 9
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 5 from 5 to 1
|
||||||
|
move 2 from 9 to 3
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 2 from 1 to 3
|
||||||
|
move 3 from 3 to 2
|
||||||
|
move 1 from 5 to 7
|
||||||
|
move 2 from 7 to 6
|
||||||
|
move 2 from 8 to 3
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 6 from 3 to 4
|
||||||
|
move 3 from 9 to 6
|
||||||
|
move 8 from 6 to 4
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 5 from 9 to 5
|
||||||
|
move 7 from 7 to 4
|
||||||
|
move 14 from 4 to 6
|
||||||
|
move 1 from 5 to 3
|
||||||
|
move 5 from 1 to 9
|
||||||
|
move 4 from 5 to 4
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 4 from 9 to 7
|
||||||
|
move 6 from 6 to 5
|
||||||
|
move 10 from 4 to 6
|
||||||
|
move 1 from 9 to 6
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 1 from 3 to 6
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 35 from 6 to 3
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 4 from 5 to 8
|
||||||
|
move 2 from 5 to 4
|
||||||
|
move 3 from 8 to 2
|
||||||
|
move 2 from 4 to 8
|
||||||
|
move 26 from 3 to 8
|
||||||
|
move 3 from 2 to 9
|
||||||
|
move 6 from 3 to 5
|
||||||
|
move 3 from 5 to 7
|
||||||
|
move 3 from 7 to 4
|
||||||
|
move 3 from 4 to 5
|
||||||
|
move 1 from 9 to 5
|
||||||
|
move 6 from 5 to 1
|
||||||
|
move 2 from 8 to 6
|
||||||
|
move 11 from 8 to 5
|
||||||
|
move 9 from 5 to 4
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 2 from 7 to 9
|
||||||
|
move 3 from 1 to 4
|
||||||
|
move 1 from 5 to 7
|
||||||
|
move 8 from 6 to 1
|
||||||
|
move 5 from 7 to 9
|
||||||
|
move 7 from 9 to 2
|
||||||
|
move 3 from 2 to 9
|
||||||
|
move 3 from 7 to 1
|
||||||
|
move 4 from 9 to 8
|
||||||
|
move 2 from 5 to 6
|
||||||
|
move 2 from 2 to 8
|
||||||
|
move 2 from 6 to 9
|
||||||
|
move 13 from 8 to 1
|
||||||
|
move 1 from 2 to 8
|
||||||
|
move 3 from 3 to 5
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 3 from 5 to 4
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 4 from 8 to 2
|
||||||
|
move 3 from 2 to 4
|
||||||
|
move 19 from 1 to 2
|
||||||
|
move 8 from 1 to 8
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 1 from 4 to 1
|
||||||
|
move 7 from 2 to 1
|
||||||
|
move 1 from 3 to 1
|
||||||
|
move 2 from 3 to 1
|
||||||
|
move 15 from 4 to 5
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 11 from 2 to 8
|
||||||
|
move 2 from 2 to 9
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 2 from 9 to 4
|
||||||
|
move 12 from 8 to 3
|
||||||
|
move 16 from 5 to 1
|
||||||
|
move 3 from 4 to 3
|
||||||
|
move 1 from 7 to 5
|
||||||
|
move 2 from 8 to 6
|
||||||
|
move 1 from 5 to 4
|
||||||
|
move 1 from 4 to 9
|
||||||
|
move 18 from 1 to 9
|
||||||
|
move 8 from 3 to 8
|
||||||
|
move 9 from 8 to 2
|
||||||
|
move 4 from 9 to 2
|
||||||
|
move 8 from 1 to 2
|
||||||
|
move 2 from 6 to 4
|
||||||
|
move 17 from 2 to 1
|
||||||
|
move 1 from 4 to 5
|
||||||
|
move 3 from 2 to 6
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 2 from 6 to 1
|
||||||
|
move 3 from 3 to 6
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 2 from 3 to 2
|
||||||
|
move 16 from 9 to 5
|
||||||
|
move 14 from 5 to 4
|
||||||
|
move 3 from 5 to 8
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 4 from 8 to 6
|
||||||
|
move 1 from 2 to 8
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 2 from 9 to 1
|
||||||
|
move 10 from 8 to 7
|
||||||
|
move 7 from 6 to 9
|
||||||
|
move 16 from 1 to 5
|
||||||
|
move 7 from 4 to 3
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 5 from 4 to 2
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 5 from 9 to 1
|
||||||
|
move 5 from 1 to 2
|
||||||
|
move 2 from 9 to 7
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 1 from 6 to 8
|
||||||
|
move 4 from 4 to 5
|
||||||
|
move 1 from 6 to 9
|
||||||
|
move 9 from 2 to 1
|
||||||
|
move 11 from 5 to 6
|
||||||
|
move 2 from 9 to 2
|
||||||
|
move 4 from 3 to 4
|
||||||
|
move 4 from 4 to 6
|
||||||
|
move 1 from 3 to 4
|
||||||
|
move 11 from 7 to 4
|
||||||
|
move 9 from 4 to 7
|
||||||
|
move 11 from 7 to 2
|
||||||
|
move 2 from 3 to 5
|
||||||
|
move 2 from 4 to 8
|
||||||
|
move 7 from 5 to 2
|
||||||
|
move 1 from 8 to 3
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 1 from 3 to 7
|
||||||
|
move 6 from 2 to 9
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 6 from 9 to 2
|
||||||
|
move 15 from 6 to 2
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 31 from 2 to 7
|
||||||
|
move 22 from 7 to 3
|
||||||
|
move 2 from 5 to 1
|
||||||
|
move 3 from 7 to 4
|
||||||
|
move 1 from 4 to 9
|
||||||
|
move 3 from 4 to 3
|
||||||
|
move 1 from 8 to 6
|
||||||
|
move 1 from 9 to 6
|
||||||
|
move 15 from 1 to 5
|
||||||
|
move 1 from 9 to 5
|
||||||
|
move 1 from 1 to 8
|
||||||
|
move 2 from 6 to 8
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 1 from 6 to 9
|
||||||
|
move 10 from 3 to 1
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 2 from 7 to 8
|
||||||
|
move 10 from 5 to 1
|
||||||
|
move 12 from 1 to 4
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 11 from 4 to 8
|
||||||
|
move 1 from 8 to 3
|
||||||
|
move 5 from 5 to 8
|
||||||
|
move 1 from 5 to 8
|
||||||
|
move 6 from 8 to 6
|
||||||
|
move 3 from 2 to 1
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 5 from 1 to 6
|
||||||
|
move 3 from 1 to 4
|
||||||
|
move 3 from 2 to 8
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 8 from 3 to 5
|
||||||
|
move 2 from 1 to 3
|
||||||
|
move 3 from 7 to 5
|
||||||
|
move 2 from 3 to 5
|
||||||
|
move 3 from 5 to 2
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 2 from 9 to 1
|
||||||
|
move 1 from 6 to 9
|
||||||
|
move 2 from 4 to 8
|
||||||
|
move 5 from 6 to 5
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 3 from 6 to 5
|
||||||
|
move 7 from 8 to 9
|
||||||
|
move 5 from 9 to 1
|
||||||
|
move 2 from 4 to 8
|
||||||
|
move 11 from 5 to 9
|
||||||
|
move 3 from 2 to 3
|
||||||
|
move 2 from 5 to 8
|
||||||
|
move 4 from 3 to 7
|
||||||
|
move 11 from 9 to 5
|
||||||
|
move 3 from 7 to 5
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 8 from 1 to 4
|
||||||
|
move 5 from 3 to 9
|
||||||
|
move 15 from 5 to 4
|
||||||
|
move 8 from 4 to 1
|
||||||
|
move 12 from 8 to 1
|
||||||
|
move 4 from 5 to 8
|
||||||
|
move 12 from 4 to 5
|
||||||
|
move 3 from 7 to 2
|
||||||
|
move 11 from 5 to 7
|
||||||
|
move 8 from 8 to 7
|
||||||
|
move 7 from 9 to 8
|
||||||
|
move 2 from 5 to 7
|
||||||
|
move 4 from 7 to 8
|
||||||
|
move 9 from 8 to 4
|
||||||
|
move 11 from 4 to 5
|
||||||
|
move 6 from 7 to 8
|
||||||
|
move 9 from 8 to 7
|
||||||
|
move 18 from 7 to 5
|
||||||
|
move 1 from 8 to 1
|
||||||
|
move 4 from 1 to 5
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 6 from 1 to 9
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 3 from 1 to 7
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 3 from 2 to 5
|
||||||
|
move 2 from 9 to 5
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 4 from 7 to 8
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 4 from 8 to 5
|
||||||
|
move 3 from 9 to 7
|
||||||
|
move 1 from 9 to 5
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 2 from 3 to 8
|
||||||
|
move 2 from 7 to 4
|
||||||
|
move 28 from 5 to 8
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 6 from 5 to 6
|
||||||
|
move 5 from 5 to 2
|
||||||
|
move 1 from 3 to 4
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 1 from 5 to 6
|
||||||
|
move 16 from 8 to 3
|
||||||
|
move 7 from 1 to 8
|
||||||
|
move 4 from 4 to 9
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 3 from 2 to 3
|
||||||
|
move 6 from 6 to 8
|
||||||
|
move 10 from 3 to 8
|
||||||
|
move 1 from 2 to 7
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 11 from 8 to 5
|
||||||
|
move 2 from 7 to 8
|
||||||
|
move 1 from 1 to 9
|
||||||
|
move 5 from 9 to 5
|
||||||
|
move 4 from 3 to 2
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 3 from 8 to 2
|
||||||
|
move 19 from 8 to 7
|
||||||
|
move 6 from 7 to 6
|
||||||
|
move 4 from 5 to 2
|
||||||
|
move 9 from 7 to 5
|
||||||
|
move 1 from 7 to 1
|
||||||
|
move 5 from 6 to 9
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 1 from 4 to 7
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 2 from 7 to 3
|
||||||
|
move 6 from 5 to 9
|
||||||
|
move 9 from 9 to 1
|
||||||
|
move 17 from 5 to 4
|
||||||
|
move 2 from 3 to 1
|
||||||
|
move 13 from 4 to 7
|
||||||
|
move 3 from 3 to 5
|
||||||
|
move 7 from 1 to 4
|
||||||
|
move 1 from 5 to 8
|
||||||
|
move 2 from 5 to 2
|
||||||
|
move 6 from 7 to 3
|
||||||
|
move 1 from 5 to 7
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 2 from 3 to 2
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 9 from 7 to 3
|
||||||
|
move 10 from 3 to 5
|
||||||
|
move 8 from 4 to 2
|
||||||
|
move 1 from 4 to 1
|
||||||
|
move 13 from 2 to 4
|
||||||
|
move 5 from 4 to 3
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 6 from 4 to 2
|
||||||
|
move 4 from 1 to 8
|
||||||
|
move 3 from 4 to 6
|
||||||
|
move 9 from 8 to 9
|
||||||
|
move 17 from 2 to 3
|
||||||
|
move 2 from 8 to 6
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 2 from 6 to 3
|
||||||
|
move 2 from 1 to 3
|
||||||
|
move 13 from 3 to 4
|
||||||
|
move 8 from 9 to 8
|
||||||
|
move 7 from 4 to 6
|
||||||
|
move 3 from 5 to 6
|
||||||
|
move 5 from 8 to 2
|
||||||
|
move 9 from 6 to 1
|
||||||
|
move 7 from 2 to 4
|
||||||
|
move 2 from 6 to 9
|
||||||
|
move 1 from 1 to 5
|
||||||
|
move 18 from 3 to 8
|
||||||
|
move 5 from 1 to 3
|
||||||
|
move 1 from 6 to 1
|
||||||
|
move 9 from 4 to 7
|
||||||
|
move 11 from 8 to 7
|
||||||
|
move 5 from 7 to 5
|
||||||
|
move 2 from 4 to 5
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 13 from 7 to 8
|
||||||
|
move 1 from 4 to 9
|
||||||
|
move 1 from 9 to 6
|
||||||
|
move 4 from 1 to 5
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 9 from 5 to 7
|
||||||
|
move 8 from 5 to 6
|
||||||
|
move 10 from 7 to 2
|
||||||
|
move 1 from 5 to 7
|
||||||
|
move 1 from 7 to 1
|
||||||
|
move 17 from 8 to 2
|
||||||
|
move 9 from 6 to 7
|
||||||
|
move 6 from 7 to 1
|
||||||
|
move 2 from 7 to 2
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 12 from 2 to 8
|
||||||
|
move 7 from 1 to 2
|
||||||
|
move 6 from 8 to 6
|
||||||
|
move 3 from 8 to 2
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 2 from 3 to 4
|
||||||
|
move 1 from 4 to 9
|
||||||
|
move 2 from 3 to 5
|
||||||
|
move 2 from 3 to 7
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 2 from 7 to 1
|
||||||
|
move 7 from 2 to 7
|
||||||
|
move 6 from 7 to 1
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 6 from 8 to 4
|
||||||
|
move 4 from 9 to 7
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 3 from 8 to 1
|
||||||
|
move 1 from 9 to 4
|
||||||
|
move 1 from 7 to 8
|
||||||
|
move 1 from 8 to 1
|
||||||
|
move 4 from 7 to 8
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 3 from 6 to 9
|
||||||
|
move 2 from 9 to 7
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 2 from 4 to 3
|
||||||
|
move 2 from 8 to 3
|
||||||
|
move 5 from 3 to 4
|
||||||
|
move 4 from 6 to 2
|
||||||
|
move 8 from 2 to 9
|
||||||
|
move 1 from 6 to 5
|
||||||
|
move 10 from 2 to 3
|
||||||
|
move 2 from 8 to 3
|
||||||
|
move 8 from 9 to 3
|
||||||
|
move 9 from 2 to 5
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 7 from 5 to 6
|
||||||
|
move 1 from 5 to 7
|
||||||
|
move 13 from 3 to 4
|
||||||
|
move 2 from 7 to 8
|
||||||
|
move 5 from 3 to 1
|
||||||
|
move 1 from 5 to 3
|
||||||
|
move 1 from 8 to 5
|
||||||
|
move 1 from 2 to 8
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 15 from 4 to 8
|
||||||
|
move 6 from 4 to 7
|
||||||
|
move 6 from 7 to 8
|
||||||
|
move 1 from 6 to 5
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 1 from 9 to 6
|
||||||
|
move 2 from 5 to 2
|
||||||
|
move 6 from 6 to 4
|
||||||
|
move 6 from 1 to 8
|
||||||
|
move 6 from 4 to 9
|
||||||
|
move 2 from 6 to 1
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 26 from 8 to 1
|
||||||
|
move 4 from 3 to 7
|
||||||
|
move 2 from 2 to 5
|
||||||
|
move 16 from 1 to 4
|
||||||
|
move 3 from 9 to 8
|
||||||
|
move 3 from 8 to 7
|
||||||
|
move 3 from 5 to 1
|
||||||
|
move 2 from 9 to 2
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 8 from 4 to 1
|
||||||
|
move 4 from 4 to 9
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 1 from 3 to 7
|
||||||
|
move 2 from 8 to 2
|
||||||
|
move 3 from 4 to 2
|
||||||
|
move 1 from 4 to 7
|
||||||
|
move 9 from 7 to 5
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 2 from 9 to 8
|
||||||
|
move 5 from 5 to 7
|
||||||
|
move 1 from 9 to 5
|
||||||
|
move 6 from 2 to 6
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 5 from 6 to 5
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 3 from 8 to 9
|
||||||
|
move 3 from 9 to 7
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 2 from 4 to 1
|
||||||
|
move 2 from 5 to 8
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 2 from 8 to 9
|
||||||
|
move 3 from 9 to 3
|
||||||
|
move 8 from 7 to 3
|
||||||
|
move 4 from 5 to 8
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 3 from 5 to 8
|
||||||
|
move 1 from 5 to 3
|
||||||
|
move 6 from 8 to 6
|
||||||
|
move 3 from 3 to 9
|
||||||
|
move 5 from 3 to 2
|
||||||
|
move 5 from 6 to 4
|
||||||
|
move 14 from 1 to 5
|
||||||
|
move 8 from 5 to 6
|
||||||
|
move 2 from 3 to 2
|
||||||
|
move 4 from 9 to 1
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 7 from 2 to 3
|
||||||
|
move 6 from 3 to 7
|
||||||
|
move 3 from 5 to 3
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 12 from 1 to 5
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 2 from 3 to 1
|
||||||
|
move 1 from 7 to 8
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 2 from 3 to 6
|
||||||
|
move 2 from 1 to 9
|
||||||
|
move 2 from 5 to 6
|
||||||
|
move 2 from 9 to 7
|
||||||
|
move 9 from 7 to 3
|
||||||
|
move 7 from 1 to 5
|
||||||
|
move 5 from 5 to 2
|
||||||
|
move 8 from 6 to 8
|
||||||
|
move 5 from 8 to 9
|
48
2022/05/part1
Executable file
48
2022/05/part1
Executable file
@@ -0,0 +1,48 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import re
|
||||||
|
|
||||||
|
crates = []
|
||||||
|
|
||||||
|
def process_crates(spec):
|
||||||
|
for i in range(0, len(spec), 4):
|
||||||
|
pos = i // 4
|
||||||
|
if len(crates) < pos + 1:
|
||||||
|
crates.append([])
|
||||||
|
|
||||||
|
if spec[i] != '[':
|
||||||
|
continue
|
||||||
|
|
||||||
|
crates[pos].append(spec[i+1])
|
||||||
|
|
||||||
|
def process_instruction(spec):
|
||||||
|
m = re.search('^move (\d+) from (\d+) to (\d+)$', spec)
|
||||||
|
count = int(m.group(1))
|
||||||
|
src = int(m.group(2)) - 1
|
||||||
|
dst = int(m.group(3)) - 1
|
||||||
|
|
||||||
|
for i in range(0, count):
|
||||||
|
crates[dst].append(crates[src].pop())
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
# Read the diagram + separating line
|
||||||
|
for line in f:
|
||||||
|
if line[0] == ' ':
|
||||||
|
continue
|
||||||
|
if line == "\n":
|
||||||
|
break
|
||||||
|
process_crates(line.rstrip())
|
||||||
|
|
||||||
|
# We filled the lines upside down, so flip them
|
||||||
|
for pos in crates:
|
||||||
|
pos.reverse()
|
||||||
|
|
||||||
|
for line in f:
|
||||||
|
process_instruction(line.rstrip())
|
||||||
|
|
||||||
|
out = ""
|
||||||
|
for pos in crates:
|
||||||
|
out = out + pos[-1]
|
||||||
|
|
||||||
|
print(out)
|
||||||
|
|
51
2022/05/part2
Executable file
51
2022/05/part2
Executable file
@@ -0,0 +1,51 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import re
|
||||||
|
|
||||||
|
crates = []
|
||||||
|
|
||||||
|
def process_crates(spec):
|
||||||
|
for i in range(0, len(spec), 4):
|
||||||
|
pos = i // 4
|
||||||
|
if len(crates) < pos + 1:
|
||||||
|
crates.append([])
|
||||||
|
|
||||||
|
if spec[i] != '[':
|
||||||
|
continue
|
||||||
|
|
||||||
|
crates[pos].append(spec[i+1])
|
||||||
|
|
||||||
|
def process_instruction(spec):
|
||||||
|
m = re.search('^move (\d+) from (\d+) to (\d+)$', spec)
|
||||||
|
count = int(m.group(1))
|
||||||
|
src = int(m.group(2)) - 1
|
||||||
|
dst = int(m.group(3)) - 1
|
||||||
|
|
||||||
|
items = []
|
||||||
|
for i in range(0, count):
|
||||||
|
items.append(crates[src].pop())
|
||||||
|
items.reverse()
|
||||||
|
crates[dst] = crates[dst] + items
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
# Read the diagram + separating line
|
||||||
|
for line in f:
|
||||||
|
if line[0] == ' ':
|
||||||
|
continue
|
||||||
|
if line == "\n":
|
||||||
|
break
|
||||||
|
process_crates(line.rstrip())
|
||||||
|
|
||||||
|
# We filled the lines upside down, so flip them
|
||||||
|
for pos in crates:
|
||||||
|
pos.reverse()
|
||||||
|
|
||||||
|
for line in f:
|
||||||
|
process_instruction(line.rstrip())
|
||||||
|
|
||||||
|
out = ""
|
||||||
|
for pos in crates:
|
||||||
|
out = out + pos[-1]
|
||||||
|
|
||||||
|
print(out)
|
||||||
|
|
1
2022/06/input
Normal file
1
2022/06/input
Normal file
@@ -0,0 +1 @@
|
|||||||
|
srlsrsnnwhwwmddwfddgldlglppcnpptftzzchzhbhmmvwmvwvvjsjnjbbvbmvmnmqmfmjfjjmllzddrvrrnsncnznndwwqrqjjsfsjsjsvsvzvtvfvrvhhbwwltttbhhvphhtqqnffsppdqqrmmfrmfrrwvrvrsvrsrzssrqqrfqrfrttqntnpttvrrcncnfftjfjwwfwjwpwwltlwwwvnvcnvvdgvddqlddnllrggqvgvzzjddfgdfdgfffsbfsffjmffprrmgmtmqqgzzlwldlbbgjjnfjnnvlnnlbbnjnzngglmggwtgwttnvtnvndndmnmdmcddzbdbbspbpwbpplvpvnnmtmqqwnwgglhghdhbhqbhhqrqhqcqmmmrwwlvvfnvfnnpddbfbgfgqglgddrggbgbqqfwfjfdjfflzldlbbsbbtftccgqggzgdglglzljjzbzfbzffgftfvtfvvvjmjzjmjfjqqccpcjppzfpzzsvvzjvvfgfmgffzhhdphdpdwdwmdwwlqljjzffzvfzfwzfzcztctssdpssndssvbbtbstbtnngjjspplttpffjggbbqsqnqcncscpcmccbmbdbtbcbbgqgwgwqgwgwsszqznzvvntvvmlvlvqqvgvwgwlldbblclqcqggtqqlsqlsqlqcczzqgghmgmrgmrggljlbjbsbsmmnlmmdppnpfnnvhnnzggchgggbwwvtvpptgpplsljjshhnphhblbnbpbgppfllhsllbtlbtllrprqrvvfgvgpgcpcdddjjplpssjrjqjggncnzccqdqfqpffvddhlhdllgzzrtrztrztzptztwwbjbnjnsjsfsbfbdbccnhnmhnhrhwhfhbbtzbtztzrttrzrfrcrtctqqrlrsshphwphwpwwcmczzpqzqztqqvzzshhddrvdrrztrrqcqbcqbbhnnpfnpfnnmcnmnccnmmhccjjwzwcwbwcwnngtnngrngnsnzzcvvvtnvvtpvtpvtvvhffbsfsnsdsmmzbbrqbqpbpcpdppzmzbmmtdmttvgvrvlrvvhddjgdjdbbthtjhjdjhdjjmssdldjllwppvbvnbnlbbbszbblpbpfbpblbzzszvssbcbgcghgbbcpbbqrrdjdnnjcjddjcdjjcqqhggflftftfhttvlttgdtdrttwppwvvrzzbggrjjmssrjsjmssdtttdbdvddpllpgllthhvfvhvddrhhnznwznwzzpbblvvpmvpmpddjvdvcddvsshfhrrghgnhghmhhmhffrsfrflrfrjrddzgzsggchcfhhsbbsrszzgjggnrrgfffhthdthtnhtntllsjjjwqqsbsttbtzbttlfttczzbfbwfwvvhllltjjsqsdqqspqsszqzhhdrrhccgbcgggcbggnvgvmmwcmmpqmqccshsnnnwrwfrrwrllvhvlvmlvljjgrgvrvddfqfwqfqlfqqqppvmvrmrfrvrwrqrjqrrvmrvmrrvffmtffsfdfdrdwrwjrrcgcwwcdwdrdnrnzztqzzzgdzgdgldltdtvtnnhllrtltbtrbbttgssdhsssrmsscnssmtmqqtssmzzjqzqddfrdrtdrdpdzzppwggsrrfvfnvvmgvgmmdnnbwnntlnntncchcmcjmmvzzzngznnbgbnbnvbvzzfqqmtmrmcmqmvmbmbmcmscsjcsshswsjsvswshwwlnnsslmslmmzgmgsmssrwwmjwmwllvbvppplmmwgmgzgzdgzdgzztrtzzchcssbppdbbmvmqmmzhztzdtzdznnqhhmcmnnncbnngjnjmjnmmqqsnqsnslnlqlppvbvwwvtwtfwtfmzsbdjfvhzcflstpbtprpzmwcwwgzshfssnjdgflcsfglhbvvdctfrccfmwgfvjtvqfqpzzmqtlbvrjqwlwclfzhfzcmwsvprdhzcrghdscprrnqgdgmhhwbcfcfzrcgrwvbstpwbcvcnpmftwwthnsjznzslfdfqhtpsgmjsddmhlhtlzfsnhlcbgnqpqbzppnbcgtzvwdpmgftgsmrwjqwsdnjrrmwrmlcvlqgwldnvmsgnwccwzmdzwdhpmpqffgbnrrrvzqhtlnvqfhgwbbwsghwbrjzjcjmjmsspcmnfbbpmwffbdqffqfwsvtcrghbnldspdhjhjvtdhgmvrzqqlhvnwbdhfprwqdtzswfdzdwhzvfzsfqlzcflhbsvjhnjnthrdrgmjrrbftflpvrmrvvsgnjhrhjffvznmbjtshwgjmcqbfqjlptsrcgzvrhctwsdclrstmsbsbpqpjcvftmvmsmpwmmphlwmljhvllhrmfcncdprrwfmqrlllmsrvrwtbsqddbmblhvqqlcbbtjbslggrshflrddsphbvzhprcvbpmfldnmwtchddbdwhwpgbmjqptsbdzhrbqfwgfltchsggjlbqbhmzbjdncnvsqjvftpwrpdcjzsrvrlzwqfptwzssqpltjhdmtmmgvjzzqswwrsqrqfpdllgzsdlvhfdnzlrmlqdclwhqqbtwdqcrlfdjphjvcfzpwwgphmrldnwjpnmsjnqpwtwglcbthmcbnvpmjbdhmjglgccsmrmbvbqphdlbrrgnbljlhqvgqbctmthvmsfzflwvctwmdgmrlhnmwnsjtzndlwfttcvtslppjwsgbzhztlpzhmjlrbtzfnblwwlddzwqvzbjmffbflvmvnsgjlqwjqvrcrtwbhfzbzzmtwsndqmtnbjbsqjpnwhzqgwwltwgrqfbhjtpzrqvvhgjsbzqmfdsmzjdnplvblvqlrtzsbjgdptdhgvvrblbjppnnhhnvqtmjgwqzwtmjglrjlwsrfdjfmzlsszzzpbwvjbwpcwlplhcmhgpclztjcrmcntnqbnlrmcnhcnhnmjggtqbtvcfmcbdpqhdrvspbrgcwhgjhggwpvjbplhdsnnvgbzhmcrjqvqlwsdvrrnntmwdgdqdvzznjflctlfmfzsdfbpftsscnbtnqcsvtltvnsqpghzcwtjctvwqqnvnddlzbftwrdqzltpczrbmvsmlpfjzphtpnngzdfrjqrtbppbvztsddblspbltsnrtdftmwbblgdqvmscjqpwfvdzphwqgrbpdfcvtvmddgjjpswrqnwjfghtzwzbhtjnwjsrnwhjwcwnrtwrmbmqjhrbmbsslnvtsqnlbzlfdjvmnlhccpzmvpmrnttnshdjsswjlbtpwdwgmzqcthbczngwnfpzbmmrdffqsbrmsgzrtpsstfmdgbclwthflfbzvtptdfpzznvdwncqzvjwsmczwcnwgjpffcbhrtmtnbtjgcvtwdjtrftjwgvzmlfvgdjjjgsftzctplmjjmqfdzzwrtfmwqhwzglwbvsdvtgphsmngvppvlfdjdrzhhzsrvqgfwjbqdqlrwbgdmrglzrchvgwlhhwbvhfszntbrhshvqdznfvngdmhctjnlfhsmchqbqhdtmlntsnpvdzrvwjcjflfqgnprcpscfcmlgbwzmbnfdfnbwngrrbpnvbcdfgcpgtwmtbzptsdvjhwnzpsffglnqlczgsrdzshrfpqtqbmsrgzwwjvqhzjfzldcggvfhtcvzsgfspnlgtjfglwcnbprvssdfbtzqbblzjzmtftfcfprlwsvswjvtpzcpfphvmdnbczzjbjjrpwrncdszrtqjvznvgzcwdvpfvfcqlsdmhsswpnfsvtffnjhstcznwghlpmmqbnhqtddbjdrpvfhgdwjcnfgggmwnqhmsvgzsssbfcfrmbwpfqhrmtdvhbpwzggdvfjnlrgmvjjbqhjmbvszfzdcwrcjhfdczbhmcrwngmrgrldvbjjdgddhbbvqvwztfstfzqnqwvmmdzhzqtrmnqfrhmtdfhrgfqclpqdwthrbgsprccwcsvdbnclglgflhtqstvpwrmnsvflpplrgftlvjwttmdcqwjnbttjqqlwsntplmfrncqzplwgrjpzljtmnwsqfqnzgnrbtscbfzqwnqttnghcgl
|
14
2022/06/part1
Executable file
14
2022/06/part1
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
from collections import deque
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
offset = 0
|
||||||
|
buf = deque([], 4)
|
||||||
|
|
||||||
|
while True:
|
||||||
|
buf.append(f.read(1))
|
||||||
|
offset += 1
|
||||||
|
if len(set(buf)) == 4:
|
||||||
|
print(offset)
|
||||||
|
break
|
14
2022/06/part2
Executable file
14
2022/06/part2
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
from collections import deque
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
offset = 0
|
||||||
|
buf = deque([], 14)
|
||||||
|
|
||||||
|
while True:
|
||||||
|
buf.append(f.read(1))
|
||||||
|
offset += 1
|
||||||
|
if len(set(buf)) == 14:
|
||||||
|
print(offset)
|
||||||
|
break
|
899
2022/07/input
Normal file
899
2022/07/input
Normal file
@@ -0,0 +1,899 @@
|
|||||||
|
$ cd /
|
||||||
|
$ ls
|
||||||
|
dir ctd
|
||||||
|
80649 mwcj.pmh
|
||||||
|
212527 nbb.ztq
|
||||||
|
dir pgqmwn
|
||||||
|
152170 scr.smr
|
||||||
|
17637 snqcgbs.nhv
|
||||||
|
dir tmw
|
||||||
|
dir vtm
|
||||||
|
$ cd ctd
|
||||||
|
$ ls
|
||||||
|
dir bblsqnwl
|
||||||
|
dir gzcjrs
|
||||||
|
dir pgqmwn
|
||||||
|
dir qzgjp
|
||||||
|
dir shmvmqv
|
||||||
|
$ cd bblsqnwl
|
||||||
|
$ ls
|
||||||
|
dir rng
|
||||||
|
$ cd rng
|
||||||
|
$ ls
|
||||||
|
dir jncpmzcs
|
||||||
|
dir pttvmghm
|
||||||
|
293353 qcjbfggw.tjj
|
||||||
|
dir sgm
|
||||||
|
$ cd jncpmzcs
|
||||||
|
$ ls
|
||||||
|
36126 tstwmrbr.bmr
|
||||||
|
$ cd ..
|
||||||
|
$ cd pttvmghm
|
||||||
|
$ ls
|
||||||
|
38802 ctttjn.nzr
|
||||||
|
$ cd ..
|
||||||
|
$ cd sgm
|
||||||
|
$ ls
|
||||||
|
dir djcbdbgr
|
||||||
|
dir gqrr
|
||||||
|
$ cd djcbdbgr
|
||||||
|
$ ls
|
||||||
|
254050 nbb.ztq
|
||||||
|
$ cd ..
|
||||||
|
$ cd gqrr
|
||||||
|
$ ls
|
||||||
|
168685 jgsqvf.tql
|
||||||
|
302004 shmvmqv
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd gzcjrs
|
||||||
|
$ ls
|
||||||
|
319972 bwnjnmmh.wwd
|
||||||
|
25495 fzthlhcp.nst
|
||||||
|
291270 ghjc.nvf
|
||||||
|
244664 jrlfb.fvz
|
||||||
|
$ cd ..
|
||||||
|
$ cd pgqmwn
|
||||||
|
$ ls
|
||||||
|
dir zpvthlgp
|
||||||
|
$ cd zpvthlgp
|
||||||
|
$ ls
|
||||||
|
128092 dqvcqs.zpb
|
||||||
|
140511 nvqsqtjw
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd qzgjp
|
||||||
|
$ ls
|
||||||
|
23062 jgsqvf.tql
|
||||||
|
254685 nbb.ztq
|
||||||
|
dir pgqmwn
|
||||||
|
320683 shmvmqv
|
||||||
|
105368 shmvmqv.hmg
|
||||||
|
60805 snqcgbs
|
||||||
|
$ cd pgqmwn
|
||||||
|
$ ls
|
||||||
|
47287 gffvwmr.pbd
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd shmvmqv
|
||||||
|
$ ls
|
||||||
|
80751 crtwwqb
|
||||||
|
dir dbfm
|
||||||
|
dir dhhghph
|
||||||
|
dir pgqmwn
|
||||||
|
195177 qnm
|
||||||
|
dir qpbn
|
||||||
|
dir rwmsqdw
|
||||||
|
dir shmvmqv
|
||||||
|
16133 shmvmqv.vwq
|
||||||
|
187938 tmw
|
||||||
|
$ cd dbfm
|
||||||
|
$ ls
|
||||||
|
dir gbpnjrt
|
||||||
|
265813 glzz.mjv
|
||||||
|
108147 nbb.ztq
|
||||||
|
229253 nvqsqtjw
|
||||||
|
85743 pgqmwn
|
||||||
|
261375 qnm
|
||||||
|
$ cd gbpnjrt
|
||||||
|
$ ls
|
||||||
|
179812 mtp.lnf
|
||||||
|
234550 shmvmqv.qvq
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd dhhghph
|
||||||
|
$ ls
|
||||||
|
dir ghmpb
|
||||||
|
70514 zqv.ssn
|
||||||
|
$ cd ghmpb
|
||||||
|
$ ls
|
||||||
|
132693 shmvmqv.csb
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd pgqmwn
|
||||||
|
$ ls
|
||||||
|
dir hcbtbr
|
||||||
|
200292 pgqmwn
|
||||||
|
67530 sgm
|
||||||
|
15442 snqcgbs
|
||||||
|
$ cd hcbtbr
|
||||||
|
$ ls
|
||||||
|
249252 dqvcqs.zpb
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd qpbn
|
||||||
|
$ ls
|
||||||
|
dir pmbw
|
||||||
|
261142 qnm
|
||||||
|
dir rsfh
|
||||||
|
239788 sgm
|
||||||
|
dir wfwl
|
||||||
|
$ cd pmbw
|
||||||
|
$ ls
|
||||||
|
dir gwwdtzp
|
||||||
|
dir jszzc
|
||||||
|
32725 rnggjs.cbv
|
||||||
|
dir sldv
|
||||||
|
dir tptrlz
|
||||||
|
$ cd gwwdtzp
|
||||||
|
$ ls
|
||||||
|
dir dlvbdn
|
||||||
|
63066 dslb.mrp
|
||||||
|
dir shmvmqv
|
||||||
|
dir tzssf
|
||||||
|
$ cd dlvbdn
|
||||||
|
$ ls
|
||||||
|
190731 nqv.csc
|
||||||
|
$ cd ..
|
||||||
|
$ cd shmvmqv
|
||||||
|
$ ls
|
||||||
|
223667 nbb.ztq
|
||||||
|
$ cd ..
|
||||||
|
$ cd tzssf
|
||||||
|
$ ls
|
||||||
|
27296 rlgswwzq.dgj
|
||||||
|
dir tfdq
|
||||||
|
206881 wrdqg.pfj
|
||||||
|
$ cd tfdq
|
||||||
|
$ ls
|
||||||
|
26512 wsgh
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd jszzc
|
||||||
|
$ ls
|
||||||
|
218701 qpz.hdm
|
||||||
|
$ cd ..
|
||||||
|
$ cd sldv
|
||||||
|
$ ls
|
||||||
|
dir hsbzqtml
|
||||||
|
3895 jgsqvf.tql
|
||||||
|
181815 nbb.ztq
|
||||||
|
294048 shmvmqv.fcm
|
||||||
|
dir snqcgbs
|
||||||
|
dir tmw
|
||||||
|
203484 zfpjq.pvn
|
||||||
|
dir zlpwdp
|
||||||
|
$ cd hsbzqtml
|
||||||
|
$ ls
|
||||||
|
dir shmvmqv
|
||||||
|
$ cd shmvmqv
|
||||||
|
$ ls
|
||||||
|
103536 nbb.ztq
|
||||||
|
32635 wmc
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd snqcgbs
|
||||||
|
$ ls
|
||||||
|
95112 dch
|
||||||
|
$ cd ..
|
||||||
|
$ cd tmw
|
||||||
|
$ ls
|
||||||
|
dir dplm
|
||||||
|
275451 hsr.zhn
|
||||||
|
9766 qnm
|
||||||
|
177383 ztbmqjqb.hwj
|
||||||
|
$ cd dplm
|
||||||
|
$ ls
|
||||||
|
277671 dqvcqs.zpb
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd zlpwdp
|
||||||
|
$ ls
|
||||||
|
315030 snqcgbs.mlz
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd tptrlz
|
||||||
|
$ ls
|
||||||
|
dir jfflz
|
||||||
|
154685 qbbpstff.fcs
|
||||||
|
dir sjjgljg
|
||||||
|
dir zsssqcsb
|
||||||
|
$ cd jfflz
|
||||||
|
$ ls
|
||||||
|
1330 fvldwzn.dbb
|
||||||
|
227153 nbb.ztq
|
||||||
|
$ cd ..
|
||||||
|
$ cd sjjgljg
|
||||||
|
$ ls
|
||||||
|
295745 frjnfsgt.fmq
|
||||||
|
105131 jtbltpv.vhm
|
||||||
|
174279 pgqmwn
|
||||||
|
104317 sgm
|
||||||
|
$ cd ..
|
||||||
|
$ cd zsssqcsb
|
||||||
|
$ ls
|
||||||
|
246361 bnzsv.dqf
|
||||||
|
dir ggcvqf
|
||||||
|
dir htqpwzw
|
||||||
|
249833 jgsqvf.tql
|
||||||
|
dir lbtjth
|
||||||
|
dir lcfwb
|
||||||
|
306768 mmd.gjw
|
||||||
|
121112 pgqmwn
|
||||||
|
dir sgm
|
||||||
|
dir shmvmqv
|
||||||
|
dir snqcgbs
|
||||||
|
55055 tmw.rqm
|
||||||
|
$ cd ggcvqf
|
||||||
|
$ ls
|
||||||
|
46573 fcwznd
|
||||||
|
$ cd ..
|
||||||
|
$ cd htqpwzw
|
||||||
|
$ ls
|
||||||
|
dir bmzvdzsv
|
||||||
|
193713 fpp.vwd
|
||||||
|
39898 mfjcnl.szn
|
||||||
|
65370 msljctr
|
||||||
|
10685 ppgzbc.trg
|
||||||
|
94843 shmvmqv.hqn
|
||||||
|
dir thfdg
|
||||||
|
$ cd bmzvdzsv
|
||||||
|
$ ls
|
||||||
|
74898 pgqmwn.wwh
|
||||||
|
$ cd ..
|
||||||
|
$ cd thfdg
|
||||||
|
$ ls
|
||||||
|
dir cpsgcll
|
||||||
|
$ cd cpsgcll
|
||||||
|
$ ls
|
||||||
|
244683 gdfw
|
||||||
|
17203 tmw
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd lbtjth
|
||||||
|
$ ls
|
||||||
|
dir snqcgbs
|
||||||
|
$ cd snqcgbs
|
||||||
|
$ ls
|
||||||
|
122394 grhbhpw.fsl
|
||||||
|
55324 jgsqvf.tql
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd lcfwb
|
||||||
|
$ ls
|
||||||
|
138053 nvqsqtjw
|
||||||
|
$ cd ..
|
||||||
|
$ cd sgm
|
||||||
|
$ ls
|
||||||
|
314313 dqvcqs.zpb
|
||||||
|
146274 fftqvs.ltt
|
||||||
|
225372 jtq.rzq
|
||||||
|
85697 rctzgq.rsr
|
||||||
|
dir sgm
|
||||||
|
262221 tqpng
|
||||||
|
$ cd sgm
|
||||||
|
$ ls
|
||||||
|
dir cmvvd
|
||||||
|
277366 mhs.tpn
|
||||||
|
77975 nbb.ztq
|
||||||
|
160966 qrwbvbd.ghf
|
||||||
|
55949 snqcgbs.qzc
|
||||||
|
$ cd cmvvd
|
||||||
|
$ ls
|
||||||
|
28054 lfsvfsl
|
||||||
|
165671 tmw.zwh
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd shmvmqv
|
||||||
|
$ ls
|
||||||
|
51884 bsbwrjnz.dmt
|
||||||
|
231236 jfmsg.mts
|
||||||
|
dir qpb
|
||||||
|
256063 zhmw
|
||||||
|
65512 zrnhr
|
||||||
|
$ cd qpb
|
||||||
|
$ ls
|
||||||
|
228289 dqvcqs.zpb
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd snqcgbs
|
||||||
|
$ ls
|
||||||
|
dir mnwgf
|
||||||
|
$ cd mnwgf
|
||||||
|
$ ls
|
||||||
|
178834 qgnwvlfd.cps
|
||||||
|
255140 sls.mnw
|
||||||
|
9546 tvhbm
|
||||||
|
281615 vntrb
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd rsfh
|
||||||
|
$ ls
|
||||||
|
310413 snqcgbs
|
||||||
|
$ cd ..
|
||||||
|
$ cd wfwl
|
||||||
|
$ ls
|
||||||
|
dir fmvg
|
||||||
|
129025 jgsqvf.tql
|
||||||
|
$ cd fmvg
|
||||||
|
$ ls
|
||||||
|
276100 nvqsqtjw
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd rwmsqdw
|
||||||
|
$ ls
|
||||||
|
46554 qzdmgl
|
||||||
|
55785 shmvmqv
|
||||||
|
127982 tfffrg.sbz
|
||||||
|
$ cd ..
|
||||||
|
$ cd shmvmqv
|
||||||
|
$ ls
|
||||||
|
dir ntstz
|
||||||
|
dir vprlz
|
||||||
|
$ cd ntstz
|
||||||
|
$ ls
|
||||||
|
304801 nvqsqtjw
|
||||||
|
28969 wzfb.fjv
|
||||||
|
$ cd ..
|
||||||
|
$ cd vprlz
|
||||||
|
$ ls
|
||||||
|
dir cmmtnt
|
||||||
|
dir shmvmqv
|
||||||
|
$ cd cmmtnt
|
||||||
|
$ ls
|
||||||
|
270129 shmvmqv
|
||||||
|
$ cd ..
|
||||||
|
$ cd shmvmqv
|
||||||
|
$ ls
|
||||||
|
dir sgm
|
||||||
|
$ cd sgm
|
||||||
|
$ ls
|
||||||
|
287889 hghh.mwt
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd pgqmwn
|
||||||
|
$ ls
|
||||||
|
85368 qnm
|
||||||
|
$ cd ..
|
||||||
|
$ cd tmw
|
||||||
|
$ ls
|
||||||
|
dir fnpjwg
|
||||||
|
dir gdt
|
||||||
|
dir ggs
|
||||||
|
dir llh
|
||||||
|
69470 nvqsqtjw
|
||||||
|
dir sgm
|
||||||
|
$ cd fnpjwg
|
||||||
|
$ ls
|
||||||
|
161820 dndq.tfl
|
||||||
|
dir dwmcs
|
||||||
|
205155 tdccsw.qlq
|
||||||
|
165352 vvmnpj
|
||||||
|
$ cd dwmcs
|
||||||
|
$ ls
|
||||||
|
121466 dqvcqs.zpb
|
||||||
|
274171 qbbqmf.ltf
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd gdt
|
||||||
|
$ ls
|
||||||
|
dir cnvtrw
|
||||||
|
dir gdcvdsv
|
||||||
|
dir hcn
|
||||||
|
dir hsmhn
|
||||||
|
dir jnhqz
|
||||||
|
78446 pgqmwn.mwr
|
||||||
|
dir qwfl
|
||||||
|
dir snqcgbs
|
||||||
|
$ cd cnvtrw
|
||||||
|
$ ls
|
||||||
|
dir hfvzm
|
||||||
|
$ cd hfvzm
|
||||||
|
$ ls
|
||||||
|
305880 tmw.lvw
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd gdcvdsv
|
||||||
|
$ ls
|
||||||
|
69690 jhscd
|
||||||
|
$ cd ..
|
||||||
|
$ cd hcn
|
||||||
|
$ ls
|
||||||
|
166775 dqvcqs.zpb
|
||||||
|
294325 nvqsqtjw
|
||||||
|
$ cd ..
|
||||||
|
$ cd hsmhn
|
||||||
|
$ ls
|
||||||
|
172897 lrjf.dnw
|
||||||
|
dir npgr
|
||||||
|
225227 pbcmjg.rhf
|
||||||
|
234530 pgqmwn.cqb
|
||||||
|
dir qlz
|
||||||
|
dir snqcgbs
|
||||||
|
52808 tnntq.wjt
|
||||||
|
$ cd npgr
|
||||||
|
$ ls
|
||||||
|
141280 qnm
|
||||||
|
64422 rwv
|
||||||
|
$ cd ..
|
||||||
|
$ cd qlz
|
||||||
|
$ ls
|
||||||
|
258070 nbb.ztq
|
||||||
|
$ cd ..
|
||||||
|
$ cd snqcgbs
|
||||||
|
$ ls
|
||||||
|
3723 frcr.jmn
|
||||||
|
109486 sgm.nsw
|
||||||
|
114054 shmvmqv.frr
|
||||||
|
142024 snqcgbs
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd jnhqz
|
||||||
|
$ ls
|
||||||
|
dir gpztwnqm
|
||||||
|
dir nwpqbf
|
||||||
|
dir sgm
|
||||||
|
dir tmw
|
||||||
|
$ cd gpztwnqm
|
||||||
|
$ ls
|
||||||
|
303103 bjbpj
|
||||||
|
281422 hgp
|
||||||
|
284044 jgsqvf.tql
|
||||||
|
dir qzts
|
||||||
|
133248 sgm
|
||||||
|
$ cd qzts
|
||||||
|
$ ls
|
||||||
|
2428 dqvcqs.zpb
|
||||||
|
283206 hzs.smg
|
||||||
|
dir lmlw
|
||||||
|
$ cd lmlw
|
||||||
|
$ ls
|
||||||
|
dir sjrfmpc
|
||||||
|
$ cd sjrfmpc
|
||||||
|
$ ls
|
||||||
|
164708 nbb.ztq
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd nwpqbf
|
||||||
|
$ ls
|
||||||
|
192033 dqvcqs.zpb
|
||||||
|
298220 jqd.bfh
|
||||||
|
dir mhtsg
|
||||||
|
100921 snqcgbs
|
||||||
|
dir zbtb
|
||||||
|
$ cd mhtsg
|
||||||
|
$ ls
|
||||||
|
140813 cgcn.rjn
|
||||||
|
$ cd ..
|
||||||
|
$ cd zbtb
|
||||||
|
$ ls
|
||||||
|
201213 gjglrmf.dzv
|
||||||
|
dir grbl
|
||||||
|
81636 pgqmwn.zfm
|
||||||
|
265992 pwhbflzn.sch
|
||||||
|
dir twjrlzpj
|
||||||
|
$ cd grbl
|
||||||
|
$ ls
|
||||||
|
82894 jgsqvf.tql
|
||||||
|
$ cd ..
|
||||||
|
$ cd twjrlzpj
|
||||||
|
$ ls
|
||||||
|
304952 cwhtqv.zvh
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd sgm
|
||||||
|
$ ls
|
||||||
|
56329 ftfvfpz.srv
|
||||||
|
3875 nbb.ztq
|
||||||
|
4766 shmvmqv.fdt
|
||||||
|
247272 vbw.hsv
|
||||||
|
$ cd ..
|
||||||
|
$ cd tmw
|
||||||
|
$ ls
|
||||||
|
dir ddbvd
|
||||||
|
$ cd ddbvd
|
||||||
|
$ ls
|
||||||
|
83200 tnrwdc.dzm
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd qwfl
|
||||||
|
$ ls
|
||||||
|
dir bcfnz
|
||||||
|
23440 nvqsqtjw
|
||||||
|
dir pwb
|
||||||
|
206984 shmvmqv.fjb
|
||||||
|
35453 snqcgbs
|
||||||
|
297136 snqcgbs.fnr
|
||||||
|
dir tmw
|
||||||
|
181689 wcbdwwq
|
||||||
|
$ cd bcfnz
|
||||||
|
$ ls
|
||||||
|
dir fnrclwn
|
||||||
|
dir fslh
|
||||||
|
258656 gtbhdpt.pth
|
||||||
|
238261 psbsmvpf.lmt
|
||||||
|
dir sgm
|
||||||
|
$ cd fnrclwn
|
||||||
|
$ ls
|
||||||
|
30297 crhjfzlp.gtb
|
||||||
|
297557 gvvnbmt.spr
|
||||||
|
189301 nvqsqtjw
|
||||||
|
45159 sndmlvw.lsb
|
||||||
|
259295 sqd
|
||||||
|
$ cd ..
|
||||||
|
$ cd fslh
|
||||||
|
$ ls
|
||||||
|
246662 bpvcj.hnf
|
||||||
|
$ cd ..
|
||||||
|
$ cd sgm
|
||||||
|
$ ls
|
||||||
|
dir jpr
|
||||||
|
dir tmw
|
||||||
|
dir wscvtrd
|
||||||
|
$ cd jpr
|
||||||
|
$ ls
|
||||||
|
49005 dqvcqs.zpb
|
||||||
|
$ cd ..
|
||||||
|
$ cd tmw
|
||||||
|
$ ls
|
||||||
|
201387 sgm
|
||||||
|
$ cd ..
|
||||||
|
$ cd wscvtrd
|
||||||
|
$ ls
|
||||||
|
77175 blczlqf.pnv
|
||||||
|
207393 shmvmqv.qbs
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd pwb
|
||||||
|
$ ls
|
||||||
|
89451 bqcmzzf
|
||||||
|
207548 gfwgnft.php
|
||||||
|
dir gsn
|
||||||
|
dir jtvpnvz
|
||||||
|
144792 nbb.ztq
|
||||||
|
dir nzzqj
|
||||||
|
214209 pgqmwn.sjv
|
||||||
|
236845 pzvjqqvz
|
||||||
|
dir sgm
|
||||||
|
dir snqcgbs
|
||||||
|
dir vfvttj
|
||||||
|
$ cd gsn
|
||||||
|
$ ls
|
||||||
|
93490 snqcgbs.fbv
|
||||||
|
$ cd ..
|
||||||
|
$ cd jtvpnvz
|
||||||
|
$ ls
|
||||||
|
dir fdnvff
|
||||||
|
208857 gpvwzhd
|
||||||
|
229559 rnc
|
||||||
|
225519 snqcgbs
|
||||||
|
162969 tmw
|
||||||
|
$ cd fdnvff
|
||||||
|
$ ls
|
||||||
|
286944 dztqqtf.nmp
|
||||||
|
dir rwc
|
||||||
|
181737 snqcgbs
|
||||||
|
$ cd rwc
|
||||||
|
$ ls
|
||||||
|
115290 nbb.ztq
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd nzzqj
|
||||||
|
$ ls
|
||||||
|
154210 jgsqvf.tql
|
||||||
|
dir sgm
|
||||||
|
182438 snqcgbs.wpg
|
||||||
|
dir zpvghr
|
||||||
|
$ cd sgm
|
||||||
|
$ ls
|
||||||
|
123163 rjgc.ccm
|
||||||
|
dir rqn
|
||||||
|
291622 tflv.pqc
|
||||||
|
$ cd rqn
|
||||||
|
$ ls
|
||||||
|
220655 rtbrwmjn.clj
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd zpvghr
|
||||||
|
$ ls
|
||||||
|
288859 dqvcqs.zpb
|
||||||
|
218036 hfdcrjp
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd sgm
|
||||||
|
$ ls
|
||||||
|
107183 sgm.nsf
|
||||||
|
225832 sjwn
|
||||||
|
dir tgf
|
||||||
|
$ cd tgf
|
||||||
|
$ ls
|
||||||
|
258766 nvqsqtjw
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd snqcgbs
|
||||||
|
$ ls
|
||||||
|
56144 whjpg.ffz
|
||||||
|
$ cd ..
|
||||||
|
$ cd vfvttj
|
||||||
|
$ ls
|
||||||
|
dir ptmggmsl
|
||||||
|
$ cd ptmggmsl
|
||||||
|
$ ls
|
||||||
|
dir psd
|
||||||
|
dir wdzptvjc
|
||||||
|
$ cd psd
|
||||||
|
$ ls
|
||||||
|
121637 dqvcqs.zpb
|
||||||
|
$ cd ..
|
||||||
|
$ cd wdzptvjc
|
||||||
|
$ ls
|
||||||
|
dir shmvmqv
|
||||||
|
$ cd shmvmqv
|
||||||
|
$ ls
|
||||||
|
23754 dqmrj.fhh
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd tmw
|
||||||
|
$ ls
|
||||||
|
17390 hqz
|
||||||
|
dir jnsb
|
||||||
|
31072 nvqsqtjw
|
||||||
|
dir tmw
|
||||||
|
144511 vvwjcqr.rtz
|
||||||
|
$ cd jnsb
|
||||||
|
$ ls
|
||||||
|
265907 snqcgbs.swh
|
||||||
|
$ cd ..
|
||||||
|
$ cd tmw
|
||||||
|
$ ls
|
||||||
|
dir gfncpvw
|
||||||
|
$ cd gfncpvw
|
||||||
|
$ ls
|
||||||
|
dir ctvwgtlh
|
||||||
|
$ cd ctvwgtlh
|
||||||
|
$ ls
|
||||||
|
29825 ccjvs.qqq
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd snqcgbs
|
||||||
|
$ ls
|
||||||
|
230355 ccl.ddg
|
||||||
|
dir csfdmhmb
|
||||||
|
dir drpgbvzf
|
||||||
|
313060 hhcpw.nbs
|
||||||
|
dir pfpn
|
||||||
|
dir ptwnpdnc
|
||||||
|
273250 qfsnmbm
|
||||||
|
dir shmvmqv
|
||||||
|
244767 tmw.zjg
|
||||||
|
$ cd csfdmhmb
|
||||||
|
$ ls
|
||||||
|
50690 nbb.ztq
|
||||||
|
282078 vzrw
|
||||||
|
$ cd ..
|
||||||
|
$ cd drpgbvzf
|
||||||
|
$ ls
|
||||||
|
dir bhwvqf
|
||||||
|
803 dqvcqs.zpb
|
||||||
|
49859 hhw.gpd
|
||||||
|
180202 nbb.ztq
|
||||||
|
dir nfh
|
||||||
|
64808 pgqmwn
|
||||||
|
276746 qnm
|
||||||
|
dir shmvmqv
|
||||||
|
dir tmw
|
||||||
|
$ cd bhwvqf
|
||||||
|
$ ls
|
||||||
|
76667 qcgpdwm.sbs
|
||||||
|
$ cd ..
|
||||||
|
$ cd nfh
|
||||||
|
$ ls
|
||||||
|
23774 jgsqvf.tql
|
||||||
|
34652 pnp.lvp
|
||||||
|
120264 zvp
|
||||||
|
$ cd ..
|
||||||
|
$ cd shmvmqv
|
||||||
|
$ ls
|
||||||
|
47748 cswm.dsr
|
||||||
|
dir pgqmwn
|
||||||
|
$ cd pgqmwn
|
||||||
|
$ ls
|
||||||
|
109587 qnm
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd tmw
|
||||||
|
$ ls
|
||||||
|
105578 snqcgbs
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd pfpn
|
||||||
|
$ ls
|
||||||
|
194628 wgc
|
||||||
|
$ cd ..
|
||||||
|
$ cd ptwnpdnc
|
||||||
|
$ ls
|
||||||
|
142456 rvwtfvr.tsc
|
||||||
|
$ cd ..
|
||||||
|
$ cd shmvmqv
|
||||||
|
$ ls
|
||||||
|
118642 hgqlrt.btl
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ggs
|
||||||
|
$ ls
|
||||||
|
231223 hmtp.djc
|
||||||
|
$ cd ..
|
||||||
|
$ cd llh
|
||||||
|
$ ls
|
||||||
|
dir hbq
|
||||||
|
dir svt
|
||||||
|
$ cd hbq
|
||||||
|
$ ls
|
||||||
|
157243 fhpsb
|
||||||
|
36981 rdbqnbfr.cwz
|
||||||
|
282257 tmw.wwv
|
||||||
|
$ cd ..
|
||||||
|
$ cd svt
|
||||||
|
$ ls
|
||||||
|
161395 sgm.hdl
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd sgm
|
||||||
|
$ ls
|
||||||
|
247276 fss
|
||||||
|
dir pgqmwn
|
||||||
|
68084 pgqmwn.vfl
|
||||||
|
28475 sgm.swb
|
||||||
|
dir shmvmqv
|
||||||
|
223438 snqcgbs.bng
|
||||||
|
$ cd pgqmwn
|
||||||
|
$ ls
|
||||||
|
134640 dqvcqs.zpb
|
||||||
|
dir nrdd
|
||||||
|
25431 nvqsqtjw
|
||||||
|
149751 qhzqw
|
||||||
|
dir vfmcjhwz
|
||||||
|
dir zlfhr
|
||||||
|
$ cd nrdd
|
||||||
|
$ ls
|
||||||
|
dir pgqmwn
|
||||||
|
$ cd pgqmwn
|
||||||
|
$ ls
|
||||||
|
57090 nfbd
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd vfmcjhwz
|
||||||
|
$ ls
|
||||||
|
24256 fdzfwfh.rcv
|
||||||
|
$ cd ..
|
||||||
|
$ cd zlfhr
|
||||||
|
$ ls
|
||||||
|
20504 fgbpndj.wgm
|
||||||
|
181769 qnm
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd shmvmqv
|
||||||
|
$ ls
|
||||||
|
208988 nbb.ztq
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd vtm
|
||||||
|
$ ls
|
||||||
|
dir lqvjm
|
||||||
|
dir msmtcnsj
|
||||||
|
dir qmtgdn
|
||||||
|
dir tmw
|
||||||
|
$ cd lqvjm
|
||||||
|
$ ls
|
||||||
|
239772 hnj.zqf
|
||||||
|
$ cd ..
|
||||||
|
$ cd msmtcnsj
|
||||||
|
$ ls
|
||||||
|
48711 clfl.fsl
|
||||||
|
245929 ddh.gdq
|
||||||
|
dir fvlb
|
||||||
|
241040 nvqsqtjw
|
||||||
|
dir shmvmqv
|
||||||
|
305567 vdzzqpz.jfs
|
||||||
|
$ cd fvlb
|
||||||
|
$ ls
|
||||||
|
25669 ddz.tbc
|
||||||
|
$ cd ..
|
||||||
|
$ cd shmvmqv
|
||||||
|
$ ls
|
||||||
|
283905 nvqsqtjw
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd qmtgdn
|
||||||
|
$ ls
|
||||||
|
246479 pgqmwn
|
||||||
|
35386 rtf.cdp
|
||||||
|
217551 sgm.mrz
|
||||||
|
$ cd ..
|
||||||
|
$ cd tmw
|
||||||
|
$ ls
|
||||||
|
dir qfggmdvd
|
||||||
|
dir tlv
|
||||||
|
dir tmw
|
||||||
|
$ cd qfggmdvd
|
||||||
|
$ ls
|
||||||
|
288091 djwfq.wzc
|
||||||
|
37383 pwnzdj
|
||||||
|
214119 shmvmqv.wlg
|
||||||
|
29747 tmw.ntw
|
||||||
|
146556 zgbd
|
||||||
|
$ cd ..
|
||||||
|
$ cd tlv
|
||||||
|
$ ls
|
||||||
|
142924 grj.qhw
|
||||||
|
210672 qhmn
|
||||||
|
209554 zbcqcb.mhn
|
||||||
|
141215 zjmrgw.wlc
|
||||||
|
$ cd ..
|
||||||
|
$ cd tmw
|
||||||
|
$ ls
|
||||||
|
dir fwsgn
|
||||||
|
dir tmw
|
||||||
|
$ cd fwsgn
|
||||||
|
$ ls
|
||||||
|
dir qbbhrst
|
||||||
|
306142 sgm
|
||||||
|
$ cd qbbhrst
|
||||||
|
$ ls
|
||||||
|
dir sgm
|
||||||
|
dir srbn
|
||||||
|
$ cd sgm
|
||||||
|
$ ls
|
||||||
|
80992 bbvqrcf.chp
|
||||||
|
$ cd ..
|
||||||
|
$ cd srbn
|
||||||
|
$ ls
|
||||||
|
161382 nvqsqtjw
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd tmw
|
||||||
|
$ ls
|
||||||
|
219508 dqvcqs.zpb
|
||||||
|
dir tmw
|
||||||
|
134434 wbvvgqwn.bmh
|
||||||
|
$ cd tmw
|
||||||
|
$ ls
|
||||||
|
209116 pgqmwn
|
61
2022/07/part1
Normal file
61
2022/07/part1
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import re
|
||||||
|
from functools import reduce
|
||||||
|
|
||||||
|
FS = {}
|
||||||
|
POS = [] # empty dict is /
|
||||||
|
|
||||||
|
def dig(d, keys):
|
||||||
|
if keys == []:
|
||||||
|
return d
|
||||||
|
else:
|
||||||
|
return reduce(dict.__getitem__, keys, d)
|
||||||
|
|
||||||
|
def process_instruction(spec):
|
||||||
|
_, cmd, *args = spec.split(" ")
|
||||||
|
if cmd == "cd":
|
||||||
|
if args[0] == "/":
|
||||||
|
POS.clear()
|
||||||
|
elif args[0] == "..":
|
||||||
|
POS.pop()
|
||||||
|
else:
|
||||||
|
POS.append(args[0])
|
||||||
|
elif cmd != "ls": # nothing to do for ls
|
||||||
|
raise "Unknown command: " + spec
|
||||||
|
|
||||||
|
def process_output(spec):
|
||||||
|
cwd = dig(FS, POS)
|
||||||
|
size_or_dir, name = spec.split(" ")
|
||||||
|
|
||||||
|
if size_or_dir == "dir":
|
||||||
|
cwd[name] = {}
|
||||||
|
else:
|
||||||
|
cwd[name] = int(size_or_dir)
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
# Read the diagram + separating line
|
||||||
|
for line in f:
|
||||||
|
if line[0] == '$':
|
||||||
|
process_instruction(line.rstrip())
|
||||||
|
else:
|
||||||
|
process_output(line.rstrip())
|
||||||
|
|
||||||
|
SIZE = []
|
||||||
|
# Recursively sum each dictionary and add the sums together
|
||||||
|
def sum_sizes(d):
|
||||||
|
sz = 0
|
||||||
|
|
||||||
|
for v in d.values():
|
||||||
|
if isinstance(v, dict):
|
||||||
|
sz = sz + sum_sizes(v)
|
||||||
|
else:
|
||||||
|
sz = sz + v
|
||||||
|
|
||||||
|
if sz <= 100000:
|
||||||
|
SIZE.append(sz)
|
||||||
|
|
||||||
|
return sz
|
||||||
|
|
||||||
|
sum_sizes(FS)
|
||||||
|
print(sum(SIZE))
|
67
2022/07/part2
Executable file
67
2022/07/part2
Executable file
@@ -0,0 +1,67 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import re
|
||||||
|
from functools import reduce
|
||||||
|
|
||||||
|
FS = {}
|
||||||
|
POS = [] # empty dict is /
|
||||||
|
|
||||||
|
def dig(d, keys):
|
||||||
|
if keys == []:
|
||||||
|
return d
|
||||||
|
else:
|
||||||
|
return reduce(dict.__getitem__, keys, d)
|
||||||
|
|
||||||
|
def process_instruction(spec):
|
||||||
|
_, cmd, *args = spec.split(" ")
|
||||||
|
if cmd == "cd":
|
||||||
|
if args[0] == "/":
|
||||||
|
POS.clear()
|
||||||
|
elif args[0] == "..":
|
||||||
|
POS.pop()
|
||||||
|
else:
|
||||||
|
POS.append(args[0])
|
||||||
|
elif cmd != "ls": # nothing to do for ls
|
||||||
|
raise "Unknown command: " + spec
|
||||||
|
|
||||||
|
def process_output(spec):
|
||||||
|
cwd = dig(FS, POS)
|
||||||
|
size_or_dir, name = spec.split(" ")
|
||||||
|
|
||||||
|
if size_or_dir == "dir":
|
||||||
|
cwd[name] = {}
|
||||||
|
else:
|
||||||
|
cwd[name] = int(size_or_dir)
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
# Read the diagram + separating line
|
||||||
|
for line in f:
|
||||||
|
if line[0] == '$':
|
||||||
|
process_instruction(line.rstrip())
|
||||||
|
else:
|
||||||
|
process_output(line.rstrip())
|
||||||
|
|
||||||
|
SIZE = []
|
||||||
|
|
||||||
|
# Recursively sum each dictionary and add the sums together
|
||||||
|
def sum_sizes(d):
|
||||||
|
sz = 0
|
||||||
|
|
||||||
|
for v in d.values():
|
||||||
|
if isinstance(v, dict):
|
||||||
|
sz = sz + sum_sizes(v)
|
||||||
|
else:
|
||||||
|
sz = sz + v
|
||||||
|
|
||||||
|
SIZE.append(sz)
|
||||||
|
|
||||||
|
return sz
|
||||||
|
|
||||||
|
total_used = sum_sizes(FS)
|
||||||
|
space_free = 70000000 - total_used
|
||||||
|
target = 30000000 - space_free
|
||||||
|
|
||||||
|
for v in sorted(SIZE):
|
||||||
|
if v >= target:
|
||||||
|
print(v)
|
||||||
|
break
|
99
2022/08/input
Normal file
99
2022/08/input
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
230302102312303431324124303141114045300001501242156105363242032123135210143324224140132332112100221
|
||||||
|
322200120140130323143433402101444233512140224062422011111403231052521053542252401012232443102111032
|
||||||
|
220300201042003221454531141345330151415344324656555610153343240503352304331551230452141112120303320
|
||||||
|
131301034134041313145104311104431531104002136262204021050462633364005504230105333250310334430012231
|
||||||
|
021000431324243205221240551231546346005546113055526350502461501303260444304552521404504240012202100
|
||||||
|
130032042140100501120530551053341401664420533042546256013026351632616214431331333233341222140143402
|
||||||
|
102213021202104044154525451632332223320015014365014110000262152226451306654102512123512023131343201
|
||||||
|
331321033401405043214153225511265312435604105124767542760400104362304616510410004451235001241134031
|
||||||
|
234010022341252215202325124644011146300614531262461555623242615510132104506502155353245030411321214
|
||||||
|
304102101231325220244422554336626240225366453655233535214545356712401516453566460554521045401410034
|
||||||
|
124222310241022025221634021203456261377536264451547554432421672616632511164231351545110100421124041
|
||||||
|
231432431351552412035636562534314116212363155763515352233177566413166344310511112324524355103343213
|
||||||
|
103031123324141030040550165506212465546735652123674755314542271633361443500442335114204031255241224
|
||||||
|
320113443131100311503426244335257671411253247761166615472155473411374661621210160254602143000503002
|
||||||
|
003031503150544521324165216521624371212157515435232724117746343274255223574322040541222535240125320
|
||||||
|
431234101124435354234422257673575575175341283683836588272273446224536761435621240216142511140302323
|
||||||
|
123130200251405600130545412766211145442246588283778878426386645127335561311156623533260243441410122
|
||||||
|
432402514341626355125037245134531317588423262388855625822687585244364351651321623121561560010312113
|
||||||
|
312341305215255100304471152277172523637784345263433358277226635245516164123212336452605424200110430
|
||||||
|
001434330142034560665237211325533756327872855833882354736845633764265764254723135136216531341302425
|
||||||
|
345110412256633232261137637156368637757634446735753883783375577533786454271246611655350133245255344
|
||||||
|
130515311233246602623742771612278266785844368233445235428485736334867477631346361563230603123034134
|
||||||
|
330040046512436325746335744443684727248746257893478978476233834562664674872164576161101306065422041
|
||||||
|
222154026412500467311716243862854643768585738339383839693837627262625554423155651645532206206134414
|
||||||
|
542550455123342216235327358832483365754856794969568679863575688486863754828773355515541016335040545
|
||||||
|
404234533623052522751165344644483278684968464647937735374953694986883822877673474565215510426220344
|
||||||
|
314254353400344713147333655472357537587356967673598874457668767889935746887521663427411521635661241
|
||||||
|
250301522140303127537224263455464893375697787574446387685355687386368545878447447117247625662212301
|
||||||
|
531245634640354662654558667774728435789865389774334746464789766764944468568554351264634206163162541
|
||||||
|
254210565205047575772722425336239545866857335764867899689375964484886366575237326255114412442436305
|
||||||
|
254440240052645344117878758858477694934868449869846797495773435673485582766622343237654674230614650
|
||||||
|
302350056253421457757382352837655457348549979584868566587675763536549455773244366226575120110432202
|
||||||
|
524251410101643732555863746673768898357598988876769465556757759865678788677845447537546514520246465
|
||||||
|
412424366507365464723435562846447777556788564867748886999988659539789863738827284322243654235650222
|
||||||
|
302260630341726247764652638469957786688964699758599945666799457875988357894464748565724572166261234
|
||||||
|
215150213244237121847528247786444449998976749466844877974565875546766745893426378444445742710223525
|
||||||
|
424160233533557213425484474439489658786978977985856797555685676569553489768586885887425626363046446
|
||||||
|
153322066741372433344452464455559968984567799888687677756697744545783483874576867684647332571001005
|
||||||
|
145420124453223247785888737894569596698676567955697655669665679864796955354676474465373675660155614
|
||||||
|
033506450161333145373824444348436889577445897969987595896979686466678689467597644746532527513131131
|
||||||
|
225012522655144432763537973395798658496758867787886779885975689947696977368784268458336146373115143
|
||||||
|
216342537614133655675625959443677654855666875698895757965779667678777945996749485327555574145424460
|
||||||
|
166106344353256563624325443477776845578965867968867569996565856754694668864655545773383227234335414
|
||||||
|
150522031675635233237668486584959896545865765899786958699768689485564988376498275457676373151605464
|
||||||
|
412336103615667832572493349365459748765865988788966796676798558958658889874394465442751254315016610
|
||||||
|
352326617457732528434753466738454444568858687988678798897989789856878957499594873552874152661460523
|
||||||
|
062415331267566426437243673895878674897896558788889897878987955994767455333837536424584567627336053
|
||||||
|
411350266636525852438469567638886987958577976996868967687585597767547999698594634538245463464543005
|
||||||
|
052464462614766832722735867947598567878869668679877788879769878876988899643845375267672315514353000
|
||||||
|
543545564473648376567477376798669977686956967668898889969875757785956549649485643782434576251353131
|
||||||
|
634033674455736672452884665689654778778759896979877869977686568577555776433947564287374612267436364
|
||||||
|
620541245674573376723897469464969646966776677799787978979857977798869788359344972235473531452736105
|
||||||
|
602620347126374653254296764775476547797557857869988876878957998886476566934646536357683276776151421
|
||||||
|
453313013613244386884696349435758974966876787969887886879899685595858499393337785854825724737215563
|
||||||
|
633162016753461244685737989459664898569667899679799786798979988797998958559548885735471347141136630
|
||||||
|
000101426742225562735894769979656676989556887676998666978968879767489645833678358457422477754521142
|
||||||
|
620262606411662643533249376858748847498879757666997687879595676878844467633967768755461265735510400
|
||||||
|
360023137544654575733228376896988578467698566656988978959969695576685749457685864437734765717026064
|
||||||
|
453004005155344764583728835857979544659758957678779579869558958494954483997436423583442547122611144
|
||||||
|
542364512554772785834745874957646879945679759867877799887755596454644564849589474263221373377352410
|
||||||
|
002404034225236156254239388474876685554666797767767967895789558759867549659597464467365225556245635
|
||||||
|
245410135477125426663788797639838547747878866579559887665897566567957973945395387477415314463463430
|
||||||
|
134134265157751574644752634743354666668958565798799857969998998868959355953856752485414215452524346
|
||||||
|
134233063522723113742886693543696949958945798696986777765986578999899884698774475872617234240653423
|
||||||
|
244361001066345154366465584498936779955869489578987799745999756687935697875536775754117227145563503
|
||||||
|
424615513054521426726444456756894679964484855474988695686689467459399699543485425832215323565610231
|
||||||
|
010511022361177421578425884488933866869996559974758675556944646898573447548734866775441423552334113
|
||||||
|
455000614233131572534883424588896457684489858997764475858957676964979965647378323342574224433221410
|
||||||
|
554234433657562455545554335673953366894875796478846544767476975987878676385863745315342113644542314
|
||||||
|
334234343615275457652768335759749448996379787584585465788795884334949898848654742611353314261636503
|
||||||
|
333304555356366151638427333872998755488366686597689567687856687846596683534345663212543346305030250
|
||||||
|
221202454261633375664542356764698437549939857548989949987335436749598666277762261737227146546505534
|
||||||
|
240412550420563537276688628732843367868467736695759997434973759746799657483248636225432651522613045
|
||||||
|
234101415413036337546543888388563596433499988836578844689689497975764628525732325317653041241353030
|
||||||
|
431410263125326725415234754275746658476797893535668937455785755994425345326575247342241464251000421
|
||||||
|
235305105630506142127546572374764553754685586586673543349859396362874755756655416517334460144522501
|
||||||
|
053230360255455453432625173284836864837934635996948769536785973725832747476731215716516416145320150
|
||||||
|
220341023145561653434447455522778482225563875986777563368797985846552555226462623761223514365411344
|
||||||
|
555505021215644010564473315638562438843876455985785666379866472746877227331266714741141010601131000
|
||||||
|
453335252144616255521312353556677472322787423527747647554222386736627248134362414253412412531431213
|
||||||
|
042151015320560413551651234262565787675225582872838475557456742335545484137617276444245016450453552
|
||||||
|
014404334344615462565743465273746656366752555484464325685467246827267515345457117051354205241444340
|
||||||
|
213041551013263163616741653367152326275633684378845888827238722532735171772265542620411543050510551
|
||||||
|
224455113205603560061536164734146772822552432636277537568582283454552565546556622004610432104440414
|
||||||
|
120034300413036442405642132721761733145582724757284464865848374626544672733422446132110450322334043
|
||||||
|
321102323253550034451665134657546626247721386824348475375862731112516436572563504423615532222151203
|
||||||
|
423413023253053651012440232734663275166577433646527244777525111735773767313620631626060044333201413
|
||||||
|
310311122105544263022025236566616265144255413423733523634375771573412213343520014446112203251501244
|
||||||
|
242112304444105230054262221514232727536351532732445557376642241447573270443566533260102401044113312
|
||||||
|
300401122201443130504625604224103567247721576334262357161547725313757534624304442441502400005401420
|
||||||
|
312140241542522534423315456561105236441214136262754317657256235334116150340065011324403154142414212
|
||||||
|
144233324321121441233255150514400352347655162673141155544742475145632635002103305025150134340421444
|
||||||
|
111103103110050242122311312046534446626061741554364774752533752234163656421540312341011215100222430
|
||||||
|
303431234002202314522440214134041163045124514037641775350115015005306206502562310105314100032000400
|
||||||
|
022101131200322543535350013343206260166164021153334624135541245000601615213233143310354543221432032
|
||||||
|
233233001110344441512334010360062644015111403065346201116113310635016323603102000435213440203331333
|
||||||
|
221234200414024043305553013402501300310163441031202131631042043410330561032554522352320341422042103
|
||||||
|
321123401142123425525550311314256215506650120142506242614512364236453401432552531430304012423410223
|
||||||
|
122333244113420243051112411113522042223653563261365250113056645225530145055223432541231304233333203
|
40
2022/08/part1
Executable file
40
2022/08/part1
Executable file
@@ -0,0 +1,40 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
TGRID = [] # heights
|
||||||
|
VGRID = [] # visibility
|
||||||
|
|
||||||
|
def check_visible(x, y, xr, yr):
|
||||||
|
target = TGRID[y][x]
|
||||||
|
for y in yr:
|
||||||
|
for x in xr:
|
||||||
|
if TGRID[y][x] >= target:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
for line in f:
|
||||||
|
l = []
|
||||||
|
for tree in line.rstrip():
|
||||||
|
l.append(int(tree))
|
||||||
|
TGRID.append(l)
|
||||||
|
|
||||||
|
max_y = len(TGRID)
|
||||||
|
for y in range(0, max_y):
|
||||||
|
max_x = len(TGRID[y])
|
||||||
|
l = []
|
||||||
|
for x in range(0, max_x):
|
||||||
|
l.append(
|
||||||
|
check_visible(x, y, range(0, x), range(y, y+1)) or # left to right
|
||||||
|
check_visible(x, y, range(x, x+1), range(0, y)) or # top to bottom
|
||||||
|
check_visible(x, y, range(max_x-1, x, -1), range(y, y+1)) or # right to left
|
||||||
|
check_visible(x, y, range(x, x+1), range(max_y-1, y, -1)) # bottom to top
|
||||||
|
)
|
||||||
|
VGRID.append(l)
|
||||||
|
|
||||||
|
count = 0
|
||||||
|
for row in VGRID:
|
||||||
|
for col in row:
|
||||||
|
if col:
|
||||||
|
count = count + 1
|
||||||
|
|
||||||
|
print(count)
|
45
2022/08/part2
Executable file
45
2022/08/part2
Executable file
@@ -0,0 +1,45 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
TGRID = [] # heights
|
||||||
|
VGRID = [] # scenic score
|
||||||
|
|
||||||
|
def count_visible(x, y, xr, yr):
|
||||||
|
target = TGRID[y][x]
|
||||||
|
count = 0
|
||||||
|
|
||||||
|
for y in yr:
|
||||||
|
for x in xr:
|
||||||
|
if TGRID[y][x] >= target:
|
||||||
|
if x > 0 and y > 0:
|
||||||
|
count += 1
|
||||||
|
return count
|
||||||
|
count+=1
|
||||||
|
return count
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
for line in f:
|
||||||
|
l = []
|
||||||
|
for tree in line.rstrip():
|
||||||
|
l.append(int(tree))
|
||||||
|
TGRID.append(l)
|
||||||
|
|
||||||
|
max_y = len(TGRID)
|
||||||
|
for y in range(0, max_y):
|
||||||
|
max_x = len(TGRID[y])
|
||||||
|
l = []
|
||||||
|
for x in range(0, max_x):
|
||||||
|
l.append(
|
||||||
|
count_visible(x, y, range(x, x+1), range(y-1, -1, -1)) * # north
|
||||||
|
count_visible(x, y, range(x+1, max_x), range(y, y+1)) * # east
|
||||||
|
count_visible(x, y, range(x, x+1), range(y+1, max_y)) * # south
|
||||||
|
count_visible(x, y, range(x-1, -1, -1), range(y, y+1)) # west
|
||||||
|
)
|
||||||
|
VGRID.append(l)
|
||||||
|
|
||||||
|
best_seen = 0
|
||||||
|
for y in range(0, len(VGRID)):
|
||||||
|
for x in range(0, len(VGRID[y])):
|
||||||
|
if VGRID[y][x] > best_seen:
|
||||||
|
best_seen = VGRID[y][x]
|
||||||
|
|
||||||
|
print(best_seen)
|
2000
2022/09/input
Normal file
2000
2022/09/input
Normal file
File diff suppressed because it is too large
Load Diff
40
2022/09/part1
Executable file
40
2022/09/part1
Executable file
@@ -0,0 +1,40 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import math
|
||||||
|
|
||||||
|
MOVES = {
|
||||||
|
'U': ( 0, -1),
|
||||||
|
'D': ( 0, +1),
|
||||||
|
'L': (-1, 0),
|
||||||
|
'R': (+1, 0),
|
||||||
|
}
|
||||||
|
|
||||||
|
TAIL_POSITIONS = set([])
|
||||||
|
HEAD = (0, 0)
|
||||||
|
TAIL = (0, 0)
|
||||||
|
|
||||||
|
def point_add(a, b):
|
||||||
|
return tuple(map(lambda i, j: i + j, a, b))
|
||||||
|
|
||||||
|
def move(delta):
|
||||||
|
global TAIL_POSITIONS, HEAD, TAIL
|
||||||
|
|
||||||
|
last_head = HEAD
|
||||||
|
HEAD = point_add(HEAD, delta)
|
||||||
|
|
||||||
|
if ed := math.dist(HEAD, TAIL) < 2.0:
|
||||||
|
_ # do nothing
|
||||||
|
elif ed == 2.0:
|
||||||
|
TAIL = point_add(TAIL, delta)
|
||||||
|
else:
|
||||||
|
TAIL = last_head
|
||||||
|
|
||||||
|
TAIL_POSITIONS.add(TAIL)
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
for line in f:
|
||||||
|
direction, count = line.rstrip().split(" ")
|
||||||
|
for _ in range(int(count)):
|
||||||
|
move(MOVES[direction])
|
||||||
|
|
||||||
|
print(len(TAIL_POSITIONS))
|
60
2022/09/part2
Executable file
60
2022/09/part2
Executable file
@@ -0,0 +1,60 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import math
|
||||||
|
|
||||||
|
MOVES = {
|
||||||
|
'U': ( 0, -1),
|
||||||
|
'D': ( 0, +1),
|
||||||
|
'L': (-1, 0),
|
||||||
|
'R': (+1, 0),
|
||||||
|
}
|
||||||
|
|
||||||
|
TAIL_POSITIONS = set([])
|
||||||
|
HEAD = (0, 0)
|
||||||
|
TAILS = [(0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0)]
|
||||||
|
|
||||||
|
def point_add(a, b):
|
||||||
|
return tuple(map(lambda i, j: i + j, a, b))
|
||||||
|
|
||||||
|
def move(delta):
|
||||||
|
global TAIL_POSITIONS, HEAD, TAIL
|
||||||
|
|
||||||
|
HEAD = point_add(HEAD, delta)
|
||||||
|
|
||||||
|
leader = HEAD
|
||||||
|
for idx, tail in enumerate(TAILS):
|
||||||
|
ed = math.dist(leader, tail);
|
||||||
|
if ed < 2.0:
|
||||||
|
_ # do nothing
|
||||||
|
elif ed == 2.0: # follow the leader: linear
|
||||||
|
x, y = 0,0
|
||||||
|
if leader[0] < tail[0]:
|
||||||
|
x = -1
|
||||||
|
elif leader[0] > tail[0]:
|
||||||
|
x = 1
|
||||||
|
if leader[1] < tail[1]:
|
||||||
|
y = -1
|
||||||
|
elif leader[1] > tail[1]:
|
||||||
|
y = 1
|
||||||
|
TAILS[idx] = point_add(tail, (x,y))
|
||||||
|
else: # follow the leader: diagonal
|
||||||
|
x, y = 1, 1
|
||||||
|
if leader[0] < tail[0]:
|
||||||
|
x = -1
|
||||||
|
if leader[1] < tail[1]:
|
||||||
|
y = -1
|
||||||
|
TAILS[idx] = point_add(tail, (x,y))
|
||||||
|
|
||||||
|
leader = TAILS[idx]
|
||||||
|
|
||||||
|
TAIL_POSITIONS.add(TAILS[-1])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
for line in f:
|
||||||
|
direction, count = line.rstrip().split(" ")
|
||||||
|
for _ in range(int(count)):
|
||||||
|
move(MOVES[direction])
|
||||||
|
|
||||||
|
print(len(TAIL_POSITIONS))
|
143
2022/10/input
Normal file
143
2022/10/input
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
addx 1
|
||||||
|
addx 4
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 4
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
addx 4
|
||||||
|
addx 8
|
||||||
|
addx -7
|
||||||
|
addx 3
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 4
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx -1
|
||||||
|
noop
|
||||||
|
addx -37
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx 2
|
||||||
|
addx 13
|
||||||
|
addx 12
|
||||||
|
addx -15
|
||||||
|
addx -2
|
||||||
|
addx 2
|
||||||
|
addx -11
|
||||||
|
addx 18
|
||||||
|
addx 2
|
||||||
|
addx -15
|
||||||
|
addx 16
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx -2
|
||||||
|
addx -38
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx 4
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 21
|
||||||
|
addx -17
|
||||||
|
addx 6
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx 5
|
||||||
|
addx -38
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
addx -2
|
||||||
|
addx 1
|
||||||
|
addx 7
|
||||||
|
noop
|
||||||
|
addx 22
|
||||||
|
addx -18
|
||||||
|
addx -11
|
||||||
|
addx 27
|
||||||
|
addx -13
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx -8
|
||||||
|
addx 9
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
addx 7
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx -38
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx -3
|
||||||
|
noop
|
||||||
|
addx 8
|
||||||
|
addx 11
|
||||||
|
addx -6
|
||||||
|
noop
|
||||||
|
addx 24
|
||||||
|
addx -31
|
||||||
|
addx 10
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx 3
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx -29
|
||||||
|
addx 21
|
||||||
|
addx 11
|
||||||
|
addx 5
|
||||||
|
addx -39
|
||||||
|
addx 4
|
||||||
|
addx -2
|
||||||
|
addx 2
|
||||||
|
addx 7
|
||||||
|
noop
|
||||||
|
addx -1
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
addx 4
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -6
|
||||||
|
addx 9
|
||||||
|
addx -18
|
||||||
|
addx 25
|
||||||
|
addx 3
|
||||||
|
noop
|
||||||
|
addx -17
|
||||||
|
noop
|
28
2022/10/part1
Executable file
28
2022/10/part1
Executable file
@@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
CLOCK = 1
|
||||||
|
X = 1
|
||||||
|
|
||||||
|
X_VALUES = []
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
for line in f:
|
||||||
|
ins, *args = line.rstrip().split(" ")
|
||||||
|
|
||||||
|
if ins == "noop":
|
||||||
|
CLOCK += 1
|
||||||
|
X_VALUES.append(X)
|
||||||
|
elif ins == "addx":
|
||||||
|
CLOCK += 2
|
||||||
|
X_VALUES.append(X)
|
||||||
|
X_VALUES.append(X)
|
||||||
|
X += int(args[0])
|
||||||
|
|
||||||
|
print(
|
||||||
|
(X_VALUES[19] * 20) +
|
||||||
|
(X_VALUES[59] * 60) +
|
||||||
|
(X_VALUES[99] * 100) +
|
||||||
|
(X_VALUES[139] * 140) +
|
||||||
|
(X_VALUES[179] * 180) +
|
||||||
|
(X_VALUES[219] * 220)
|
||||||
|
)
|
32
2022/10/part2
Executable file
32
2022/10/part2
Executable file
@@ -0,0 +1,32 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
CLOCK = 0
|
||||||
|
X = 1
|
||||||
|
OUT = []
|
||||||
|
|
||||||
|
def clock():
|
||||||
|
global CLOCK, X, OUT
|
||||||
|
pos = CLOCK%40
|
||||||
|
|
||||||
|
if X == pos or X-1 == pos or X+1 == pos:
|
||||||
|
OUT.append('#')
|
||||||
|
else:
|
||||||
|
OUT.append('.')
|
||||||
|
|
||||||
|
if pos == 39:
|
||||||
|
OUT.append("\n")
|
||||||
|
|
||||||
|
CLOCK += 1
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
for line in f:
|
||||||
|
ins, *args = line.rstrip().split(" ")
|
||||||
|
|
||||||
|
if ins == "noop":
|
||||||
|
clock()
|
||||||
|
elif ins == "addx":
|
||||||
|
clock()
|
||||||
|
clock()
|
||||||
|
X += int(args[0])
|
||||||
|
|
||||||
|
print(''.join(OUT))
|
55
2022/11/input
Normal file
55
2022/11/input
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
Monkey 0:
|
||||||
|
Starting items: 89, 73, 66, 57, 64, 80
|
||||||
|
Operation: new = old * 3
|
||||||
|
Test: divisible by 13
|
||||||
|
If true: throw to monkey 6
|
||||||
|
If false: throw to monkey 2
|
||||||
|
|
||||||
|
Monkey 1:
|
||||||
|
Starting items: 83, 78, 81, 55, 81, 59, 69
|
||||||
|
Operation: new = old + 1
|
||||||
|
Test: divisible by 3
|
||||||
|
If true: throw to monkey 7
|
||||||
|
If false: throw to monkey 4
|
||||||
|
|
||||||
|
Monkey 2:
|
||||||
|
Starting items: 76, 91, 58, 85
|
||||||
|
Operation: new = old * 13
|
||||||
|
Test: divisible by 7
|
||||||
|
If true: throw to monkey 1
|
||||||
|
If false: throw to monkey 4
|
||||||
|
|
||||||
|
Monkey 3:
|
||||||
|
Starting items: 71, 72, 74, 76, 68
|
||||||
|
Operation: new = old * old
|
||||||
|
Test: divisible by 2
|
||||||
|
If true: throw to monkey 6
|
||||||
|
If false: throw to monkey 0
|
||||||
|
|
||||||
|
Monkey 4:
|
||||||
|
Starting items: 98, 85, 84
|
||||||
|
Operation: new = old + 7
|
||||||
|
Test: divisible by 19
|
||||||
|
If true: throw to monkey 5
|
||||||
|
If false: throw to monkey 7
|
||||||
|
|
||||||
|
Monkey 5:
|
||||||
|
Starting items: 78
|
||||||
|
Operation: new = old + 8
|
||||||
|
Test: divisible by 5
|
||||||
|
If true: throw to monkey 3
|
||||||
|
If false: throw to monkey 0
|
||||||
|
|
||||||
|
Monkey 6:
|
||||||
|
Starting items: 86, 70, 60, 88, 88, 78, 74, 83
|
||||||
|
Operation: new = old + 4
|
||||||
|
Test: divisible by 11
|
||||||
|
If true: throw to monkey 1
|
||||||
|
If false: throw to monkey 2
|
||||||
|
|
||||||
|
Monkey 7:
|
||||||
|
Starting items: 81, 58
|
||||||
|
Operation: new = old + 5
|
||||||
|
Test: divisible by 17
|
||||||
|
If true: throw to monkey 3
|
||||||
|
If false: throw to monkey 5
|
58
2022/11/part1
Executable file
58
2022/11/part1
Executable file
@@ -0,0 +1,58 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import re
|
||||||
|
|
||||||
|
MONKEYS = []
|
||||||
|
|
||||||
|
def parse_factor(old, factor):
|
||||||
|
if factor == 'old':
|
||||||
|
return old
|
||||||
|
|
||||||
|
return int(factor)
|
||||||
|
|
||||||
|
OPS = {
|
||||||
|
'*': lambda old, factor: old * parse_factor(old, factor),
|
||||||
|
'+': lambda old, factor: old + parse_factor(old, factor),
|
||||||
|
}
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
monkey = {'inspections': 0}
|
||||||
|
|
||||||
|
for line in f:
|
||||||
|
if line == "\n":
|
||||||
|
MONKEYS.append(monkey)
|
||||||
|
monkey = {'inspections': 0}
|
||||||
|
elif match := re.match('^Monkey (\d+):$', line):
|
||||||
|
monkey['id'] = int(match[1])
|
||||||
|
elif match := re.match('^ Starting items:', line):
|
||||||
|
_, items = line.rstrip().split(":")
|
||||||
|
monkey['items'] = list(map(int, items.split(", ")))
|
||||||
|
elif match := re.match('^ Operation: new = old ([\*\+]) (\w+)', line):
|
||||||
|
monkey['op_op'] = match[1]
|
||||||
|
monkey['op_factor'] = match[2]
|
||||||
|
elif match := re.match('^ Test: divisible by (\d+)$', line):
|
||||||
|
monkey['test_factor'] = int(match[1])
|
||||||
|
elif match := re.match('^ If (true|false): throw to monkey (\d+)$', line):
|
||||||
|
monkey['test_'+match[1]] = int(match[2])
|
||||||
|
else:
|
||||||
|
raise Exception('unhandled line: '+line)
|
||||||
|
MONKEYS.append(monkey)
|
||||||
|
|
||||||
|
for idx, monkey in enumerate(MONKEYS):
|
||||||
|
assert(idx == monkey['id'])
|
||||||
|
|
||||||
|
for r in range(1, 21): # round
|
||||||
|
for monkey in MONKEYS: # turn
|
||||||
|
for item in monkey['items']:
|
||||||
|
item = OPS[monkey['op_op']](item, monkey['op_factor'])
|
||||||
|
item = item // 3
|
||||||
|
if item % monkey['test_factor'] == 0:
|
||||||
|
MONKEYS[monkey['test_true']]['items'].append(item)
|
||||||
|
else:
|
||||||
|
MONKEYS[monkey['test_false']]['items'].append(item)
|
||||||
|
monkey['inspections'] = monkey['inspections'] + 1
|
||||||
|
monkey['items'] = []
|
||||||
|
|
||||||
|
by_inspections = sorted(MONKEYS, key=lambda monkey: monkey['inspections'])
|
||||||
|
|
||||||
|
print(by_inspections[-1]['inspections'] * by_inspections[-2]['inspections'])
|
62
2022/11/part2
Executable file
62
2022/11/part2
Executable file
@@ -0,0 +1,62 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import re
|
||||||
|
import math
|
||||||
|
|
||||||
|
MONKEYS = []
|
||||||
|
|
||||||
|
def parse_factor(old, factor):
|
||||||
|
if factor == 'old':
|
||||||
|
return old
|
||||||
|
|
||||||
|
return int(factor)
|
||||||
|
|
||||||
|
OPS = {
|
||||||
|
'*': lambda old, factor: old * parse_factor(old, factor),
|
||||||
|
'+': lambda old, factor: old + parse_factor(old, factor),
|
||||||
|
}
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
monkey = {'inspections': 0}
|
||||||
|
|
||||||
|
for line in f:
|
||||||
|
if line == "\n":
|
||||||
|
MONKEYS.append(monkey)
|
||||||
|
monkey = {'inspections': 0}
|
||||||
|
elif match := re.match('^Monkey (\d+):$', line):
|
||||||
|
monkey['id'] = int(match[1])
|
||||||
|
elif match := re.match('^ Starting items:', line):
|
||||||
|
_, items = line.rstrip().split(":")
|
||||||
|
monkey['items'] = list(map(int, items.split(", ")))
|
||||||
|
elif match := re.match('^ Operation: new = old ([\*\+]) (\w+)', line):
|
||||||
|
monkey['op_op'] = match[1]
|
||||||
|
monkey['op_factor'] = match[2]
|
||||||
|
elif match := re.match('^ Test: divisible by (\d+)$', line):
|
||||||
|
monkey['test_factor'] = int(match[1])
|
||||||
|
elif match := re.match('^ If (true|false): throw to monkey (\d+)$', line):
|
||||||
|
monkey['test_'+match[1]] = int(match[2])
|
||||||
|
else:
|
||||||
|
raise Exception('unhandled line: '+line)
|
||||||
|
MONKEYS.append(monkey)
|
||||||
|
|
||||||
|
for idx, monkey in enumerate(MONKEYS):
|
||||||
|
assert(idx == monkey['id'])
|
||||||
|
|
||||||
|
# keep the size of the numbers down
|
||||||
|
lcm = math.lcm(*map(lambda monkey: monkey['test_factor'], MONKEYS))
|
||||||
|
|
||||||
|
for r in range(0,10000): # round
|
||||||
|
for monkey in MONKEYS: # turn
|
||||||
|
for item in monkey['items']:
|
||||||
|
item = OPS[monkey['op_op']](item, monkey['op_factor'])
|
||||||
|
item = item % lcm
|
||||||
|
if item % monkey['test_factor'] == 0:
|
||||||
|
MONKEYS[monkey['test_true']]['items'].append(item)
|
||||||
|
else:
|
||||||
|
MONKEYS[monkey['test_false']]['items'].append(item)
|
||||||
|
monkey['inspections'] = monkey['inspections'] + 1
|
||||||
|
monkey['items'] = []
|
||||||
|
|
||||||
|
by_inspections = sorted(MONKEYS, key=lambda monkey: monkey['inspections'])
|
||||||
|
|
||||||
|
print(by_inspections[-1]['inspections'] * by_inspections[-2]['inspections'])
|
41
2022/12/input
Normal file
41
2022/12/input
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
abccccccccccccccccaaccccccccccccccccccccaaaaaaaaaaaaacccccccccccccccccccccccccccccccccccccccccccccccccccccccaaaaaa
|
||||||
|
abcccccccccccccaaaaaccccccccccccccccccccaaaaaaaaaaaaaccccccccccccccccccccccccccccccccccccccccccccccccccccccccaaaaa
|
||||||
|
abccccccccccccccaaaaaccccccccccccccaaaaacccaaaaaacccccaaccccccccccccccccccccccccccccccccccccccccccccccccccccccaaaa
|
||||||
|
abccccccccccccccaaaaacccccccccaacccaaaaacccaaaaaaaccccaaaacaacaaccccccccccccccccccccccccaaaccccaaaccccccccccccaaaa
|
||||||
|
abcccccccccccccaaaaacccccccaaaaaccaaaaaacccaaaaaaaacaaaaaacaaaaaccccccccccccccccccccccccaaacccaaaaccccccccccccaaac
|
||||||
|
abccccccaacaaaccccaaccccccccaaaaacaaaaaaccaaaacaaaacaaaaaccaaaaaaccccccccccccccccccccccccaaaaaaaacccccccccccccaacc
|
||||||
|
abccccccaaaaaaccccccccccccccaaaaacaaaaaaccaaaaccaaaacaaaaacaaaaaacccccccccccccccccccccccaaaaaaaaaccccccccccccccccc
|
||||||
|
abccccccaaaaaacccccccccccccaaaaaccccaaccccaacccccaaccaacaacaaaaaccccccccccccccccccccccccccaaakkkkllllcccaaaccccccc
|
||||||
|
abccccccaaaaaaacccccccccccccccaaccccaacccccccccccccccccccccccaaaccccccaaaacccccccccjjjjkkkkkkkkkkllllccccaacaccccc
|
||||||
|
abcccccaaaaaaaacccccaaccccccccccccccaaaaaaccccccccccccccccccaaccccccccaaaaccccccccjjjjjkkkkkkkkkppllllcccaaaaacccc
|
||||||
|
abcccccaaaaaaaaccaaaacccccccccccccccaaaaaccccccccccccccccaacaaccccccccaaaacccccccjjjjjjjkkkkkppppppplllccaaaaacccc
|
||||||
|
abccccccccaaaccccaaaaaacccccccccccaaaaaaaccccccccccccccccaaaaacccccccccaacccccccjjjjoooooooppppppppplllcccaaaccccc
|
||||||
|
abccccccccaaccccccaaaaaccccaacccccaaaaaaaaccccaaacccccccccaaaaaaacccccccccccccccjjjooooooooppppuuppppllcccaaaccccc
|
||||||
|
abccccccaacccccccaaaaacccccaaaccaaaaaaaaaaccaaaaaaccccccaaaaaaaaaacaaaccccccccccjjjoooouuuoopuuuuupppllcccaaaccccc
|
||||||
|
abacccccaaccccccccccaacccccaaaaaaaccaaaaaaccaaaaaaccccccaaaaaccaaaaaaaccccaaccccjjoootuuuuuuuuuuuuvpqlllcccccccccc
|
||||||
|
abaccaaaaaaaacccccccccccccccaaaaaaccaacccccccaaaaacccccccacaaaccaaaaaaccaaaacaccjjooottuuuuuuuxyuvvqqljjccddcccccc
|
||||||
|
abcccaaaaaaaaccccccccccccaaaaaaaaacaacaaccccaaaaaccccccccccaaaaaaaaaacccaaaaaacciijootttxxxuuxyyyvvqqjjjjdddcccccc
|
||||||
|
abcccccaaaaccccaaacccccccaaaaaaaaacaaaaaccccaaaaaccccccccccccaaaaaaaaacccaaaaccciiinntttxxxxxxyyvvqqqqjjjddddccccc
|
||||||
|
abccccaaaaaccccaaaaacccccaaaaaaaaaaaaaaaaccccccccccccccccccccaaaaaaaaaaccaaaaccciiinntttxxxxxxyyvvvqqqqjjjdddccccc
|
||||||
|
abccccaaaaaaccaaaaaccccccccaaaaaaaaaaaaaacccccccccccccccccccccccaaacaaacaacaaccciiinnnttxxxxxyyyvvvvqqqqjjjdddcccc
|
||||||
|
SbccccaaccaaccaaaaacccccccccaaaaaaaaaaaaacccccccccccccccccccccccaaacccccccccccciiinnntttxxxEzzyyyyvvvqqqjjjdddcccc
|
||||||
|
abcccccccccccccaaaaacccccccaaaaaaaaacaaaccccccccccccccccccccccccaaccccccccccccciiinnnttxxxxyyyyyyyyvvvqqqjjjdddccc
|
||||||
|
abcccccccccccccaaccccccccccaaaaaaaaccccccccccccccccccccccccccccccccccccccccccciiinnntttxxyyyyyyyyyvvvvqqqjjjdddccc
|
||||||
|
abccccccccccccccccccccccccaaaaaaaacccccccccccccccccccccccccccccccccccccccccccciiinntttxxxwwwyyywwvvvvrqqjjjjdddccc
|
||||||
|
abcccccccccccccccccccccccccccaaaaaaccccccccccccccccccccccccccccccccccccccccccciinnntttxwwwwwyyywwvvvrrrqkkkeddcccc
|
||||||
|
abcccccccccccccccccccccccccccaaaaaaccccccccccccccccccccccccccccccccccccccccccchhnnntttsswwswwyywwrrrrrrkkkkeeecccc
|
||||||
|
abcccccccccccccccccccccccccccaaaaaacccccccccccccccccccaccccccccccccaaacccccccchhhnmmssssssswwwwwwrrrkkkkkeeeeecccc
|
||||||
|
abcccccccccccccccccccccccccccccaaacccccccccccccccccccaaccccccccccaaaaaacccccaahhhmmmmmsssssswwwwrrrkkkkkeeeeeccccc
|
||||||
|
abaacccccccccccccaccccccccccccccccccccccccccccccccaaaaacaacccccccaaaaaacaaaaaahhhhmmmmmmmmssswwwrrkkkkeeeeeacccccc
|
||||||
|
abacccccccccccccaaaaaaaaccccccccaaacccccccaaccccccaaaaaaaacccccccaaaaaacaaaaaaahhhhmmmmmmmmsssrrrrkkkeeeeeaacccccc
|
||||||
|
abaaaccccaaccccccaaaaaacccccccccaaacccaacaaaccccccccaaaacccccccccaaaaacccaaaaaaahhhhhhhmmmmlsssrrllkfeeeeaaaaacccc
|
||||||
|
abaaaccaaaaccccccaaaaaacccccccccaaaaaaaaaaaaaacccccaaaaacccccccccaaaaacccaaaaaaachhhhhgggmllsssrrllkffeaaaaaaacccc
|
||||||
|
abaacccaaaaaacccaaaaaaaacccccaaaaaaaaaaaaaaaaacccccaacaaacccccccccccccccaaaaaacccccchggggglllllllllfffaaaaaaaacccc
|
||||||
|
abaaccccaaaacccaaaaaaaaaaccccaaaaaaaaacaaaaaaaccaccaccaaacccccccccccccccaaaaaacccccccccgggglllllllffffaaaaaacccccc
|
||||||
|
abcccccaaaaacccaaaaaaaaaacccccaaaaaaaccaaaaacccaaaccccccccccccccccccccccccccaacccccccccagggglllllffffccccaaacccccc
|
||||||
|
abcccccaacaaccccccaaaaacaccaacccaaaaaaaaaaaaaccaaacccccccccccccccccccccccccccccccccccccaagggggffffffcccccccccccccc
|
||||||
|
abcccccccccccaaaaaaaaacccccaaccaaaaaaaccaaaaacaaaaccccccccccccccccccccccccccccccccccccaaaacgggfffffccccccccccccccc
|
||||||
|
abcccccccccccaaaaacaacccaaaaaaaaaaccaacccaaaaaaaacccaaccccccccccccccccccccccccccccccccccccccggfffccccccccccccaaaca
|
||||||
|
abccccccccccaaaaaaccccccaaaaaaaaacccccccccaaaaaaaaaaaacccccccccccccaaaccccccccccccccccccccccaaaccccccccccccccaaaaa
|
||||||
|
abccccccccccaaaaaaccccccccaaaacccccccccccccaaaaaaaaaaaaccccccccccccaaaaccccccccccccccccccccccaaaccccccccccccccaaaa
|
||||||
|
abcccccccccccaaaaacccccccaaaaaaccccccccccaaaaaaaaaaaaaaccccccccccccaaaaccccccccccccccccccccccccccccccccccccccaaaaa
|
63
2022/12/part1
Executable file
63
2022/12/part1
Executable file
@@ -0,0 +1,63 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import math
|
||||||
|
|
||||||
|
MAP = []
|
||||||
|
START = (0, 0)
|
||||||
|
END = (0, 0)
|
||||||
|
DISTANCES = {}
|
||||||
|
|
||||||
|
def possible(x, y):
|
||||||
|
global MAP
|
||||||
|
|
||||||
|
threshold = MAP[y][x] + 1 # Can't go higher than this, can always go lower
|
||||||
|
points = [(x-1,y),(x+1,y),(x,y-1),(x,y+1)]
|
||||||
|
|
||||||
|
out = []
|
||||||
|
for (x,y) in points:
|
||||||
|
if x < 0 or y < 0:
|
||||||
|
continue
|
||||||
|
if len(MAP) < y+1 or len(MAP[y]) < x+1:
|
||||||
|
continue
|
||||||
|
if MAP[y][x] > threshold:
|
||||||
|
continue
|
||||||
|
|
||||||
|
out.append((x,y))
|
||||||
|
|
||||||
|
return out
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
for y, line in enumerate(f):
|
||||||
|
row = []
|
||||||
|
for x, byte in enumerate(line.rstrip()):
|
||||||
|
DISTANCES[(x,y)] = math.inf
|
||||||
|
if byte == 'S':
|
||||||
|
byte = 'a'
|
||||||
|
START = (x,y)
|
||||||
|
DISTANCES[START] = 0
|
||||||
|
elif byte == 'E':
|
||||||
|
byte = 'z'
|
||||||
|
END = (x,y)
|
||||||
|
row.append(ord(byte) - ord('a'))
|
||||||
|
MAP.append(row)
|
||||||
|
|
||||||
|
|
||||||
|
visited = set([])
|
||||||
|
queue = [START]
|
||||||
|
|
||||||
|
while len(queue) > 0:
|
||||||
|
pos = queue.pop(0)
|
||||||
|
visited.add(pos)
|
||||||
|
|
||||||
|
for neighbour in possible(*pos):
|
||||||
|
if neighbour == END:
|
||||||
|
print(DISTANCES[pos] + 1)
|
||||||
|
quit()
|
||||||
|
|
||||||
|
if DISTANCES[neighbour] > DISTANCES[pos] + 1:
|
||||||
|
DISTANCES[neighbour] = DISTANCES[pos] + 1
|
||||||
|
|
||||||
|
if neighbour not in visited and neighbour not in queue:
|
||||||
|
queue.append(neighbour)
|
||||||
|
|
||||||
|
print("Couldn't find it!")
|
68
2022/12/part2
Executable file
68
2022/12/part2
Executable file
@@ -0,0 +1,68 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
|
||||||
|
import math
|
||||||
|
from collections import defaultdict
|
||||||
|
|
||||||
|
MAP = []
|
||||||
|
END = (0, 0)
|
||||||
|
|
||||||
|
def possible(x, y):
|
||||||
|
global MAP
|
||||||
|
|
||||||
|
threshold = MAP[y][x] + 1 # Can't go higher than this, can always go lower
|
||||||
|
points = [(x-1,y),(x+1,y),(x,y-1),(x,y+1)]
|
||||||
|
|
||||||
|
out = []
|
||||||
|
for (x,y) in points:
|
||||||
|
if x < 0 or y < 0:
|
||||||
|
continue
|
||||||
|
if len(MAP) < y+1 or len(MAP[y]) < x+1:
|
||||||
|
continue
|
||||||
|
if MAP[y][x] > threshold:
|
||||||
|
continue
|
||||||
|
out.append((x,y))
|
||||||
|
return out
|
||||||
|
|
||||||
|
with open('input') as f:
|
||||||
|
for y, line in enumerate(f):
|
||||||
|
row = []
|
||||||
|
for x, byte in enumerate(line.rstrip()):
|
||||||
|
if byte == 'S':
|
||||||
|
byte = 'a'
|
||||||
|
elif byte == 'E':
|
||||||
|
byte = 'z'
|
||||||
|
END = (x,y)
|
||||||
|
row.append(ord(byte) - ord('a'))
|
||||||
|
MAP.append(row)
|
||||||
|
|
||||||
|
def search(start):
|
||||||
|
distances = defaultdict(lambda: math.inf)
|
||||||
|
distances[start] = 0
|
||||||
|
visited = set([])
|
||||||
|
queue = [start]
|
||||||
|
|
||||||
|
while len(queue) > 0:
|
||||||
|
pos = queue.pop(0)
|
||||||
|
visited.add(pos)
|
||||||
|
|
||||||
|
for neighbour in possible(*pos):
|
||||||
|
if neighbour == END:
|
||||||
|
return distances[pos] + 1
|
||||||
|
|
||||||
|
if distances[neighbour] > distances[pos] + 1:
|
||||||
|
distances[neighbour] = distances[pos] + 1
|
||||||
|
|
||||||
|
if neighbour not in visited and neighbour not in queue:
|
||||||
|
queue.append(neighbour)
|
||||||
|
|
||||||
|
return None # Some start positions may not have a valid path
|
||||||
|
|
||||||
|
results = []
|
||||||
|
for y, row in enumerate(MAP):
|
||||||
|
for x, height in enumerate(row):
|
||||||
|
if height == 0:
|
||||||
|
result = search((x,y))
|
||||||
|
if result != None:
|
||||||
|
results.append(result)
|
||||||
|
|
||||||
|
print(sorted(results)[0])
|
23
README.md
23
README.md
@@ -0,0 +1,23 @@
|
|||||||
|
# Advent of Code
|
||||||
|
|
||||||
|
In this repository are my Advent of Code solutions.
|
||||||
|
|
||||||
|
I don't religiously take part, and tend to bow out before halfway through even
|
||||||
|
on the years I do take part. Mostly, it's how I find an excuse to write code in
|
||||||
|
a programming language I'm interested in learning more about.
|
||||||
|
|
||||||
|
2018, 2019, and 2020 were in their own separate repositories, but have been
|
||||||
|
`git subtree`'d into this one - no point creating a new repository every year.
|
||||||
|
|
||||||
|
* [2022](https://code.ur.gs/lupine/advent-of-code/src/branch/main/2022) 🌟 `24` - Python
|
||||||
|
* [2021](https://code.ur.gs/lupine/advent-of-code/src/branch/main/2021) 🌟 ` 5` - Python
|
||||||
|
* [2020](https://code.ur.gs/lupine/advent-of-code/src/branch/main/2020) 🌟 `20` - Javascript
|
||||||
|
* [2019](https://code.ur.gs/lupine/advent-of-code/src/branch/main/2019) 🌟 `22` - Zig
|
||||||
|
* [2018](https://code.ur.gs/lupine/advent-of-code/src/branch/main/2018) 🌟 ` 6` - Rust
|
||||||
|
* 2017 🌟 ` 0` - ?
|
||||||
|
* 2016 🌟 `16` - LISP?
|
||||||
|
* 2015 🌟 ` 9` - Ruby?
|
||||||
|
|
||||||
|
Total: 🌟 `102`
|
||||||
|
|
||||||
|
Maybe I'll backfill some of the old years one day.
|
||||||
|
Reference in New Issue
Block a user