Move python solutions to separate directory
This commit is contained in:
parent
47e97f4533
commit
3903907973
70 changed files with 0 additions and 0 deletions
1
py/2015/01/input.txt
Normal file
1
py/2015/01/input.txt
Normal file
File diff suppressed because one or more lines are too long
36
py/2015/01/solve.py
Normal file
36
py/2015/01/solve.py
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
import sys
|
||||
|
||||
def load_steps(filename):
|
||||
with open(filename, "r") as f:
|
||||
return f.read()[:-1]
|
||||
|
||||
# PART 1
|
||||
|
||||
def count_floors(steps):
|
||||
return steps.count("(") - steps.count(")")
|
||||
|
||||
# PART 2
|
||||
|
||||
def find_basement_char(steps):
|
||||
pos = 0
|
||||
step_nr = 0
|
||||
for step in steps:
|
||||
step_nr += 1
|
||||
if step == "(":
|
||||
pos += 1
|
||||
if step == ")":
|
||||
pos -= 1
|
||||
if pos < 0:
|
||||
return step_nr
|
||||
|
||||
def main(filename):
|
||||
steps = load_steps(filename)
|
||||
print(f"Solutions for {filename}")
|
||||
floor = count_floors(steps)
|
||||
print(f"Part 1: {floor}")
|
||||
step_nr = find_basement_char(steps)
|
||||
print(f"Part 2: {step_nr}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
1000
py/2015/02/input.txt
Normal file
1000
py/2015/02/input.txt
Normal file
File diff suppressed because it is too large
Load diff
44
py/2015/02/solve.py
Normal file
44
py/2015/02/solve.py
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
import re
|
||||
import sys
|
||||
|
||||
PACKET_RE = r"(\d+)x(\d+)x(\d+)\n"
|
||||
|
||||
def load_packets(filename):
|
||||
packets = []
|
||||
with open(filename, "r") as f:
|
||||
for line in f:
|
||||
match = re.fullmatch(PACKET_RE, line)
|
||||
a, b, c = match.groups()
|
||||
a, b, c = int(a), int(b), int(c)
|
||||
packets.append((a, b, c))
|
||||
return packets
|
||||
|
||||
# PART 1
|
||||
|
||||
def necessary_area(packet):
|
||||
a, b, c = sorted(packet)
|
||||
return 3*a*b + 2*a*c + 2*b*c
|
||||
|
||||
def total_wrapping_paper(packets):
|
||||
return sum(map(necessary_area, packets))
|
||||
|
||||
# PART 2
|
||||
|
||||
def ribbon_length(packet):
|
||||
a, b, c = sorted(packet)
|
||||
return 2*a + 2*b + a*b*c
|
||||
|
||||
def total_ribbon_length(packets):
|
||||
return sum(map(ribbon_length, packets))
|
||||
|
||||
def main(filename):
|
||||
packets = load_packets(filename)
|
||||
print(f"Solutions for {filename}")
|
||||
total = total_wrapping_paper(packets)
|
||||
print(f"Part 1: {total}")
|
||||
total_2 = total_ribbon_length(packets)
|
||||
print(f"Part 2: {total_2}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
1
py/2015/03/input.txt
Normal file
1
py/2015/03/input.txt
Normal file
File diff suppressed because one or more lines are too long
47
py/2015/03/solve.py
Normal file
47
py/2015/03/solve.py
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
import sys
|
||||
|
||||
def load_steps(filename):
|
||||
with open(filename, "r") as f:
|
||||
return f.read()[:-1]
|
||||
|
||||
# PART 1
|
||||
|
||||
def find_doubles(steps):
|
||||
x, y = 0, 0
|
||||
houses = {(0, 0)}
|
||||
for step in steps:
|
||||
if step == "^": y += 1
|
||||
elif step == "v": y -= 1
|
||||
elif step == "<": x -= 1
|
||||
elif step == ">": x += 1
|
||||
houses.add((x, y))
|
||||
return houses
|
||||
|
||||
# PART 2
|
||||
|
||||
def split_string(s):
|
||||
s1 = ""
|
||||
s2 = ""
|
||||
while True:
|
||||
if not s: break
|
||||
s1 += s[0]
|
||||
s = s[1:]
|
||||
if not s: break
|
||||
s2 += s[0]
|
||||
s = s[1:]
|
||||
return s1, s2
|
||||
|
||||
def main(filename):
|
||||
steps = load_steps(filename)
|
||||
print(f"Solutions for {filename}")
|
||||
doubles = len(find_doubles(steps))
|
||||
print(f"Part 1: {doubles}")
|
||||
santa, robot = split_string(steps)
|
||||
santa_doubles = find_doubles(santa)
|
||||
robot_doubles = find_doubles(robot)
|
||||
doubles_2 = len(santa_doubles | robot_doubles)
|
||||
print(f"Part 2: {doubles_2}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
33
py/2015/04/solve.py
Normal file
33
py/2015/04/solve.py
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
import hashlib
|
||||
|
||||
# PART 1
|
||||
|
||||
def leading_zeroes(amount, start):
|
||||
n = 1
|
||||
what = "0"*amount
|
||||
while True:
|
||||
text = (start + str(n)).encode("utf-8")
|
||||
h = hashlib.md5(text).hexdigest()
|
||||
if h[:amount] == what:
|
||||
return n
|
||||
|
||||
if n % 100000 == 0:
|
||||
print(f"{n:9} {text} {h}")
|
||||
|
||||
n += 1
|
||||
|
||||
# PART 2
|
||||
|
||||
def main(hashstart):
|
||||
print("Previously calculated:")
|
||||
print("Part 1: 282749")
|
||||
print("Part 2: 9962624")
|
||||
print()
|
||||
print(f"Solutions")
|
||||
n = leading_zeroes(5, hashstart)
|
||||
print(f"Part 1: {n}")
|
||||
n_2 = leading_zeroes(6, hashstart)
|
||||
print(f"Part 2: {n_2}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main("yzbqklnj")
|
||||
1000
py/2015/05/input.txt
Normal file
1000
py/2015/05/input.txt
Normal file
File diff suppressed because it is too large
Load diff
54
py/2015/05/solve.py
Normal file
54
py/2015/05/solve.py
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
import sys
|
||||
|
||||
def load_words(filename):
|
||||
words = []
|
||||
with open(filename, "r") as f:
|
||||
for line in f:
|
||||
words.append(line[:-1])
|
||||
return words
|
||||
|
||||
# PART 1
|
||||
|
||||
def is_vowel(char):
|
||||
return char in "aeiou"
|
||||
|
||||
def has_double_letter(word):
|
||||
# This would look nicer im haskell:
|
||||
return count(zip(word, word[1:]), lambda x: x[0] == x[1]) > 0
|
||||
|
||||
def is_nice(word):
|
||||
if "ab" in word or "cd" in word or "pq" in word or "xy" in word:
|
||||
return False
|
||||
if len(list(filter(is_vowel, word))) < 3:
|
||||
return False
|
||||
return has_double_letter(word)
|
||||
|
||||
def count(what, function):
|
||||
# This would also look nicer in haskell
|
||||
return len(list(filter(function, what)))
|
||||
|
||||
# PART 2
|
||||
|
||||
def has_pair(word):
|
||||
for i in range(len(word)):
|
||||
if word[i:i+2] in word[i+2:]:
|
||||
return True
|
||||
return False
|
||||
|
||||
def has_repeat_letter(word):
|
||||
return count(zip(word, word[2:]), lambda x: x[0] == x[1]) > 0
|
||||
|
||||
def is_nice_2(word):
|
||||
return has_pair(word) and has_repeat_letter(word)
|
||||
|
||||
def main(filename):
|
||||
words = load_words(filename)
|
||||
print(f"Solutions for {filename}")
|
||||
amount = count(words, is_nice)
|
||||
print(f"Part 1: {amount}")
|
||||
amount_2 = count(words, is_nice_2)
|
||||
print(f"Part 2: {amount_2}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
1
py/2016/01/input.txt
Normal file
1
py/2016/01/input.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
L4, R2, R4, L5, L3, L1, R4, R5, R1, R3, L3, L2, L2, R5, R1, L1, L2, R2, R2, L5, R5, R5, L2, R1, R2, L2, L4, L1, R5, R2, R1, R1, L2, L3, R2, L5, L186, L5, L3, R3, L5, R4, R2, L5, R1, R4, L1, L3, R3, R1, L1, R4, R2, L1, L4, R5, L1, R50, L4, R3, R78, R4, R2, L4, R3, L4, R4, L1, R5, L4, R1, L2, R3, L2, R5, R5, L4, L1, L2, R185, L5, R2, R1, L3, R4, L5, R2, R4, L3, R4, L2, L5, R1, R2, L2, L1, L2, R2, L2, R1, L5, L3, L4, L3, L4, L2, L5, L5, R2, L3, L4, R4, R4, R5, L4, L2, R4, L5, R3, R1, L1, R3, L2, R2, R1, R5, L4, R5, L3, R2, R3, R1, R4, L4, R1, R3, L5, L1, L3, R2, R1, R4, L4, R3, L3, R3, R2, L3, L3, R4, L2, R4, L3, L4, R5, R1, L1, R5, R3, R1, R3, R4, L1, R4, R3, R1, L5, L5, L4, R4, R3, L2, R1, R5, L3, R4, R5, L4, L5, R2
|
||||
74
py/2016/01/solve.py
Normal file
74
py/2016/01/solve.py
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
import sys
|
||||
|
||||
def load_steps(filename):
|
||||
steps = []
|
||||
with open(filename, "r") as f:
|
||||
for step in f.read()[:-1].split(","):
|
||||
step = step.strip()
|
||||
step = (step[0], int(step[1:]))
|
||||
steps.append(step)
|
||||
return steps
|
||||
|
||||
# PART 1
|
||||
|
||||
def turn(direction, where):
|
||||
dir_x, dir_y = direction
|
||||
|
||||
if where == "R":
|
||||
return (dir_y, -dir_x)
|
||||
elif where == "L":
|
||||
return (-dir_y, dir_x)
|
||||
else:
|
||||
raise Exception("HEY! Don't do that!")
|
||||
|
||||
def manhattan(position):
|
||||
x, y = position
|
||||
return abs(x) + abs(y)
|
||||
|
||||
def find_distance(steps):
|
||||
pos_x, pos_y = 0, 0
|
||||
direction = (1, 0)
|
||||
|
||||
for step in steps:
|
||||
where, amount = step
|
||||
direction = turn(direction, where)
|
||||
dir_x, dir_y = direction
|
||||
pos_x += dir_x * amount
|
||||
pos_y += dir_y * amount
|
||||
|
||||
return manhattan((pos_x, pos_y))
|
||||
|
||||
# PART 2
|
||||
|
||||
def first_visited_twice(steps):
|
||||
pos_x, pos_y = 0, 0
|
||||
direction = (1, 0)
|
||||
visited = {(pos_x, pos_y)}
|
||||
|
||||
for step in steps:
|
||||
where, amount = step
|
||||
direction = turn(direction, where)
|
||||
dir_x, dir_y = direction
|
||||
|
||||
for i in range(amount):
|
||||
pos_x += dir_x
|
||||
pos_y += dir_y
|
||||
position = (pos_x, pos_y)
|
||||
|
||||
if position in visited:
|
||||
return position
|
||||
else:
|
||||
visited.add(position)
|
||||
|
||||
def main(filename):
|
||||
steps = load_steps(filename)
|
||||
print(f"Solutions for {filename}")
|
||||
distance = find_distance(steps)
|
||||
print(f"Part 1: {distance}")
|
||||
pos = first_visited_twice(steps)
|
||||
distance_2 = manhattan(pos)
|
||||
print(f"Part 2: {distance_2}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
5
py/2016/02/input.txt
Normal file
5
py/2016/02/input.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
DLRURUDLULRDRUDDRLUUUDLDLDLRLRRDRRRLLLLLDDRRRDRRDRRRLRRURLRDUULRLRRDDLULRLLDUDLULURRLRLDUDLURURLDRDDULDRDRDLDLLULULLDDLRRUDULLUULRRLLLURDRLDDLDDLDRLRRLLRURRUURRRRLUDLRDDDDRDULRLLDDUURDUDRLUDULLUDLUDURRDRDUUUUDDUDLLLRLUULRUURDLRLLRRLRLLDLLRLLRRRURLRRLURRLDLLLUUDURUDDLLUURRDRDRRDLLDDLLRDRDRRLURLDLDRDLURLDULDRURRRUDLLULDUDRURULDUDLULULRRRUDLUURRDURRURRLRRLLRDDUUUUUDUULDRLDLLRRUDRRDULLLDUDDUDUURLRDLULUUDLDRDUUUDDDUDLDURRULUULUUULDRUDDLLLDLULLRLRLUDULLDLLRLDLDDDUUDURDDDLURDRRDDLDRLLRLRR
|
||||
RLDUDURDRLLLLDDRRRURLLLRUUDDLRDRDDDUDLLUDDLRDURLDRDLLDRULDDRLDDDRLDRDDDRLLULDURRRLULDRLRDRDURURRDUDRURLDRLURDRLUULLULLDLUDUDRDRDDLDDDDRDURDLUDRDRURUDDLLLRLDDRURLLUDULULDDLLLDLUDLDULUUDLRLURLDRLURURRDUUDLRDDDDDRLDULUDLDDURDLURLUURDLURLDRURRLDLLRRUDRUULLRLDUUDURRLDURRLRUULDDLDLDUUDDRLDLLRRRUURLLUURURRURRLLLUDLDRRDLUULULUDDULLUDRLDDRURDRDUDULUDRLRRRUULLDRDRLULLLDURURURLURDLRRLLLDRLDUDLLLLDUUURULDDLDLLRRUDDDURULRLLUDLRDLUUDDRDDLLLRLUURLDLRUURDURDDDLLLLLULRRRURRDLUDLUURRDRLRUDUUUURRURLRDRRLRDRDULLDRDRLDURDDUURLRUDDDDDLRLLRUDDDDDURURRLDRRUUUDLURUUDRRDLLULDRRLRRRLUUUD
|
||||
RDRURLLUUDURURDUUULLRDRLRRLRUDDUDRURLLDLUUDLRLLDDURRURLUDUDDURLURLRRURLLURRUDRUDLDRLLURLRUUURRUDDDURRRLULLLLURDLRLLDDRLDRLLRRDLURDLRDLDUDRUULLDUUUDLURRLLRUDDDUUURLURUUDRLRULUURLLRLUDDLLDURULLLDURDLULDLDDUDULUDDULLRDRURDRRLLDLDDDDRUDLDRRLLLRLLLRRULDLRLRLRLLDLRDRDLLUDRDRULDUURRDDDRLLRLDLDRDUDRULUDRDLDLDDLLRULURLLURDLRRDUDLULLDLULLUDRRDDRLRURRLDUDLRRUUDLDRLRLDRLRRDURRDRRDDULURUUDDUUULRLDRLLDURRDLUULLUDRDDDLRUDLRULLDDDLURLURLRDRLLURRRUDLRRLURDUUDRLRUUDUULLRUUUDUUDDUURULDLDLURLRURLRUDLULLULRULDRDRLLLRRDLU
|
||||
RRRRDRLUUULLLRLDDLULRUUURRDRDRURRUURUDUULRULULRDRLRRLURDRRRULUUULRRUUULULRDDLLUURRLLDUDRLRRLDDLDLLDURLLUDLDDRRURLDLULRDUULDRLRDLLDLRULLRULLUDUDUDDUULDLUUDDLUDDUULLLLLURRDRULURDUUUDULRUDLLRUUULLUULLLRUUDDRRLRDUDDRULRDLDLLLLRLDDRRRULULLLDLRLURRDULRDRDUDDRLRLDRRDLRRRLLDLLDULLUDDUDDRULLLUDDRLLRRRLDRRURUUURRDLDLURRDLURULULRDUURLLULDULDUDLLULDDUURRRLDURDLUDURLDDRDUDDLLUULDRRLDLLUDRDURLLDRLDDUDURDLUUUUURRUULULLURLDUUULLRURLLLUURDULLUULDRULLUULRDRUULLRUDLDDLRLURRUUDRLRRRULRUUULRULRRLDLUDRRLL
|
||||
ULRLDLLURDRRUULRDUDDURDDDLRRRURLDRUDDLUDDDLLLRDLRLLRRUUDRRDRUULLLULULUUDRRRDRDRUUUUULRURUULULLULDULURRLURUDRDRUDRURURUDLDURUDUDDDRLRLLLLURULUDLRLDDLRUDDUUDURUULRLLLDDLLLLRRRDDLRLUDDUULRRLLRDUDLLDLRRUUULRLRDLRDUDLLLDLRULDRURDLLULLLRRRURDLLUURUDDURLDUUDLLDDRUUDULDRDRDRDDUDURLRRRRUDURLRRUDUDUURDRDULRLRLLRLUDLURUDRUDLULLULRLLULRUDDURUURDLRUULDURDRRRLLLLLUUUULUULDLDULLRURLUDLDRLRLRLRDLDRUDULDDRRDURDDULRULDRLRULDRLDLLUDLDRLRLRUDRDDR
|
||||
83
py/2016/02/solve.py
Normal file
83
py/2016/02/solve.py
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
import sys
|
||||
|
||||
def load_moves(filename):
|
||||
moves = []
|
||||
with open(filename, "r") as f:
|
||||
for line in f:
|
||||
moves.append(line[:-1])
|
||||
return moves
|
||||
|
||||
# PART 1
|
||||
|
||||
LAYOUT_1 = {
|
||||
(0, 0): "1",
|
||||
(1, 0): "2",
|
||||
(2, 0): "3",
|
||||
(0, 1): "4",
|
||||
(1, 1): "5",
|
||||
(2, 1): "6",
|
||||
(0, 2): "7",
|
||||
(1, 2): "8",
|
||||
(2, 2): "9",
|
||||
}
|
||||
|
||||
def pos_to_num(layout, pos):
|
||||
return layout.get(pos)
|
||||
|
||||
def do_step(layout, pos, step):
|
||||
x, y = pos
|
||||
if step == "U": y -= 1
|
||||
elif step == "D": y += 1
|
||||
elif step == "L": x -= 1
|
||||
elif step == "R": x += 1
|
||||
newpos = (x, y)
|
||||
|
||||
if newpos in layout:
|
||||
return newpos
|
||||
else:
|
||||
return pos
|
||||
|
||||
def do_move(layout, pos, steps):
|
||||
for step in steps:
|
||||
pos = do_step(layout, pos, step)
|
||||
return pos
|
||||
|
||||
def enter(layout, moves):
|
||||
pos = (1, 1)
|
||||
numbers = []
|
||||
for move in moves:
|
||||
pos = do_move(layout, pos, move)
|
||||
numbers.append(pos_to_num(layout, pos))
|
||||
|
||||
numbers = "".join(numbers)
|
||||
return numbers
|
||||
|
||||
# PART 2
|
||||
|
||||
LAYOUT_2 = {
|
||||
(2, 0): "1",
|
||||
(1, 1): "2",
|
||||
(2, 1): "3",
|
||||
(3, 1): "4",
|
||||
(0, 2): "5",
|
||||
(1, 2): "6",
|
||||
(2, 2): "7",
|
||||
(3, 2): "8",
|
||||
(4, 2): "9",
|
||||
(1, 3): "A",
|
||||
(2, 3): "B",
|
||||
(3, 3): "C",
|
||||
(2, 4): "D",
|
||||
}
|
||||
|
||||
def main(filename):
|
||||
moves = load_moves(filename)
|
||||
print(f"Solutions for {filename}")
|
||||
numbers = enter(LAYOUT_1, moves)
|
||||
print(f"Part 1: {numbers}")
|
||||
numbers_2 = enter(LAYOUT_2, moves)
|
||||
print(f"Part 2: {numbers_2}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
1902
py/2016/03/input.txt
Normal file
1902
py/2016/03/input.txt
Normal file
File diff suppressed because it is too large
Load diff
45
py/2016/03/solve.py
Normal file
45
py/2016/03/solve.py
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
import re
|
||||
import sys
|
||||
|
||||
TRIANGLE_RE = r"\s*(\d+)\s+(\d+)\s+(\d+)\n"
|
||||
|
||||
def load_triangles(filename):
|
||||
triangles = []
|
||||
with open(filename, "r") as f:
|
||||
for line in f:
|
||||
match = re.fullmatch(TRIANGLE_RE, line)
|
||||
a, b, c = match.groups()
|
||||
a, b, c = int(a), int(b), int(c)
|
||||
triangles.append((a, b, c))
|
||||
return triangles
|
||||
|
||||
# PART 1
|
||||
|
||||
def is_valid(triangle):
|
||||
a, b, c = sorted(triangle)
|
||||
return a + b > c
|
||||
|
||||
def count_valid(triangles):
|
||||
return len(list(filter(is_valid, triangles)))
|
||||
|
||||
# PART 2
|
||||
|
||||
def transform_triangles(triangles):
|
||||
new_triangles = []
|
||||
while triangles:
|
||||
t1, t2, t3 = triangles[:3]
|
||||
triangles = triangles[3:]
|
||||
new_triangles.extend(zip(t1, t2, t3))
|
||||
return new_triangles
|
||||
|
||||
def main(filename):
|
||||
triangles = load_triangles(filename)
|
||||
print(f"Solutions for {filename}")
|
||||
valid = count_valid(triangles)
|
||||
print(f"Part 1: {valid}")
|
||||
valid_2 = count_valid(transform_triangles(triangles))
|
||||
print(f"Part 2: {valid_2}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
980
py/2016/04/input.txt
Normal file
980
py/2016/04/input.txt
Normal file
|
|
@ -0,0 +1,980 @@
|
|||
bkwzkqsxq-tovvilokx-nozvyiwoxd-172[fstek]
|
||||
wifilzof-wbiwifuny-yhachyylcha-526[qrazx]
|
||||
jvyyvzpcl-jhukf-shivyhavyf-487[zhtsi]
|
||||
kwvacumz-ozilm-kivlg-kwvbiqvumvb-694[gknyw]
|
||||
mvhkvbdib-kmjezxodgz-mvwwdo-omvdidib-837[dmvbi]
|
||||
nzydfxpc-rclop-qwzhpc-lnbftdtetzy-171[cptzd]
|
||||
vhehkyne-unggr-inkvatlbgz-813[gnehk]
|
||||
tcorcikpi-hnqygt-octmgvkpi-570[nzewo]
|
||||
xmtjbzidx-wvnfzo-jkzmvodjin-447[uyzlp]
|
||||
willimcpy-mwupyhayl-bohn-mufym-734[stjoc]
|
||||
sbejpbdujwf-cvooz-xpsltipq-961[azfnd]
|
||||
jchipqat-qphzti-rjhidbtg-htgkxrt-271[thigj]
|
||||
npmhcargjc-zsllw-pcqcypaf-158[mzwnx]
|
||||
luxciuwncpy-jfumncw-alumm-qilembij-318[mucil]
|
||||
bxaxipgn-vgpst-rpcsn-rdpixcv-htgkxrth-427[ywazt]
|
||||
zekvierkzferc-tyftfcrkv-ivtvzmzex-295[evzfk]
|
||||
enzcntvat-qlr-hfre-grfgvat-143[rtaef]
|
||||
mvkccspson-bkllsd-nofovyzwoxd-224[oscdk]
|
||||
enzcntvat-zvyvgnel-tenqr-pnaql-pbngvat-ratvarrevat-429[zymbs]
|
||||
nwzekwypera-xwogap-pnwejejc-992[lkiwn]
|
||||
ajmrxjlcren-ajkkrc-lxwcjrwvnwc-667[ezynd]
|
||||
bxaxipgn-vgpst-hrpktcvtg-wjci-advxhixrh-661[lytku]
|
||||
owshgfarwv-vqw-kzahhafy-190[ahwfv]
|
||||
jqwpihizlwca-moo-twoqabqka-512[ncdyv]
|
||||
apwmeclga-pyzzgr-rcaflmjmew-886[amceg]
|
||||
tyepcyletzylw-ojp-wzrtdetnd-951[mxqsy]
|
||||
dlhwvupglk-kfl-hjxbpzpapvu-773[nrotd]
|
||||
fab-eqodqf-dmnnuf-bgdotmeuzs-612[dchyk]
|
||||
qjopwxha-bhksan-skngodkl-940[kahno]
|
||||
lsyrkjkbnyec-dyz-combod-cmkfoxqob-rexd-bomosfsxq-718[lktzs]
|
||||
zixppfcfba-bdd-jxohbqfkd-939[sqtor]
|
||||
vxupkizork-kmm-ktmotkkxotm-852[dsqjh]
|
||||
excdklvo-mkxni-mykdsxq-nozkbdwoxd-952[zspmc]
|
||||
bnqqnrhud-eknvdq-sqzhmhmf-391[qhndm]
|
||||
gzefmnxq-otaoaxmfq-ogefayqd-eqdhuoq-716[zinwb]
|
||||
qzoggwtwsr-qobrm-ghcfous-428[goqrs]
|
||||
gpbepvxcv-ltpedcxots-qphzti-steadnbtci-193[ignjy]
|
||||
hvbizodx-nxvqzibzm-cpio-hvmfzodib-265[hixfe]
|
||||
wkqxodsm-lexxi-kxkvicsc-926[xkcis]
|
||||
bknsykmdsfo-myxcewob-qbkno-oqq-zebmrkcsxq-380[utqrz]
|
||||
lejkrscv-wcfnvi-kirzezex-711[ecikr]
|
||||
htwwtxnaj-idj-btwpxmtu-255[itgmd]
|
||||
zsxyfgqj-jll-ijufwyrjsy-931[wrpgt]
|
||||
iuxxuyobk-yigbktmkx-natz-gtgreyoy-384[ygktx]
|
||||
qjopwxha-xqjju-zalhkuiajp-628[esmxk]
|
||||
lxaaxbren-ljwmh-anbnjalq-745[stjqy]
|
||||
gokzyxsjon-zvkcdsm-qbkcc-dbksxsxq-380[tsyqk]
|
||||
qzoggwtwsr-qobrm-qcohwbu-rsdofhasbh-168[obhqr]
|
||||
pelbtravp-pnaql-fgbentr-325[pabel]
|
||||
xzwrmkbqtm-akidmvomz-pcvb-mvoqvmmzqvo-122[mvoqz]
|
||||
sbnqbhjoh-ezf-fohjoffsjoh-233[xskyb]
|
||||
jyddc-yrwxefpi-fewoix-hiwmkr-412[pdekg]
|
||||
fab-eqodqf-rxaiqd-xmnadmfadk-690[sicjl]
|
||||
xcitgcpixdcpa-rpcsn-htgkxrth-427[stznv]
|
||||
rflsjynh-rnqnyfwd-lwfij-jll-xytwflj-229[lfjnw]
|
||||
zotts-wlsiayhcw-vumeyn-fuvilunils-500[ilsun]
|
||||
odiih-yujbcrl-pajbb-dbna-cnbcrwp-147[bcadi]
|
||||
udskkaxawv-tmffq-klgjsyw-996[tmnfc]
|
||||
emixwvqhml-kpwkwtibm-wxmzibqwva-278[zomvn]
|
||||
dfcxsqhwzs-dzoghwq-ufogg-zcuwghwqg-116[kmijn]
|
||||
dwbcjkun-ouxfna-mnbrpw-745[nbuwa]
|
||||
jchipqat-rwdrdapit-pcpanhxh-973[hglvu]
|
||||
fkqbokxqflkxi-avb-zlkqxfkjbkq-861[wdnor]
|
||||
wbhsfbohwcboz-foppwh-qighcasf-gsfjwqs-480[fhswb]
|
||||
dzczkrip-xiruv-szfyrqriuflj-treup-kvtyefcfxp-451[rfipu]
|
||||
fmsledevhsyw-fyrrc-eguymwmxmsr-698[yzoxu]
|
||||
udskkaxawv-jsttal-wfyafwwjafy-840[nlkda]
|
||||
sno-rdbqds-idkkxadzm-sqzhmhmf-287[lngzc]
|
||||
crwwv-yxphbq-rpbo-qbpqfkd-341[bpqrw]
|
||||
odiih-mhn-anjlzdrbrcrxw-563[xadcy]
|
||||
jyddc-ikk-wlmttmrk-698[lmstk]
|
||||
buzahisl-wshzapj-nyhzz-klzpnu-149[pjxor]
|
||||
odkasqzuo-eomhqzsqd-tgzf-ymzmsqyqzf-560[frqmp]
|
||||
gokzyxsjon-bkllsd-yzobkdsyxc-874[nbtmv]
|
||||
excdklvo-pvygob-bocokbmr-952[tyzxa]
|
||||
jvsvymbs-jovjvshal-aljouvsvnf-253[zgtdm]
|
||||
hafgnoyr-qlr-erfrnepu-637[refna]
|
||||
pelbtravp-sybjre-fnyrf-299[tjoim]
|
||||
fodvvlilhg-gbh-vwrudjh-621[hvdgl]
|
||||
kgjgrypw-epybc-bwc-bcnjmwkclr-678[smijy]
|
||||
myxcewob-qbkno-mrymyvkdo-dbksxsxq-458[bkmox]
|
||||
joufsobujpobm-fhh-dpoubjonfou-311[uvksy]
|
||||
rflsjynh-ojqqdgjfs-ijajqturjsy-697[jqsfr]
|
||||
vetllbybxw-vtgwr-kxtvjnblbmbhg-709[athym]
|
||||
ajvyjprwp-ajmrxjlcren-kdwwh-lxwcjrwvnwc-433[qsaxt]
|
||||
zbytomdsvo-mkxni-mykdsxq-myxdksxwoxd-952[xdmko]
|
||||
esyfwlau-bwddqtwsf-suimakalagf-684[stvip]
|
||||
jef-iushuj-fhezusjybu-fbqijys-whqii-huiuqhsx-582[uhijs]
|
||||
tpspahyf-nyhkl-jovjvshal-bzly-alzapun-565[sdprn]
|
||||
apwmeclga-hcjjwzcyl-umpiqfmn-132[shfrg]
|
||||
kwtwznct-jcvvg-lmxizbumvb-148[vbcmt]
|
||||
rmn-qcapcr-aylbw-umpiqfmn-366[juftv]
|
||||
sorozgxe-mxgjk-hgyqkz-yzuxgmk-748[xuvst]
|
||||
bkwzkqsxq-wsvsdkbi-qbkno-mkxni-mykdsxq-yzobkdsyxc-822[ksbqx]
|
||||
ryexqpqhteki-vbemuh-skijecuh-iuhlysu-842[tszmj]
|
||||
ikhcxvmbex-wrx-wxlbzg-501[zhqis]
|
||||
lsyrkjkbnyec-mrymyvkdo-nozvyiwoxd-978[enkfi]
|
||||
wdjcvuvmyjpn-mvhkvbdib-agjrzm-nojmvbz-395[tcxne]
|
||||
uwtojhynqj-gfxpjy-fhvznxnynts-567[kqpvs]
|
||||
iqmbazulqp-pkq-dqoquhuzs-534[ntpuq]
|
||||
gntmfefwitzx-ojqqdgjfs-ijajqturjsy-385[jfqtg]
|
||||
sebehvkb-fhezusjybu-zubboruqd-husuylydw-972[ytsim]
|
||||
nzcczdtgp-nsznzwlep-hzcvdsza-405[yotgu]
|
||||
joufsobujpobm-fhh-ufdiopmphz-675[tsymn]
|
||||
cxy-bnlanc-snuuhknjw-anbnjalq-823[nabcj]
|
||||
shoewudys-rkddo-huiuqhsx-374[dhsuo]
|
||||
vagreangvbany-rtt-jbexfubc-403[ynepo]
|
||||
aoubshwq-dzoghwq-ufogg-aobousasbh-714[oabgh]
|
||||
njmjubsz-hsbef-dipdpmbuf-qvsdibtjoh-805[bdjsf]
|
||||
zovldbkfz-gbiivybxk-lmboxqflkp-653[nyajo]
|
||||
yknnkoera-xwogap-hkceopeyo-628[ybmzc]
|
||||
nij-mywlyn-wbiwifuny-guleyncha-396[nyiwl]
|
||||
ocipgvke-ecpfa-eqcvkpi-vgejpqnqia-258[jsiqz]
|
||||
encuukhkgf-hnqygt-vgejpqnqia-882[dxzer]
|
||||
odiih-ljwmh-anbnjalq-927[ahijl]
|
||||
fkqbokxqflkxi-zxkav-ixyloxqlov-861[nxgja]
|
||||
udskkaxawv-xmrrq-uzgugdslw-sfsdqkak-216[msfyx]
|
||||
owshgfarwv-bwddqtwsf-kzahhafy-216[wafhd]
|
||||
oaxadrgx-dmnnuf-ruzmzouzs-794[uqhse]
|
||||
ziuxioqvo-akidmvomz-pcvb-zmikycqaqbqwv-616[iqvmo]
|
||||
bqvvu-xqjju-opknwca-550[yzhum]
|
||||
xgjougizobk-lruckx-gtgreyoy-670[nbfmk]
|
||||
bxaxipgn-vgpst-uadltg-bpgztixcv-323[gptxa]
|
||||
vcibutulxiom-jfumncw-alumm-nluchcha-448[ucmla]
|
||||
irgyyolokj-xghhoz-uvkxgzouty-930[ogyhk]
|
||||
kyelcrga-aylbw-amyrgle-umpiqfmn-782[almye]
|
||||
jsvagsulanw-xdgowj-kzahhafy-138[dblcm]
|
||||
ixccb-fkrfrodwh-uhdftxlvlwlrq-881[mblzw]
|
||||
chnylhuncihuf-mwupyhayl-bohn-guleyncha-422[hnuyc]
|
||||
irdgrxzex-treup-tfrkzex-uvgrikdvek-165[sjbnk]
|
||||
xzwrmkbqtm-akidmvomz-pcvb-zmikycqaqbqwv-434[sanut]
|
||||
ykhknbqh-zua-iwjwcaiajp-524[kjlio]
|
||||
jlidywncfy-mwupyhayl-bohn-uwkocmcncih-916[cyhnw]
|
||||
nuatmlmdpage-omzpk-eqdhuoqe-326[ljtsm]
|
||||
xmrrq-kusnwfywj-zmfl-suimakalagf-684[afmkl]
|
||||
foadouwbu-qvcqczohs-rsgwub-116[oubcq]
|
||||
etyyx-bgnbnkzsd-kzanqzsnqx-391[pnmlv]
|
||||
pinovwgz-wvnfzo-hvmfzodib-291[ovzfi]
|
||||
qekrixmg-gsrwyqiv-kvehi-fewoix-ywiv-xiwxmrk-828[iwxek]
|
||||
jqwpihizlwca-xtiabqk-oziaa-kcabwumz-amzdqkm-928[aizkm]
|
||||
qekrixmg-jpsaiv-stivexmsrw-672[etmsq]
|
||||
excdklvo-gokzyxsjon-mrymyvkdo-bomosfsxq-562[okmsx]
|
||||
qczcftiz-pibbm-aobousasbh-532[zynvo]
|
||||
wbhsfbohwcboz-suu-gsfjwqsg-506[bdhxv]
|
||||
lxwbdvna-pajmn-ajkkrc-anlnrerwp-563[anrjk]
|
||||
lsyrkjkbnyec-pvygob-cobfsmoc-900[uyrgf]
|
||||
cqwdujys-sxesebqju-ixyffydw-374[nyjvi]
|
||||
odiih-ouxfna-anlnrerwp-433[naior]
|
||||
rzvkjiduzy-xviyt-xjvodib-vxlpdndodji-993[aousd]
|
||||
ltpedcxots-qphzti-rjhidbtg-htgkxrt-453[rjlkn]
|
||||
krxqjijamxdb-kdwwh-fxatbqxy-823[wctav]
|
||||
froruixo-edvnhw-vwrudjh-829[rdhou]
|
||||
jvyyvzpcl-jhukf-aljouvsvnf-201[uwkic]
|
||||
nij-mywlyn-vumeyn-zchuhwcha-266[hnycm]
|
||||
ydjuhdqjyedqb-zubboruqd-tufbeocudj-244[vmkln]
|
||||
qlm-pbzobq-mixpqfz-doxpp-mrozexpfkd-575[zswni]
|
||||
qvbmzvibqwvit-moo-tijwzibwzg-330[ibvwz]
|
||||
pbeebfvir-fpniratre-uhag-freivprf-949[gvxlm]
|
||||
wfummczcyx-jfumncw-alumm-uwkocmcncih-890[vturj]
|
||||
dwbcjkun-npp-cajrwrwp-355[kstqo]
|
||||
dpssptjwf-cbtlfu-vtfs-uftujoh-441[ftsuj]
|
||||
vrurcjah-pajmn-npp-anbnjalq-303[tozvd]
|
||||
wfruflnsl-ojqqdgjfs-xfqjx-775[fjqls]
|
||||
pbafhzre-tenqr-qlr-qrirybczrag-897[yszub]
|
||||
sehheiylu-rkddo-udwyduuhydw-322[qbyad]
|
||||
upq-tfdsfu-cbtlfu-nbobhfnfou-103[vpxyh]
|
||||
ajvyjprwp-npp-dbna-cnbcrwp-901[stevo]
|
||||
bkzrrhehdc-bzmcx-bnzshmf-qdrdzqbg-833[msuya]
|
||||
amlqskcp-epybc-aylbw-rcaflmjmew-730[arbyn]
|
||||
wbhsfbohwcboz-dzoghwq-ufogg-gozsg-272[gobhw]
|
||||
ksodcbwnsr-dfcxsqhwzs-gqojsbusf-vibh-obozmgwg-194[rwimn]
|
||||
mfklstdw-usfvq-hmjuzskafy-424[ulgym]
|
||||
wfruflnsl-ojqqdgjfs-qfgtwfytwd-177[xbofz]
|
||||
sedikcuh-whqtu-isqludwuh-xkdj-jhqydydw-218[dhuqw]
|
||||
ltpedcxots-raphhxuxts-qphzti-advxhixrh-765[jahpi]
|
||||
zgmfyxypbmsq-djmucp-rcaflmjmew-548[aeoiv]
|
||||
qspkfdujmf-ezf-nbobhfnfou-207[lnkrt]
|
||||
fbebmtkr-zktwx-pxtihgbsxw-ietlmbv-zktll-kxlxtkva-943[hajmb]
|
||||
apwmeclga-hcjjwzcyl-bctcjmnkclr-548[yxnzl]
|
||||
rflsjynh-kqtbjw-btwpxmtu-177[tbjwf]
|
||||
kfg-jvtivk-treup-uvgcfpdvek-373[vkefg]
|
||||
upq-tfdsfu-kfmmzcfbo-nbobhfnfou-285[vsglz]
|
||||
chnylhuncihuf-mwupyhayl-bohn-xypyfijgyhn-266[pwahm]
|
||||
apwmeclga-zyqicr-dglylagle-886[lagce]
|
||||
jlidywncfy-xsy-qilembij-188[uxjts]
|
||||
jqwpihizlwca-lgm-lmaqov-954[laimq]
|
||||
qcffcgwjs-foppwh-gozsg-246[fgcop]
|
||||
bqxnfdmhb-rbzudmfdq-gtms-cdrhfm-287[dmbfh]
|
||||
gifavtkzcv-wcfnvi-rthlzjzkzfe-763[tmniq]
|
||||
uqtqbizg-ozilm-kivlg-kwibqvo-tijwzibwzg-720[qndzg]
|
||||
sxdobxkdsyxkv-mkxni-bomosfsxq-848[zyubw]
|
||||
qfmcusbwq-foppwh-kcfygvcd-662[cfpqw]
|
||||
sehheiylu-fbqijys-whqii-skijecuh-iuhlysu-660[kdjyq]
|
||||
sedikcuh-whqtu-uww-bqrehqjeho-660[dtawl]
|
||||
veqtekmrk-wgezirkiv-lyrx-eguymwmxmsr-464[emrkg]
|
||||
lqwhuqdwlrqdo-exqqb-uhdftxlvlwlrq-231[ydznk]
|
||||
sno-rdbqds-bzmcx-otqbgzrhmf-183[gomah]
|
||||
ujqgywfau-jsttal-hmjuzskafy-476[lghae]
|
||||
yrwxefpi-jpsaiv-gsrxemrqirx-100[yazxo]
|
||||
udglrdfwlyh-exqqb-sxufkdvlqj-569[dlqfu]
|
||||
ugjjgkanw-uzgugdslw-esjcwlafy-736[rnxjs]
|
||||
pdjqhwlf-sodvwlf-judvv-orjlvwlfv-673[vldfj]
|
||||
xekdwvwnzkqo-fahhuxawj-ajcejaanejc-524[ajewc]
|
||||
pwcvonofrcig-pibbm-fsqswjwbu-766[myazu]
|
||||
tcrjjzwzvu-wcfnvi-glityrjzex-893[bkuyx]
|
||||
lugjuacha-wbiwifuny-omyl-nymncha-448[mosph]
|
||||
ckgvutofkj-inuiurgzk-jkvgxzsktz-228[kguzi]
|
||||
ydjuhdqjyedqb-sqdto-ijehqwu-868[ozqsj]
|
||||
sxdobxkdsyxkv-zvkcdsm-qbkcc-myxdksxwoxd-640[xdksc]
|
||||
odkasqzuo-dmnnuf-dqmocgueufuaz-482[wfbke]
|
||||
wpuvcdng-tcddkv-wugt-vguvkpi-414[hayjs]
|
||||
lqwhuqdwlrqdo-edvnhw-uhfhlylqj-439[bjzye]
|
||||
wpuvcdng-dwppa-ceswkukvkqp-674[mxnkj]
|
||||
qzlozfhmf-bkzrrhehdc-okzrshb-fqzrr-zbpthrhshnm-365[hrzbf]
|
||||
raphhxuxts-rpcsn-rdpixcv-rjhidbtg-htgkxrt-635[yozvr]
|
||||
tfejldvi-xiruv-gcrjkzt-xirjj-tljkfdvi-jvimztv-321[veyxs]
|
||||
ryexqpqhteki-sxesebqju-iqbui-868[qebar]
|
||||
eqpuwogt-itcfg-hnqygt-tgegkxkpi-648[ywzjl]
|
||||
uzfqdzmfuazmx-pkq-bgdotmeuzs-482[zmudf]
|
||||
sbnqbhjoh-cbtlfu-bdrvjtjujpo-441[taquv]
|
||||
gokzyxsjon-bkwzkqsxq-lexxi-bomosfsxq-354[xoskq]
|
||||
oazegyqd-sdmpq-iqmbazulqp-dmnnuf-geqd-fqefuzs-456[qdefm]
|
||||
dwbcjkun-ljwmh-lxjcrwp-anbnjalq-875[hoynm]
|
||||
udskkaxawv-eadalsjq-yjsvw-xdgowj-klgjsyw-216[cnwyi]
|
||||
surmhfwloh-exqqb-sxufkdvlqj-439[tspmq]
|
||||
ksodcbwnsr-foppwh-zcuwghwqg-402[vopuk]
|
||||
zsxyfgqj-hmthtqfyj-fhvznxnynts-697[fhnty]
|
||||
yflexwxoalrp-yxphbq-bkdfkbbofkd-653[jzvpm]
|
||||
ltpedcxots-tvv-rdcipxcbtci-557[ctdip]
|
||||
slqryzjc-djmucp-qyjcq-756[cjqyd]
|
||||
rgndvtcxr-qphzti-bpcpvtbtci-817[tcpbi]
|
||||
ftzgxmbv-fbebmtkr-zktwx-vtgwr-vhtmbgz-lmhktzx-371[wzxvl]
|
||||
htqtwkzq-hfsid-yjhmstqtld-463[rxszy]
|
||||
rwcnawjcrxwju-yujbcrl-pajbb-mnenuxyvnwc-979[gkutb]
|
||||
gokzyxsjon-tovvilokx-kmaescsdsyx-562[dwlah]
|
||||
iutyaskx-mxgjk-lruckx-iayzuskx-ykxboik-826[kxiuy]
|
||||
vhglnfxk-zktwx-yehpxk-hixktmbhgl-891[diznt]
|
||||
sedikcuh-whqtu-kdijqrbu-sqdto-seqjydw-iuhlysui-790[lksjh]
|
||||
jyfvnlupj-zjhclunly-obua-vwlyhapvuz-617[pirsw]
|
||||
iuruxlar-sgmtkzoi-hgyqkz-zkinturume-670[qatsn]
|
||||
wkqxodsm-mrymyvkdo-mecdywob-cobfsmo-250[hgarm]
|
||||
odiih-kjbtnc-nwprwnnarwp-381[qpodn]
|
||||
kfg-jvtivk-tyftfcrkv-kirzezex-373[srcvd]
|
||||
gcfcnuls-aluxy-zotts-wuhxs-omyl-nymncha-552[clnsu]
|
||||
xmtjbzidx-zbb-xpnojhzm-nzmqdxz-421[mnkio]
|
||||
qjopwxha-acc-iwngapejc-160[jimst]
|
||||
emixwvqhml-kivlg-kwibqvo-aitma-564[qspyb]
|
||||
nvrgfezqvu-avccpsvre-cfxzjkztj-529[lmnsh]
|
||||
emixwvqhml-ktiaaqnqml-xtiabqk-oziaa-ikycqaqbqwv-746[ozadu]
|
||||
zhdsrqlchg-hjj-orjlvwlfv-751[hjlrv]
|
||||
cybyjqho-whqtu-uww-qsgkyiyjyed-478[szxuo]
|
||||
clxalrtyr-nsznzwlep-wzrtdetnd-405[lnrtz]
|
||||
sgmtkzoi-yigbktmkx-natz-rghuxgzuxe-722[gktxz]
|
||||
hjgbwuladw-tskcwl-sfsdqkak-502[txdsw]
|
||||
yrwxefpi-hci-vigimzmrk-646[hdmzy]
|
||||
hqcfqwydw-hqrryj-jusxdebewo-946[qwdeh]
|
||||
wsvsdkbi-qbkno-cmkfoxqob-rexd-yzobkdsyxc-276[wptxs]
|
||||
qfmcusbwq-qvcqczohs-zcuwghwqg-870[mnybx]
|
||||
clxalrtyr-nsznzwlep-cpdplcns-743[rtycz]
|
||||
fbebmtkr-zktwx-ktuubm-ybgtgvbgz-553[osmdy]
|
||||
jvuzbtly-nyhkl-yhtwhnpun-jovjvshal-ylzlhyjo-773[hlyjn]
|
||||
slqryzjc-aylbw-pcacgtgle-782[nxkri]
|
||||
tfcfiwlc-wcfnvi-wzeretzex-971[smobe]
|
||||
jef-iushuj-uww-qsgkyiyjyed-556[xzrwq]
|
||||
crwwv-yxphbq-xkxivpfp-653[pxvwb]
|
||||
hqcfqwydw-zubboruqd-husuylydw-244[lqeho]
|
||||
oxmeeuruqp-qss-eqdhuoqe-534[equos]
|
||||
qxdwpopgsdjh-rgndvtcxr-gpqqxi-gthtpgrw-687[gpdqr]
|
||||
mybbycsfo-mrymyvkdo-bocokbmr-692[pymza]
|
||||
myvybpev-oqq-yzobkdsyxc-250[sxytw]
|
||||
fnjyxwrinm-kdwwh-uxprbcrlb-329[natqu]
|
||||
aietsrmdih-nippcfier-gsrxemrqirx-958[iremp]
|
||||
xmrrq-tmffq-vwhdgqewfl-138[fqmrw]
|
||||
oqnidbshkd-bzmcx-sdbgmnknfx-599[nzdyx]
|
||||
eqttqukxg-ecpfa-eqcvkpi-ewuvqogt-ugtxkeg-128[mytkp]
|
||||
nchhg-ntwemz-amzdqkma-252[kmbop]
|
||||
bjfutsneji-jll-zxjw-yjxynsl-775[ndbsw]
|
||||
ktwbhtvmbox-lvtoxgzxk-angm-mxvaghehzr-319[ijqxb]
|
||||
kyelcrga-afmamjyrc-pcqcypaf-210[acyfm]
|
||||
myxcewob-qbkno-mkxni-oxqsxoobsxq-484[oxbqk]
|
||||
esyfwlau-vqw-kzahhafy-788[jikae]
|
||||
oqnidbshkd-eknvdq-btrsnldq-rdquhbd-391[njzml]
|
||||
qjopwxha-bhksan-opknwca-888[ahkno]
|
||||
udskkaxawv-jsttal-vwhdgqewfl-190[hqmnt]
|
||||
excdklvo-lexxi-crszzsxq-458[uavnl]
|
||||
frqvxphu-judgh-fdqgb-frdwlqj-wudlqlqj-179[bimaq]
|
||||
iuruxlar-kmm-ykxboiky-852[tijpz]
|
||||
tyepcyletzylw-mldvpe-lylwjdtd-509[lydet]
|
||||
frqvxphu-judgh-gbh-whfkqrorjb-101[mhbes]
|
||||
xqvwdeoh-edvnhw-zrunvkrs-699[zmudw]
|
||||
irdgrxzex-treup-fgvirkzfej-893[fbsyn]
|
||||
cxy-bnlanc-ljwmh-orwjwlrwp-771[ngpmz]
|
||||
eqpuwogt-itcfg-gii-ucngu-388[hzgae]
|
||||
ikhcxvmbex-cxeeruxtg-wxlbzg-553[mvnfs]
|
||||
mrxivrexmsrep-fyrrc-asvowlst-854[codsq]
|
||||
npmhcargjc-aylbw-qcptgacq-366[ditsg]
|
||||
ftzgxmbv-ietlmbv-zktll-phkdlahi-241[ltbhi]
|
||||
hqcfqwydw-tou-bewyijysi-270[hnvux]
|
||||
emixwvqhml-kivlg-abwziom-590[imlvw]
|
||||
pejji-nio-mecdywob-cobfsmo-926[wrjmp]
|
||||
bknsykmdsfo-oqq-dbksxsxq-640[naysz]
|
||||
gifavtkzcv-vxx-tfekrzedvek-789[cnwtp]
|
||||
kmjezxodgz-diozmivodjivg-agjrzm-xjiovdihzio-915[yqktj]
|
||||
shoewudys-vbemuh-qsgkyiyjyed-946[nqsjd]
|
||||
htqtwkzq-ojqqdgjfs-rfwpjynsl-749[hryqo]
|
||||
rmn-qcapcr-zyqicr-pcacgtgle-340[znstw]
|
||||
bnqqnrhud-bzmcx-bnmszhmldms-729[yfetv]
|
||||
surmhfwloh-gbh-rshudwlrqv-725[dsaym]
|
||||
jchipqat-tvv-itrwcdadvn-505[povhu]
|
||||
zgmfyxypbmsq-njyqrga-epyqq-rcaflmjmew-340[mqyae]
|
||||
froruixo-exqqb-pdunhwlqj-283[nmuqd]
|
||||
lnkfaypeha-xwogap-odellejc-784[ytrsz]
|
||||
jlidywncfy-xsy-fuvilunils-864[ilyfn]
|
||||
joufsobujpobm-dipdpmbuf-sftfbsdi-545[rwjnm]
|
||||
tvsnigxmpi-gerhc-gsexmrk-eguymwmxmsr-932[pivem]
|
||||
tfejldvi-xiruv-srjbvk-ivjvrity-815[vijrt]
|
||||
zuv-ykixkz-yigbktmkx-natz-zkinturume-410[kzitu]
|
||||
enzcntvat-pubpbyngr-qrcyblzrag-117[oywbs]
|
||||
wsvsdkbi-qbkno-lkcuod-nofovyzwoxd-744[xnuqc]
|
||||
wbhsfbohwcboz-foppwh-aobousasbh-246[nfsml]
|
||||
uiovmbqk-jcvvg-abwziom-720[nbqaz]
|
||||
etaqigpke-fag-fgrnqaogpv-674[gaefp]
|
||||
ejpanjwpekjwh-nwxxep-hkceopeyo-238[bmscu]
|
||||
qjopwxha-bhksan-wjwhuoeo-940[xenwh]
|
||||
etyyx-bzmcx-bnzshmf-qdzbpthrhshnm-729[hbmzn]
|
||||
uqtqbizg-ozilm-lgm-abwziom-356[tspmz]
|
||||
excdklvo-mybbycsfo-tovvilokx-psxkxmsxq-874[axwon]
|
||||
mvydjvxodqz-xviyt-xjvodib-pnzm-oznodib-187[nflym]
|
||||
ixccb-zhdsrqlchg-edvnhw-xvhu-whvwlqj-465[hcvwd]
|
||||
qspkfdujmf-votubcmf-tdbwfohfs-ivou-bdrvjtjujpo-181[esuzg]
|
||||
fkqbokxqflkxi-qlm-pbzobq-bdd-jxohbqfkd-601[dcgym]
|
||||
mtzslklcozfd-prr-nfdezxpc-dpcgtnp-301[tmnrk]
|
||||
xekdwvwnzkqo-lhwopey-cnwoo-wymqeoepekj-290[rzsnk]
|
||||
fubrjhqlf-sodvwlf-judvv-pdqdjhphqw-725[dfhjq]
|
||||
shoewudys-zubboruqd-skijecuh-iuhlysu-608[ushbd]
|
||||
zlkprjbo-doxab-zxkav-rpbo-qbpqfkd-679[bkopa]
|
||||
nzcczdtgp-mldvpe-opawzjxpye-587[tkbms]
|
||||
apuut-nxvqzibzm-cpio-yzkvmohzio-655[rsozd]
|
||||
rgllk-ngzzk-ymdwqfuzs-300[yhzxu]
|
||||
cvabijtm-jcvvg-uiviomumvb-538[ixajz]
|
||||
oazegyqd-sdmpq-otaoaxmfq-pqbmdfyqzf-248[qadfm]
|
||||
rtqlgevkng-fag-nqikuvkeu-960[nqdom]
|
||||
bnknqetk-cxd-cdrhfm-183[mfpwa]
|
||||
ohmnuvfy-wuhxs-wiuncha-lyuwkocmcncih-552[chunw]
|
||||
hqtyeqsjylu-jef-iushuj-tou-fkhsxqiydw-296[isfmy]
|
||||
kwtwznct-kwvacumz-ozilm-jiasmb-uiviomumvb-746[qmjyz]
|
||||
qfmcusbwq-foppwh-twbobqwbu-298[bwqfo]
|
||||
ykhknbqh-xqjju-owhao-472[hjtck]
|
||||
dszphfojd-tdbwfohfs-ivou-mbcpsbupsz-103[sbdfo]
|
||||
lahxpnwrl-ljwmh-nwprwnnarwp-641[srtpm]
|
||||
ckgvutofkj-lruckx-jkvruesktz-878[zjlyk]
|
||||
dyz-combod-zvkcdsm-qbkcc-nocsqx-926[yvute]
|
||||
ktwbhtvmbox-wrx-nlxk-mxlmbgz-345[lsuwt]
|
||||
nwilwcejc-nwxxep-zalhkuiajp-186[bznxr]
|
||||
uzfqdzmfuazmx-otaoaxmfq-bgdotmeuzs-846[mzafo]
|
||||
oxmeeuruqp-omzpk-oamfuzs-oazfmuzyqzf-352[ypdzg]
|
||||
zhdsrqlchg-fdqgb-ghsduwphqw-361[hdgqs]
|
||||
nchhg-jiasmb-amzdqkma-278[qklti]
|
||||
tfiifjzmv-upv-wzeretzex-295[itvos]
|
||||
eqttqukxg-ecpfa-ujkrrkpi-830[kepqr]
|
||||
clotzlnetgp-mldvpe-nzyeltyxpye-145[xfpsy]
|
||||
mbiyqoxsm-myvybpev-mkxni-mykdsxq-yzobkdsyxc-900[ymxbk]
|
||||
plolwdub-judgh-vfdyhqjhu-kxqw-vhuylfhv-621[zqwmy]
|
||||
atyzghrk-vxupkizork-jek-giwaoyozout-228[abrmv]
|
||||
zotts-xsy-mufym-162[mstyf]
|
||||
vhehkyne-ktuubm-mktbgbgz-293[qmytr]
|
||||
kwvacumz-ozilm-zijjqb-ivitgaqa-616[fkoxt]
|
||||
yaxsnlcrun-ajvyjprwp-snuuhknjw-anlnrerwp-771[zpyld]
|
||||
raphhxuxts-bpvctixr-eaphixr-vgphh-bpcpvtbtci-115[phtxb]
|
||||
nuatmlmdpage-odkasqzuo-qss-dqmocgueufuaz-768[umnqw]
|
||||
yknnkoera-lhwopey-cnwoo-nawymqeoepekj-680[eonkw]
|
||||
pybgmyargtc-aylbw-qyjcq-886[buzfp]
|
||||
gzefmnxq-ngzzk-iadwetab-638[zaegn]
|
||||
sbnqbhjoh-kfmmzcfbo-usbjojoh-129[acdkb]
|
||||
lxaaxbren-lujbbrornm-ljwmh-lxjcrwp-mnyjacvnwc-355[yzsuk]
|
||||
nchhg-lgm-nqvivkqvo-200[dystz]
|
||||
plolwdub-judgh-udeelw-rshudwlrqv-335[sihdt]
|
||||
wlsiayhcw-vumeyn-lymyulwb-292[zbrux]
|
||||
ytu-xjhwjy-hfsid-htfynsl-qtlnxynhx-411[adxmu]
|
||||
wkqxodsm-tovvilokx-ckvoc-822[uhgov]
|
||||
chnylhuncihuf-vumeyn-nluchcha-500[rcbmn]
|
||||
tfiifjzmv-lejkrscv-tyftfcrkv-jyzggzex-243[fjtvz]
|
||||
eqpuwogt-itcfg-tcddkv-tgugctej-310[pyemh]
|
||||
iuruxlar-xgsvgmotm-pkrrehkgt-xkykgxin-956[btwqp]
|
||||
shoewudys-sxesebqju-qdqboiyi-894[seqbd]
|
||||
zlkprjbo-doxab-gbiivybxk-pxibp-861[azyjx]
|
||||
ckgvutofkj-inuiurgzk-lotgtiotm-982[qszly]
|
||||
thnulapj-jshzzpmplk-jhukf-vwlyhapvuz-747[hpjlu]
|
||||
pybgmyargtc-hcjjwzcyl-qcptgacq-782[bxsuc]
|
||||
xgsvgmotm-vrgyzoi-mxgyy-iutzgotsktz-150[gtmoy]
|
||||
laffe-yigbktmkx-natz-jkyomt-696[ktafm]
|
||||
zvyvgnel-tenqr-pubpbyngr-znexrgvat-507[wfjhu]
|
||||
pelbtravp-pnaql-znantrzrag-403[cbyja]
|
||||
jqwpihizlwca-akidmvomz-pcvb-apqxxqvo-850[oxymv]
|
||||
cvabijtm-ntwemz-twoqabqka-954[atbmq]
|
||||
zixppfcfba-avb-zlkqxfkjbkq-809[zlmjc]
|
||||
sebehvkb-zubboruqd-tufqhjcudj-556[budeh]
|
||||
lqwhuqdwlrqdo-fdqgb-ghvljq-621[qdlgh]
|
||||
qlm-pbzobq-crwwv-zxkav-zlxqfkd-rpbo-qbpqfkd-731[ciyxw]
|
||||
pwcvonofrcig-gqojsbusf-vibh-qighcasf-gsfjwqs-740[csebm]
|
||||
mvydjvxodqz-kmjezxodgz-kgvnodx-bmvnn-yzqzgjkhzio-239[zdovg]
|
||||
kzgwomvqk-xtiabqk-oziaa-tijwzibwzg-564[menyj]
|
||||
ksodcbwnsr-xszzmpsob-kcfygvcd-454[mbaod]
|
||||
ejpanjwpekjwh-xwogap-hwxknwpknu-472[wpjkn]
|
||||
mvydjvxodqz-hvbizodx-wpiit-hvivbzhzio-967[ivzdh]
|
||||
mvydjvxodqz-mvwwdo-nzmqdxzn-681[jryzk]
|
||||
enqvbnpgvir-rtt-freivprf-871[lgqrc]
|
||||
hvbizodx-wpiit-kpmxcvndib-291[dyjmn]
|
||||
molgbzqfib-mixpqfz-doxpp-xkxivpfp-965[pxfib]
|
||||
fbebmtkr-zktwx-cxeeruxtg-nlxk-mxlmbgz-137[dckut]
|
||||
luxciuwncpy-luvvcn-mbcjjcha-500[qsvzt]
|
||||
apwmeclga-hcjjwzcyl-qyjcq-704[cjalq]
|
||||
wpuvcdng-eqttqukxg-uecxgpigt-jwpv-cpcnauku-830[ucgpt]
|
||||
iehepwnu-cnwza-fahhuxawj-pnwejejc-940[ewahj]
|
||||
pbybeshy-pbeebfvir-pnaql-pbngvat-freivprf-715[uyzwp]
|
||||
htsxzrjw-lwfij-ojqqdgjfs-zxjw-yjxynsl-957[iyonc]
|
||||
sxdobxkdsyxkv-wsvsdkbi-qbkno-zvkcdsm-qbkcc-bomosfsxq-536[mbyan]
|
||||
fruurvlyh-fkrfrodwh-uhdftxlvlwlrq-335[rflhu]
|
||||
froruixo-hjj-orjlvwlfv-387[uyawn]
|
||||
myvybpev-lexxi-vklybkdybi-978[ybvei]
|
||||
chnylhuncihuf-vohhs-xymcah-240[yxnmh]
|
||||
tagzsrsjvgmk-vqw-vwhsjlewfl-606[svwgj]
|
||||
zbytomdsvo-lexxi-domrxyvyqi-250[oxydi]
|
||||
qfkkj-clmmte-opgpwzaxpye-821[pekma]
|
||||
lgh-kwujwl-udskkaxawv-jsttal-hmjuzskafy-320[axyrm]
|
||||
irdgrxzex-nvrgfezqvu-avccpsvre-cfxzjkztj-191[sclzh]
|
||||
mhi-lxvkxm-xzz-etuhktmhkr-319[rcomn]
|
||||
lhkhszqx-fqzcd-dff-sdbgmnknfx-391[ugevx]
|
||||
apwmeclga-aylbw-ylyjwqgq-314[izfye]
|
||||
yflexwxoalrp-zlkprjbo-doxab-ciltbo-qbzeklildv-341[byclp]
|
||||
cvabijtm-kwzzwaqdm-ntwemz-abwziom-252[rdmvn]
|
||||
qfkkj-upwwjmply-epnsyzwzrj-899[okhgz]
|
||||
jxdkbqfz-avb-zlkqxfkjbkq-861[wptxb]
|
||||
gpsxdprixkt-qphzti-hwxeexcv-947[krgwe]
|
||||
nij-mywlyn-wuhxs-wiuncha-lymyulwb-968[wylnu]
|
||||
sbnqbhjoh-kfmmzcfbo-ufdiopmphz-987[bfhmo]
|
||||
guahyncw-jfumncw-alumm-xyjfisgyhn-500[htamn]
|
||||
ytu-xjhwjy-jll-ijxnls-879[duthg]
|
||||
lgh-kwujwl-usfvq-ugslafy-esfsywewfl-944[ilszy]
|
||||
tvsnigxmpi-tpewxmg-kveww-xiglrspskc-152[gipsw]
|
||||
joufsobujpobm-cbtlfu-dvtupnfs-tfswjdf-129[fubjo]
|
||||
rwcnawjcrxwju-bljenwpna-qdwc-mnyuxhvnwc-225[wncja]
|
||||
qzchnzbshud-okzrshb-fqzrr-rzkdr-989[rzhbd]
|
||||
qzoggwtwsr-pogysh-rsjszcdasbh-896[sghor]
|
||||
gzefmnxq-dmnnuf-xmnadmfadk-326[tvuiw]
|
||||
qzoggwtwsr-pibbm-zopcfohcfm-792[jsmfu]
|
||||
mvydjvxodqz-xviyt-xjvodib-hvivbzhzio-369[iceny]
|
||||
wkqxodsm-lkcuod-cdybkqo-224[dkocq]
|
||||
veqtekmrk-ikk-wxsveki-542[keivm]
|
||||
zlkprjbo-doxab-yxphbq-pqloxdb-419[ckdtm]
|
||||
buzahisl-ibuuf-klzpnu-721[stjnm]
|
||||
hwdtljsnh-kqtbjw-ijajqturjsy-515[plnqy]
|
||||
luxciuwncpy-jfumncw-alumm-lyuwkocmcncih-474[lqpco]
|
||||
tinnm-ibghopzs-rms-aobousasbh-506[sboah]
|
||||
pbeebfvir-rtt-ratvarrevat-403[tdokj]
|
||||
dmybmsuzs-pkq-efadmsq-300[msdqa]
|
||||
ujqgywfau-tmffq-dgyaklauk-970[yxmid]
|
||||
ovbunmneqbhf-enoovg-hfre-grfgvat-481[efgno]
|
||||
hqfxxnknji-kzeed-uqfxynh-lwfxx-wjhjnansl-957[nxfhj]
|
||||
plolwdub-judgh-edvnhw-pdqdjhphqw-985[dsxhg]
|
||||
nwlddtqtpo-awldetn-rcldd-nfdezxpc-dpcgtnp-353[dnptc]
|
||||
bwx-amkzmb-xzwrmkbqtm-ntwemz-amzdqkma-668[swmnl]
|
||||
bqxnfdmhb-qzaahs-rdquhbdr-443[bdhqa]
|
||||
egdytrixat-ide-htrgti-uadltg-steadnbtci-297[zampy]
|
||||
gsrwyqiv-kvehi-gerhc-gsexmrk-erepcwmw-880[bkwts]
|
||||
nsyjwsfyntsfq-gfxpjy-jslnsjjwnsl-749[lvzus]
|
||||
dfcxsqhwzs-pibbm-gvwddwbu-246[dqbem]
|
||||
mtzslklcozfd-ojp-fdpc-epdetyr-613[dpcef]
|
||||
gbc-frperg-ohaal-erfrnepu-351[reafg]
|
||||
gvaaz-cbtlfu-efqbsunfou-311[dvnmz]
|
||||
ugdgjxmd-tskcwl-umklgewj-kwjnauw-892[wgjku]
|
||||
iruzfrtkzmv-avccpsvre-nfibjyfg-243[jzoyc]
|
||||
shoewudys-hqrryj-bqrehqjeho-296[heqrj]
|
||||
hwdtljsnh-kqtbjw-htsyfnsrjsy-827[dntpc]
|
||||
zilqwikbqdm-kivlg-uiviomumvb-902[imvbk]
|
||||
rsvxltspi-sfnigx-wxsveki-984[sixve]
|
||||
surmhfwloh-gbh-xvhu-whvwlqj-387[hwluv]
|
||||
ubhatstkwhnl-yehpxk-wxlbzg-137[raqjb]
|
||||
oknkvcta-itcfg-uecxgpigt-jwpv-ocpcigogpv-596[cgpio]
|
||||
amjmpdsj-djmucp-nspafyqgle-470[ztpqn]
|
||||
zixppfcfba-avb-abpfdk-471[abfpc]
|
||||
owshgfarwv-jsttal-vwkayf-944[smcyx]
|
||||
vjpwncrl-ljwmh-lxjcrwp-lxwcjrwvnwc-589[irbxq]
|
||||
qvbmzvibqwvit-ziuxioqvo-lgm-amzdqkma-928[hgfln]
|
||||
lxuxaodu-kjbtnc-jwjuhbrb-147[bjuxa]
|
||||
etaqigpke-fag-yqtmujqr-440[qaegt]
|
||||
zekvierkzferc-irdgrxzex-jtrmvexvi-ylek-rthlzjzkzfe-633[gkyzp]
|
||||
mfklstdw-hdsklau-yjskk-kwjnauwk-762[vnfzg]
|
||||
pkl-oaynap-fahhuxawj-oanreyao-706[mdfpn]
|
||||
hwdtljsnh-hmthtqfyj-rfsfljrjsy-359[sxziu]
|
||||
fab-eqodqf-ngzzk-bgdotmeuzs-144[kxags]
|
||||
tagzsrsjvgmk-tskcwl-vwhsjlewfl-424[ejuah]
|
||||
kzgwomvqk-jiasmb-uizsmbqvo-590[mbiko]
|
||||
qjopwxha-xqjju-oanreyao-758[ubmon]
|
||||
hvbizodx-xmtjbzidx-nxvqzibzm-cpio-yzkgjthzio-889[rmyqo]
|
||||
iuruxlar-kmm-jkvruesktz-644[kruma]
|
||||
ujqgywfau-jsttal-vwhdgqewfl-710[hbdlx]
|
||||
jlidywncfy-wuhxs-wiuncha-yhachyylcha-630[hycaw]
|
||||
lugjuacha-wlsiayhcw-dyffsvyuh-uhufsmcm-890[juefh]
|
||||
hjgbwuladw-xdgowj-hmjuzskafy-398[wqigl]
|
||||
yuxufmdk-sdmpq-pkq-etubbuzs-456[wldkg]
|
||||
vcibutulxiom-dyffsvyuh-qilembij-110[jdnmz]
|
||||
nzwzcqfw-clmmte-dpcgtnpd-509[cdmnp]
|
||||
aczupnetwp-nlyoj-nzletyr-zapcletzyd-665[zelnp]
|
||||
htsxzrjw-lwfij-wfintfhynaj-kqtbjw-knsfshnsl-983[kytzm]
|
||||
enqvbnpgvir-onfxrg-qrirybczrag-611[rgnbi]
|
||||
molgbzqfib-ciltbo-xkxivpfp-159[biflo]
|
||||
plolwdub-judgh-fkrfrodwh-ghyhorsphqw-517[hdorw]
|
||||
gzefmnxq-omzpk-oazfmuzyqzf-872[zkycu]
|
||||
qjopwxha-lhwopey-cnwoo-naoawnyd-186[cvyno]
|
||||
jyfvnlupj-ipvohghykvbz-jovjvshal-ylzlhyjo-435[xlenk]
|
||||
ajmrxjlcren-kjbtnc-jwjuhbrb-329[klcuz]
|
||||
wdjcvuvmyjpn-ezggtwzvi-jkzmvodjin-603[gmveh]
|
||||
muqfedyput-fbqijys-whqii-bqrehqjeho-192[vdlge]
|
||||
ktfitzbgz-xzz-ftgtzxfxgm-605[izfql]
|
||||
bknsykmdsfo-oqq-wkbuodsxq-458[stifb]
|
||||
slqryzjc-hcjjwzcyl-yaosgqgrgml-314[qymir]
|
||||
gpewwmjmih-veffmx-xvemrmrk-126[itcvu]
|
||||
rdadguja-gpqqxi-ldgzhwde-297[hnvso]
|
||||
lxaaxbren-mhn-cnlqwxuxph-251[xvjuz]
|
||||
xst-wigvix-fewoix-gsrxemrqirx-698[xireg]
|
||||
iehepwnu-cnwza-zua-wymqeoepekj-108[sdnmj]
|
||||
oknkvcta-itcfg-rncuvke-itcuu-hkpcpekpi-908[pgfbe]
|
||||
enqvbnpgvir-ohaal-hfre-grfgvat-351[hsgdf]
|
||||
ixccb-iorzhu-hqjlqhhulqj-647[hqcij]
|
||||
apuut-agjrzm-jkzmvodjin-915[jamuz]
|
||||
hqcfqwydw-rqiauj-ijehqwu-530[qwhij]
|
||||
vhehkyne-ktwbhtvmbox-lvtoxgzxk-angm-kxvxbobgz-683[tsurp]
|
||||
gntmfefwitzx-idj-knsfshnsl-723[fnsit]
|
||||
ajvyjprwp-bljenwpna-qdwc-ujkxajcxah-563[yskxv]
|
||||
joufsobujpobm-dboez-dpbujoh-mbcpsbupsz-259[bopuj]
|
||||
xlrypetn-prr-nzyeltyxpye-847[yeprl]
|
||||
zuv-ykixkz-xgsvgmotm-lruckx-jkvgxzsktz-696[ijlfz]
|
||||
jqwpihizlwca-moo-lmxtwgumvb-798[nkzsr]
|
||||
jsvagsulanw-kusnwfywj-zmfl-klgjsyw-736[ectrq]
|
||||
ykhknbqh-nwxxep-nawymqeoepekj-758[cfvdy]
|
||||
kzeed-gfxpjy-tujwfyntsx-385[aunmy]
|
||||
slqryzjc-qaytclecp-fslr-dglylagle-184[lcyae]
|
||||
laffe-vrgyzoi-mxgyy-iutzgotsktz-410[gtyzf]
|
||||
gpbepvxcv-hrpktcvtg-wjci-stktadebtci-141[zoqhx]
|
||||
yaxsnlcrun-lqxlxujcn-mnyuxhvnwc-641[nxclu]
|
||||
tagzsrsjvgmk-kusnwfywj-zmfl-dstgjslgjq-294[gayon]
|
||||
kwzzwaqdm-zijjqb-xczkpiaqvo-902[mkgjt]
|
||||
mfklstdw-usfvq-ugslafy-xafsfuafy-684[fsaul]
|
||||
zvyvgnel-tenqr-ovbunmneqbhf-sybjre-fgbentr-117[shfce]
|
||||
emixwvqhml-akidmvomz-pcvb-amzdqkma-720[relbk]
|
||||
rdggdhxkt-eaphixr-vgphh-hwxeexcv-973[xozyv]
|
||||
bqvvu-zua-iwngapejc-992[nmdax]
|
||||
bjfutsneji-kqtbjw-wjxjfwhm-203[irjmx]
|
||||
bdavqofuxq-nmewqf-abqdmfuaze-976[vgzhc]
|
||||
vdzonmhydc-okzrshb-fqzrr-rzkdr-313[rzdhk]
|
||||
sawlkjevaz-oywrajcan-dqjp-wjwhuoeo-836[ajwoe]
|
||||
fruurvlyh-gbh-sxufkdvlqj-413[kftmo]
|
||||
fruurvlyh-sodvwlf-judvv-ghsorbphqw-569[tadzk]
|
||||
sbejpbdujwf-tdbwfohfs-ivou-dpoubjonfou-103[rbqio]
|
||||
oxmeeuruqp-otaoaxmfq-xasuefuoe-222[ozipy]
|
||||
rdggdhxkt-qphzti-ejgrwphxcv-921[tusrb]
|
||||
dkqjcbctfqwu-fag-yqtmujqr-882[kzvuf]
|
||||
gzefmnxq-dmnnuf-mzmxkeue-248[menfu]
|
||||
kgjgrypw-epybc-aylbw-kylyeckclr-314[mlvhs]
|
||||
bwx-amkzmb-akidmvomz-pcvb-abwziom-148[nmtyw]
|
||||
ckgvutofkj-sorozgxe-mxgjk-xghhoz-xkykgxin-670[gkxoh]
|
||||
zhdsrqlchg-fkrfrodwh-ghsorbphqw-803[cjybd]
|
||||
hvbizodx-wvnfzo-adivixdib-603[xwstz]
|
||||
tvsnigxmpi-gerhc-hitpscqirx-204[icghp]
|
||||
jrncbavmrq-cynfgvp-tenff-npdhvfvgvba-741[ybszn]
|
||||
mbiyqoxsm-pvygob-psxkxmsxq-952[mjfnc]
|
||||
gsrwyqiv-kvehi-veffmx-gywxsqiv-wivzmgi-282[bdrgj]
|
||||
clxalrtyr-xtwtelcj-rclop-awldetn-rcldd-cpdplcns-847[lcdrt]
|
||||
ahngzyzqcntr-bzmcx-sdbgmnknfx-287[fmyqt]
|
||||
zgmfyxypbmsq-aylbw-amyrgle-bctcjmnkclr-340[mybcl]
|
||||
fydelmwp-prr-nzyeltyxpye-717[gfjxa]
|
||||
rnqnyfwd-lwfij-rflsjynh-wfggny-xfqjx-931[fnjwy]
|
||||
zilqwikbqdm-xtiabqk-oziaa-twoqabqka-278[ftonr]
|
||||
bjfutsneji-gzssd-uzwhmfxnsl-827[sfjnu]
|
||||
ojk-nzxmzo-pinovwgz-agjrzm-jkzmvodjin-733[zjomn]
|
||||
ygcrqpkbgf-dcumgv-fgukip-570[vmhxn]
|
||||
dzczkrip-xiruv-srjbvk-jyzggzex-945[uzneh]
|
||||
bkzrrhehdc-bzmcx-lzmzfdldms-287[eclvd]
|
||||
ziuxioqvo-kpwkwtibm-lmxizbumvb-564[txsru]
|
||||
kzgwomvqk-lgm-lmxizbumvb-122[mbgkl]
|
||||
htsxzrjw-lwfij-idj-xjwanhjx-463[obdze]
|
||||
gntmfefwitzx-kqtbjw-wjxjfwhm-749[qzutv]
|
||||
htsxzrjw-lwfij-jll-tujwfyntsx-671[xugan]
|
||||
ymszqfuo-rxaiqd-etubbuzs-118[ubqsz]
|
||||
vdzonmhydc-azrjds-lzqjdshmf-989[dzhjm]
|
||||
dyz-combod-bkllsd-oxqsxoobsxq-354[nrmkx]
|
||||
pyknyegle-afmamjyrc-yaosgqgrgml-626[zdlfg]
|
||||
oxmeeuruqp-vqxxknqmz-oazfmuzyqzf-352[rnsyt]
|
||||
qjopwxha-xqjju-pnwejejc-654[jepqw]
|
||||
wifilzof-jfumncw-alumm-xypyfijgyhn-604[fjerw]
|
||||
vagreangvbany-enoovg-fuvccvat-533[gncot]
|
||||
avw-zljyla-zjhclunly-obua-thuhnltlua-669[wathd]
|
||||
ynssr-lvtoxgzxk-angm-mxvaghehzr-345[vopnm]
|
||||
cvabijtm-uqtqbizg-ozilm-xtiabqk-oziaa-lmdmtwxumvb-928[imabt]
|
||||
frqvxphu-judgh-sodvwlf-judvv-pdqdjhphqw-751[azovy]
|
||||
qmpmxevc-kvehi-jyddc-fyrrc-qerekiqirx-282[ygmhv]
|
||||
fodvvlilhg-udeelw-pdunhwlqj-153[sndmo]
|
||||
gpsxdprixkt-ytaanqtpc-gthtpgrw-765[tpgar]
|
||||
cvabijtm-kpwkwtibm-bmkpvwtwog-174[wbkmt]
|
||||
vetllbybxw-yehpxk-wxlbzg-891[yekxl]
|
||||
nzwzcqfw-nlyoj-dezclrp-275[zclnw]
|
||||
qmpmxevc-kvehi-glsgspexi-gsrxemrqirx-828[exgim]
|
||||
xtwtelcj-rclop-dnlgpyrpc-sfye-hzcvdsza-873[xmpon]
|
||||
jrncbavmrq-pnaql-jbexfubc-793[bacjn]
|
||||
ohmnuvfy-yaa-lymyulwb-266[yalmu]
|
||||
nzwzcqfw-aczupnetwp-awldetn-rcldd-pyrtyppctyr-613[pctwd]
|
||||
vqr-ugetgv-uecxgpigt-jwpv-rwtejcukpi-752[geptu]
|
||||
tfcfiwlc-lejkrscv-upv-rthlzjzkzfe-607[tcfns]
|
||||
hwdtljsnh-uqfxynh-lwfxx-knsfshnsl-229[xtngb]
|
||||
iuruxlar-igtje-iayzuskx-ykxboik-930[kmghr]
|
||||
xjgjmapg-ezggtwzvi-hvivbzhzio-421[gzivh]
|
||||
gpbepvxcv-hrpktcvtg-wjci-hwxeexcv-349[xswrp]
|
||||
tcorcikpi-eqttqukxg-gii-hkpcpekpi-622[ruxyk]
|
||||
ygcrqpkbgf-ejqeqncvg-ucngu-440[gcqen]
|
||||
etyyx-dff-qdbdhuhmf-729[wskto]
|
||||
tfiifjzmv-upv-vexzevvizex-399[veizf]
|
||||
houngfgxjuay-sorozgxe-mxgjk-jek-aykx-zkyzotm-566[aimhd]
|
||||
hcd-gsqfsh-dzoghwq-ufogg-aobousasbh-714[ynfie]
|
||||
foadouwbu-qobrm-qcohwbu-zopcfohcfm-792[obcfu]
|
||||
ynukcajey-oywrajcan-dqjp-wjwhuoeo-680[jaowy]
|
||||
rflsjynh-jll-rfsfljrjsy-489[jlfrs]
|
||||
vkrhzxgbv-pxtihgbsxw-yehpxk-mktbgbgz-917[igtvy]
|
||||
hjgbwuladw-tskcwl-dgyaklauk-294[aklwd]
|
||||
cvabijtm-jcvvg-zmikycqaqbqwv-772[vcqab]
|
||||
odiih-yujbcrl-pajbb-vjwjpnvnwc-849[jbcin]
|
||||
tinnm-tzcksf-igsf-hsghwbu-220[bnamt]
|
||||
pbeebfvir-wryylorna-jbexfubc-637[egouk]
|
||||
xmtjbzidx-xviyt-yzqzgjkhzio-265[vxsry]
|
||||
avw-zljyla-zjhclunly-obua-klwhyatlua-201[sjayl]
|
||||
dfcxsqhwzs-qvcqczohs-fsgsofqv-246[dosrp]
|
||||
rzvkjiduzy-xviyt-xjvodib-kpmxcvndib-291[cwzla]
|
||||
gcfcnuls-aluxy-mwupyhayl-bohn-wihnuchgyhn-968[hnuyc]
|
||||
dyz-combod-lsyrkjkbnyec-bkllsd-domrxyvyqi-328[vtxzd]
|
||||
fruurvlyh-mhoobehdq-dftxlvlwlrq-907[jlves]
|
||||
mrxivrexmsrep-gerhc-gsexmrk-tyvglewmrk-152[wzuly]
|
||||
votubcmf-gmpxfs-pqfsbujpot-883[fpbmo]
|
||||
bljenwpna-qdwc-anbnjalq-329[lcwmy]
|
||||
xekdwvwnzkqo-ydkykhwpa-wjwhuoeo-550[toavy]
|
||||
yhkpvhjapcl-yhiipa-jbzavtly-zlycpjl-201[lpyah]
|
||||
xjinphzm-bmvyz-wvnfzo-nzmqdxzn-681[ykfxe]
|
||||
pbeebfvir-rtt-ybtvfgvpf-507[bftve]
|
||||
gvcskirmg-ikk-hizipstqirx-750[iyquj]
|
||||
yhwooebeaz-lhwopey-cnwoo-oanreyao-108[tmuag]
|
||||
wlqqp-jtrmvexvi-ylek-nfibjyfg-581[tnrhf]
|
||||
tfiifjzmv-avccpsvre-jyzggzex-477[mvnjr]
|
||||
xjmmjndqz-zbb-yzndbi-811[bzdjm]
|
||||
qjopwxha-xwogap-nayaerejc-160[isjqz]
|
||||
qzlozfhmf-azrjds-knfhrshbr-573[dfmys]
|
||||
vhglnfxk-zktwx-vetllbybxw-vtgwr-vhtmbgz-ybgtgvbgz-761[gbtvl]
|
||||
etaqigpke-ecpfa-eqcvkpi-cpcnauku-336[eyxtb]
|
||||
lqwhuqdwlrqdo-fdqgb-frdwlqj-zrunvkrs-933[tvijl]
|
||||
gvcskirmg-tvsnigxmpi-gerhc-gsexmrk-wlmttmrk-828[szawg]
|
||||
irdgrxzex-kfg-jvtivk-wcfnvi-jyzggzex-269[givxz]
|
||||
cqwdujys-sqdto-iqbui-270[siyeh]
|
||||
bnqqnrhud-bgnbnkzsd-trdq-sdrshmf-807[dnbqr]
|
||||
rgndvtcxr-hrpktcvtg-wjci-prfjxhxixdc-193[yjsht]
|
||||
qekrixmg-hci-xvemrmrk-282[mreik]
|
||||
xcitgcpixdcpa-snt-apqdgpidgn-349[mfywv]
|
||||
wkqxodsm-pvygob-wkbuodsxq-978[ysamp]
|
||||
aoubshwq-qvcqczohs-kcfygvcd-558[ytvls]
|
||||
tyepcyletzylw-qwzhpc-opalcexpye-301[gamdn]
|
||||
tfcfiwlc-treup-uvjzxe-607[nrthm]
|
||||
ubhatstkwhnl-lvtoxgzxk-angm-inkvatlbgz-865[tagkl]
|
||||
wihmogyl-aluxy-yaa-qilembij-890[emvct]
|
||||
bxaxipgn-vgpst-ltpedcxots-gpqqxi-hidgpvt-245[pgtxi]
|
||||
jfifqxov-doxab-mixpqfz-doxpp-obpbxoze-107[ghpyi]
|
||||
gvaaz-dpssptjwf-sbccju-fohjoffsjoh-675[pfzwa]
|
||||
gzefmnxq-eomhqzsqd-tgzf-efadmsq-378[qefmz]
|
||||
emixwvqhml-kivlg-zmkmqdqvo-876[dcfin]
|
||||
fodvvlilhg-fdqgb-frqwdlqphqw-725[qdflg]
|
||||
laffe-pkrrehkgt-rumoyzoiy-670[dyjut]
|
||||
egdytrixat-qphzti-tcvxcttgxcv-245[tcxgi]
|
||||
htqtwkzq-wfintfhynaj-xhfajsljw-mzsy-jslnsjjwnsl-645[eynzi]
|
||||
vrurcjah-pajmn-npp-mnyuxhvnwc-563[npach]
|
||||
ejpanjwpekjwh-acc-klanwpekjo-576[jaekp]
|
||||
kwvacumz-ozilm-kpwkwtibm-uizsmbqvo-876[mikwz]
|
||||
hjgbwuladw-xdgowj-esfsywewfl-866[byzdm]
|
||||
pbybeshy-wryylorna-npdhvfvgvba-351[stmxy]
|
||||
qjopwxha-ywjzu-hkceopeyo-654[tysoa]
|
||||
lhkhszqx-fqzcd-dff-vnqjrgno-417[fqdhn]
|
||||
rgllk-otaoaxmfq-fdmuzuzs-768[vkqac]
|
||||
ohmnuvfy-xsy-omyl-nymncha-214[hmtfs]
|
||||
enzcntvat-cynfgvp-tenff-nanylfvf-455[cuimh]
|
||||
sedikcuh-whqtu-sehheiylu-tou-bqrehqjeho-868[ydaux]
|
||||
tyepcyletzylw-ojp-opalcexpye-145[wciks]
|
||||
udpsdjlqj-hjj-frqwdlqphqw-309[gbpcz]
|
||||
eqpuwogt-itcfg-lgnnadgcp-vtckpkpi-388[gpcti]
|
||||
rkpqxyib-pzxsbkdbo-erkq-zrpqljbo-pbosfzb-133[bpkoq]
|
||||
kdijqrbu-sxesebqju-tufqhjcudj-114[tdbva]
|
||||
gsvvswmzi-wgezirkiv-lyrx-irkmriivmrk-412[twsrk]
|
||||
ucynmlgxcb-qaytclecp-fslr-amlryglkclr-704[lcrya]
|
||||
xst-wigvix-veffmx-wxsveki-100[ocvmr]
|
||||
surmhfwloh-vfdyhqjhu-kxqw-frqwdlqphqw-829[hqwfd]
|
||||
xmrrq-usfvq-esfsywewfl-528[alidm]
|
||||
zhdsrqlchg-lqwhuqdwlrqdo-sodvwlf-judvv-ghsorbphqw-777[rtnmj]
|
||||
egdytrixat-xcitgcpixdcpa-rwdrdapit-uxcpcrxcv-245[cdabn]
|
||||
yrwxefpi-ikk-gywxsqiv-wivzmgi-152[iwgkv]
|
||||
qcffcgwjs-foppwh-obozmgwg-558[zotsu]
|
||||
veqtekmrk-gerhc-gsexmrk-hitpscqirx-568[nczdq]
|
||||
gzefmnxq-pkq-pqbmdfyqzf-794[jxrmh]
|
||||
eadalsjq-yjsvw-usfvq-ugslafy-ugflsafewfl-632[fsalu]
|
||||
esyfwlau-usfvq-ugslafy-vwhdgqewfl-684[flsuw]
|
||||
ktfitzbgz-fbebmtkr-zktwx-utldxm-wxlbzg-683[afwhg]
|
||||
wihmogyl-aluxy-vohhs-uwkocmcncih-292[wzryd]
|
||||
bkzrrhehdc-idkkxadzm-lzmzfdldms-677[oxwvn]
|
||||
clxalrtyr-qwzhpc-lnbftdtetzy-249[zryvn]
|
||||
rgllk-fab-eqodqf-vqxxknqmz-pqbxakyqzf-222[qfkxa]
|
||||
xjinphzm-bmvyz-xviyt-mzxzdqdib-603[xnhfs]
|
||||
htsxzrjw-lwfij-hmthtqfyj-wjfhvznxnynts-385[zreuy]
|
||||
myvybpev-gokzyxsjon-oqq-nozvyiwoxd-692[iyzuj]
|
||||
hcd-gsqfsh-pogysh-gvwddwbu-480[mysuk]
|
||||
hcd-gsqfsh-foppwh-rsgwub-428[kvtfs]
|
||||
frqvxphu-judgh-exqqb-uhvhdufk-621[wtgmn]
|
||||
vhglnfxk-zktwx-vahvhetmx-vhgmtbgfxgm-345[hnamj]
|
||||
tagzsrsjvgmk-usfvq-ugslafy-ugflsafewfl-892[yckbv]
|
||||
joufsobujpobm-gmpxfs-vtfs-uftujoh-233[foujs]
|
||||
zsxyfgqj-ojqqdgjfs-zxjw-yjxynsl-593[jqsxy]
|
||||
bnknqetk-atmmx-qdzbpthrhshnm-131[ecnmt]
|
||||
hmsdqmzshnmzk-dff-sqzhmhmf-859[dnxcz]
|
||||
hqtyeqsjylu-tou-udwyduuhydw-348[uydhq]
|
||||
ktiaaqnqml-kpwkwtibm-zmikycqaqbqwv-772[tlrsg]
|
||||
nzydfxpc-rclop-mtzslklcozfd-mfyyj-nfdezxpc-dpcgtnp-951[cpdfz]
|
||||
ckgvutofkj-hatte-gtgreyoy-644[tgeko]
|
||||
iwcjapey-zua-paydjkhkcu-628[hntmg]
|
||||
bnknqetk-okzrshb-fqzrr-trdq-sdrshmf-729[tuzoy]
|
||||
qmpmxevc-kvehi-yrwxefpi-glsgspexi-wlmttmrk-828[hsyvf]
|
||||
amjmpdsj-njyqrga-epyqq-qcptgacq-106[bhysd]
|
||||
dwbcjkun-ljwmh-mnyuxhvnwc-641[wuyrz]
|
||||
gspsvjyp-jpsaiv-hiwmkr-854[zthel]
|
||||
gsrwyqiv-kvehi-gerhc-stivexmsrw-750[whgse]
|
||||
xjgjmapg-wpiit-ozxcijgjbt-889[ytsop]
|
||||
xgjougizobk-kmm-rghuxgzuxe-280[cwrty]
|
||||
zovldbkfz-oxjmxdfkd-oxyyfq-ixyloxqlov-653[snkwb]
|
||||
qczcftiz-qvcqczohs-gsfjwqsg-142[cqszf]
|
||||
krxqjijamxdb-mhn-ldbcxvna-bnaerln-771[ravbt]
|
||||
pybgmyargtc-bwc-bcqgel-860[bcgya]
|
||||
wyvqljapsl-jovjvshal-shivyhavyf-773[vahjl]
|
||||
pbafhzre-tenqr-onfxrg-bcrengvbaf-221[zyaro]
|
||||
glrcplyrgmlyj-bwc-pcqcypaf-132[clpyg]
|
||||
dpmpsgvm-dboez-dpbujoh-tfswjdft-545[bdmzf]
|
||||
dkqjcbctfqwu-rncuvke-itcuu-cpcnauku-700[cuknq]
|
||||
ajmrxjlcren-yujbcrl-pajbb-anbnjalq-459[yslvg]
|
||||
oazegyqd-sdmpq-bxmefuo-sdmee-fqotzaxask-586[vfmnu]
|
||||
ugdgjxmd-jsttal-ksdwk-632[hfjix]
|
||||
aietsrmdih-gvcskirmg-tpewxmg-kveww-vigimzmrk-412[kfcim]
|
||||
drxevkzt-jtrmvexvi-ylek-uvgcfpdvek-685[vekdr]
|
||||
excdklvo-bkllsd-nozvyiwoxd-250[dlokv]
|
||||
uwtojhynqj-hfsid-wjxjfwhm-281[fqsmx]
|
||||
plolwdub-judgh-udeelw-uhfhlylqj-205[ludhe]
|
||||
oqnidbshkd-dff-zmzkxrhr-729[cvlkx]
|
||||
bknsykmdsfo-tovvilokx-bomosfsxq-328[boqly]
|
||||
dpotvnfs-hsbef-qspkfdujmf-cvooz-tijqqjoh-961[zmnyi]
|
||||
gspsvjyp-fyrrc-gsrxemrqirx-490[rsgpx]
|
||||
gifavtkzcv-szfyrqriuflj-wcfnvi-uvmvcfgdvek-139[zadfj]
|
||||
gsrwyqiv-kvehi-wgezirkiv-lyrx-wxsveki-490[alpzb]
|
||||
ykhknbqh-ydkykhwpa-zalhkuiajp-862[khayp]
|
||||
dmybmsuzs-yuxufmdk-sdmpq-bxmefuo-sdmee-fqotzaxask-586[nwikx]
|
||||
nwzekwypera-bhksan-nayaerejc-940[xnmta]
|
||||
wrs-vhfuhw-hjj-zrunvkrs-283[hrjsu]
|
||||
ajyqqgdgcb-pyzzgr-amlryglkclr-782[lozts]
|
||||
ohmnuvfy-jfumncw-alumm-womnigyl-mylpcwy-110[mqrgd]
|
||||
foadouwbu-suu-obozmgwg-792[hgkuj]
|
||||
wdjcvuvmyjpn-ytz-yzkgjthzio-109[jyztv]
|
||||
ucynmlgxcb-pyzzgr-qfgnngle-210[iftry]
|
||||
ymszqfuo-omzpk-oamfuzs-pqhqxabyqzf-872[qzfmo]
|
||||
clotzlnetgp-ojp-opawzjxpye-769[pnhtz]
|
||||
mhi-lxvkxm-yehpxk-ftgtzxfxgm-657[etajx]
|
||||
surmhfwloh-fkrfrodwh-uhfhlylqj-699[rkslj]
|
||||
iruzfrtkzmv-tyftfcrkv-kirzezex-841[emztq]
|
||||
bdavqofuxq-nmewqf-ogefayqd-eqdhuoq-352[jpmyv]
|
||||
bdavqofuxq-otaoaxmfq-xasuefuoe-326[aofqu]
|
||||
gpsxdprixkt-tvv-ldgzhwde-219[dgptv]
|
||||
pbeebfvir-rtt-bcrengvbaf-897[enlaq]
|
||||
jchipqat-gpqqxi-bpgztixcv-375[cnqyt]
|
||||
glrcplyrgmlyj-qaytclecp-fslr-pcqcypaf-574[clpyr]
|
||||
pejji-oqq-vyqscdsmc-640[qcjsd]
|
||||
houngfgxjuay-yigbktmkx-natz-xkykgxin-774[mszcw]
|
||||
ltpedcxots-jchipqat-gpqqxi-bpcpvtbtci-219[isgfv]
|
||||
gifavtkzcv-tyftfcrkv-drerxvdvek-659[vbdyz]
|
||||
vjpwncrl-mhn-orwjwlrwp-641[wrjln]
|
||||
vjpwncrl-ouxfna-bcxajpn-511[ydzfw]
|
||||
rzvkjiduzy-xviyt-xjvodib-adivixdib-187[idvxb]
|
||||
tinnm-suu-twbobqwbu-272[datjf]
|
||||
apuut-xviyt-vxlpdndodji-941[zrtso]
|
||||
jxdkbqfz-zixppfcfba-mixpqfz-doxpp-jxohbqfkd-705[fpxbd]
|
||||
zilqwikbqdm-lgm-kwvbiqvumvb-876[bqpme]
|
||||
jyddc-wgezirkiv-lyrx-wxsveki-256[sjntv]
|
||||
ahngzyzqcntr-qzaahs-zbpthrhshnm-963[fzvai]
|
||||
ksodcbwnsr-qfmcusbwq-suu-qighcasf-gsfjwqs-350[wyezk]
|
||||
atyzghrk-igtje-iugzotm-jkyomt-462[ksuli]
|
||||
dwbcjkun-ajmrxjlcren-yujbcrl-pajbb-nwprwnnarwp-563[tjsqg]
|
||||
aoubshwq-dzoghwq-ufogg-aofyshwbu-896[hwcmz]
|
||||
apwmeclga-npmhcargjc-njyqrga-epyqq-rpyglgle-340[dgtsc]
|
||||
apwmeclga-aylbw-amyrgle-dglylagle-210[iumzy]
|
||||
ydjuhdqjyedqb-rkddo-sedjqydcudj-738[ycbmx]
|
||||
iuxxuyobk-xgjougizobk-pkrrehkgt-sgtgmksktz-644[pzsmw]
|
||||
bnmrtldq-fqzcd-bgnbnkzsd-vnqjrgno-521[nbdqg]
|
||||
wfruflnsl-gzssd-wjhjnansl-177[wtmsg]
|
||||
yhwooebeaz-ywjzu-klanwpekjo-680[eowaj]
|
||||
pynffvsvrq-cynfgvp-tenff-ernpdhvfvgvba-663[vbduy]
|
||||
zilqwikbqdm-ntwemz-uizsmbqvo-356[yhenq]
|
||||
jvsvymbs-zjhclunly-obua-jvuahputlua-721[uajlv]
|
||||
fhezusjybu-rqiauj-tufbeocudj-400[ecamb]
|
||||
ftzgxmbv-wrx-xgzbgxxkbgz-293[xgbzf]
|
||||
chnylhuncihuf-xsy-xypyfijgyhn-578[jigcy]
|
||||
vhkkhlbox-pxtihgbsxw-cxeeruxtg-wxlbzg-111[hsuty]
|
||||
foadouwbu-tzcksf-gozsg-246[ofgsu]
|
||||
xzwrmkbqtm-moo-nqvivkqvo-434[moqvk]
|
||||
gvaaz-cvooz-dpoubjonfou-415[mcnzb]
|
||||
pbafhzre-tenqr-enoovg-grpuabybtl-169[bktjl]
|
||||
uwtojhynqj-gzssd-ywfnsnsl-723[phguv]
|
||||
dlhwvupglk-zjhclunly-obua-klwhyatlua-227[luahk]
|
||||
vhkkhlbox-vhehkyne-vahvhetmx-ybgtgvbgz-215[hvbeg]
|
||||
qlm-pbzobq-gbiivybxk-lmboxqflkp-809[blqik]
|
||||
forwcoqhwjs-qvcqczohs-ghcfous-792[mtuqn]
|
||||
eqpuwogt-itcfg-dwppa-fgrnqaogpv-570[gpafo]
|
||||
lxuxaodu-bljenwpna-qdwc-jwjuhbrb-121[rbqfd]
|
||||
ykhknbqh-xqjju-oanreyao-680[ahjkn]
|
||||
ugfkmewj-yjsvw-hdsklau-yjskk-kzahhafy-918[kahjs]
|
||||
gbc-frperg-fpniratre-uhag-fnyrf-897[dskta]
|
||||
myxcewob-qbkno-lexxi-wkxkqowoxd-770[spdoc]
|
||||
cqwdujys-fbqijys-whqii-huiuqhsx-998[uhebs]
|
||||
ckgvutofkj-igtje-iugzotm-rghuxgzuxe-774[gutei]
|
||||
excdklvo-lexxi-psxkxmsxq-302[ypsmx]
|
||||
mbiyqoxsm-dyz-combod-mkxni-mykdsxq-zebmrkcsxq-692[fnhpz]
|
||||
zlkprjbo-doxab-gbiivybxk-xkxivpfp-809[ydtxn]
|
||||
wdjcvuvmyjpn-ezggtwzvi-hvmfzodib-603[vzdgi]
|
||||
njmjubsz-hsbef-fhh-bobmztjt-649[mxkjw]
|
||||
wsvsdkbi-qbkno-oqq-ecob-docdsxq-796[rglok]
|
||||
htsxzrjw-lwfij-gfxpjy-fsfqdxnx-307[uyteb]
|
||||
wpuvcdng-ejqeqncvg-yqtmujqr-882[svamn]
|
||||
tagzsrsjvgmk-hdsklau-yjskk-ugflsafewfl-606[tysrn]
|
||||
kwtwznct-akidmvomz-pcvb-zmamizkp-200[skpom]
|
||||
dpmpsgvm-dboez-dpbujoh-fohjoffsjoh-311[fknst]
|
||||
rnqnyfwd-lwfij-hmthtqfyj-xytwflj-567[gzkol]
|
||||
zntargvp-pnaql-hfre-grfgvat-923[yijbm]
|
||||
dzczkrip-xiruv-treup-tfrkzex-drerxvdvek-347[vrmsu]
|
||||
ajyqqgdgcb-afmamjyrc-sqcp-rcqrgle-522[cqagr]
|
||||
pelbtravp-ohaal-erprvivat-715[jnbmz]
|
||||
irdgrxzex-sleep-ivrthlzjzkzfe-113[bmsnw]
|
||||
eqpuwogt-itcfg-tcddkv-fgxgnqrogpv-804[gtcdf]
|
||||
cvabijtm-moo-ivitgaqa-226[darfu]
|
||||
ytu-xjhwjy-xhfajsljw-mzsy-zxjw-yjxynsl-281[wzjeb]
|
||||
fkqbokxqflkxi-yxphbq-obxznrfpfqflk-809[dcasb]
|
||||
gokzyxsjon-sxdobxkdsyxkv-mkxni-ecob-docdsxq-276[zypso]
|
||||
ibghopzs-suu-kcfygvcd-402[cgsub]
|
||||
tfiifjzmv-srjbvk-uvjzxe-581[sovtj]
|
||||
gntmfefwitzx-gfxpjy-xmnuunsl-619[fnxgm]
|
||||
lgh-kwujwl-bwddqtwsf-vwhsjlewfl-788[tlejf]
|
||||
hjgbwuladw-wyy-ghwjslagfk-164[wgahj]
|
||||
nzwzcqfw-ojp-qtylyntyr-431[ynqtw]
|
||||
sbejpbdujwf-sbccju-vtfs-uftujoh-909[kujit]
|
||||
vhkkhlbox-wrx-ftkdxmbgz-241[uwzex]
|
||||
lahxpnwrl-bljenwpna-qdwc-cajrwrwp-381[yjzno]
|
||||
lugjuacha-jfumncw-alumm-jolwbumcha-838[uamcj]
|
||||
gvcskirmg-glsgspexi-jmrergmrk-828[smeyi]
|
||||
thnulapj-ihzrla-thyrlapun-955[ahlnp]
|
||||
sno-rdbqds-bzmcx-btrsnldq-rdquhbd-937[dbqrs]
|
||||
vdzonmhydc-eknvdq-dmfhmddqhmf-781[dmhfn]
|
||||
iehepwnu-cnwza-xqjju-ykjpwejiajp-368[jepwa]
|
||||
dfcxsqhwzs-dzoghwq-ufogg-cdsfohwcbg-974[gcdfh]
|
||||
sbqiiyvyut-tou-jhqydydw-608[okbzs]
|
||||
htsxzrjw-lwfij-gzssd-uzwhmfxnsl-801[nmtjq]
|
||||
hvbizodx-rzvkjiduzy-xviyt-yzqzgjkhzio-213[zivyd]
|
||||
ajmrxjlcren-ljwmh-lxjcrwp-bqryyrwp-745[kheat]
|
||||
vkppo-shoewudys-tou-udwyduuhydw-556[udowy]
|
||||
dpotvnfs-hsbef-dmbttjgjfe-gmpxfs-nbslfujoh-363[qapli]
|
||||
glrcplyrgmlyj-djmucp-qrmpyec-158[clmpr]
|
||||
emixwvqhml-xtiabqk-oziaa-wxmzibqwva-642[rkpba]
|
||||
qczcftiz-dzoghwq-ufogg-aofyshwbu-298[lmcuy]
|
||||
cvabijtm-zilqwikbqdm-akidmvomz-pcvb-nqvivkqvo-746[ynxzo]
|
||||
pkl-oaynap-acc-wjwhuoeo-134[jxlai]
|
||||
xjmmjndqz-kgvnodx-bmvnn-rjmfncjk-291[njmdk]
|
||||
ejpanjwpekjwh-nwxxep-nayaerejc-550[lisvd]
|
||||
htwwtxnaj-htsxzrjw-lwfij-hfsid-htfynsl-wjfhvznxnynts-541[hntwf]
|
||||
mbiyqoxsm-mkxni-mykdsxq-crszzsxq-770[zhowm]
|
||||
rmn-qcapcr-ucynmlgxcb-cee-pcqcypaf-886[cpaem]
|
||||
rtqlgevkng-ejqeqncvg-fgxgnqrogpv-466[zktns]
|
||||
fydelmwp-mfyyj-nfdezxpc-dpcgtnp-769[anfej]
|
||||
yuxufmdk-sdmpq-otaoaxmfq-pqbxakyqzf-742[ohxti]
|
||||
vxupkizork-igtje-xkgiwaoyozout-592[bmwjf]
|
||||
veqtekmrk-tvsnigxmpi-gerhc-gsexmrk-gywxsqiv-wivzmgi-802[dglps]
|
||||
nsyjwsfyntsfq-uqfxynh-lwfxx-ijuqtdrjsy-931[ymnhu]
|
||||
gifavtkzcv-avccpsvre-fgvirkzfej-841[ypigz]
|
||||
krxqjijamxdb-kdwwh-mnyjacvnwc-641[krnma]
|
||||
dszphfojd-ezf-sftfbsdi-805[fdszb]
|
||||
xmrrq-tmffq-lwuzfgdgyq-372[fqgmr]
|
||||
tagzsrsjvgmk-xdgowj-vwhsjlewfl-788[gjswl]
|
||||
lsyrkjkbnyec-mkxni-nofovyzwoxd-614[knoyx]
|
||||
dwbcjkun-mhn-bjunb-173[mykra]
|
||||
vhehkyne-vtgwr-nlxk-mxlmbgz-319[eghkl]
|
||||
bkzrrhehdc-bnqqnrhud-bzmcx-bnzshmf-otqbgzrhmf-677[xaszn]
|
||||
oxmeeuruqp-bxmefuo-sdmee-abqdmfuaze-248[udtec]
|
||||
jlidywncfy-mwupyhayl-bohn-uhufsmcm-500[yhmuc]
|
||||
xjmmjndqz-zbb-mzvxlpdndodji-239[djmzb]
|
||||
yuxufmdk-sdmpq-omzpk-qzsuzqqduzs-534[ofrpg]
|
||||
tfejldvi-xiruv-vxx-uvgrikdvek-659[cnesm]
|
||||
yaxsnlcrun-ajkkrc-anbnjalq-979[nmivs]
|
||||
tvsnigxmpi-ikk-wivzmgiw-880[agunv]
|
||||
mrxivrexmsrep-tpewxmg-kveww-viwievgl-698[evwim]
|
||||
nglmtuex-yehpxk-labiibgz-241[begil]
|
||||
zuv-ykixkz-ixeumktoi-igtje-iugzotm-aykx-zkyzotm-670[pjybl]
|
||||
forwcoqhwjs-dzoghwq-ufogg-difqvogwbu-272[xkwoz]
|
||||
ajyqqgdgcb-qaytclecp-fslr-bcqgel-886[mkvsi]
|
||||
myxcewob-qbkno-mkxni-mykdsxq-wkbuodsxq-770[zmijb]
|
||||
uwtojhynqj-kqtbjw-yjhmstqtld-333[jtqhw]
|
||||
wsvsdkbi-qbkno-lkcuod-dbksxsxq-406[biaoe]
|
||||
gpbepvxcv-rpcsn-rdpixcv-advxhixrh-895[dcwgp]
|
||||
muqfedyput-isqludwuh-xkdj-mehaixef-712[betdq]
|
||||
ckgvutofkj-inuiurgzk-xkgiwaoyozout-956[sazyo]
|
||||
wfruflnsl-uqfxynh-lwfxx-btwpxmtu-541[fxluw]
|
||||
qfmcusbwq-rms-igsf-hsghwbu-246[sbfgh]
|
||||
ynukcajey-nwxxep-qoan-paopejc-602[htmbv]
|
||||
ujqgywfau-uzgugdslw-jwkwsjuz-138[newms]
|
||||
yflexwxoalrp-zxkav-cfkxkzfkd-705[ctnsy]
|
||||
vjpwncrl-lqxlxujcn-mnyuxhvnwc-953[nawmz]
|
||||
willimcpy-wuhxs-lyuwkocmcncih-786[cilwh]
|
||||
mtzslklcozfd-clmmte-cpnptgtyr-119[tjkgv]
|
||||
xlrypetn-awldetn-rcldd-cplnbftdtetzy-795[tdlen]
|
||||
vkppo-rqiauj-huqsgkyiyjyed-452[yijkp]
|
||||
vxupkizork-lruckx-jkbkruvsktz-124[eumyz]
|
||||
diozmivodjivg-agjrzm-nzmqdxzn-915[otpfl]
|
||||
owshgfarwv-hdsklau-yjskk-klgjsyw-918[qcjim]
|
||||
zuv-ykixkz-igtje-iugzotm-zkinturume-202[plvqf]
|
||||
zlilocri-oxyyfq-bkdfkbbofkd-835[bswmn]
|
||||
ziuxioqvo-lgm-amzdqkma-798[maioq]
|
||||
xqvwdeoh-sodvwlf-judvv-ghyhorsphqw-517[hvdow]
|
||||
ovbunmneqbhf-enqvbnpgvir-onfxrg-qrfvta-507[nvbfq]
|
||||
gbc-frperg-pnaql-genvavat-351[pmzkq]
|
||||
eadalsjq-yjsvw-jsttal-suimakalagf-580[zjghy]
|
||||
rdadguja-rpcsn-rdpixcv-apqdgpidgn-245[dpagr]
|
||||
tbxmlkfwba-pzxsbkdbo-erkq-abpfdk-523[vifrq]
|
||||
ocipgvke-uecxgpigt-jwpv-ugtxkegu-544[abfsh]
|
||||
ovbunmneqbhf-zvyvgnel-tenqr-wryylorna-ybtvfgvpf-481[hxymg]
|
||||
pinovwgz-xjinphzm-bmvyz-agjrzm-ozxcijgjbt-681[cqlnu]
|
||||
tinnm-qobrm-ghcfous-220[hyczt]
|
||||
iuruxlar-yigbktmkx-natz-ykxboiky-748[kixya]
|
||||
bkzrrhehdc-bzmcx-bnzshmf-cdrhfm-209[hbcmr]
|
||||
gpsxdprixkt-tvv-uxcpcrxcv-973[xcpvr]
|
||||
forwcoqhwjs-rms-hfowbwbu-974[stzrm]
|
||||
zovldbkfz-fkqbokxqflkxi-mixpqfz-doxpp-cfkxkzfkd-705[tsmfo]
|
||||
vetllbybxw-lvtoxgzxk-angm-ftgtzxfxgm-371[sbemy]
|
||||
hwbba-ejqeqncvg-tgugctej-232[iyrqv]
|
||||
vqr-ugetgv-lgnnadgcp-wugt-vguvkpi-596[gvunp]
|
||||
xgvnndadzy-wpiit-yzndbi-343[rawyd]
|
||||
jxdkbqfz-oxyyfq-qbzeklildv-107[qbdfk]
|
||||
wlsiayhcw-luvvcn-mufym-656[jbvne]
|
||||
surmhfwloh-fdqgb-ghvljq-621[ymnve]
|
||||
mvkccspson-bkllsd-vklybkdybi-432[yscux]
|
||||
dszphfojd-sbccju-dvtupnfs-tfswjdf-129[itbfs]
|
||||
lsyrkjkbnyec-lexxi-crszzsxq-978[sxcek]
|
||||
qlm-pbzobq-mixpqfz-doxpp-zlkqxfkjbkq-211[satyb]
|
||||
bknsykmdsfo-nio-kmaescsdsyx-744[tspif]
|
||||
bpvctixr-rpcsn-rjhidbtg-htgkxrt-713[rtbcg]
|
||||
sebehvkb-rqiauj-udwyduuhydw-140[udbeh]
|
||||
zhdsrqlchg-fdqgb-hqjlqhhulqj-387[zptrs]
|
||||
qxdwpopgsdjh-rpcsn-sthxvc-635[nbixj]
|
||||
pualyuhapvuhs-msvdly-klzpnu-721[ulpah]
|
||||
sbqiiyvyut-shoewudys-isqludwuh-xkdj-jhqydydw-894[dysuh]
|
||||
wsvsdkbi-qbkno-lexxi-dbksxsxq-614[onzwh]
|
||||
ydjuhdqjyedqb-rqiauj-efuhqjyedi-894[ocdpe]
|
||||
kwzzwaqdm-ntwemz-wxmzibqwva-434[nwzml]
|
||||
qspkfdujmf-fhh-nbobhfnfou-571[zpyau]
|
||||
bxaxipgn-vgpst-tvv-detgpixdch-583[xwiac]
|
||||
qfmcusbwq-dfcxsqhwzs-xszzmpsob-fsqswjwbu-402[lstrx]
|
||||
dpmpsgvm-dboez-sfdfjwjoh-337[dfjmo]
|
||||
dzoghwq-ufogg-fsgsofqv-636[gfoqs]
|
||||
nzwzcqfw-dnlgpyrpc-sfye-qtylyntyr-509[milhd]
|
||||
xgsvgmotm-pkrrehkgt-vaxingyotm-176[jubcm]
|
||||
xgsvgmotm-jek-cuxqynuv-644[soxwn]
|
||||
cxy-bnlanc-lahxpnwrl-kdwwh-fxatbqxy-485[zamhj]
|
||||
irgyyolokj-inuiurgzk-sgtgmksktz-982[vzkrq]
|
||||
xgvnndadzy-xcjxjgvoz-xjiovdihzio-733[ozhyu]
|
||||
gvcskirmg-nippcfier-xiglrspskc-334[bastq]
|
||||
zlilocri-gbiivybxk-obxznrfpfqflk-367[ntyda]
|
||||
pyknyegle-pyzzgr-pcqcypaf-886[nxvzy]
|
||||
zhdsrqlchg-gbh-frqwdlqphqw-361[nqzts]
|
||||
kyelcrga-cee-yaosgqgrgml-808[izdqr]
|
||||
hplazytkpo-prr-cpnptgtyr-379[prtya]
|
||||
337
py/2016/04/input.txt.decrypted
Normal file
337
py/2016/04/input.txt.decrypted
Normal file
|
|
@ -0,0 +1,337 @@
|
|||
rampaging projectile rabbit training-837[dmvbi]
|
||||
consumer grade flower acquisition-171[cptzd]
|
||||
colorful bunny purchasing-813[gnehk]
|
||||
unstable basket customer service-271[thigj]
|
||||
radioactive plastic grass workshop-318[mucil]
|
||||
international chocolate receiving-295[evzfk]
|
||||
rampaging dye user testing-143[rtaef]
|
||||
classified rabbit development-224[oscdk]
|
||||
weaponized dye shipping-190[ahwfv]
|
||||
cryogenic rabbit technology-886[amceg]
|
||||
unstable flower workshop-940[kahno]
|
||||
corrosive flower training-391[qhndm]
|
||||
classified candy storage-428[goqrs]
|
||||
magnetic bunny analysis-926[xkcis]
|
||||
unstable flower training-711[ecikr]
|
||||
corrosive scavenger hunt analysis-384[ygktx]
|
||||
classified candy coating department-168[obhqr]
|
||||
cryogenic candy storage-325[pabel]
|
||||
projectile scavenger hunt engineering-122[mvoqz]
|
||||
magnetic military grade egg storage-229[lfjnw]
|
||||
fuzzy cryogenic basket laboratory-500[ilsun]
|
||||
fuzzy plastic grass user testing-147[bcadi]
|
||||
unstable flower design-745[nbuwa]
|
||||
international rabbit customer service-480[fhswb]
|
||||
military grade biohazardous candy technology-451[rfipu]
|
||||
fuzzy basket user testing-341[bpqrw]
|
||||
unstable dye research-637[refna]
|
||||
classified dye storage-621[hvdgl]
|
||||
consumer grade chocolate training-458[bkmox]
|
||||
magnetic jellybean development-697[jqsfr]
|
||||
projectile candy coating containment-952[xdmko]
|
||||
top secret projectile plastic grass research-582[uhijs]
|
||||
colorful bunny department-148[vbcmt]
|
||||
rampaging military grade candy coating operations-822[ksbqx]
|
||||
biohazardous jellybean development-385[jfqtg]
|
||||
top secret jellybean research-823[nabcj]
|
||||
cryogenic bunny research-374[dhsuo]
|
||||
magnetic plastic grass management-714[oabgh]
|
||||
military grade chocolate purchasing-805[bdjsf]
|
||||
top secret chocolate marketing-396[nyiwl]
|
||||
fuzzy candy research-927[ahijl]
|
||||
weaponized jellybean shipping-216[wafhd]
|
||||
rampaging scavenger hunt reacquisition-616[iqvmo]
|
||||
military grade flower marketing-323[gptxa]
|
||||
biohazardous plastic grass training-448[ucmla]
|
||||
classified rabbit operations-930[ogyhk]
|
||||
magnetic candy coating workshop-782[almye]
|
||||
international scavenger hunt marketing-422[hnuyc]
|
||||
projectile scavenger hunt acquisition-916[cyhnw]
|
||||
fuzzy scavenger hunt acquisition-684[afmkl]
|
||||
rampaging chocolate design-116[oubcq]
|
||||
unstable basket marketing-291[ovzfi]
|
||||
magnetic consumer grade basket user testing-828[iwxek]
|
||||
biohazardous plastic grass customer service-928[aizkm]
|
||||
unstable weaponized chocolate receiving-562[okmsx]
|
||||
consumer grade rabbit receiving-563[anrjk]
|
||||
fuzzy flower receiving-433[naior]
|
||||
colorful basket storage-829[rdhou]
|
||||
top secret basket financing-266[hnycm]
|
||||
international egg laboratory-330[ibvwz]
|
||||
corrosive basket user testing-441[ftsuj]
|
||||
rampaging jellybean sales-775[fjqls]
|
||||
international plastic grass sales-272[gobhw]
|
||||
consumer grade scavenger hunt training-218[dhuqw]
|
||||
magnetic flower workshop-177[tbjwf]
|
||||
top secret candy deployment-373[vkefg]
|
||||
cryogenic basket financing-886[lagce]
|
||||
biohazardous dye design-954[laimq]
|
||||
corrosive rabbit sales-246[fgcop]
|
||||
cryogenic scavenger hunt design-287[dmbfh]
|
||||
cryogenic rabbit workshop-662[cfpqw]
|
||||
rampaging scavenger hunt acquisition-464[emrkg]
|
||||
radioactive bunny purchasing-569[dlqfu]
|
||||
magnetic plastic grass logistics-673[vldfj]
|
||||
biohazardous jellybean engineering-524[ajewc]
|
||||
weaponized chocolate department-228[kguzi]
|
||||
international plastic grass containment-640[xdksc]
|
||||
rampaging classified plastic grass acquisition-365[hrzbf]
|
||||
international dye purchasing-482[zmudf]
|
||||
weaponized rampaging bunny receiving-354[xoskq]
|
||||
consumer grade weaponized rabbit user testing-456[qdefm]
|
||||
unstable chocolate acquisition-697[fhnty]
|
||||
weaponized egg containment-557[ctdip]
|
||||
unstable flower sales-756[cjqyd]
|
||||
cryogenic basket management-817[tcpbi]
|
||||
consumer grade flower customer service-826[kxiuy]
|
||||
military grade fuzzy candy user testing-552[clnsu]
|
||||
weaponized egg logistics-751[hjlrv]
|
||||
rampaging chocolate logistics-405[lnrtz]
|
||||
magnetic scavenger hunt laboratory-722[gktxz]
|
||||
rampaging rabbit technology-946[qwdeh]
|
||||
consumer grade rampaging chocolate research-773[hlyjn]
|
||||
fuzzy basket analysis-653[pxvwb]
|
||||
classified egg services-534[equos]
|
||||
biohazardous cryogenic rabbit research-687[gpdqr]
|
||||
weaponized jellybean containment-958[iremp]
|
||||
fuzzy bunny deployment-138[fqmrw]
|
||||
magnetic chocolate research-210[acyfm]
|
||||
consumer grade candy engineering-484[oxbqk]
|
||||
unstable flower storage-888[ahkno]
|
||||
international basket analysis-509[lydet]
|
||||
magnetic plastic grass workshop-241[ltbhi]
|
||||
weaponized candy storage-590[imlvw]
|
||||
biohazardous plastic grass technology-340[mqyae]
|
||||
projectile dye laboratory-864[ilyfn]
|
||||
consumer grade basket research-815[vijrt]
|
||||
top secret scavenger hunt technology-410[kzitu]
|
||||
cryogenic dye deployment-674[gaefp]
|
||||
fuzzy candy coating reacquisition-729[hbmzn]
|
||||
fuzzy weaponized basket user testing-465[hcvwd]
|
||||
cryogenic plastic grass management-725[dfhjq]
|
||||
cryogenic jellybean customer service-608[ushbd]
|
||||
consumer grade candy user testing-679[bkopa]
|
||||
consumer grade chocolate department-248[qadfm]
|
||||
unstable candy coating reacquisition-552[chunw]
|
||||
cryogenic rabbit financing-298[bwqfo]
|
||||
cryogenic scavenger hunt laboratory-103[sbdfo]
|
||||
international chocolate purchasing-846[mzafo]
|
||||
weaponized candy department-361[hdgqs]
|
||||
corrosive candy shipping-830[kepqr]
|
||||
cryogenic colorful candy coating operations-900[ymxbk]
|
||||
fuzzy dye sales-162[mstyf]
|
||||
classified magnetic plastic grass management-115[phtxb]
|
||||
corrosive plastic grass reacquisition-680[eonkw]
|
||||
unstable bunny workshop-638[zaegn]
|
||||
corrosive unstable chocolate shipping-243[fjtvz]
|
||||
cryogenic chocolate analysis-894[seqbd]
|
||||
magnetic classified candy operations-747[hpjlu]
|
||||
rampaging plastic grass containment-150[gtmoy]
|
||||
fuzzy scavenger hunt design-696[ktafm]
|
||||
unstable flower logistics-954[atbmq]
|
||||
colorful jellybean department-556[budeh]
|
||||
international candy design-621[qdlgh]
|
||||
radioactive projectile plastic grass development-239[zdovg]
|
||||
international basket laboratory-472[wpjkn]
|
||||
radioactive magnetic bunny management-967[ivzdh]
|
||||
projectile plastic grass analysis-965[pxfib]
|
||||
cryogenic jellybean sales-704[cjalq]
|
||||
unstable corrosive scavenger hunt analysis-830[ucgpt]
|
||||
military grade jellybean training-940[ewahj]
|
||||
corrosive chocolate reacquisition-335[rflhu]
|
||||
colorful bunny laboratory-978[ybvei]
|
||||
biohazardous dye department-606[svwgj]
|
||||
projectile bunny technology-250[oxydi]
|
||||
fuzzy rabbit development-821[pekma]
|
||||
top secret candy coating research-968[wylnu]
|
||||
rampaging jellybean technology-987[bfhmo]
|
||||
projectile plastic grass technology-152[gipsw]
|
||||
international basket customer service-129[fubjo]
|
||||
international scavenger hunt deployment-225[wncja]
|
||||
radioactive plastic grass sales-989[rzhbd]
|
||||
classified basket development-896[sghor]
|
||||
magnetic basket storage-224[dkocq]
|
||||
rampaging egg storage-542[keivm]
|
||||
fuzzy unstable dye management-506[sboah]
|
||||
rampaging dye storage-300[msdqa]
|
||||
biohazardous rabbit user testing-481[efgno]
|
||||
classified fuzzy plastic grass receiving-957[nxfhj]
|
||||
classified plastic grass customer service-353[dnptc]
|
||||
cryogenic rabbit services-443[bdhqa]
|
||||
biohazardous dye user testing-613[dpcef]
|
||||
top secret bunny research-351[reafg]
|
||||
colorful basket customer service-892[wgjku]
|
||||
cryogenic rabbit laboratory-296[heqrj]
|
||||
radioactive candy management-902[imvbk]
|
||||
northpole object storage-984[sixve]
|
||||
projectile dye user testing-387[hwluv]
|
||||
military grade scavenger hunt management-596[cgpio]
|
||||
classified dye design-471[abfpc]
|
||||
colorful basket analysis-147[bjuxa]
|
||||
cryogenic dye workshop-440[qaegt]
|
||||
cryogenic basket marketing-590[mbiko]
|
||||
colorful egg deployment-644[kruma]
|
||||
projectile candy coating engineering-630[hycaw]
|
||||
colorful rabbit services-509[cdmnp]
|
||||
projectile candy coating operations-665[zelnp]
|
||||
radioactive basket development-611[rgnbi]
|
||||
projectile flower analysis-159[biflo]
|
||||
military grade chocolate development-517[hdorw]
|
||||
top secret basket containment-698[xireg]
|
||||
fuzzy flower engineering-647[hqcij]
|
||||
fuzzy flower operations-915[jamuz]
|
||||
rampaging basket storage-530[qwhij]
|
||||
biohazardous dye financing-723[fnsit]
|
||||
international candy coating laboratory-259[bopuj]
|
||||
magnetic egg containment-847[yeprl]
|
||||
unstable scavenger hunt financing-184[lcyae]
|
||||
fuzzy plastic grass containment-410[gtyzf]
|
||||
projectile chocolate deployment-641[nxclu]
|
||||
unstable candy coating financing-684[fsaul]
|
||||
weaponized plastic grass sales-313[rzdhk]
|
||||
weaponized scavenger hunt analysis-836[ajwoe]
|
||||
unstable rabbit analysis-248[menfu]
|
||||
weaponized military grade rabbit research-670[gkxoh]
|
||||
projectile candy deployment-204[icghp]
|
||||
rampaging military grade plastic grass research-847[lcdrt]
|
||||
biohazardous candy coating development-340[mybcl]
|
||||
military grade magnetic rabbit sales-931[fnjwy]
|
||||
weaponized bunny purchasing-827[sfjnu]
|
||||
top secret unstable flower operations-733[zjomn]
|
||||
cryogenic dye department-122[mbgkl]
|
||||
magnetic flower shipping-118[ubqsz]
|
||||
weaponized basket marketing-989[dzhjm]
|
||||
unstable bunny training-654[jepqw]
|
||||
unstable military grade plastic grass development-928[imabt]
|
||||
radioactive jellybean research-765[tpgar]
|
||||
unstable chocolate technology-174[wbkmt]
|
||||
colorful candy storage-275[zclnw]
|
||||
military grade chocolate containment-828[exgim]
|
||||
weaponized candy workshop-793[bacjn]
|
||||
unstable egg research-266[yalmu]
|
||||
colorful projectile plastic grass engineering-613[pctwd]
|
||||
top secret scavenger hunt purchasing-752[geptu]
|
||||
colorful jellybean management-421[gzivh]
|
||||
weaponized chocolate sales-440[gcqen]
|
||||
corrosive dye engineering-399[veizf]
|
||||
rampaging candy coating laboratory-792[obcfu]
|
||||
cryogenic scavenger hunt analysis-680[jaowy]
|
||||
magnetic egg management-489[jlfrs]
|
||||
projectile basket logistics-294[aklwd]
|
||||
unstable bunny reacquisition-772[vcqab]
|
||||
fuzzy plastic grass management-849[jbcin]
|
||||
military grade scavenger hunt containment-968[hnuyc]
|
||||
unstable flower operations-883[fpbmo]
|
||||
radioactive rabbit customer service-201[lpyah]
|
||||
corrosive egg logistics-507[bftve]
|
||||
corrosive egg design-811[bzdjm]
|
||||
consumer grade classified candy coating financing-761[gbtvl]
|
||||
rampaging top secret flower shipping-269[givxz]
|
||||
corrosive chocolate user testing-807[dnbqr]
|
||||
magnetic dye training-282[mreik]
|
||||
biohazardous scavenger hunt purchasing-865[tagkl]
|
||||
military grade weaponized rabbit storage-245[pgtxi]
|
||||
unstable scavenger hunt storage-378[qefmz]
|
||||
classified candy containment-725[qdflg]
|
||||
projectile basket engineering-245[tcxgi]
|
||||
military grade egg deployment-563[npach]
|
||||
international egg operations-576[jaekp]
|
||||
consumer grade chocolate marketing-876[mikwz]
|
||||
military grade egg workshop-417[fqdhn]
|
||||
consumer grade jellybean training-388[gpcti]
|
||||
unstable scavenger hunt customer service-133[bpkoq]
|
||||
weaponized scavenger hunt containment-704[lcrya]
|
||||
projectile scavenger hunt containment-829[hqwfd]
|
||||
unstable egg customer service-152[iwgkv]
|
||||
military grade candy coating containment-632[fsalu]
|
||||
magnetic candy coating deployment-684[flsuw]
|
||||
fuzzy top secret jellybean deployment-222[qfkxa]
|
||||
international flower user testing-233[foujs]
|
||||
unstable jellybean user testing-593[jqsxy]
|
||||
radioactive dye engineering-348[uydhq]
|
||||
consumer grade biohazardous bunny customer service-951[cpdfz]
|
||||
weaponized bunny analysis-644[tgeko]
|
||||
colorful chocolate services-142[cqszf]
|
||||
radioactive dye design-860[bcgya]
|
||||
projectile chocolate laboratory-773[vahjl]
|
||||
international dye research-132[clpyg]
|
||||
biohazardous plastic grass analysis-700[cuknq]
|
||||
magnetic scavenger hunt deployment-685[vekdr]
|
||||
unstable rabbit deployment-250[dlokv]
|
||||
military grade rabbit receiving-205[ludhe]
|
||||
colorful bunny containment-490[rsgpx]
|
||||
colorful chocolate deployment-862[khayp]
|
||||
top secret egg workshop-283[hrjsu]
|
||||
biohazardous dye deployment-109[jyztv]
|
||||
magnetic candy coating development-872[qzfmo]
|
||||
projectile chocolate logistics-326[aofqu]
|
||||
radioactive egg workshop-219[dgptv]
|
||||
international scavenger hunt research-574[clpyr]
|
||||
fuzzy egg logistics-640[qcjsd]
|
||||
magnetic dye financing-641[wrjln]
|
||||
weaponized candy coating financing-187[idvxb]
|
||||
magnetic classified plastic grass marketing-705[fpxbd]
|
||||
consumer grade chocolate workshop-521[nbdqg]
|
||||
classified candy operations-680[eowaj]
|
||||
colorful scavenger hunt containment-721[uajlv]
|
||||
magnetic dye engineering-293[xgbzf]
|
||||
rampaging flower sales-246[ofgsu]
|
||||
projectile egg financing-434[moqvk]
|
||||
weaponized scavenger hunt department-227[luahk]
|
||||
corrosive colorful chocolate financing-215[hvbeg]
|
||||
top secret jellybean operations-809[blqik]
|
||||
consumer grade bunny deployment-570[gpafo]
|
||||
colorful bunny services-680[ahjkn]
|
||||
consumer grade plastic grass shipping-918[kahjs]
|
||||
weaponized candy coating laboratory-774[gutei]
|
||||
biohazardous jellybean marketing-603[vzdgi]
|
||||
classified chocolate user testing-522[cqagr]
|
||||
consumer grade rabbit development-804[gtcdf]
|
||||
unstable egg workshop-402[cgsub]
|
||||
biohazardous basket shipping-619[fnxgm]
|
||||
projectile egg operations-164[wgahj]
|
||||
colorful dye financing-431[ynqtw]
|
||||
rampaging plastic grass purchasing-838[uamcj]
|
||||
magnetic basket marketing-955[ahlnp]
|
||||
top secret candy customer service-937[dbqrs]
|
||||
weaponized flower engineering-781[dmhfn]
|
||||
military grade bunny containment-368[jepwa]
|
||||
projectile plastic grass operations-974[gcdfh]
|
||||
magnetic weaponized candy development-213[zivyd]
|
||||
fuzzy cryogenic dye engineering-556[udowy]
|
||||
international flower storage-158[clmpr]
|
||||
corrosive plastic grass workshop-291[njmdk]
|
||||
corrosive consumer grade candy coating reacquisition-541[hntwf]
|
||||
top secret weaponized egg research-886[cpaem]
|
||||
cryogenic dye research-805[fdszb]
|
||||
fuzzy bunny technology-372[fqgmr]
|
||||
biohazardous flower department-788[gjswl]
|
||||
biohazardous candy development-614[knoyx]
|
||||
colorful candy user testing-319[eghkl]
|
||||
projectile scavenger hunt analysis-500[yhmuc]
|
||||
corrosive egg reacquisition-239[djmzb]
|
||||
international plastic grass research-698[evwim]
|
||||
unstable flower shipping-241[begil]
|
||||
projectile flower technology-333[jtqhw]
|
||||
rampaging plastic grass workshop-541[fxluw]
|
||||
cryogenic dye user testing-246[sbfgh]
|
||||
corrosive candy reacquisition-786[cilwh]
|
||||
magnetic plastic grass reacquisition-795[tdlen]
|
||||
fuzzy basket reacquisition-452[yijkp]
|
||||
rampaging dye services-798[maioq]
|
||||
unstable plastic grass development-517[hvdow]
|
||||
biohazardous radioactive basket design-507[nvbfq]
|
||||
colorful candy coating laboratory-245[dpagr]
|
||||
colorful scavenger hunt services-748[kixya]
|
||||
classified candy coating design-209[hbcmr]
|
||||
radioactive egg financing-973[xcpvr]
|
||||
top secret jellybean user testing-596[gvunp]
|
||||
magnetic rabbit technology-107[qbdfk]
|
||||
biohazardous bunny shipping-978[sxcek]
|
||||
magnetic candy customer service-713[rtbcg]
|
||||
colorful basket engineering-140[udbeh]
|
||||
international flower design-721[ulpah]
|
||||
classified cryogenic scavenger hunt training-894[dysuh]
|
||||
colorful candy receiving-337[dfjmo]
|
||||
plastic grass research-636[gfoqs]
|
||||
weaponized egg receiving-379[prtya]
|
||||
78
py/2016/04/solve.py
Normal file
78
py/2016/04/solve.py
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
import re
|
||||
import sys
|
||||
|
||||
# PART 1
|
||||
|
||||
ROOM_RE = r"(.*)-(\d+)\[(.{5})\]\n"
|
||||
|
||||
def load_rooms(filename):
|
||||
rooms = []
|
||||
with open(filename, "r") as f:
|
||||
for line in f:
|
||||
match = re.fullmatch(ROOM_RE, line)
|
||||
name, sector, checksum = match.groups()
|
||||
name = name.split("-")
|
||||
sector = int(sector)
|
||||
rooms.append((name, sector, checksum))
|
||||
return rooms
|
||||
|
||||
def checksum(name):
|
||||
name = "".join(name)
|
||||
freqs = {}
|
||||
for char in name:
|
||||
freqs[char] = freqs.get(char, 0) + 1
|
||||
|
||||
top = freqs.items()
|
||||
top = sorted(top, key=lambda x: x[0])
|
||||
top = sorted(top, key=lambda x: x[1], reverse=True)
|
||||
top = list(top)[:5]
|
||||
top = map(lambda x: x[0], top)
|
||||
return "".join(top)
|
||||
|
||||
def sum_correct_sectors(rooms):
|
||||
total = 0
|
||||
for name, sector, chk in rooms:
|
||||
if checksum(name) == chk:
|
||||
total += sector
|
||||
return total
|
||||
|
||||
# PART 2
|
||||
|
||||
def shift(s):
|
||||
new_s = []
|
||||
for c in s:
|
||||
if ord("a") <= ord(c) <= ord("z"):
|
||||
new_c = chr(ord("a") + ((ord(c) - ord("a") + 1) % (ord("z") - ord("a") + 1)))
|
||||
new_s.append(new_c)
|
||||
elif ord("A") <= ord(c) <= ord("Z"):
|
||||
new_c = chr(ord("A") + ((ord(c) - ord("A") + 1) % (ord("Z") - ord("A") + 1)))
|
||||
new_s.append(new_c)
|
||||
else:
|
||||
new_s.append("?")
|
||||
return "".join(new_s)
|
||||
|
||||
def decrypt_name(name, sector):
|
||||
for _ in range(sector % 26):
|
||||
name = map(shift, name)
|
||||
return " ".join(name)
|
||||
|
||||
def decrypt_names(rooms, filename):
|
||||
with open(filename, "w") as f:
|
||||
for name, sector, chk in rooms:
|
||||
if checksum(name) == chk:
|
||||
name = decrypt_name(name, sector)
|
||||
line = f"{name}-{sector}[{chk}]\n"
|
||||
f.write(line)
|
||||
|
||||
def main(filename):
|
||||
rooms = load_rooms(filename)
|
||||
print(f"Solutions for {filename}")
|
||||
total = sum_correct_sectors(rooms)
|
||||
print(f"Part 1: {total}")
|
||||
filename_2 = filename + ".decrypted"
|
||||
decrypt_names(rooms, filename_2)
|
||||
print(f"Part 2: see {filename_2} (search for 'northpole object storage')")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
4
py/2016/04/test_input.txt
Normal file
4
py/2016/04/test_input.txt
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
aaaaa-bbb-z-y-x-123[abxyz]
|
||||
a-b-c-d-e-f-g-h-987[abcde]
|
||||
not-a-real-room-404[oarel]
|
||||
totally-real-room-200[decoy]
|
||||
54
py/2016/05/solve.py
Normal file
54
py/2016/05/solve.py
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
import hashlib
|
||||
|
||||
# PART 1
|
||||
|
||||
def chars(start, amount):
|
||||
n = 0
|
||||
chars = []
|
||||
while amount > 0:
|
||||
text = (start + str(n)).encode("utf-8")
|
||||
h = hashlib.md5(text).hexdigest()
|
||||
if h[:5] == "00000":
|
||||
print(h, "->", char)
|
||||
char = h[5]
|
||||
chars.append(char)
|
||||
amount -= 1
|
||||
n += 1
|
||||
return "".join(chars)
|
||||
|
||||
# PART 2
|
||||
|
||||
def chars_2(start, amount):
|
||||
n = 0
|
||||
chars = [None]*amount
|
||||
while amount > 0:
|
||||
text = (start + str(n)).encode("utf-8")
|
||||
h = hashlib.md5(text).hexdigest()
|
||||
if h[:5] == "00000":
|
||||
char = h[6]
|
||||
pos = int(h[5], base=16)
|
||||
if pos < len(chars):
|
||||
if chars[pos] is None:
|
||||
chars[pos] = char
|
||||
pw = "".join("_" if x is None else x for x in chars)
|
||||
print(h, "->", char, "in position", pos, "->", pw)
|
||||
if None not in chars:
|
||||
return "".join(chars)
|
||||
else:
|
||||
print(h, "->", chars[pos], "already in position", pos)
|
||||
else:
|
||||
print(h, "->", "invalid position", pos)
|
||||
n += 1
|
||||
|
||||
def main(hashstart):
|
||||
print("Previously calculated")
|
||||
print("Part 1: 4543c154")
|
||||
print("Part 2: 1050cbbd")
|
||||
print(f"Solutions")
|
||||
pw = chars(hashstart, 8)
|
||||
print(f"Part 1: {pw}")
|
||||
pw_2 = chars_2(hashstart, 8)
|
||||
print(f"Part 2: {pw_2}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main("ojvtpuvg")
|
||||
1
py/2017/01/input.txt
Normal file
1
py/2017/01/input.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
237369991482346124663395286354672985457326865748533412179778188397835279584149971999798512279429268727171755461418974558538246429986747532417846157526523238931351898548279549456694488433438982744782258279173323381571985454236569393975735715331438256795579514159946537868358735936832487422938678194757687698143224139243151222475131337135843793611742383267186158665726927967655583875485515512626142935357421852953775733748941926983377725386196187486131337458574829848723711355929684625223564489485597564768317432893836629255273452776232319265422533449549956244791565573727762687439221862632722277129613329167189874939414298584616496839223239197277563641853746193232543222813298195169345186499866147586559781523834595683496151581546829112745533347796213673814995849156321674379644323159259131925444961296821167483628812395391533572555624159939279125341335147234653572977345582135728994395631685618135563662689854691976843435785879952751266627645653981281891643823717528757341136747881518611439246877373935758151119185587921332175189332436522732144278613486716525897262879287772969529445511736924962777262394961547579248731343245241963914775991292177151554446695134653596633433171866618541957233463548142173235821168156636824233487983766612338498874251672993917446366865832618475491341253973267556113323245113845148121546526396995991171739837147479978645166417988918289287844384513974369397974378819848552153961651881528134624869454563488858625261356763562723261767873542683796675797124322382732437235544965647934514871672522777378931524994784845817584793564974285139867972185887185987353468488155283698464226415951583138352839943621294117262483559867661596299753986347244786339543174594266422815794658477629829383461829261994591318851587963554829459353892825847978971823347219468516784857348649693185172199398234123745415271222891161175788713733444497592853221743138324235934216658323717267715318744537689459113188549896737581637879552568829548365738314593851221113932919767844137362623398623853789938824592
|
||||
37
py/2017/01/solve.py
Normal file
37
py/2017/01/solve.py
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
import sys
|
||||
|
||||
def load_line(filename):
|
||||
with open(filename, "r") as f:
|
||||
return list(map(int, f.read()[:-1]))
|
||||
|
||||
# PART 1
|
||||
|
||||
def sum_matching(digits):
|
||||
offset = digits[1:] + digits
|
||||
total = 0
|
||||
for x, y in zip(digits, offset):
|
||||
if x == y:
|
||||
total += x
|
||||
return total
|
||||
|
||||
# PART 2
|
||||
|
||||
def sum_matching_2(digits):
|
||||
offset = digits[len(digits)//2:] + digits
|
||||
total = 0
|
||||
for x, y in zip(digits, offset):
|
||||
if x == y:
|
||||
total += x
|
||||
return total
|
||||
|
||||
def main(filename):
|
||||
digits = load_line(filename)
|
||||
print(f"Solutions for {filename}")
|
||||
total = sum_matching(digits)
|
||||
print(f"Part 1: {total}")
|
||||
total_2 = sum_matching_2(digits)
|
||||
print(f"Part 2: {total_2}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
16
py/2017/02/input.txt
Normal file
16
py/2017/02/input.txt
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
1640 590 93 958 73 1263 1405 1363 737 712 1501 390 68 1554 959 79
|
||||
4209 128 131 2379 2568 2784 2133 145 3618 1274 3875 158 1506 3455 1621 3799
|
||||
206 1951 2502 2697 2997 74 76 78 1534 81 2775 2059 3026 77 2600 3067
|
||||
373 1661 94 102 2219 1967 1856 417 1594 75 100 2251 2200 1825 1291 1021
|
||||
57 72 51 1101 1303 60 1227 421 970 1058 138 333 1320 1302 402 1210
|
||||
4833 5427 179 3934 4533 5124 4832 2088 94 200 199 1114 4151 1795 208 3036
|
||||
759 876 110 79 1656 1691 185 544 616 312 757 1712 92 97 1513 1683
|
||||
1250 1186 284 107 1190 1233 573 1181 1041 655 132 547 395 146 119 515
|
||||
505 1726 79 180 86 1941 1597 1785 1608 1692 968 1177 94 184 91 31
|
||||
1366 2053 1820 1570 70 506 53 415 717 1263 82 366 74 1255 2020 1985
|
||||
2365 5585 2285 4424 5560 3188 3764 187 88 223 1544 5023 4013 5236 214 196
|
||||
1487 1305 1359 1615 6579 2623 4591 150 5030 188 146 4458 5724 5828 1960 221
|
||||
3114 688 3110 334 1921 153 4083 131 2234 3556 3573 3764 127 919 3293 104
|
||||
1008 78 1196 607 135 1409 296 475 915 157 1419 1304 153 423 163 704
|
||||
235 4935 4249 3316 1202 221 1835 380 249 1108 1922 5607 4255 238 211 3973
|
||||
1738 207 179 137 226 907 1468 1341 1582 1430 851 213 393 1727 1389 632
|
||||
44
py/2017/02/solve.py
Normal file
44
py/2017/02/solve.py
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
import sys
|
||||
|
||||
def load_rows(filename):
|
||||
rows = []
|
||||
with open(filename, "r") as f:
|
||||
for line in f:
|
||||
digits = line[:-1].split("\t")
|
||||
row = list(map(int, digits))
|
||||
rows.append(row)
|
||||
return rows
|
||||
|
||||
# PART 1
|
||||
|
||||
def checksum(rows):
|
||||
total = 0
|
||||
for row in rows:
|
||||
total += max(row) - min(row)
|
||||
return total
|
||||
|
||||
# PART 2
|
||||
|
||||
def divide_evenly(row):
|
||||
for a in row:
|
||||
for b in row:
|
||||
if a != b and a % b == 0:
|
||||
return a // b
|
||||
|
||||
def checksum_even(rows):
|
||||
total = 0
|
||||
for row in rows:
|
||||
total += divide_evenly(row)
|
||||
return total
|
||||
|
||||
def main(filename):
|
||||
rows = load_rows(filename)
|
||||
print(f"Solutions for {filename}")
|
||||
check = checksum(rows)
|
||||
print(f"Part 1: {check}")
|
||||
check_even = checksum_even(rows)
|
||||
print(f"Part 2: {check_even}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
3
py/2017/02/test_input.txt
Normal file
3
py/2017/02/test_input.txt
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
5 9 2 8
|
||||
9 4 7 3
|
||||
3 8 6 5
|
||||
64
py/2017/03/solve.py
Normal file
64
py/2017/03/solve.py
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
import sys
|
||||
|
||||
# PART 1
|
||||
|
||||
def spiral(nth):
|
||||
length = 1
|
||||
nth -= 1
|
||||
x = 0
|
||||
y = 0
|
||||
while True:
|
||||
x += min(length, nth)
|
||||
nth -= min(length, nth)
|
||||
if nth == 0: return x, y
|
||||
y += min(length, nth)
|
||||
nth -= min(length, nth)
|
||||
if nth == 0: return x, y
|
||||
|
||||
length += 1
|
||||
|
||||
x -= min(length, nth)
|
||||
nth -= min(length, nth)
|
||||
if nth == 0: return x, y
|
||||
y -= min(length, nth)
|
||||
nth -= min(length, nth)
|
||||
if nth == 0: return x, y
|
||||
|
||||
length += 1
|
||||
|
||||
def manhattan(x, y):
|
||||
return abs(x) + abs(y)
|
||||
|
||||
# PART 2
|
||||
|
||||
def store(cap):
|
||||
stored = {(0, 0): 1}
|
||||
nth = 2
|
||||
while True:
|
||||
x, y = spiral(nth)
|
||||
adjacent = 0
|
||||
adjacent += stored.get((x-1, y-1), 0)
|
||||
adjacent += stored.get((x , y-1), 0)
|
||||
adjacent += stored.get((x+1, y-1), 0)
|
||||
adjacent += stored.get((x-1, y ), 0)
|
||||
adjacent += stored.get((x+1, y ), 0)
|
||||
adjacent += stored.get((x-1, y+1), 0)
|
||||
adjacent += stored.get((x , y+1), 0)
|
||||
adjacent += stored.get((x+1, y+1), 0)
|
||||
stored[(x, y)] = adjacent
|
||||
nth += 1
|
||||
|
||||
if adjacent > cap:
|
||||
return adjacent
|
||||
|
||||
def main():
|
||||
nth = 277678
|
||||
print(f"Solutions")
|
||||
x, y = spiral(nth)
|
||||
dist = manhattan(x, y)
|
||||
print(f"Part 1: {dist}")
|
||||
adjacent = store(nth)
|
||||
print(f"Part 2: {adjacent}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
512
py/2017/04/input.txt
Normal file
512
py/2017/04/input.txt
Normal file
|
|
@ -0,0 +1,512 @@
|
|||
bdwdjjo avricm cjbmj ran lmfsom ivsof
|
||||
mxonybc fndyzzi gmdp gdfyoi inrvhr kpuueel wdpga vkq
|
||||
bneh ylltsc vhryov lsd hmruxy ebnh pdln vdprrky
|
||||
fumay zbccai qymavw zwoove hqpd rcxyvy
|
||||
bcuo khhkkro mpt dxrebym qwum zqp lhmbma esmr qiyomu
|
||||
qjs giedut mzsubkn rcbugk voxk yrlp rqxfvz kspz vxg zskp
|
||||
srceh xdwao reshc shecr
|
||||
dcao isz wwse bbdgn ewsw qkze pwu
|
||||
lbnvl lviftmr zqiv iadanl fdhrldn dlaani lxy dhfndrl fkoukx
|
||||
raovmz pdysjsw hqps orsyqw rrwnzcz vrzoam jjljt
|
||||
wgt gzi icpwp qeefgbe msadakj jbbrma sbj dufuujx zex
|
||||
cfzx bvyu eswr hafcfy klw bgnhynv qrf aop
|
||||
rzlq atrzcpb hpl pajjw cdxep ean aptzcrb rzcbapt
|
||||
xogpf ucc nsukoz umtfbw xfvth ozusnk fopxg ubp iflb
|
||||
xot nqcdyu kpwix szo cyxv hpmp hwtrc zso nyuqdc aha
|
||||
mkzf cat tkjprc izxdggf obspan lmlbg bsyspf twox
|
||||
lfmfrd ooclx tcl clt
|
||||
dxvnyd nxwojj arutn eyqocj swzao tmh juvpezm
|
||||
teu eman rlmdmk xkbodv fvrcm zorgy wmwe
|
||||
hmo fdayx duciqf cgt duciqf
|
||||
imjnv vfmsha cyrusow xjswoq nclrmjy sjxowq ynjrcml
|
||||
rwbsay alsi bmzpvw ozq aduui nihwx glwdiz ixmkgfx
|
||||
vtjzc ntkh zekj qrbkjhn zekj lyfnbg
|
||||
afaig jqhli oie lhwyduh kqfnraz nfrzaqk mayfg iljqh
|
||||
inb zum zmu dnl zjxg vrdziq ypdnsvt
|
||||
uhbzmre mpdxm alkbmsq aopjmkl mqxenry ayvkrf zxvs qkfqva
|
||||
fimjr ccv cnug crdsv
|
||||
bqyve lhxdj ydu qbyve vihwjr vyodhc
|
||||
vmng dyttyf noagpji tdtyfy ewiest ogg
|
||||
kgscfj klmsv vmksl vmlks
|
||||
qlvh veo wruft wtm fbrlvjr evo wvwmny dhp bvrlrfj lvt vgzuyyw
|
||||
mxuro orxmu tivu tjdq ojjvju cdd
|
||||
kjexme gxbysxp yxrum hinrklv fxehytd qkt tqk umryx nim
|
||||
kywnux wab tzrft dsaz jgwuw dubarmi fle wjguvr umjp uzncwj mzz
|
||||
qokwh zrda xywufk tbxhhj eejqaoa hwoqk zer hwt hbjxth xyf hmh
|
||||
eregs qdx tdequa agrlrg mwwpba qjie yrjvhr txujk
|
||||
iyot fxwdcb zvwfv vfzwv wvkw ncwbr wdejrr ltcdza
|
||||
waix eza znmonya ldfghws ialwfvc dey ubsz uhbnh svgekg nonzyam
|
||||
bryz tfbqn xznfmw xiplgww wwxigpl jxzcgxl rzyb
|
||||
cqvl rrcoqxs staeuqr hzzow cwv tsvol dio coc ddavii uuojy
|
||||
txbn qvkkyh gbqnjtq ndpkqr srt bkpqfmm ytycev ypcv bpqmmfk
|
||||
uqkjmul dour zgq ztango yrrjhrg ufxnmuw
|
||||
ekxbcv vkxbec xbcevk jiq bar
|
||||
wczff qdu cwffz hhk wlvyg
|
||||
zjlconc osgsro dajzo hqih ehml
|
||||
hnio shccluw cpu ivaby tormn vkef abv vkef ivaby
|
||||
xgbdeso xiizs omqwy sbtnnt khago evviclw xyu dtvg wsyxfuc humewp
|
||||
cnzu bia vdyqrf wwb qveum hmh ouupgc owli
|
||||
pjpmfxa dvd lxgh ndy gwph oebfkqv vtlxdg efl ekj dyn
|
||||
mvan nmdkc ucyshia mavn ecst poo
|
||||
oybm pjwm bmyo wovgu xykziaq obmy eiirhqd
|
||||
xkvomx yxvv oxxpth elh vxvy lhe ycn
|
||||
okxglw gmaangx gnxaamg yduzrr nzwxtnd rcxcu xjjvno yat cin gaxnamg yss
|
||||
oicgs rrol zvnbna rrol
|
||||
abb edpnxuo peoudxn bab ceay
|
||||
ncpkfz gvwunb fckpzn caafx pkcfzn tsfl
|
||||
fnrt ymenkpq wodubcm niv nvi ziluu cuowbdm zocg pdakwt mlzxkex nuxqclo
|
||||
uouxcgl stgua otadr ideannq wizxunv iqsdpj mxddt ldst ucxogul
|
||||
rbrwyhk wqoz zqwo ikwgexl atpu iza
|
||||
smo yolp pcahlu muljxkq cbkljmz zlbcmkj zvbmgz eaiv ncv zplifm yplo
|
||||
ocutdhz zmnaap llgv llzpl loavju guzkfq saay rxyhng cwxzx lcv anrnzs
|
||||
etyzx tcm upxrtvd imyoiu rdpj fed dmm
|
||||
gonqa szteh szteh razdqh phyff upf knfqfaf knfqfaf fpsgl kakag
|
||||
mcju mixskop isrwat lcr nfyi lcr aaevr nfyi pqrbk gnful
|
||||
xfmr fkmnq fbnhd mxrf litniid xbae frxm zcenf
|
||||
yuh lzojtj rqsh hyu
|
||||
vbjgql yeshsuv lokt efqota wpwjfu ykyq rxc fxxh ycqfkk gndts vdf
|
||||
wnylmr kkuruxm azr xukrkum dohkwx dmdb
|
||||
bjiyrwf dvf fdv vdf gnokekr
|
||||
jsaq hcww iayqtu llv gdpxdrd hwlo nosjit wpm lcab fcgwr
|
||||
fxjp bys nnf xzllckh bys hvojw zcwtgwz wye ccyvjv
|
||||
grafa hbb ghk wkdpsf ufa uoqmysd
|
||||
yvacf kssbff iovrm mvrio cfbpb avh zzje
|
||||
gqd qmsen wkvrfz vhtsa zrwfkv gul zkvwrf
|
||||
hrbi svaogb aogsvb bgrk hibr jbtkr
|
||||
ljl ryc mrewrge yky
|
||||
fcqyymt emk qcmyytf mcfvusb luy qany cbsvumf
|
||||
oknt mcozuc ccmuoz uoccmz
|
||||
uziil xobutwf acnof iqgwl diso
|
||||
sekq fxbtsuv ddnnqg rnemlt dngnqd hhgjfus stxvubf
|
||||
lajcp qgiw fyz blrlcd pviwv buh wnkk
|
||||
wolqfk nvpapfc rwcqxfz xobno yzjfz irpj wolqfk wbnwjt
|
||||
vmabj noiljne hhqf holxkbk swwzx ylgj lnmxy lqodhk abjvm bmsrf
|
||||
bpnp yrz pjepxxs jlmhuy vihlx zacm inuazhc xsxjepp
|
||||
tryl kryh eonvaad ucevssk umkxg lqej nswopjj svkeucs bmh stosxxz
|
||||
cfdwd dmfdrvm ibuhsz nwtgmb pjt dmfdrvm cqdcm fzjjz afa ibuhsz
|
||||
erwp abn jwx ynmkkj rhgg abn epd atqhs rst rhgg
|
||||
jtnp cegdsoy gfuvfbg gdmn ahlsc
|
||||
jgrp diu jrgp onjnml nojmnl vxockc
|
||||
lakqyuw khq dcpiwt ykwlqua hkq plklx ujbckec hjcvur jnp pvyf
|
||||
usuvoo jkih ylafyy yhio jureyj
|
||||
uazisdf cnwlfnf ewodatr woaddkd wbla qmn atdrowe
|
||||
bnyepaa ntqh xppe ydtsw ppex
|
||||
yewjwsp jxylmtk ijese ewry ijese kbja nfml zeuwcsh juimz
|
||||
qbvmf nca zsfreo uurgaiz twe fbqmv ncwi etdcsk atowfp
|
||||
jeotslx kgdpzp wxlcww pdd dcn ddp
|
||||
macllv ldl kyluine lbt hbxbr wxcaspp ezwvc qxkeu
|
||||
ivg gxv zsf ucr uff yrz
|
||||
tdlwbny bqlrlz tbynwdl lwtbdny
|
||||
tnekq pdaievs ttwpfh xfm fcaa
|
||||
zqqhl zbf fbz uqrv bfz ffwavhk foccg
|
||||
vcw ebqdd cwv eddbq nrmq
|
||||
hpiusz sizphu xzq sgyehk wgagkv hsygek
|
||||
vagkxa iou frqdnnr ipcg uxvh vvh eskf katgpiq aqktigp gzvseyi
|
||||
xkwgd kzfxk pgdy fmtvq ngf rshx zti pamviob ely knz
|
||||
hwo rteohu qzwoe rotuhe wzb
|
||||
bsqgg tid dti gtats dit
|
||||
sjtux djwxv dljwjq xwvjd xnqfvx veqdrtl uxtsj nnkjn wnhilaf unirrp
|
||||
fruuqjk gtote gooklg bzwhim zfnccmm ezipnf cxwdxa wfu fdca
|
||||
zcyxb byzxc cxbyz pgcqco ivlxz
|
||||
wrjh zfdinsf ihw xwosiah hdg xpiabno bilyy azdeczg javuwa
|
||||
rinlv dcpt qhencba mmb njxw gadc
|
||||
qwcpua qzyzt cxjsgh kumh byiimas qhsgf qytzz rqqruwp ismyiba xydcxz rwkscqa
|
||||
xbzefi hltca ibzxfe fkx xizbfe wvaynts
|
||||
oyuce vzk ouxvj gfh efgbv ubc nyb bxnbhd mtwboe whksy ovmrt
|
||||
ljrebp tacn bpjler utphw wmfw rcnha
|
||||
drdnic eyodes rcnidd yseeod
|
||||
umxmsf kfroz ukhjin awpnnnu ooyyohh tuv rafano jze
|
||||
bakz lfzpjyg gfkqcgn kzh zwpvk gqfngck
|
||||
jpaony ojpnya hmro xaaz tovary aaxz iel pbg
|
||||
swvbgc bbhjp yvrcddd rhj clfu eao afrkegn qvvb yvcx nxjmdo rcvtx
|
||||
conbjy jeqtri wvujt jeqtri rkhllgw tsdt zowreo qxr qbpragn kuzmplw wvujt
|
||||
jrpxyp hchljy rkowqb eeaf ltllebb gtksrwx iazx vnsfmc zzrxw hlcjyh
|
||||
piehb cjdzt eqn kuje rls oaewoz lrqwt lcrrq
|
||||
hdjowxv uknhlv hluknv pokxg
|
||||
txiqxfr fyyp pyyf xfxtrqi tvm rtvby cfx trx nwrf kqrxtat alwot
|
||||
wdaadr stexpow ardawd uejqxc
|
||||
wwgwjel wwgwjel mtjt wwgwjel
|
||||
mczx uua lgceb dqru vkcea tcet ruz
|
||||
jkt yroojr qdrtdu wze ovwz fdmqnr xxsyfd kchytwl hctlkwy gyd
|
||||
eif irnrce iamhxgh bmis uxye azrwdi sznv yuowb vdlqqxu
|
||||
dxdjyj hngqwzs yhwku qhsctfe rhbc rchb tqhcfse
|
||||
fxyxnzs qtxevin rvtxtc iqnxtve
|
||||
zgbpk mwzxx bgpkz wkpkn
|
||||
rjiym iub lcyw agbtlb bzhx osv rbtf
|
||||
emmyu uoflio tinih skpqaj rbor gezbhhv ine mij qlqte uuj ycns
|
||||
owmwc uhxv pyho ftjh jzsg blqn bszyo bob trbycy mkru
|
||||
mwgz bbqsmpp fgzs bihhg bbn pjxxexs qrqmt htsxfwo qltqp vqqaxi
|
||||
lpr wcvy sxjqq ltd rftdgv pdnog ymu
|
||||
qhcos shuy icdhucu lrikh rwslv yxbgibl rcomhn wakirz
|
||||
civdmee owlzocl vedecim rogmjnn pix pohcmk dsjm yworm
|
||||
vzdpxp lvt inufv yofqt omm qfoty qrlseqy amkt kjcvg vgkjc
|
||||
huhq quhh levzsws sjuun ofgqr cjhp nfxbbft rnt wtbd tbzab
|
||||
tjftkx xpfcv hvftvhw lpypbjg batrn fhwhtvv uthl arbtn brb sthv
|
||||
ogr uyuxdco bpjgir edztxv sxtgu jzfmx ihnauz zwegqkr kvkw
|
||||
mhxthf pervvn gshy jig ezjteq ckkcpy gww
|
||||
tiljyki rpe prcojy tjkylii moxu
|
||||
pjsdqc lgqydfd lohck emrtejw axwmo wuuv rfi qzyncmw gjijdfb bljfd xrs
|
||||
ywjab gynzi relf kziy xmsby izyk ocwoho kqnyh bwayj
|
||||
bhjlz uonz jhmzuq eiajoos zjnbj tomj bmyv hjlbz fgw jjbnz
|
||||
kszz xzw xzw prtznyb
|
||||
ghzk vxhwt thxwv slwpayp qxegmi dawdwo kgzh
|
||||
ibpcvuf wnuwxu sbf jsj bfjynl cdp jbylnf
|
||||
epaxr vfhf hvff azepadz pwf sbo pgfzya hslyo rqqj rmklw hwtta
|
||||
yyolko pwbvxvg xdwl yfje hftep kzzsr kho jeyf yvslxpw kfyv
|
||||
xmk juyjxy eqno mdwklum reg dgn cirh wmxfyj bnxlgo dlobk
|
||||
oyv gshqyot jgcqe dsf gyohqst gqgeojo egoogjq dmqpyp
|
||||
sypianq yss lmhu ulmh itilh ndkda lhiit
|
||||
qbxxl bxxql ikald nfap qixwbqq
|
||||
jtqhqty ljysnl nwoj toa bmmyj pal
|
||||
ahktew sxody nkvsf pbxyt baws wgwfwej bevgzm jus hcvajfy kzrb jwgwewf
|
||||
jzsb szbj ujngwf nfuuf lfiuxdu uufnf orsy
|
||||
vgo hto isstyul gau wsmxoqw
|
||||
uxw itwf epaw hec wape hemol rpwyosc xzxmrll eetz zui kagca
|
||||
mjncux muv rygdeis rygdeis
|
||||
qgkqjvf iprzibd fkvqqgj llcrl vbh vlf lllrc zwrunt
|
||||
dslsa wvoex eqbwj tjem gbx ayn xcan fnacl xggxon gnwjlh
|
||||
yzosv hcxjiz yvon gcgd
|
||||
bixpny ecln sda eymt bjiwk
|
||||
rlcad lrdca adoqfzs rgty mds pwb kmwj
|
||||
wkai pmryffq rrdmodc wgyx taz yxwg nkap
|
||||
auynzwc vzg uapdv qkrh
|
||||
ldmuysp oyu kpn ejbl mfifa bzs hwyn brlw qpzqx uyilao ysdumpl
|
||||
czoxoj pwnultl wezolbw lyk aonesgb
|
||||
nqy nhb nle yycp lgtbo ojf dytwyh ufa
|
||||
rwr eph obg peh pejret prjtee ovgz
|
||||
vdqf vdqf ycjrg ovzl lelbe vdqf
|
||||
gvagdqm gvdgqam dmb zaxe nepzwn
|
||||
emwh bkkbgec qwdgk mhvfsrf wmdfpp ekzuua
|
||||
mbqw lgkyazt ckyhvnq uladwo owt
|
||||
qwiwd pbo tkjoqda zapo dygqopv zzdlwfn
|
||||
qty dhb iinncba ytq kvh idgoevt chx waq
|
||||
ulffsvk vplsz ulffsvk uxsh cpwgxd ikgcacx nrirke uowcjvn
|
||||
gknmxr grkxnm fco dilyyj grmxkn
|
||||
saqxkh uhue nvu fef xsuxq ekyyoc bcaavd
|
||||
qltwqa vrmpv vhra nof yprauc vkreojm eaq igiy mec
|
||||
wvheiyg uthy gpvcs nhnjrne mqaejr tfnsly zfbhn entcc nystfl cpq
|
||||
zxv jzk dwsjgrd gqqxhp xqxu naunwc yeh qzpkz awcnnu aoosa icadax
|
||||
vpmqmg qmvpgm tqs mvpqmg
|
||||
inehzu zwxeoy jxia fcyzxc hwikd
|
||||
bzwnp kamsen ajpn kdls bzh xqcb bzwnp cmjnfa wmgx
|
||||
hbuhc qgvhxy smzkxh zzebox hbcuh net wyrdppc yvgxqh
|
||||
oeum oemu iyags xaipdi euom
|
||||
tqljgoq ghtdhw xhnni lux qltojqg lki zxztda pcqjif acpzvwy
|
||||
ydijaq kbyjxpu onyd hsfgz geqvbg
|
||||
rwoih xog dtbzyr ryzbdt tdbyzr
|
||||
vcdxf zosw pardxfz bmb mscmain lwfc jvq hbszcqh fxomsmm ahnugx
|
||||
zutsemg pqzil ddv nsstz gmeuzst bedvy xkzzjpw xlqbd
|
||||
xxf ltnnu yeb hbml agj meovtjr qrul kexerkw xxf
|
||||
tqrpd hhcx bmdv nlmr pnu pajdtc rpatqi yekedx oeiuew epsshog
|
||||
ttbfpv plairk toh jagfsg njnqpa tmwh vwqp irtxv
|
||||
vdky uwc tkkkztp vdky vdky qlcw lza
|
||||
rzie yundymy pwgx wtwtbg kpiw mewnb liveysj uvsbn
|
||||
jgfvyny hacg pzra arpz uowswu puzsfu hoe heo vrq naup
|
||||
hqv vrl uko qgpikho lligvxa wdld qgpikho
|
||||
whvby yomxwj dieffc jkprinh dsaqy yfrnba woyq yexeb mjn cbszn xeswvvo
|
||||
wowtgu rciyg rlas bra quyfec ihe thuu asxhscu bsbdpbi ogxosu
|
||||
vydsaet tvnkjq piedkzj foeiqz zqivt iatsju tjnqvk drauaf vqitz invoz
|
||||
cppn jqzw zmxr qksuas iifmjg xtkgf cppn cppn jpsd
|
||||
nkifpsq cxdx bokxhm ebww kghagrp bofhrl grc cheuzyj
|
||||
ibgrlvm hrcx jjuoh ipmt
|
||||
hcoqkh fzt rgravb cimauj jxjq blct qhc vjxw pqpg qzp
|
||||
jycxz xcv czxjy vxc
|
||||
liljaur cgmg neldxb xfummcq yfhiukd dnqhl iolxn cmewhb
|
||||
hpvoihj fkwokod txy uuktw vmqqb dpldzh yxmcay cyaxmy xycaym wekr
|
||||
ccnaf wuxc ecadb vbgpt ccntf sezo skjdkbf fnctc
|
||||
hqdtwho kdhyman bjtcjvr bwllva ncyffyr
|
||||
xprn jrrvmj pdw yvexm ewbflbe eapml rvrmjj xmevy rxyzhf
|
||||
wjcbpy qdgtcp cfjh muww fhg sgfdleo nelpte yucqa aavev
|
||||
rci vqypsqt xmg rzii
|
||||
gramh wwprtc ampdhw dajr
|
||||
ovrm mdyhpbl mdylbph aykz
|
||||
cbmo fxs nuugu guunu upt ljjuhjw nituh utp kxqc
|
||||
rhabal rhabal rhabal vah lfrs
|
||||
nrq qway ftzp rtjcks mbygdtd hsiqbh wypqb rtjcks cllp hsiqbh
|
||||
ywa anhcf nvd puqkwg molrwck wsctx xvd molrwck
|
||||
wox jzq jfen wcvus cswvu oxw irg lmu tpj viahm jesic
|
||||
qenad neqad smlgi ydwzq ppdemvs ucyuf qtunm eoqx jlgv
|
||||
sucpl nrdwbl ltvetok npbw ozzw hafyay sjmui sjmui jkqlq pyn pbuopx
|
||||
nxgaiu ybyl meo kgh saqjaz xhbqr otelcyp vkwc
|
||||
iqrl ldjlwvl ajhrl dnhutr gkknyqs mcvluet fgyu ogiz cxo aiunl orb
|
||||
psd cyq xpoyqny yqc kozqh vonfd uhozwz pds hcpw
|
||||
tvaxder tulwmw qiw avddbmh irog vynjzcc refx efxr emnvk
|
||||
myjx npqk whm egw kpy igrrohg ukglx ldnuqw caqg ynx fckhnsh
|
||||
dafv bkdoqg zcqvbco xgikoac cvbqczo
|
||||
rtzhpwk ukuyp bayhzp upkuy ahbpyz
|
||||
oarcuv pnlkxvw fqdkj hwzsz nauwl lpufibz vzfbgc unkluxy rwh xuknuyl
|
||||
vxhsaj ppdxw qrswqtu ulwv uqtqwsr ppxwd
|
||||
cww cww cww scu
|
||||
wiiikwa bfpewt zbgxfkl iqpk tpbwfe aazdcxj ipqk icggn fwn fjr
|
||||
net ovxuwpz yvzmzd yvzmzd
|
||||
xgar czuhp vuhisaq fgrqxy evvrtf mnmar lsk
|
||||
hld mxuedug itswju vmmejqx snzslqj toe bbmugph mgubhpb mowj nrjnzu
|
||||
qbz ouhye hsldmp lcf hyhlrb ewvle zko
|
||||
cke mupaq quapm eck
|
||||
owu zdt lales tzd apjjo fhpx bmuktbw dvehpz
|
||||
libvl zxypk azazc vtsom ohdzycb
|
||||
kiowxnc scxygrf ckxnwio ycxsrgf
|
||||
vcjj fqz lfawfx mps zhv qykch vhz psu zud spu fnpvkx
|
||||
scfvum fuktgk tua ieosetl wwmjtt exnsw wwmttj plvd pfb kku pdbom
|
||||
wkfw snukd wkfw gyaojdf bjw htagy cdsp
|
||||
beh gatqxcu ibrooxr ssww orrioxb eenkqz
|
||||
jlv affah mtbemf tylh aafhf
|
||||
zqfajd uwzrw csouuip qzadjf
|
||||
gsnlrw tcel hha tfbzrp ild aenqa
|
||||
iirfxef kdux yvj vbzgj
|
||||
ibx pfll rgkp nancij llpf xib gbkfy
|
||||
uvw kkbavj pznsnk okigtxl ogitxkl eobbs xhaz wroabn ltogxki
|
||||
bivdf lotvmoh vrb kpaeeue tdab qhukcb qmy kuqf kesu
|
||||
egs hbsfeu esg twxko uib
|
||||
ocraimu qilp ijmx eco nhevqp juxf ksejr bcqqau uhpt
|
||||
pyx jmpglf juokd dxszjw cml vcjge pfg
|
||||
gxwrt btmimse dkpbha idmz mtignka ngakmti
|
||||
dpjhm jyalra hukf imocr lkgt rqywn quhe fukh
|
||||
nbau xyc bdh yni xaawxm cyx xwaaxm akx gyodqe htbifc
|
||||
bywdxe bfrp rvb rndl onal jghiwb nuta aint qlciwcx
|
||||
fpic yrqce land soxhci qzc zoebsq hcdohcc fzhcl iyxb dqinum hchdcoc
|
||||
zok ghgp zok lmk
|
||||
ozfz zofz dkdekzb sqc
|
||||
gfti zuqvg cexmtyl qwuqnj stepb erduqhy cuoizcs qudyreh kqvfdd guzqv
|
||||
jrugz jzugr lmqu jgihgo hjfbz duxkn unxkd
|
||||
ckiys dbqmi ckiys ckiys
|
||||
iylp uvvdp pluifaa djo
|
||||
esxec rwvel djxppqf jymwt ilm aiz upn aiz wrfefwi rwvel
|
||||
nitgjr pokxuy puhdwg qtxpb veylp zqvzkbd lrvpcgu zuy rnigjt ibci
|
||||
jboyzq ogcldr hlon ywav jqqtz qjzqt vyaw cok
|
||||
aqdw jxn hqknh azbylg
|
||||
jya qpxtmsj hqrtsgg qjtpxsm
|
||||
pofcs sxw dlvru dlvur swx
|
||||
yphvvb qqyyfsp sjkbff dqyerxe jxzes oof
|
||||
pwbya txk bbwsj ywgimd kmdpc bawpy lbnt
|
||||
bkbazff ldmaq tyfl acqurpy ndnrp
|
||||
asw ctiv mnxzyc weeuwb gsn bzk irbyhxl cgqomj izy zbk
|
||||
yrxcrbt bcrryxt pofe wwzl
|
||||
vuaqez kbtuyai vuaqez dxqud uvo gmhtg dxqud
|
||||
tpzs gqdxpxo zzpgta uurjx xpqxodg
|
||||
cil lsv vznqw vro zqzvjhm jhgauzw uxnwk lci zpgpu frjvyzo tsv
|
||||
zfvcuim gwn gnw dxfppok
|
||||
btb goof iwadca aac tbb jha uvzi
|
||||
qah ned ipmure kyta ffhrwe njz paq kaag xmlui
|
||||
rkmw vrblwyy gpax hxsf zpbza gypuwf jbib ypcjwd vrlybyw
|
||||
yfjljn uxpvg huik jsnah nkhsg yfjljn lqzsz
|
||||
hagjlqx agnax jqalxgh rvjgtc mjrmph azznzcq gxajlqh
|
||||
ipki bhoabp rmiyl dmjyxl zzsmap aju
|
||||
tyjrr rigrf ciq qic avmwu jtr wpq
|
||||
vuf cosgytm toycgms ufv qzpcbrs
|
||||
epzgxr lydrsj ezxrpg expzgr
|
||||
ecm prj kmak makk jpr
|
||||
ccwyq txy okj matxa socoa
|
||||
zrjphq gigayv ywkfmru yrwukmf fxjjrha gqkxx zhjy tisutx kufrywm izjfj igg
|
||||
lfhgsro gsroflh wrpo lofhgsr
|
||||
kgkgj wkhnab ubrjaoa ubrjaoa ubrjaoa ggdgh
|
||||
hztutpn epnqmz ffcroq mnqpez niibpn kdloak xjui ozttj lyzsc pzgq inpnib
|
||||
kruz sjqp mmd hhdxjgc mauouma asevvo upjwqi hxcgjhd etqzagp
|
||||
zylf qime cho oraid svytv gqrjufv mker cho vnkyiin tjms
|
||||
dotjul qyv hnh cibtg gdpauyx wzp
|
||||
fabtira ejxoeor cqyethv ndjrq hnxn joq otng lrr csytrub
|
||||
txhgepd fwdaanm nawdamf pxine qqrn pronw exnip qwkimt rvy
|
||||
kuxzhi jln urzxtw rzu ebsuylm tscru qwlhfgq nnu nuchvz vuht
|
||||
cqgu camlr umkltcf stx izp rtdwxff wkfvs
|
||||
jhje cxix lefcrsu nebv idfzhic xqri xkft
|
||||
utzxb znb ietupd uqgbhje aobip oawjwm hetyan uqtqv hpwzyri kwxyu
|
||||
jvzvbt xuyvp aegdkb srbw bzabpf lyfriez cruyfu
|
||||
nhi nih aeb ihn
|
||||
hcf zypt djcm pkjx pvhh
|
||||
rhvxcfk exydvk ids hybme hnk yfchvs mjbo meocn
|
||||
rpboxr rxoprb hdzje zhedj
|
||||
ziildbo apzvatr vsv isndq ebxyy ntm tdttg wkvdh qnids vkdhw xxolip
|
||||
ywu uyw ipcjz pjzci xjn kvgk vsocprw
|
||||
euzo njlpv ndrlhi drlnhi ivmjkb fjrtxta skvgmrd
|
||||
gbyvj dkck gevpfvb lhadhx rgjcdn yraxh bdk oen vqryd bkr
|
||||
vgkp hncttxb wgxh gdyjo bbdfzvc xhgw rznzgda yxrrlo gxhw
|
||||
ifjlb fpecyic svhjp ilmj oxgr svhaf
|
||||
vbqky lhccj xtmm xzjyykn oqmdq qywir bswly
|
||||
euxxziv totzer vsxfx leo djho uoeaz edaig fbu lumbi
|
||||
ooqtwq pvo kid vpo jxin bod btqc fbyuz
|
||||
jhabi mronu htqqyz umjcbv sgnbp wyn cetmt pcjf
|
||||
tnrkcyl dduuhxh rylkctn pwj rtynkcl mzzfomr
|
||||
rxx ldqffi ulappk nltawbn tplhb kyb cqyi
|
||||
vzkw gviooah vxh xeae ohvcad oaiwcj dkx
|
||||
sdofdjt hcifv dqws sia mlwm vfich kavh myzue roops mzuye
|
||||
uxs nlbmjp nlbmjp tlaxa tlaxa
|
||||
ynnisp twx xtw jgkc yinpns
|
||||
kumorsm wav xhx bpvz clqc ffmadzl ndny ymslo lobv
|
||||
ljzabj tqhves mezh pwn wue dwfqq lynvtt boeknvi xqbd pkud tzlanis
|
||||
lgq qiikzl oihnsr pivtjmu qhic yvmeebg rxu qgl yuxnqse dvu faxqez
|
||||
ldk mlwja vmdqr yzlxiua amlubt ejmzfx nonm zhkxbn gaqbnqq
|
||||
ttc ctt kneknx smtnaft abljip tct
|
||||
uybhbiw zwojzlm cfxoopp abulenj znz zzn opllzmm yufk witwxzp
|
||||
qvkybwi rdbxb qiuizmo fqgne jgot jxz dqhapn
|
||||
vzinf ehaley amnk laheye invfz
|
||||
pedakl ivld agzyhr wmzba tzzzg bazwm wjwgux thrnxkn
|
||||
cmyhae nwfs nfsw kmh pxkaffq
|
||||
vdf szupev tyunp qiiu deevxmy wozvtt nelnr kgdexy gparqj hajavz biizn
|
||||
pwspk skpwp ontbjee pkspw cfbj
|
||||
ihsmh djxtak wkzllao oyr djxtak prc
|
||||
uhvihqq jrgf hdfek pdrfpt tghz gthz awae wcygi wujti svq fhedk
|
||||
gnfhsj odqlt netmsul rviio nkzw nkzw
|
||||
xyvc clxw cyxv lxcw
|
||||
duegck pkviu npwsp zdx wpvn dmxgnv ixv fybs xteru
|
||||
vih kgk hads boaddu daiwo hozoufv nef vtcplc isiw
|
||||
tzqoo dqlgvno jzlay sywx ecej addt ecej addt mnfcu
|
||||
ymgmby zegudpx ipsjai ger wcwjw brzebb
|
||||
eqekxlx itra xekelxq exqkexl
|
||||
rciu ojaa ircu nxjga puvmwou remgu
|
||||
sltth pprimb slnxopq avtir hvpv ppww fhfap wisn kzs jcuuuuf
|
||||
xbppc ydpbq zhjh oym iljzvk vsb
|
||||
ueye shtps uccehi ccheiu dqm yeeu
|
||||
gwywf lcpv qza qza gzuovj jfzffyh oybfxqv
|
||||
aawi ynsvdco azdoz cqr tnyquq xlyvbx eca kcalpes
|
||||
zumgzhy rou kguqa vubw bwgd qprxcg etnbev nqmi
|
||||
fyd tuoz uwclqn cgl lrpkf irz dizv nxze clg jghx jbpt
|
||||
kwuanos eorjr tcahp kwuanos cyrpfji zxayggd kwuanos jkqt qqvbork lizk
|
||||
vtu ovje vhg ovje vtu zcy hrhtr puawfgv
|
||||
bliz exp wot svxv epx
|
||||
jiqgxwj yips hjsatc jgsrno msfp vxvbt bba bqmw xjgpgog
|
||||
vpvypp ggwp wggp gndp hedpse afji hcqgof
|
||||
hxueubt hiynoa qqzaj ohb qway
|
||||
akq nfnes sdrlza nfnes weq
|
||||
udxpdpx gctuv llhxuow rqtetm hdbnpte oebapv civy oeobu ftgivd pykj
|
||||
pbgbvn jgmr xrz dfn gosjobw ndf
|
||||
gnf dtbsnc fwcmml tscdnb fgn qgadusl eifpk
|
||||
vmnv yuxrup qcphi tanc tnca kjrv cphqi
|
||||
hclggs sghglc fgplp odn pfglp emkrulf whwtmbs qnuyg
|
||||
wcxtr ani ain sha hsa zxbkf bzxokat qezo ljqxi xqcwfmd dxo
|
||||
waiq smpbu dbyka uibxjrg nze wiqa rfpts ddjsjv jqqjez bpusm
|
||||
lpcxf vsbj owjwc tuqj vkrgrh jsjdepv oil lxrjox frsxsi clr
|
||||
vzunp prwk nnd rfs vpuzn
|
||||
pqpqv lvsk sqxf nhobsm hakbn ywj
|
||||
xxu uxx szqnmi lnwtmx
|
||||
akq nmlw fupwsth jduvhva
|
||||
nac wwlxqck hpbce vxxqa fyp xvxqa kxwclqw yvlmv bfwi
|
||||
pzxjbj nvwv mdooiez vvftp enjrsck iypu uhru fpx omtd
|
||||
llxgp qwf pwaj cuhb scloot hbcu jgp vjw ooclst
|
||||
sisd akawvzd wvdzkaa gyoij ikt eeeosb jiwiup
|
||||
tche vxj sbctqv jvx gosur usgor ibo yqxo qqgd zspl
|
||||
cidd welisl fxblxqk qxbklfx fbdoqcz glhq iylodvz zvds ghlq
|
||||
cnsa hrxst mrnkqtj bptq jmi cpbcofs kveyeur uzmga modphm rtx kntqjrm
|
||||
dvyup usfaq rtghoec bvcos fqsua zohwwg
|
||||
onf vncybi dlaxni oqyqqkn
|
||||
okfwa qyyx ebnv llql nphq etdt ytgivlo jwgwz kiob
|
||||
ann vqnqvpx wth lpwid bjvzw xpwqxcj azg ioeyzzp onwf
|
||||
smy epzomx xep yid zctvrfj astdj cfg fgc eriuxt
|
||||
rljqgin wzobzrh cuwtx vcsbx tmg tuysq vxipgho
|
||||
ewp rsrnsj wgeyin lrji ddgt utol xxwut fjiwopa
|
||||
upu ftvqbk tfkvbq fdwga rmu puu hbiasjw
|
||||
cfl lmqkb lfc wbtlfi uqsjs ejgmphi tbliwf nzcela gzb
|
||||
zop unwmiu acull mkwh hvruknw rfk mmhaz iqmenq fifino
|
||||
iczua bjut tlgf zicau jtbu
|
||||
mtka ipd mdifj kps
|
||||
irqkysw xfsjl tedx yckkbx iktxb sqxn pbfvubv uudzppz
|
||||
mdrn cihat wcext kufs awwtjok pfjg
|
||||
wdevt tyo zzbp pqlqq wdevt
|
||||
yhatqkv ntuhw tdfd buxazh xbcsv bas gkv rbzi tddf jbj bsa
|
||||
malip hiiy qezz yhii wlfojre
|
||||
zqnfll bssveq lprwbep bhqml tztbt
|
||||
npnxotu yupdytb jptqo klfydfe fpucmfq svxcqr unopxnt
|
||||
gdpz gwj iytiohu efk ctjzf asade abhotq brmhu tbtdur zzksbh
|
||||
kxft klzslf tjdzciy lzslkf
|
||||
ejei ezmemvg xlt zte tbwhz dgnfpao zotck wus uaz gbwbb
|
||||
dgednf vypmbs eiytot empfmny
|
||||
uopmui uehue wdvzt adpfcif mutl ifaztka vydi xumtz orstno
|
||||
dleero olxiq gxnlfm nfmxlg wloeavr olhrwg hrjd yicj ymyeex qav gxyjgfq
|
||||
hevj rqcne zycgb qgqtn rqcne ptfvu yyyu zlm hevj
|
||||
zrkhuh sttnkt hkuzhr vqtu
|
||||
ppsfm kcao qjq dgadglx cxaawjn pbucfu fed qgioarc dfe ricoaqg
|
||||
vmawf oktunea zraoir gkt zraoir jcvkqoq
|
||||
mqgml ecawug ugwace szwul iwbmooj owmiojb
|
||||
auggaw cypcuw npci vuyxijd pofswjx vdkrgx xylk rom ksj
|
||||
qmwx jgsrdj ikva xzxw avik
|
||||
zzhcqu rbg pywjdn wyndpj zchuqz
|
||||
wzd wqycftu yldezp zovuy oydia hovewe
|
||||
kfid qkkk thak qhbf rvzlzvu uuxh pbj hkat gow oeqcw knqqzha
|
||||
sua itv hfpg bdqye bznlrk hfpg bdqye kvir kaai ggtz jqn
|
||||
ulggl guitamm tkpckso fupacz otxtqpd jxnqc
|
||||
ueesb ndyik vjftz jgqqv nrcf
|
||||
krh dqpmsw fybzynl zhjbvkw exefc rhs neq ldprb bhhvxm pjwirun
|
||||
ymavl qwxr yavml wagwc ekokrpq zewppw iumcgin cxdvwx
|
||||
wwdukav kuawvwd kowv dkwvuwa
|
||||
eazot bil tzu vdwwbm fvauwrq
|
||||
esq tixokph yspf ztoxfut lgzush pwv swh pwv auqhuu tixokph
|
||||
pdbeyxi poio mugfkb brwbbx aao uszw fokjeb uswz
|
||||
sbs ryjr ptispi tvnhu htunv vthnu
|
||||
czjmg hbdjhvi jrkoy fpgwc syafy aar kvnq eaecsb wqzpx
|
||||
twtp dvl uvyje qtlzj dsvyr qpjnj eyoigx bhgpccy gwn dtuf
|
||||
mxit xunctu vbyks wmqc jriuupl ybvks uncutx nsoxwrb ykt prc
|
||||
yye mgf uhc irowpc dsdv iwaxod ftavlj dxzp tcch tcch mefz
|
||||
rxe xwrrgl xwrrgl duu rxe xbbgoe
|
||||
ucsz akswcd ojrmqq cox hgfh lxwu ltnnf cenikcp
|
||||
opjhdp svwezr svwezr opjhdp
|
||||
qojlkl ircxqnt utfmdg fcvr vehkcvt ufmzcpv xwlh ddavv xel bwlz fii
|
||||
rzkayeh iursm zhily hdnq fqydfvt uwoy hptpiqu tdqy bgr xdr
|
||||
ymruz umzry hbltwya jhwhzk flh tahylbw bdbaimb qscbp ntkuf
|
||||
uxpato owsqyao vaog oenomkc usrmnc epua vzkppls
|
||||
qxqczbk qyguz alawj xgjawtw wxtjgwa snfcdmz
|
||||
fjfgos rmpd mgs vbk dlls jkljao eoovdfb ucdvaoq qmjmqku ney porr
|
||||
nmcrqz zcoxpk dlnzksd ymh zyg spxss ruyk bychq gsgv eusiuid mnrqcz
|
||||
jbzadnx lzl sdamer okoico frqisrm lxet agriw
|
||||
xceoqr qai vahc jjzifsn exg
|
||||
igjpn wfy ukn aag quro wklsq cjq bgtjrdz gmub wyhh
|
||||
fzlwnm mygfn vkzwvw zvhsex gfki
|
||||
ijvzgai ebmeq wssfmbq uguh sfuutm nwkgmex dxael liakdxs rnf sky yowpxc
|
||||
bjzkyjh fced nji esowk qxsubsk qgtts
|
||||
nkdgo bbjfq fgnxnhd gfjchl jetdb xubsgj eiju ldlm oxsx znft bbqfj
|
||||
xovcnob pxfe pmstes yzkdm iqlvha nmcziix fexp ivqalh rxecqps
|
||||
xpyew xudfud wwqe qhfjlcu epv fnrbgyv ihli qngtx yjlfg ozqbzn esp
|
||||
timl gcohx vqzic gzm shwlkkv icqzv urchuc
|
||||
xpqq gaqzwo cci dowahsr gaqzwo
|
||||
jjsagdl umbpxre kyre zvaryft tmw pxpnjy
|
||||
aqovcz nunq nnuq xjrvvh autjmit jiatumt
|
||||
elg lps lge zjjot hwz tmqrup xaxxmo zlbzp uftd fukdad kvpymsm
|
||||
iokwzal ywti zbdmzbu lprywe wbgbwza ypogbga kzliwao wstqi eqm keaeaj gbabwwz
|
||||
lwfpk mhufe eddzgd ljxyqy vhzkct uemhf
|
||||
lwqil fzugdo faq feppo usl llwqi
|
||||
nje hthr ropq qvcepu bexszfj avmzjvv zajmvvv fhcd xnc cnx qnuaux
|
||||
kvksn dphbyz nsx wrcc ccrw
|
||||
nzpa pzzunfv ygzjy gxrrtcj hrt trh pwxpg yifgjmo fnupzzv wbzx
|
||||
aepti rbojui ypvhe ubojri tcema aan dntkw qjx bfvmyos tcm hvoqytn
|
||||
qpwq exu jvsiwj gsw avr vbemldy
|
||||
xsbzpf xbzyvx xax sxh vpxt gccy xxa zhgbwoa hwwxoky fhvdxfc pvtx
|
||||
pnsa ovtjolz tyutl eyjjzt jvtoolz owbypvr tytlu ewtzgec
|
||||
cyg dwwk eihsp aeuk bbnay aluwyz hdmv uaek mwt ihpse wjhnkeg
|
||||
fhzx vjetz vjub tejvz
|
||||
ewwyb jidhu pyvyenn igtnyd tiwr akwkkbi myz xxjwb jjrdeg
|
||||
jbkuw kwir rkiw ubwkj
|
||||
bltffuw lftwufb hhsh wfbtulf nrxaa rlszi toijxnz czlci
|
||||
bqrm pga zgblgcw pgwhhn lcgzwbg bcgzlgw yqb
|
||||
mhjj vjoa gnjlc kclcr ito ofksy giavy fpqeioj
|
||||
bkiqmif izidbui sttxxi bswhkxp sduuw
|
||||
mjgnvw mjgwnv ojzyuv gvj
|
||||
qxn kkhc whd fgwk auzugg augzgu kqfov wfgk
|
||||
spdxbnu xpfofsb bpfsoxf ahjywql spbxoff
|
||||
bwqxhlm wbqlxmh kqgpl fyzgf guhkvgx ovk qhmp gnrmu wvd wedj
|
||||
vvwf hcnc vvwsngj qedzoxm hcnc qedzoxm kjthdi cbwqep qtvu
|
||||
gio iqklmro noqablo bab jiqc rwebyg rqkloim wzmgs uunl amqs iwj
|
||||
snxj szobqt zcgvwv wiyqknu
|
||||
uto jteikwd cew gqsks hmvjtcy sach
|
||||
zpgl qnkoex amhufmr figns upv xezrl rjleak nwrna
|
||||
pzkvrdz dtonazj gtr gfxucuf lstjl lsjtl rgkope kzpdzrv lyptn zfxjys ttk
|
||||
ddxgm lumlgki jhv doft kok swy ckds swy ddxgm lbfbdv
|
||||
qfs rcufzgz iaiqw qfs qfs
|
||||
nvkbo sgv mquwb ritpye nbkov poex hraorm qrrr qdt qefl
|
||||
irxannd fiud ehyb ggx plqg pvvn uuptop tcvbm abuf bcfnmw
|
||||
qwya ukblz epmbfr vmlon yqwa
|
||||
hlo mmv vmm mvm
|
||||
svzpxun yugbbe sbbpxs dmy xspbbs zhpovyf fyovhzp cpbt pke
|
||||
zgk gft zybs zrgcoo ypu bue htgo
|
||||
xnesq srsx pkzaoh cfqzugh
|
||||
lntd nvxetbv clykjpd svmibpx evxtvnb yldkpjc
|
||||
jsqq tzwak hephg eqwczd ioisa yim tmdifn mceip
|
||||
kuwqz wzkqu zwchmj lfec uexne iztp llityt
|
||||
kvamkpc pvbryqh ion cwizjde gln kcpvmak pzzlw gnl
|
||||
ydeqf bfaab sydqhbp smsxdjr pynrs cqymt
|
||||
onb eiab bno nob
|
||||
mqslq scnelxv hyllrf scnelxv mqslq wmnbk
|
||||
pttu kubby lgop bbyuk gsk skg ikktlbb inbyvz
|
||||
xznvl zwtdj vbxdyd clhw
|
||||
hgy zudelp ickc drfjgn iyws xhc
|
||||
zzv wik iorhat qkb kjb lykdz vrce yjsjwj
|
||||
gyw xzgbi efus uuy
|
||||
hwcy ujdun bjjuvd jbdvju onnk xeyy mmp onkn qyzl
|
||||
jwfm ptjwrbl hhuv uolz adyweh qpj wxyogp igvnojq jmfw pqs fsnirby
|
||||
36
py/2017/04/solve.py
Normal file
36
py/2017/04/solve.py
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
import collections
|
||||
import sys
|
||||
|
||||
# PART 1
|
||||
|
||||
def load_phrases(filename):
|
||||
phrases = []
|
||||
with open(filename, "r") as f:
|
||||
for line in f:
|
||||
phrase = line[:-1].split(" ")
|
||||
phrases.append(phrase)
|
||||
return phrases
|
||||
|
||||
def is_valid(phrase):
|
||||
return len(phrase) == len(set(phrase))
|
||||
|
||||
def count(what, when):
|
||||
return len(list(filter(when, what)))
|
||||
|
||||
# PART 2
|
||||
|
||||
def is_valid_2(phrase):
|
||||
phrase = ["".join(sorted(word)) for word in phrase]
|
||||
return len(phrase) == len(set(phrase))
|
||||
|
||||
def main(filename):
|
||||
print(f"Solutions for {filename}")
|
||||
phrases = load_phrases(filename)
|
||||
correct = count(phrases, is_valid)
|
||||
print(f"Part 1: {correct}")
|
||||
correct_2 = count(phrases, is_valid_2)
|
||||
print(f"Part 2: {correct_2}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
1035
py/2017/05/input.txt
Normal file
1035
py/2017/05/input.txt
Normal file
File diff suppressed because it is too large
Load diff
56
py/2017/05/solve.py
Normal file
56
py/2017/05/solve.py
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
import sys
|
||||
|
||||
# PART 1
|
||||
|
||||
def load_jumps(filename):
|
||||
jumps = []
|
||||
with open(filename, "r") as f:
|
||||
for line in f:
|
||||
jumps.append(int(line[:-1]))
|
||||
return jumps
|
||||
|
||||
def perform_jumps(jumps):
|
||||
jumps = jumps.copy()
|
||||
pos = 0
|
||||
steps = 0
|
||||
|
||||
while 0 <= pos < len(jumps):
|
||||
next_pos = pos + jumps[pos]
|
||||
jumps[pos] += 1
|
||||
pos = next_pos
|
||||
steps += 1
|
||||
|
||||
return steps
|
||||
|
||||
# PART 2
|
||||
|
||||
def perform_jumps_2(jumps):
|
||||
jumps = jumps.copy()
|
||||
pos = 0
|
||||
steps = 0
|
||||
|
||||
while 0 <= pos < len(jumps):
|
||||
next_pos = pos + jumps[pos]
|
||||
if jumps[pos] >= 3:
|
||||
jumps[pos] -= 1
|
||||
else:
|
||||
jumps[pos] += 1
|
||||
pos = next_pos
|
||||
steps += 1
|
||||
|
||||
return steps
|
||||
|
||||
def main(filename):
|
||||
jumps = load_jumps(filename)
|
||||
print("Previously calculated")
|
||||
print("Part 1: 343467")
|
||||
print("Part 2: 24774780")
|
||||
print(f"Solutions for {filename}")
|
||||
steps = perform_jumps(jumps)
|
||||
print(f"Part 1: {steps}")
|
||||
steps_2 = perform_jumps_2(jumps)
|
||||
print(f"Part 2: {steps_2}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
5
py/2017/05/test_input.txt
Normal file
5
py/2017/05/test_input.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
0
|
||||
3
|
||||
0
|
||||
1
|
||||
-3
|
||||
1
py/2017/06/input.txt
Normal file
1
py/2017/06/input.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
0 5 10 0 11 14 13 4 11 8 8 7 1 4 12 11
|
||||
49
py/2017/06/solve.py
Normal file
49
py/2017/06/solve.py
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
import sys
|
||||
|
||||
# PART 1
|
||||
|
||||
def load_buckets(filename):
|
||||
with open(filename, "r") as f:
|
||||
return tuple(map(int, f.read()[:-1].split("\t")))
|
||||
|
||||
def redistribute(buckets):
|
||||
l = list(buckets)
|
||||
i = l.index(max(l))
|
||||
n = l[i]
|
||||
l[i] = 0
|
||||
|
||||
while n > 0:
|
||||
i = (i + 1) % len(l)
|
||||
l[i] += 1
|
||||
n -= 1
|
||||
|
||||
return tuple(l)
|
||||
|
||||
def find_repeat(buckets):
|
||||
cycles = 0
|
||||
states = {buckets: 0}
|
||||
while True:
|
||||
buckets = redistribute(buckets)
|
||||
cycles += 1
|
||||
if buckets in states:
|
||||
return cycles, states[buckets]
|
||||
else:
|
||||
states[buckets] = cycles
|
||||
|
||||
# PART 2
|
||||
|
||||
def loop_cycles(buckets):
|
||||
cycles, start_cycle = find_repeat(buckets)
|
||||
return cycles - start_cycle
|
||||
|
||||
def main(filename):
|
||||
print(f"Solutions for {filename}")
|
||||
buckets = load_buckets(filename)
|
||||
cycles, _ = find_repeat(buckets)
|
||||
print(f"Part 1: {cycles}")
|
||||
cycles_2 = loop_cycles(buckets)
|
||||
print(f"Part 2: {cycles_2}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
1
py/2017/06/test_input.txt
Normal file
1
py/2017/06/test_input.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
0 2 7 0
|
||||
1416
py/2017/07/input.txt
Normal file
1416
py/2017/07/input.txt
Normal file
File diff suppressed because it is too large
Load diff
116
py/2017/07/solve.py
Normal file
116
py/2017/07/solve.py
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
import re
|
||||
import sys
|
||||
|
||||
# PART 1
|
||||
|
||||
def any_key(d):
|
||||
return list(d)[0]
|
||||
|
||||
class Tower:
|
||||
PROG_RE = r"(\S+) \((\d+)\)( -> (.*))?\n"
|
||||
|
||||
def __init__(self, weight_of, children_of, parent_of):
|
||||
self.wo = weight_of
|
||||
self.co = children_of
|
||||
self.po = parent_of
|
||||
|
||||
@classmethod
|
||||
def from_file(cls, filename):
|
||||
weight_of = {} # name -> weight
|
||||
children_of = {} # name -> children
|
||||
parent_of = {} # name -> parent
|
||||
|
||||
with open(filename, "r") as f:
|
||||
for line in f:
|
||||
match = re.fullmatch(cls.PROG_RE, line)
|
||||
|
||||
name = match.group(1)
|
||||
weight = int(match.group(2))
|
||||
if match.group(4):
|
||||
children = match.group(4).split(", ")
|
||||
else:
|
||||
children = []
|
||||
|
||||
weight_of[name] = weight
|
||||
children_of[name] = children
|
||||
for child in children:
|
||||
parent_of[child] = name
|
||||
|
||||
return cls(weight_of, children_of, parent_of)
|
||||
|
||||
def find_root(self):
|
||||
program = any_key(self.po)
|
||||
while program in self.po:
|
||||
program = self.po[program]
|
||||
return program
|
||||
|
||||
# PART 2
|
||||
|
||||
# This part is implemented really shitty. It makes a lot of assumptions and
|
||||
# will probably break the second the input changes or you're just unlucky.
|
||||
# For my particular input, it worked though.
|
||||
#
|
||||
# The basic idea of the algorithm is:
|
||||
#
|
||||
# 1. Find the plate where one branch has a different weight from all the others
|
||||
# 2. Find out which branch weight is wrong and whic weights are correct
|
||||
# 3. Fix the branch's root program's weight
|
||||
|
||||
def weight(self, name):
|
||||
return self.wo[name] + sum(self.weight(c) for c in self.co[name])
|
||||
|
||||
def balanced(self, name):
|
||||
cs = self.co[name]
|
||||
ws = [self.weight(c) for c in cs]
|
||||
return min(ws) == max(ws)
|
||||
|
||||
def unbalanced_child(self, name):
|
||||
for c in self.co[name]:
|
||||
if not self.balanced(c):
|
||||
return c
|
||||
|
||||
def find_imbalance(self, name):
|
||||
c = self.unbalanced_child(name)
|
||||
if c is None:
|
||||
weights = [(c, self.weight(c)) for c in self.co[name]]
|
||||
return weights
|
||||
else:
|
||||
return self.find_imbalance(c)
|
||||
|
||||
def fix_imbalance(self, weights):
|
||||
# Which weight do we need to correct?
|
||||
ws = [weight for (c, weight) in weights]
|
||||
if ws.count(max(ws)) < ws.count(min(ws)):
|
||||
weight = max(ws)
|
||||
other = min(ws)
|
||||
else:
|
||||
weight = min(ws)
|
||||
other = max(ws)
|
||||
|
||||
# Wich program has that weight?
|
||||
prog = None
|
||||
for (p, w) in weights:
|
||||
if w == weight:
|
||||
prog = p
|
||||
break
|
||||
|
||||
# w_prog_soll - w_prog = w_soll - w_branch
|
||||
# w_prog_soll = w_soll - w_branch + w_prog
|
||||
# w_prog_soll = w_soll - (w_branch - w_prog)
|
||||
w_prog = self.wo[prog]
|
||||
w_soll = other
|
||||
w_branch = self.weight(prog)
|
||||
return w_soll - (w_branch - w_prog)
|
||||
|
||||
def main(filename):
|
||||
print(f"Solutions for {filename}")
|
||||
tower = Tower.from_file(filename)
|
||||
root = tower.find_root()
|
||||
print(f"Part 1: {root}")
|
||||
weights = tower.find_imbalance(root)
|
||||
fixed = tower.fix_imbalance(weights)
|
||||
print(f"Part 2: {fixed}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
13
py/2017/07/test_input.txt
Normal file
13
py/2017/07/test_input.txt
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
pbga (66)
|
||||
xhth (57)
|
||||
ebii (61)
|
||||
havc (66)
|
||||
ktlj (57)
|
||||
fwft (72) -> ktlj, cntj, xhth
|
||||
qoyq (66)
|
||||
padx (45) -> pbga, havc, qoyq
|
||||
tknk (41) -> ugml, padx, fwft
|
||||
jptl (61)
|
||||
ugml (68) -> gyxo, ebii, jptl
|
||||
gyxo (61)
|
||||
cntj (57)
|
||||
1000
py/2017/08/input.txt
Normal file
1000
py/2017/08/input.txt
Normal file
File diff suppressed because it is too large
Load diff
96
py/2017/08/solve.py
Normal file
96
py/2017/08/solve.py
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
import collections
|
||||
import re
|
||||
import sys
|
||||
|
||||
# PART 1
|
||||
|
||||
class Instruction:
|
||||
INSTRUCTION_RE = r"(\S+) (inc|dec) (-?\d+) if (\S+) (<|<=|>|>=|==|!=) (-?\d+)\n"
|
||||
|
||||
def __init__(self, register, mode, amount, c_register, c_operator, c_amount):
|
||||
self.register = register
|
||||
self.mode = mode
|
||||
self.amount = amount
|
||||
self.c_register = c_register
|
||||
self.c_operator = c_operator
|
||||
self.c_amount = c_amount
|
||||
|
||||
@classmethod
|
||||
def from_line(cls, line):
|
||||
match = re.fullmatch(cls.INSTRUCTION_RE, line)
|
||||
|
||||
register = match.group(1)
|
||||
mode = match.group(2)
|
||||
amount = int(match.group(3))
|
||||
c_register = match.group(4)
|
||||
c_operator = match.group(5)
|
||||
c_amount = int(match.group(6))
|
||||
|
||||
return cls(register, mode, amount, c_register, c_operator, c_amount)
|
||||
|
||||
def compare_to(self, n):
|
||||
if self.c_operator == "<":
|
||||
return n < self.c_amount
|
||||
elif self.c_operator == "<=":
|
||||
return n <= self.c_amount
|
||||
elif self.c_operator == ">":
|
||||
return n > self.c_amount
|
||||
elif self.c_operator == ">=":
|
||||
return n >= self.c_amount
|
||||
elif self.c_operator == "==":
|
||||
return n == self.c_amount
|
||||
elif self.c_operator == "!=":
|
||||
return n != self.c_amount
|
||||
|
||||
def total(self):
|
||||
if self.mode == "inc":
|
||||
return self.amount
|
||||
elif self.mode == "dec":
|
||||
return -self.amount
|
||||
|
||||
class Machine:
|
||||
def __init__(self, instructions):
|
||||
self.instructions = instructions
|
||||
self.reset()
|
||||
|
||||
def reset(self):
|
||||
self.registers = collections.defaultdict(lambda: 0)
|
||||
self.max_all_time = 0
|
||||
|
||||
@classmethod
|
||||
def from_file(cls, filename):
|
||||
instructions = []
|
||||
|
||||
with open(filename, "r") as f:
|
||||
for line in f:
|
||||
instructions.append(Instruction.from_line(line))
|
||||
|
||||
return cls(instructions)
|
||||
|
||||
def execute_instruction(self, i):
|
||||
c_amount = self.registers.get(i.c_register, 0)
|
||||
if i.compare_to(c_amount):
|
||||
self.registers[i.register] += i.total()
|
||||
self.max_all_time = max(self.max_all_time, self.registers[i.register])
|
||||
|
||||
def execute(self):
|
||||
for i in self.instructions:
|
||||
self.execute_instruction(i)
|
||||
|
||||
def max_register(self):
|
||||
return max(self.registers.values())
|
||||
|
||||
# PART 2
|
||||
|
||||
def main(filename):
|
||||
print(f"Solutions for {filename}")
|
||||
machine = Machine.from_file(filename)
|
||||
machine.reset()
|
||||
machine.execute()
|
||||
max_register = machine.max_register()
|
||||
print(f"Part 1: {max_register}")
|
||||
print(f"Part 2: {machine.max_all_time}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
4
py/2017/08/test_input.txt
Normal file
4
py/2017/08/test_input.txt
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
b inc 5 if a > 1
|
||||
a inc 1 if b < 5
|
||||
c dec -10 if a >= 1
|
||||
c inc -20 if c == 10
|
||||
1
py/2017/09/input.txt
Normal file
1
py/2017/09/input.txt
Normal file
File diff suppressed because one or more lines are too long
95
py/2017/09/solve.py
Normal file
95
py/2017/09/solve.py
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
import sys
|
||||
|
||||
# PART 1
|
||||
|
||||
class Stream:
|
||||
def __init__(self, string):
|
||||
self.content = list(string)
|
||||
self.content.reverse()
|
||||
|
||||
def peek(self):
|
||||
return self.content[-1]
|
||||
|
||||
def pop(self):
|
||||
return self.content.pop()
|
||||
|
||||
def load_groups(filename):
|
||||
groups = []
|
||||
with open(filename, "r") as f:
|
||||
for line in f:
|
||||
stream = Stream(line[:-1])
|
||||
group, garbage = parse_group(stream)
|
||||
groups.append((group, garbage))
|
||||
return groups
|
||||
|
||||
def parse_group(stream):
|
||||
assert stream.pop() == "{"
|
||||
|
||||
if stream.peek() == "}":
|
||||
assert stream.pop() == "}"
|
||||
return [], 0
|
||||
|
||||
groups = []
|
||||
garbage = 0
|
||||
|
||||
while True:
|
||||
# Determine which sub-parser to use
|
||||
if stream.peek() == "{":
|
||||
group, more_garbage = parse_group(stream)
|
||||
groups.append(group)
|
||||
garbage += more_garbage
|
||||
elif stream.peek() == "<":
|
||||
garbage += parse_garbage(stream)
|
||||
else:
|
||||
raise Exception("Incorrectly formatted input")
|
||||
|
||||
# Determine whether to stop parsing
|
||||
if stream.peek() == "}":
|
||||
break
|
||||
elif stream.peek() == ",":
|
||||
assert stream.pop() == ","
|
||||
else:
|
||||
raise Exception("Incorrectly formatted input")
|
||||
|
||||
assert stream.pop() == "}"
|
||||
return groups, garbage
|
||||
|
||||
def parse_garbage(stream):
|
||||
assert stream.pop() == "<"
|
||||
|
||||
escaped = False
|
||||
garbage = 0
|
||||
|
||||
while True:
|
||||
if escaped:
|
||||
stream.pop()
|
||||
escaped = False
|
||||
elif stream.peek() == "!":
|
||||
assert stream.pop() == "!"
|
||||
escaped = True
|
||||
elif stream.peek() == ">":
|
||||
break
|
||||
else:
|
||||
stream.pop()
|
||||
garbage += 1
|
||||
|
||||
assert stream.pop() == ">"
|
||||
|
||||
return garbage
|
||||
|
||||
def group_score(group, level=1):
|
||||
return sum(group_score(subgroup, level + 1) for subgroup in group) + level
|
||||
|
||||
# PART 2
|
||||
|
||||
def main(filename):
|
||||
print(f"Solutions for {filename}")
|
||||
groups = load_groups(filename)
|
||||
for group, garbage in groups:
|
||||
score = group_score(group)
|
||||
print(f"Part 1: {score}")
|
||||
print(f"Part 2: {garbage}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
965
py/2018/01/input.txt
Normal file
965
py/2018/01/input.txt
Normal file
|
|
@ -0,0 +1,965 @@
|
|||
-4
|
||||
+7
|
||||
+3
|
||||
+1
|
||||
-9
|
||||
-14
|
||||
+18
|
||||
-7
|
||||
-5
|
||||
-18
|
||||
+11
|
||||
-8
|
||||
+17
|
||||
-16
|
||||
-19
|
||||
+14
|
||||
+11
|
||||
-8
|
||||
+14
|
||||
+22
|
||||
+13
|
||||
+14
|
||||
-18
|
||||
+8
|
||||
-16
|
||||
+10
|
||||
-12
|
||||
+9
|
||||
-19
|
||||
-12
|
||||
-6
|
||||
+10
|
||||
+2
|
||||
-14
|
||||
+18
|
||||
+17
|
||||
+11
|
||||
-5
|
||||
+6
|
||||
+9
|
||||
+16
|
||||
-3
|
||||
+12
|
||||
+5
|
||||
+15
|
||||
+7
|
||||
+2
|
||||
-5
|
||||
-13
|
||||
+7
|
||||
+19
|
||||
+10
|
||||
-2
|
||||
+3
|
||||
-5
|
||||
-7
|
||||
-11
|
||||
+14
|
||||
+13
|
||||
+3
|
||||
+11
|
||||
+15
|
||||
-19
|
||||
-1
|
||||
-5
|
||||
+15
|
||||
+14
|
||||
-16
|
||||
+8
|
||||
+9
|
||||
-11
|
||||
-7
|
||||
+15
|
||||
+4
|
||||
+7
|
||||
+11
|
||||
-2
|
||||
+17
|
||||
-8
|
||||
-14
|
||||
+3
|
||||
-4
|
||||
+18
|
||||
+1
|
||||
+6
|
||||
-5
|
||||
+17
|
||||
+13
|
||||
-14
|
||||
-15
|
||||
-9
|
||||
+16
|
||||
+14
|
||||
+12
|
||||
-14
|
||||
-14
|
||||
+4
|
||||
-19
|
||||
+11
|
||||
+5
|
||||
+7
|
||||
+1
|
||||
+13
|
||||
-7
|
||||
+19
|
||||
+12
|
||||
+10
|
||||
+13
|
||||
-3
|
||||
+6
|
||||
-17
|
||||
+13
|
||||
-8
|
||||
+16
|
||||
+4
|
||||
-15
|
||||
+14
|
||||
-1
|
||||
+15
|
||||
-19
|
||||
+15
|
||||
-19
|
||||
+17
|
||||
-6
|
||||
+11
|
||||
-10
|
||||
+9
|
||||
+17
|
||||
+6
|
||||
+15
|
||||
-18
|
||||
+2
|
||||
-8
|
||||
+11
|
||||
-6
|
||||
-7
|
||||
+9
|
||||
+16
|
||||
-13
|
||||
-18
|
||||
-1
|
||||
+5
|
||||
-16
|
||||
+9
|
||||
-6
|
||||
+11
|
||||
-16
|
||||
+3
|
||||
-9
|
||||
+18
|
||||
+5
|
||||
+7
|
||||
+15
|
||||
+12
|
||||
+19
|
||||
-17
|
||||
-4
|
||||
-15
|
||||
-13
|
||||
+5
|
||||
-11
|
||||
+25
|
||||
+14
|
||||
+5
|
||||
+5
|
||||
+4
|
||||
-2
|
||||
-4
|
||||
-14
|
||||
+7
|
||||
+16
|
||||
+6
|
||||
+11
|
||||
-8
|
||||
+13
|
||||
+8
|
||||
+3
|
||||
-12
|
||||
+8
|
||||
+7
|
||||
-5
|
||||
+14
|
||||
+5
|
||||
+8
|
||||
-3
|
||||
-14
|
||||
-14
|
||||
-7
|
||||
-18
|
||||
-12
|
||||
+18
|
||||
+4
|
||||
-14
|
||||
-17
|
||||
-17
|
||||
+12
|
||||
-9
|
||||
+3
|
||||
-18
|
||||
+27
|
||||
+26
|
||||
-9
|
||||
-7
|
||||
+12
|
||||
+9
|
||||
+6
|
||||
+7
|
||||
+1
|
||||
-13
|
||||
+4
|
||||
-8
|
||||
-3
|
||||
-12
|
||||
+21
|
||||
+13
|
||||
+6
|
||||
+7
|
||||
+9
|
||||
+18
|
||||
-17
|
||||
+4
|
||||
+10
|
||||
-11
|
||||
-17
|
||||
-16
|
||||
+18
|
||||
+9
|
||||
-2
|
||||
+3
|
||||
-13
|
||||
-9
|
||||
+3
|
||||
-10
|
||||
-15
|
||||
+11
|
||||
+24
|
||||
+2
|
||||
+16
|
||||
+11
|
||||
+18
|
||||
+14
|
||||
-5
|
||||
-3
|
||||
+18
|
||||
+4
|
||||
+4
|
||||
+5
|
||||
-2
|
||||
-10
|
||||
+8
|
||||
+19
|
||||
+4
|
||||
+14
|
||||
+8
|
||||
+1
|
||||
-14
|
||||
-7
|
||||
+15
|
||||
-4
|
||||
-5
|
||||
+20
|
||||
+15
|
||||
+2
|
||||
-14
|
||||
-12
|
||||
-16
|
||||
+4
|
||||
-9
|
||||
+18
|
||||
+16
|
||||
+7
|
||||
+7
|
||||
+10
|
||||
+17
|
||||
-18
|
||||
+3
|
||||
+10
|
||||
-11
|
||||
-21
|
||||
-9
|
||||
-2
|
||||
+12
|
||||
-17
|
||||
+13
|
||||
+19
|
||||
-18
|
||||
-4
|
||||
-19
|
||||
+10
|
||||
-11
|
||||
-18
|
||||
-4
|
||||
+6
|
||||
+1
|
||||
+2
|
||||
-4
|
||||
-28
|
||||
-28
|
||||
-19
|
||||
+13
|
||||
+18
|
||||
-15
|
||||
-6
|
||||
+5
|
||||
+9
|
||||
-26
|
||||
-6
|
||||
+19
|
||||
-6
|
||||
+1
|
||||
-11
|
||||
-11
|
||||
+25
|
||||
-26
|
||||
+19
|
||||
+10
|
||||
+2
|
||||
+9
|
||||
-22
|
||||
-66
|
||||
-8
|
||||
+1
|
||||
-14
|
||||
-2
|
||||
-5
|
||||
+19
|
||||
-55
|
||||
+6
|
||||
-19
|
||||
-4
|
||||
-13
|
||||
+21
|
||||
-13
|
||||
-3
|
||||
-10
|
||||
-7
|
||||
+15
|
||||
-5
|
||||
-4
|
||||
-10
|
||||
+5
|
||||
-11
|
||||
-3
|
||||
+16
|
||||
+6
|
||||
+10
|
||||
+3
|
||||
-1
|
||||
-5
|
||||
-21
|
||||
-6
|
||||
+9
|
||||
-4
|
||||
-6
|
||||
-17
|
||||
-10
|
||||
+14
|
||||
-11
|
||||
+17
|
||||
+16
|
||||
-19
|
||||
+6
|
||||
+1
|
||||
-2
|
||||
+8
|
||||
-15
|
||||
+17
|
||||
-14
|
||||
-16
|
||||
+7
|
||||
-5
|
||||
-24
|
||||
-7
|
||||
-20
|
||||
+5
|
||||
-4
|
||||
+11
|
||||
-1
|
||||
+12
|
||||
-9
|
||||
-11
|
||||
-9
|
||||
-9
|
||||
-11
|
||||
-3
|
||||
-15
|
||||
-21
|
||||
-12
|
||||
+21
|
||||
+3
|
||||
+12
|
||||
+2
|
||||
+2
|
||||
+21
|
||||
-9
|
||||
+20
|
||||
+4
|
||||
+11
|
||||
-1
|
||||
+4
|
||||
-20
|
||||
+4
|
||||
+19
|
||||
+12
|
||||
+4
|
||||
-15
|
||||
+14
|
||||
+11
|
||||
+21
|
||||
-29
|
||||
-53
|
||||
+10
|
||||
-11
|
||||
+8
|
||||
-10
|
||||
-11
|
||||
+12
|
||||
-17
|
||||
-25
|
||||
-35
|
||||
+1
|
||||
-2
|
||||
+14
|
||||
+36
|
||||
+70
|
||||
+14
|
||||
+50
|
||||
+3
|
||||
+6
|
||||
+23
|
||||
-20
|
||||
-6
|
||||
-66
|
||||
-39
|
||||
-14
|
||||
+191
|
||||
-17
|
||||
+24
|
||||
+155
|
||||
-6
|
||||
+61
|
||||
+59623
|
||||
-4
|
||||
+7
|
||||
+19
|
||||
+5
|
||||
-1
|
||||
-8
|
||||
-8
|
||||
-15
|
||||
+16
|
||||
+8
|
||||
-7
|
||||
+19
|
||||
-3
|
||||
+14
|
||||
+14
|
||||
+6
|
||||
+17
|
||||
-15
|
||||
+3
|
||||
+11
|
||||
+12
|
||||
-5
|
||||
+19
|
||||
+2
|
||||
+1
|
||||
+16
|
||||
+13
|
||||
+6
|
||||
+1
|
||||
+18
|
||||
+16
|
||||
-4
|
||||
+11
|
||||
-1
|
||||
+19
|
||||
-7
|
||||
-19
|
||||
-10
|
||||
+19
|
||||
+7
|
||||
+4
|
||||
-17
|
||||
-4
|
||||
-4
|
||||
+9
|
||||
-8
|
||||
-17
|
||||
-9
|
||||
-14
|
||||
+16
|
||||
+4
|
||||
-19
|
||||
+11
|
||||
+1
|
||||
+2
|
||||
-19
|
||||
+7
|
||||
-8
|
||||
-7
|
||||
-18
|
||||
-6
|
||||
+4
|
||||
-5
|
||||
-15
|
||||
+2
|
||||
+7
|
||||
-18
|
||||
-8
|
||||
+14
|
||||
-20
|
||||
+1
|
||||
+17
|
||||
-2
|
||||
+3
|
||||
+17
|
||||
-1
|
||||
+7
|
||||
+10
|
||||
+10
|
||||
-1
|
||||
+19
|
||||
+3
|
||||
-16
|
||||
-10
|
||||
+1
|
||||
+10
|
||||
+6
|
||||
+20
|
||||
-17
|
||||
+19
|
||||
+14
|
||||
-18
|
||||
-11
|
||||
+22
|
||||
-3
|
||||
-16
|
||||
+15
|
||||
+12
|
||||
+14
|
||||
-12
|
||||
-1
|
||||
+22
|
||||
+10
|
||||
-7
|
||||
-8
|
||||
+2
|
||||
-1
|
||||
-6
|
||||
-7
|
||||
+19
|
||||
+7
|
||||
+12
|
||||
-14
|
||||
+18
|
||||
+7
|
||||
-17
|
||||
-9
|
||||
+10
|
||||
+14
|
||||
-1
|
||||
-17
|
||||
+8
|
||||
+4
|
||||
+2
|
||||
+16
|
||||
+3
|
||||
+16
|
||||
+4
|
||||
-2
|
||||
+18
|
||||
-19
|
||||
-15
|
||||
-1
|
||||
-10
|
||||
-5
|
||||
+8
|
||||
-4
|
||||
-13
|
||||
+18
|
||||
+15
|
||||
-5
|
||||
+10
|
||||
-6
|
||||
+13
|
||||
-11
|
||||
+12
|
||||
+2
|
||||
+4
|
||||
-2
|
||||
-13
|
||||
-7
|
||||
-11
|
||||
-13
|
||||
-5
|
||||
+4
|
||||
+10
|
||||
+12
|
||||
-15
|
||||
-16
|
||||
-10
|
||||
-9
|
||||
-27
|
||||
-4
|
||||
-9
|
||||
-21
|
||||
-13
|
||||
-4
|
||||
-1
|
||||
-10
|
||||
-10
|
||||
+14
|
||||
+12
|
||||
-29
|
||||
-16
|
||||
-12
|
||||
-1
|
||||
-12
|
||||
+18
|
||||
-20
|
||||
-11
|
||||
-5
|
||||
+12
|
||||
-2
|
||||
-6
|
||||
+18
|
||||
-2
|
||||
-1
|
||||
+6
|
||||
-18
|
||||
-12
|
||||
+20
|
||||
-4
|
||||
+6
|
||||
-14
|
||||
+6
|
||||
-17
|
||||
-6
|
||||
+8
|
||||
-14
|
||||
-18
|
||||
-4
|
||||
-8
|
||||
+2
|
||||
+7
|
||||
+20
|
||||
-10
|
||||
-15
|
||||
+18
|
||||
-12
|
||||
+13
|
||||
-18
|
||||
+9
|
||||
+11
|
||||
-19
|
||||
+9
|
||||
+3
|
||||
+10
|
||||
-17
|
||||
-16
|
||||
-4
|
||||
-11
|
||||
-5
|
||||
-9
|
||||
-12
|
||||
+4
|
||||
-13
|
||||
+14
|
||||
+13
|
||||
-17
|
||||
-21
|
||||
+7
|
||||
+19
|
||||
+10
|
||||
-6
|
||||
+9
|
||||
+13
|
||||
-5
|
||||
-13
|
||||
+19
|
||||
+7
|
||||
-4
|
||||
-6
|
||||
+17
|
||||
-16
|
||||
-8
|
||||
-14
|
||||
-11
|
||||
-3
|
||||
-16
|
||||
+10
|
||||
-1
|
||||
-2
|
||||
-19
|
||||
+3
|
||||
+13
|
||||
-15
|
||||
+8
|
||||
+6
|
||||
-19
|
||||
+2
|
||||
-12
|
||||
-6
|
||||
-19
|
||||
+17
|
||||
-8
|
||||
+11
|
||||
+2
|
||||
-18
|
||||
-6
|
||||
-10
|
||||
+7
|
||||
+4
|
||||
+12
|
||||
-3
|
||||
+8
|
||||
+7
|
||||
+18
|
||||
-8
|
||||
+10
|
||||
-15
|
||||
-2
|
||||
-12
|
||||
+20
|
||||
-13
|
||||
-16
|
||||
-11
|
||||
+9
|
||||
-1
|
||||
+11
|
||||
+19
|
||||
-5
|
||||
+20
|
||||
-2
|
||||
+17
|
||||
+17
|
||||
+17
|
||||
+18
|
||||
+17
|
||||
+25
|
||||
-31
|
||||
+20
|
||||
-7
|
||||
+21
|
||||
+15
|
||||
+15
|
||||
-13
|
||||
+18
|
||||
+14
|
||||
+28
|
||||
-10
|
||||
+16
|
||||
-17
|
||||
-16
|
||||
-2
|
||||
-7
|
||||
-8
|
||||
-23
|
||||
-16
|
||||
+11
|
||||
-20
|
||||
+11
|
||||
-3
|
||||
-31
|
||||
-4
|
||||
-20
|
||||
+18
|
||||
-8
|
||||
+3
|
||||
+6
|
||||
-15
|
||||
-35
|
||||
+19
|
||||
+2
|
||||
-4
|
||||
+9
|
||||
-12
|
||||
-15
|
||||
-9
|
||||
-3
|
||||
+15
|
||||
+38
|
||||
-6
|
||||
+11
|
||||
-36
|
||||
-11
|
||||
-14
|
||||
-1
|
||||
-5
|
||||
+2
|
||||
+23
|
||||
-12
|
||||
-33
|
||||
-18
|
||||
+1
|
||||
+5
|
||||
+3
|
||||
+16
|
||||
+7
|
||||
-28
|
||||
+8
|
||||
-22
|
||||
-7
|
||||
-18
|
||||
-17
|
||||
+16
|
||||
+11
|
||||
+16
|
||||
+4
|
||||
-15
|
||||
+7
|
||||
-10
|
||||
-7
|
||||
-9
|
||||
-4
|
||||
+9
|
||||
+6
|
||||
-21
|
||||
-11
|
||||
-20
|
||||
-19
|
||||
-5
|
||||
+3
|
||||
+27
|
||||
+9
|
||||
+23
|
||||
+16
|
||||
-19
|
||||
-2
|
||||
+20
|
||||
+13
|
||||
-2
|
||||
-16
|
||||
+11
|
||||
+2
|
||||
-10
|
||||
-11
|
||||
-21
|
||||
-6
|
||||
-8
|
||||
-10
|
||||
-20
|
||||
+35
|
||||
+46
|
||||
+2
|
||||
-19
|
||||
-13
|
||||
+23
|
||||
-2
|
||||
+56
|
||||
+7
|
||||
+53
|
||||
+5
|
||||
-64
|
||||
-62
|
||||
+103
|
||||
+162
|
||||
+4
|
||||
+10
|
||||
-27
|
||||
-15
|
||||
-14
|
||||
+22
|
||||
+9
|
||||
+1
|
||||
+38
|
||||
-9
|
||||
+8
|
||||
+9
|
||||
+34
|
||||
+1
|
||||
-11
|
||||
+4
|
||||
-19
|
||||
-29
|
||||
+16
|
||||
+52
|
||||
-16
|
||||
+27
|
||||
+188
|
||||
-83
|
||||
+191
|
||||
+59071
|
||||
+19
|
||||
-10
|
||||
-6
|
||||
-16
|
||||
-18
|
||||
+14
|
||||
-10
|
||||
+18
|
||||
+4
|
||||
-10
|
||||
+3
|
||||
+16
|
||||
+6
|
||||
-18
|
||||
-3
|
||||
+1
|
||||
+4
|
||||
-20
|
||||
+4
|
||||
-16
|
||||
-7
|
||||
-6
|
||||
+19
|
||||
+12
|
||||
-3
|
||||
-7
|
||||
-13
|
||||
-7
|
||||
-9
|
||||
+19
|
||||
-20
|
||||
+12
|
||||
+12
|
||||
+18
|
||||
-15
|
||||
-8
|
||||
-11
|
||||
-9
|
||||
-7
|
||||
+13
|
||||
+16
|
||||
+11
|
||||
+4
|
||||
-13
|
||||
-10
|
||||
+1
|
||||
-11
|
||||
-14
|
||||
+13
|
||||
+4
|
||||
+10
|
||||
-5
|
||||
+7
|
||||
-24
|
||||
-7
|
||||
+11
|
||||
-22
|
||||
-20
|
||||
+15
|
||||
-10
|
||||
+13
|
||||
-7
|
||||
-25
|
||||
-2
|
||||
-4
|
||||
+45
|
||||
-1
|
||||
+16
|
||||
+11
|
||||
+24
|
||||
+4
|
||||
+4
|
||||
+22
|
||||
-17
|
||||
+13
|
||||
-16
|
||||
+5
|
||||
+16
|
||||
+16
|
||||
+15
|
||||
-119289
|
||||
33
py/2018/01/solve.py
Normal file
33
py/2018/01/solve.py
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
import sys
|
||||
|
||||
def load_freqs(filename):
|
||||
freqs = []
|
||||
with open(filename, "r") as f:
|
||||
for line in f:
|
||||
n = int(line[:-1])
|
||||
freqs.append(n)
|
||||
return freqs
|
||||
|
||||
# PART 2
|
||||
|
||||
def find_repeat(freqs):
|
||||
total = 0
|
||||
found = {total}
|
||||
|
||||
while True:
|
||||
for n in freqs:
|
||||
total += n
|
||||
if total in found:
|
||||
return total
|
||||
else:
|
||||
found.add(total)
|
||||
|
||||
def main(filename):
|
||||
freqs = load_freqs(filename)
|
||||
print(f"Solutions for {filename}")
|
||||
print(f"Part 1: {sum(freqs)}")
|
||||
print(f"Part 2: {find_repeat(freqs)}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
5
py/2018/01/test_input.txt
Normal file
5
py/2018/01/test_input.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
+1
|
||||
+2
|
||||
-3
|
||||
-4
|
||||
+5
|
||||
250
py/2018/02/input.txt
Normal file
250
py/2018/02/input.txt
Normal file
|
|
@ -0,0 +1,250 @@
|
|||
icxjubroqtunzeyzpomfksahgw
|
||||
ibxjvbroqtunleyzjdmfksahow
|
||||
icxjvbroqtinleyzpdmflsahnw
|
||||
icxjvbnoqtunleyvpgmfksahgw
|
||||
wcxjvbroqrunleyzpdmfksahge
|
||||
icxjtbroqtjzleyzpdmfksahgw
|
||||
icxjvbrohtunleyzpdmfkbahsw
|
||||
xcxjvbroqcunleyzpdmfksaxgw
|
||||
ycxjvbroqtunleyzpowfksahgw
|
||||
icxfvbroqtunleyzpdmfksncgw
|
||||
ixxjvbuoqtunleyzpdvfksahgw
|
||||
icfjvbroqtunleyzpdmfksadgt
|
||||
icxjvbroqdunleyzpdafksqhgw
|
||||
icxjvbrobtunlelzpdmfkuahgs
|
||||
ujxjvbroqtunleyzpdmqksahgw
|
||||
icqjvsroqtunleyzpdmfksahuw
|
||||
icxjvbroptpnleyzpdmfksangw
|
||||
ipxjvbroqtunleyzpdmfesahgi
|
||||
icajvbroqtunltyzpdqfksahgw
|
||||
ickjvbroqtuzleyzpdmfgsahgw
|
||||
icxjvbroqtunledzpdmwksahgz
|
||||
icxjvlroqtsnleyzpdmfksvhgw
|
||||
icxjvbroqtunleyzpdsfysahvw
|
||||
icxjvbroqtunwnyzydmfksahgw
|
||||
ionjvbroqtunleyzpdmfksahgj
|
||||
icxjvwriqtunleyzpdmfksahgi
|
||||
ocxjvbroztunleyzpdmfksapgw
|
||||
icxjvbroqtmnlewzpumfksahgw
|
||||
ucxjvbroqtunleyzpdmzktahgw
|
||||
icxgvbroqtunleyztdmfktahgw
|
||||
icxhvbroqttnleybpdmfksahgw
|
||||
icxjvbroqtugleyzpdxfkeahgw
|
||||
acxjvbroqvunlexzpdmfksahgw
|
||||
icxjvbroqglnleyzpbmfksahgw
|
||||
icxjvbriqtnvleyzpdmfksahgw
|
||||
icxjvbreqtunlakzpdmfksahgw
|
||||
gcxjvbuoqtunleyzpdmfksawgw
|
||||
icxjvbroqtunleyzpddfkyzhgw
|
||||
icxjvbjoqtunleyzpdmfqsahhw
|
||||
icxjvjroqtunleyzpnmfksajgw
|
||||
ycxjvbroqtunmeyzcdmfksahgw
|
||||
irxkvbryqtunleyzpdmfksahgw
|
||||
isxjvbrlqtunleyzpdmsksahgw
|
||||
icxjvbcoqtunleyzpdfkksahgw
|
||||
ixnjvbroqtunleyzpdmfkqahgw
|
||||
wcxjvbroqhunleyzqdmfksahgw
|
||||
icljvurmqtunleyzpdmfksahgw
|
||||
ibxjvbroqtayleyzpdmfksahgw
|
||||
arxjvbroqiunleyzpdmfksahgw
|
||||
iuxjvbroqtunluyzpdmoksahgw
|
||||
icxjvbrmqtunleyzpdmfosahew
|
||||
isxjvbroqtunleyrpdmfksrhgw
|
||||
icxjvxrpqtunleyzpdmfkdahgw
|
||||
ichjvbrogtunllyzpdmfksahgw
|
||||
icxjvbeoqtunlryzpdmfksakgw
|
||||
icxjvbroqtcnemyzpdmfksahgw
|
||||
icxjvbroqtybledzpdmfksahgw
|
||||
icxjvbrqqtunleyzpdmfksgngw
|
||||
icgjvbroqtunleyzmdmfksabgw
|
||||
icxjtbroqtunleyzkdmfksahww
|
||||
icxjvbfoqtunleyzpamfqsahgw
|
||||
icxjvbroknuyleyzpdmfksahgw
|
||||
icxjvbroqtujleyzpdmaksaigw
|
||||
icxjvbroqtnnlmyzpdmflsahgw
|
||||
icxjvbroqtunlefzpdmfsfahgw
|
||||
icxjvdroqtusleyzpdzfksahgw
|
||||
icxjvbioqtunlsyzpdmfkshhgw
|
||||
icxbvbrodtunleyzpdmoksahgw
|
||||
icxjvbroqtuvleyzpdmfkbahmw
|
||||
iyxjvbroqtunljvzpdmfksahgw
|
||||
icxjvbroqtudleynddmfksahgw
|
||||
icxjvwroqtnnleyzpdmfksahgz
|
||||
ichjvbroqtunleyzjdmeksahgw
|
||||
icxjvbrostunluyrpdmfksahgw
|
||||
icfjvbroqtunleyxpdgfksahgw
|
||||
nhxjvbroqtunlerzpdmfksahgw
|
||||
icxjvbrothunlexzpdmfksahgw
|
||||
icxjvbrzltqnleyzpdmfksahgw
|
||||
icxjvbrhqtunleyzpdmfksajgy
|
||||
vcxjvjroqiunleyzpdmfksahgw
|
||||
icxjfbroltunleyzpdmqksahgw
|
||||
icxbvbroqtunleyzpdofasahgw
|
||||
icxjvbkoqtunveyzpdmfksaqgw
|
||||
icxsebroqtunleyzpdmuksahgw
|
||||
icxjvbroquunlpyrpdmfksahgw
|
||||
icxhvbroqtunjeyzpdmrksahgw
|
||||
icdjvbroqtunlzyzpdmfksangw
|
||||
jcxqvbroqtvnleyzpdmfksahgw
|
||||
icxjvxroqtunleyrpdmfxsahgw
|
||||
icxjvnroqtunleyzpdmfssyhgw
|
||||
icxjvbraptunleyzpdofksahgw
|
||||
icxjvbroatunleyjpdmfbsahgw
|
||||
icxjvbroytlnlryzpdmfksahgw
|
||||
iaxjvbroqkunleyzpdmfcsahgw
|
||||
ucxjvbroqtuileyzzdmfksahgw
|
||||
icxjqbroqtcnleyzpgmfksahgw
|
||||
icxjvbloqtunleyzadmfksaqgw
|
||||
icxjvbroqtunleyzkdmnksakgw
|
||||
icxjvbroqtunleyjpdxfksahvw
|
||||
iqxjvbroqtujleyzpdmfklahgw
|
||||
icgjvbroqtunleyzpdmfksbhgb
|
||||
icxjzbroqtunleyzpdmfkdahgg
|
||||
icxjvbrobtunloywpdmfksahgw
|
||||
icxavbroqtunleyfpdmfksahgd
|
||||
icxjvbroqtunleyophmfksahkw
|
||||
icxjndroqtunlyyzpdmfksahgw
|
||||
icxjvbroqtjnleyppdmvksahgw
|
||||
icxjvbroonfnleyzpdmfksahgw
|
||||
icxjvbrqqtlnljyzpdmfksahgw
|
||||
icxjvbrzqtunlelspdmfksahgw
|
||||
icxjvbooqtunleyztdmfkfahgw
|
||||
icajvbroltunlnyzpdmfksahgw
|
||||
icxjvbroqtunleyzidmdkschgw
|
||||
icxjvbroktupleyzpdmfksahyw
|
||||
icxjcbroyeunleyzpdmfksahgw
|
||||
icxjvbroqtunlezkpdmfksahsw
|
||||
icxjvbroqtunlejzpcmfksrhgw
|
||||
icxjvvroqtunlsyzkdmfksahgw
|
||||
icxjnbroqtunbeyzpdmfpsahgw
|
||||
itxjbbroqtunleyzpemfksahgw
|
||||
icxjvbroqtunlrkzpdmfksshgw
|
||||
rcxjvbroqtujlbyzpdmfksahgw
|
||||
icxjvmroqtugleazpdmfksahgw
|
||||
icxjvbfoqtunleylpdmfkeahgw
|
||||
icnjvoroktunleyzpdmfksahgw
|
||||
icxjvbroqtunlvyzpdmfkfahgr
|
||||
icxjvbroqtgnseyzpdmfxsahgw
|
||||
scxjvbroqtunleycpdmfksdhgw
|
||||
icxhvbxoqtunleuzpdmfksahgw
|
||||
icxjvbruqtunleyzpnmfksfhgw
|
||||
icdjvbroqtunleyzpdmfksahup
|
||||
ihxjvbroqtunleovpdmfksahgw
|
||||
icxjvbroqtunleyzxdmfksahzv
|
||||
ocxjvbioqtunleyzpdmfzsahgw
|
||||
idxjvbroqtunlyyzpdofksahgw
|
||||
izdjvbroqtunleyzpdtfksahgw
|
||||
icxjvbrnqtunleyzpdmfksbhgb
|
||||
icxjvbrjqtunleyhpdmrksahgw
|
||||
icxjvbroqtunleyzpdbflsahgg
|
||||
icxjvbmfqtunleyzpdmfkaahgw
|
||||
idxjvbroqtunlsyzpdffksahgw
|
||||
bcxjvbroqtunleyzpkmfkswhgw
|
||||
ivxjvbroqtdnleyzpdmbksahgw
|
||||
icxpvbboqtunleyzpdmfksahtw
|
||||
ibxjvbroqtunlehzpdmfkmahgw
|
||||
icxjvbboqtunleyzpdmfkaahgv
|
||||
icxjlaroqtuileyzpdmfksahgw
|
||||
icxjvbroftunleyzpdmfqsahew
|
||||
ichjvbroqtunleyzpdmiwsahgw
|
||||
icxrvbvoqtunleyzpdmiksahgw
|
||||
icxjvbroqtunldydpdmfksahgl
|
||||
icogvbroqtunleyzpdmfnsahgw
|
||||
icxjvbroqtunleszodmfkswhgw
|
||||
icxjvbrontunleyztemfksahgw
|
||||
icxjvbrovtunleyzpdvkksahgw
|
||||
icxjvbroqqucteyzpdmfksahgw
|
||||
icmovbroptunleyzpdmfksahgw
|
||||
icxjvbqoftunleyzvdmfksahgw
|
||||
icxjvbdoqtunleyzpdmfkadhgw
|
||||
icxjvbroqtunlgnzpdmfksaqgw
|
||||
icxjvbroqtunieygpdyfksahgw
|
||||
acdjvbroqtunleyzpdmfkwahgw
|
||||
icxjvbroqtunleyzpdmfkfahlj
|
||||
icxjvbgoqtunleyepdmvksahgw
|
||||
icxjvbpobbunleyzpdmfksahgw
|
||||
icxjvbroqtunleurpdmfktahgw
|
||||
ipxjvbzoqtunleyzpdmffsahgw
|
||||
icxjtbroqtunllyzpdmuksahgw
|
||||
icxjvbroqtunbsyzadmfksahgw
|
||||
ihxjvoroqtuqleyzpdmfksahgw
|
||||
idxjmbroqqunleyzpdmfksahgw
|
||||
wcxjvbdoqtunleyzpdmfksahgr
|
||||
icxjvbroqtunleygptmfksahgj
|
||||
ipxjvbrsqtunleyzpdmfksghgw
|
||||
ycxjvbroqtunluyzkdmfksahgw
|
||||
icxjvbroxtuulejzpdmfksahgw
|
||||
icqjvbroqtunlwyypdmfksahgw
|
||||
ioxjhbroqtunleyzphmfksahgw
|
||||
icxjvbgoqnunleyzpdmfksahaw
|
||||
mcxjvbroqtunleyzpdmfksihgh
|
||||
icxjsbroqtunlqyzpdmfksawgw
|
||||
icxjvbroqtuoleycpdmftsahgw
|
||||
icxjvbroqtunleyzgdifksahlw
|
||||
icxjvbmoqtunleyzjfmfksahgw
|
||||
icxjvbroqtunlezopdmfksahge
|
||||
icxjvbroqtbnlefzpdmfosahgw
|
||||
tcxjvbromtunlevzpdmfksahgw
|
||||
irxjgbroqtunleyzpdmfksthgw
|
||||
icxjvbrojtunleyxpdmoksahgw
|
||||
icxrvbroytpnleyzpdmfksahgw
|
||||
icxjvbroqtunfeyupdmfksasgw
|
||||
ihqjvbroqtunleyzpdmftsahgw
|
||||
icxjobroqkunleozpdmfksahgw
|
||||
icjjjbroqtualeyzpdmfksahgw
|
||||
icxjvbroqtunaeytpdmfksahvw
|
||||
icxjvbroqtunzeyzpdmfkshhxw
|
||||
icxqvbroqtucleyzxdmfksahgw
|
||||
icxjvbrogturleyzxdmfksahgw
|
||||
icxjvoqoqtunleyzpdcfksahgw
|
||||
iuxjvbroqtunleyzpdmfksopgw
|
||||
icxjveroqtunleyzptmfksalgw
|
||||
icxjvbroqtunleyzpdmfwcahhw
|
||||
iwxjvbroqtlnleyzpdmfksyhgw
|
||||
ectjvbroqtanleyzpdmfksahgw
|
||||
icxjvnroqtyhleyzpdmfksahgw
|
||||
icvjvhboqtunleyzpdmfksahgw
|
||||
icxjtbroqtuzleyupdmfksahgw
|
||||
icjjvproqtunleyzpsmfksahgw
|
||||
icdjvbroqtutleyzpdmiksahgw
|
||||
icxjvwroqtujleyzpdmfksahgc
|
||||
icxjxbroqtunleyzpdwhksahgw
|
||||
icxjvbqoqtunleyzpdmvfsahgw
|
||||
icajvbroqtusleyzpdmfksaagw
|
||||
icxjvbroqtunbtyzpdmfksmhgw
|
||||
kcxjvbroqtxnleyzpdmfkskhgw
|
||||
icxjvbqogfunleyzpdmfksahgw
|
||||
icxjvbroqtubleyzpdmfdswhgw
|
||||
icxjvprlqtunleyzpdmffsahgw
|
||||
icxjxbroqtucleyzpdmfksakgw
|
||||
dcxrvbroqtunleycpdmfksahgw
|
||||
icxjvbrobtunleyzpomfksahgu
|
||||
ocxrvbroqtunleyzpdmfssahgw
|
||||
icxjvbroktunlejzpdmfksahzw
|
||||
icxjvbrovtunleyzmdmfkhahgw
|
||||
icxjvbroqtudleygpdmfksfhgw
|
||||
bcxjvbroqtubllyzpdmfksahgw
|
||||
icxwvbrontunzeyzpdmfksahgw
|
||||
icxjvbroqtunleysjbmfksahgw
|
||||
icxjvvroztunleyzpdmfksjhgw
|
||||
ivxjxbroqtunleyzpdmfksahew
|
||||
icxjvbroqtunleyupqufksahgw
|
||||
icxjvmrcqtunleyzpdmxksahgw
|
||||
icxjvgroqtunleyzpdgfkuahgw
|
||||
icxjvbroqthnqeyfpdmfksahgw
|
||||
icxjsbuodtunleyzpdmfksahgw
|
||||
iuxjzbroqtunleyzpdrfksahgw
|
||||
icxjvbrobtunlelzpdmfksahgs
|
||||
icxjvbroqtzhljyzpdmfksahgw
|
||||
inxtvbroqtunleyzpdmeksahgw
|
||||
icgjvbroqtunleyztdmfksahgq
|
||||
icxjvagoqtugleyzpdmfksahgw
|
||||
icxuvbroqtunleyzpimfkyahgw
|
||||
icxzvbroqtfhleyzpdmfksahgw
|
||||
icxjjbroqtqnleyzpdmnksahgw
|
||||
icjrvbroqtunleszpdmfksahgw
|
||||
iexjvbroqtunlgyzpdmfksacgw
|
||||
rcxjvbkoqtuoleyzpdmfksahgw
|
||||
icxjvbroqgunlwyzpdmfksqhgw
|
||||
icxjvbroqtunleqzpsmfksqhgw
|
||||
icxjvbroqtubaeyzpdmfksaugw
|
||||
63
py/2018/02/solve.py
Normal file
63
py/2018/02/solve.py
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
import sys
|
||||
|
||||
def load_words(filename):
|
||||
words = []
|
||||
with open(filename, "r") as f:
|
||||
for line in f:
|
||||
words.append(line[:-1])
|
||||
return words
|
||||
|
||||
# PART 1
|
||||
|
||||
def has_n_chars(word, n):
|
||||
count = {}
|
||||
for char in word:
|
||||
count[char] = count.get(char, 0) + 1
|
||||
return n in count.values()
|
||||
|
||||
def count_words(words):
|
||||
twice = 0
|
||||
thrice = 0
|
||||
for word in words:
|
||||
if has_n_chars(word, 2):
|
||||
twice += 1
|
||||
if has_n_chars(word, 3):
|
||||
thrice += 1
|
||||
return twice, thrice
|
||||
|
||||
def checksum(words):
|
||||
twice, thrice = count_words(words)
|
||||
return twice * thrice
|
||||
|
||||
# PART 2
|
||||
|
||||
def differ_by(a, b):
|
||||
count = 0
|
||||
for x, y in zip(a, b):
|
||||
if x != y:
|
||||
count += 1
|
||||
return count
|
||||
|
||||
def find_ids(words):
|
||||
for i, a in enumerate(words):
|
||||
for b in words[i:]:
|
||||
if differ_by(a, b) == 1:
|
||||
return a, b
|
||||
|
||||
def common_chars(a, b):
|
||||
result = []
|
||||
for x, y in zip(a, b):
|
||||
if x == y:
|
||||
result.append(x)
|
||||
return "".join(result)
|
||||
|
||||
def main(filename):
|
||||
words = load_words(filename)
|
||||
print(f"Solutions for {filename}")
|
||||
print(f"Part 1: {checksum(words)}")
|
||||
a, b = find_ids(words)
|
||||
print(f"Part 2: {common_chars(a, b)}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
1237
py/2018/03/input.txt
Normal file
1237
py/2018/03/input.txt
Normal file
File diff suppressed because it is too large
Load diff
56
py/2018/03/solve.py
Normal file
56
py/2018/03/solve.py
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
import re
|
||||
import sys
|
||||
|
||||
CLAIM_RE = r"#(\d+) @ (\d+),(\d+): (\d+)x(\d+)\n"
|
||||
|
||||
def load_claims(filename):
|
||||
claims = {}
|
||||
with open(filename, "r") as f:
|
||||
for line in f:
|
||||
match = re.fullmatch(CLAIM_RE, line)
|
||||
elf, x, y, w, h = match.groups()
|
||||
elf, x, y, w, h = int(elf), int(x), int(y), int(w), int(h)
|
||||
claims[elf] = (x, y, w, h)
|
||||
return claims
|
||||
|
||||
# PART 1
|
||||
|
||||
def count_claims(claims):
|
||||
squares = {}
|
||||
for x, y, w, h in claims.values():
|
||||
for dw in range(w):
|
||||
for dh in range(h):
|
||||
coords = (x + dw, y + dh)
|
||||
squares[coords] = squares.get(coords, 0) + 1
|
||||
return squares
|
||||
|
||||
def find_doubles(squares):
|
||||
return len(list(filter(lambda x: x > 1, squares.values())))
|
||||
|
||||
# PART 2
|
||||
|
||||
def is_intact(squares, x, y, w, h):
|
||||
for dw in range(w):
|
||||
for dh in range(h):
|
||||
coords = (x + dw, y + dh)
|
||||
if squares.get(coords, 0) > 1:
|
||||
return False
|
||||
return True
|
||||
|
||||
def find_intact_claim(claims, squares):
|
||||
for elf, (x, y, w, h) in claims.items():
|
||||
if is_intact(squares, x, y, w, h):
|
||||
return elf
|
||||
|
||||
def main(filename):
|
||||
claims = load_claims(filename)
|
||||
print(f"Solutions for {filename}")
|
||||
squares = count_claims(claims)
|
||||
doubles = find_doubles(squares)
|
||||
print(f"Part 1: {doubles}")
|
||||
intact = find_intact_claim(claims, squares)
|
||||
print(f"Part 2: {intact}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
1045
py/2018/04/input.txt
Normal file
1045
py/2018/04/input.txt
Normal file
File diff suppressed because it is too large
Load diff
115
py/2018/04/solve.py
Normal file
115
py/2018/04/solve.py
Normal file
|
|
@ -0,0 +1,115 @@
|
|||
import re
|
||||
import sys
|
||||
|
||||
# PART 1
|
||||
|
||||
ACTION_RE = r"\[(\d+)-(\d+)-(\d+) (\d+):(\d+)\] (.*)\n"
|
||||
GUARD_RE = r"Guard #(\d+) begins shift"
|
||||
|
||||
def load_actions(filename):
|
||||
actions = []
|
||||
with open(filename, "r") as f:
|
||||
for line in f:
|
||||
match = re.fullmatch(ACTION_RE, line)
|
||||
y, m, d, hour, minute, action = match.groups()
|
||||
y, m, d, hour, minute = int(y), int(m), int(d), int(hour), int(minute)
|
||||
actions.append((y, m, d, hour, minute, action))
|
||||
return actions
|
||||
|
||||
def calculate_guards(actions):
|
||||
guards = {}
|
||||
|
||||
guard = None
|
||||
asleep_since = None
|
||||
|
||||
for action in sorted(actions):
|
||||
_, _, _, _, m, text = action
|
||||
|
||||
match = re.fullmatch(GUARD_RE, text)
|
||||
if match:
|
||||
guard = int(match.group(1))
|
||||
|
||||
elif text == "falls asleep":
|
||||
asleep_since = m
|
||||
|
||||
elif text == "wakes up":
|
||||
l = guards.get(guard, [])
|
||||
guards[guard] = l
|
||||
|
||||
l.append((asleep_since, m))
|
||||
|
||||
return guards
|
||||
|
||||
def sleeps_longest(guards):
|
||||
sleepiest_guard = None
|
||||
sleepy_time = -1
|
||||
|
||||
for guard, sleep_times in guards.items():
|
||||
total = 0
|
||||
for start, end in sleep_times:
|
||||
total += end - start
|
||||
|
||||
if total > sleepy_time:
|
||||
sleepiest_guard = guard
|
||||
sleepy_time = total
|
||||
|
||||
return sleepiest_guard
|
||||
|
||||
def sleepiest_minute(times):
|
||||
counter = {}
|
||||
for start, end in times:
|
||||
for m in range(start, end):
|
||||
counter[m] = counter.get(m, 0) + 1
|
||||
|
||||
max_minute = None
|
||||
amount = -1
|
||||
for m, n in sorted(counter.items()):
|
||||
if n > amount:
|
||||
max_minute = m
|
||||
amount = n
|
||||
|
||||
return max_minute
|
||||
|
||||
# PART 2
|
||||
|
||||
def sleep_times(times):
|
||||
minutes = {}
|
||||
for start, end in times:
|
||||
for m in range(start, end):
|
||||
minutes[m] = minutes.get(m, 0) + 1
|
||||
return minutes
|
||||
|
||||
def sleepy_minutes(guards):
|
||||
minutes = {}
|
||||
for guard, times in guards.items():
|
||||
for m, n in sleep_times(times).items():
|
||||
md = minutes.get(m, {})
|
||||
minutes[m] = md
|
||||
md[guard] = n
|
||||
|
||||
sleepy_minute = m
|
||||
sleepy_guard = None
|
||||
sleep_time = -1
|
||||
|
||||
for m, md in minutes.items():
|
||||
for guard, n in md.items():
|
||||
if n > sleep_time:
|
||||
sleepy_minute = m
|
||||
sleepy_guard = guard
|
||||
sleep_time = n
|
||||
|
||||
return sleepy_guard, sleepy_minute
|
||||
|
||||
def main(filename):
|
||||
actions = load_actions(filename)
|
||||
guards = calculate_guards(actions)
|
||||
print(f"Solutions for {filename}")
|
||||
guard = sleeps_longest(guards)
|
||||
minute = sleepiest_minute(guards[guard])
|
||||
print(f"Part 1: {guard * minute} - Guard {guard} slept most on minute {minute}.")
|
||||
guard_2, minute_2 = sleepy_minutes(guards)
|
||||
print(f"Part 2: {guard_2 * minute_2} - Guard {guard_2} slept most on minute {minute_2}.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
17
py/2018/04/test_input.txt
Normal file
17
py/2018/04/test_input.txt
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
[1518-11-01 00:00] Guard #10 begins shift
|
||||
[1518-11-01 00:05] falls asleep
|
||||
[1518-11-01 00:25] wakes up
|
||||
[1518-11-01 00:30] falls asleep
|
||||
[1518-11-01 00:55] wakes up
|
||||
[1518-11-01 23:58] Guard #99 begins shift
|
||||
[1518-11-02 00:40] falls asleep
|
||||
[1518-11-02 00:50] wakes up
|
||||
[1518-11-03 00:05] Guard #10 begins shift
|
||||
[1518-11-03 00:24] falls asleep
|
||||
[1518-11-03 00:29] wakes up
|
||||
[1518-11-04 00:02] Guard #99 begins shift
|
||||
[1518-11-04 00:36] falls asleep
|
||||
[1518-11-04 00:46] wakes up
|
||||
[1518-11-05 00:03] Guard #99 begins shift
|
||||
[1518-11-05 00:45] falls asleep
|
||||
[1518-11-05 00:55] wakes up
|
||||
1
py/2018/05/input.txt
Normal file
1
py/2018/05/input.txt
Normal file
File diff suppressed because one or more lines are too long
84
py/2018/05/solve.py
Normal file
84
py/2018/05/solve.py
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
import sys
|
||||
|
||||
# PART 1
|
||||
|
||||
def load_polymer(filename):
|
||||
pols = []
|
||||
with open(filename, "r") as f:
|
||||
for line in f:
|
||||
pols.append(list(line[:-1]))
|
||||
return pols
|
||||
|
||||
def naive_react(pol):
|
||||
for i in range(len(pol) - 1):
|
||||
if pol[i].lower() == pol[i+1].lower() and pol[i] != pol[i+1]:
|
||||
print("Naive react says: More reacting is possible.")
|
||||
|
||||
def react(pol):
|
||||
while True:
|
||||
i = 0
|
||||
while i < len(pol) - 1:
|
||||
pol_cur, pol_next = pol[i], pol[i+1]
|
||||
if pol_cur.lower() == pol_next.lower() and pol_cur != pol_next:
|
||||
del pol[i]
|
||||
del pol[i]
|
||||
i = max(0, i - 1)
|
||||
else:
|
||||
i += 1
|
||||
else:
|
||||
return
|
||||
|
||||
#def react(pol):
|
||||
# start = 0
|
||||
# while True:
|
||||
# i = start
|
||||
# while i < len(pol) - 1:
|
||||
# if pol[i].lower() == pol[i+1].lower() and pol[i] != pol[i+1]:
|
||||
# del pol[i]
|
||||
# del pol[i]
|
||||
# start = max(0, start - 1)
|
||||
# break
|
||||
# elif i == start + 1:
|
||||
# start = i
|
||||
# i += 1
|
||||
# else:
|
||||
# return
|
||||
|
||||
def result(pol):
|
||||
l = pol.copy()
|
||||
#print("".join(l))
|
||||
react(l)
|
||||
#print("->", "".join(l))
|
||||
naive_react(l)
|
||||
return len(l)
|
||||
|
||||
# PART 2
|
||||
|
||||
def removable_chars(pol):
|
||||
return set(c.lower() for c in pol)
|
||||
|
||||
def remove(pol, char):
|
||||
return [c for c in pol if c.lower() != char.lower()]
|
||||
|
||||
def find_obstructing(pol):
|
||||
results = []
|
||||
chars = removable_chars(pol)
|
||||
for c in sorted(chars):
|
||||
l = remove(pol, c)
|
||||
n = result(l)
|
||||
print("Removed", c, "-> length", n)
|
||||
results.append(n)
|
||||
return min(results)
|
||||
|
||||
def main(filename):
|
||||
print(f"Solutions for {filename}")
|
||||
pols = load_polymer(filename)
|
||||
for pol in pols:
|
||||
length = result(pol)
|
||||
print(f"Part 1: {length}")
|
||||
best_result = find_obstructing(pol)
|
||||
print(f"Part 2: {best_result}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
1
py/2018/05/test_input.txt
Normal file
1
py/2018/05/test_input.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
dabAcCaCBAcCcaDA
|
||||
5
py/2018/05/test_inputs.txt
Normal file
5
py/2018/05/test_inputs.txt
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
aA
|
||||
abBA
|
||||
abAB
|
||||
aabAAB
|
||||
dabAcCaCBAcCcaDA
|
||||
50
py/2018/06/input.txt
Normal file
50
py/2018/06/input.txt
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
83, 153
|
||||
201, 74
|
||||
291, 245
|
||||
269, 271
|
||||
222, 337
|
||||
291, 271
|
||||
173, 346
|
||||
189, 184
|
||||
170, 240
|
||||
127, 96
|
||||
76, 46
|
||||
92, 182
|
||||
107, 160
|
||||
311, 142
|
||||
247, 321
|
||||
303, 295
|
||||
141, 310
|
||||
147, 70
|
||||
48, 41
|
||||
40, 276
|
||||
46, 313
|
||||
175, 279
|
||||
149, 177
|
||||
181, 189
|
||||
347, 163
|
||||
215, 135
|
||||
103, 159
|
||||
222, 304
|
||||
201, 184
|
||||
272, 354
|
||||
113, 74
|
||||
59, 231
|
||||
302, 251
|
||||
127, 312
|
||||
259, 259
|
||||
41, 244
|
||||
43, 238
|
||||
193, 172
|
||||
147, 353
|
||||
332, 316
|
||||
353, 218
|
||||
100, 115
|
||||
111, 58
|
||||
210, 108
|
||||
101, 175
|
||||
185, 98
|
||||
256, 311
|
||||
142, 41
|
||||
68, 228
|
||||
327, 194
|
||||
124
py/2018/06/solve.py
Normal file
124
py/2018/06/solve.py
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
import sys
|
||||
|
||||
# PART 1
|
||||
|
||||
def load_coords(filename):
|
||||
coords = []
|
||||
with open(filename, "r") as f:
|
||||
for line in f:
|
||||
x, y = line[:-1].split(", ")
|
||||
x, y = int(x), int(y)
|
||||
coords.append((x, y))
|
||||
return coords
|
||||
|
||||
class Voronoi:
|
||||
def __init__(self, min_x, min_y, max_x, max_y):
|
||||
self.min_x = min_x
|
||||
self.min_y = min_y
|
||||
self.max_x = max_x
|
||||
self.max_y = max_y
|
||||
|
||||
self.cells = {}
|
||||
|
||||
def add(self, pos_x, pos_y):
|
||||
for x in range(self.min_x, self.max_x + 1):
|
||||
for y in range(self.min_y, self.max_y + 1):
|
||||
self.add_to_cell(pos_x, pos_y, x, y)
|
||||
print(f"Added ({pos_x}, {pos_y})")
|
||||
|
||||
def add_to_cell(self, pos_x, pos_y, cell_x, cell_y):
|
||||
pos = (pos_x, pos_y)
|
||||
cell = (cell_x, cell_y)
|
||||
dist = abs(pos_x - cell_x) + abs(pos_y - cell_y)
|
||||
|
||||
if cell in self.cells:
|
||||
cdist, cpos = self.cells[cell]
|
||||
if dist < cdist:
|
||||
self.cells[cell] = (dist, pos)
|
||||
elif dist == cdist and cpos is not None:
|
||||
self.cells[cell] = (dist, None)
|
||||
# else: pass
|
||||
else:
|
||||
self.cells[cell] = (dist, pos)
|
||||
|
||||
@classmethod
|
||||
def from_coords(cls, coords):
|
||||
xs = [x for x, _ in coords]
|
||||
ys = [y for _, y in coords]
|
||||
|
||||
voro = cls(min(xs), min(ys), max(xs), max(ys))
|
||||
for x, y in coords:
|
||||
voro.add(x, y)
|
||||
|
||||
return voro
|
||||
|
||||
def find_ignore(self):
|
||||
ignore = set()
|
||||
for x in range(self.min_x, self.max_x + 1):
|
||||
_, pos1 = self.cells.get((x, self.min_y))
|
||||
_, pos2 = self.cells.get((x, self.max_y))
|
||||
ignore.add(pos1)
|
||||
ignore.add(pos2)
|
||||
for y in range(self.min_y, self.max_y + 1):
|
||||
_, pos1 = self.cells.get((self.min_x, y))
|
||||
_, pos2 = self.cells.get((self.max_x, y))
|
||||
ignore.add(pos1)
|
||||
ignore.add(pos2)
|
||||
return ignore
|
||||
|
||||
def find_largest(self):
|
||||
ignore = self.find_ignore()
|
||||
|
||||
count = {}
|
||||
for x in range(self.min_x + 1, self.max_x):
|
||||
for y in range(self.min_y + 1, self.max_y):
|
||||
_, pos = self.cells.get((x, y))
|
||||
if pos not in ignore:
|
||||
count[pos] = count.get(pos, 0) + 1
|
||||
|
||||
return max(count.values())
|
||||
|
||||
# PART 2
|
||||
|
||||
class Nearest:
|
||||
def __init__(self, coords):
|
||||
self.coords = coords
|
||||
|
||||
xs = [x for x, _ in self.coords]
|
||||
ys = [y for _, y in self.coords]
|
||||
|
||||
self.min_x = min(xs)
|
||||
self.min_y = min(ys)
|
||||
self.max_x = max(xs)
|
||||
self.max_y = max(ys)
|
||||
|
||||
def find(self):
|
||||
cells = set()
|
||||
|
||||
for x in range(self.min_x, self.max_x + 1):
|
||||
for y in range(self.min_y, self.max_y + 1):
|
||||
if self.evaluate(x, y):
|
||||
cells.add((x, y))
|
||||
|
||||
return len(cells)
|
||||
|
||||
def evaluate(self, pos_x, pos_y):
|
||||
pos = (pos_x, pos_y)
|
||||
dist = 0
|
||||
for x, y in self.coords:
|
||||
dist += abs(pos_x - x) + abs(pos_y - y)
|
||||
return dist < 10000
|
||||
|
||||
def main(filename):
|
||||
print(f"Solutions for {filename}")
|
||||
coords = load_coords(filename)
|
||||
voro = Voronoi.from_coords(coords)
|
||||
largest = voro.find_largest()
|
||||
print(f"Part 1: {largest}")
|
||||
nearest = Nearest(coords)
|
||||
largest_2 = nearest.find()
|
||||
print(f"Part 2: {largest_2}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
6
py/2018/06/test_input.txt
Normal file
6
py/2018/06/test_input.txt
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
1, 1
|
||||
1, 6
|
||||
8, 3
|
||||
3, 4
|
||||
5, 5
|
||||
8, 9
|
||||
101
py/2018/07/input.txt
Normal file
101
py/2018/07/input.txt
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
Step U must be finished before step A can begin.
|
||||
Step F must be finished before step Z can begin.
|
||||
Step B must be finished before step J can begin.
|
||||
Step O must be finished before step R can begin.
|
||||
Step H must be finished before step S can begin.
|
||||
Step T must be finished before step R can begin.
|
||||
Step L must be finished before step W can begin.
|
||||
Step M must be finished before step I can begin.
|
||||
Step Q must be finished before step K can begin.
|
||||
Step Z must be finished before step V can begin.
|
||||
Step C must be finished before step E can begin.
|
||||
Step W must be finished before step I can begin.
|
||||
Step K must be finished before step S can begin.
|
||||
Step I must be finished before step Y can begin.
|
||||
Step P must be finished before step V can begin.
|
||||
Step V must be finished before step X can begin.
|
||||
Step R must be finished before step E can begin.
|
||||
Step N must be finished before step E can begin.
|
||||
Step X must be finished before step J can begin.
|
||||
Step A must be finished before step J can begin.
|
||||
Step S must be finished before step G can begin.
|
||||
Step J must be finished before step E can begin.
|
||||
Step Y must be finished before step E can begin.
|
||||
Step D must be finished before step G can begin.
|
||||
Step E must be finished before step G can begin.
|
||||
Step K must be finished before step N can begin.
|
||||
Step B must be finished before step I can begin.
|
||||
Step X must be finished before step S can begin.
|
||||
Step V must be finished before step S can begin.
|
||||
Step U must be finished before step L can begin.
|
||||
Step N must be finished before step G can begin.
|
||||
Step O must be finished before step L can begin.
|
||||
Step X must be finished before step E can begin.
|
||||
Step V must be finished before step E can begin.
|
||||
Step Y must be finished before step G can begin.
|
||||
Step A must be finished before step Y can begin.
|
||||
Step M must be finished before step E can begin.
|
||||
Step F must be finished before step Q can begin.
|
||||
Step F must be finished before step X can begin.
|
||||
Step L must be finished before step C can begin.
|
||||
Step T must be finished before step L can begin.
|
||||
Step B must be finished before step C can begin.
|
||||
Step Q must be finished before step N can begin.
|
||||
Step T must be finished before step G can begin.
|
||||
Step R must be finished before step D can begin.
|
||||
Step I must be finished before step A can begin.
|
||||
Step B must be finished before step M can begin.
|
||||
Step H must be finished before step A can begin.
|
||||
Step F must be finished before step K can begin.
|
||||
Step U must be finished before step F can begin.
|
||||
Step R must be finished before step A can begin.
|
||||
Step J must be finished before step D can begin.
|
||||
Step V must be finished before step Y can begin.
|
||||
Step F must be finished before step J can begin.
|
||||
Step C must be finished before step K can begin.
|
||||
Step M must be finished before step C can begin.
|
||||
Step F must be finished before step E can begin.
|
||||
Step I must be finished before step E can begin.
|
||||
Step T must be finished before step A can begin.
|
||||
Step J must be finished before step Y can begin.
|
||||
Step R must be finished before step X can begin.
|
||||
Step W must be finished before step S can begin.
|
||||
Step V must be finished before step R can begin.
|
||||
Step U must be finished before step V can begin.
|
||||
Step C must be finished before step V can begin.
|
||||
Step F must be finished before step Y can begin.
|
||||
Step R must be finished before step G can begin.
|
||||
Step W must be finished before step N can begin.
|
||||
Step H must be finished before step N can begin.
|
||||
Step H must be finished before step Y can begin.
|
||||
Step B must be finished before step W can begin.
|
||||
Step M must be finished before step Z can begin.
|
||||
Step X must be finished before step A can begin.
|
||||
Step A must be finished before step G can begin.
|
||||
Step N must be finished before step A can begin.
|
||||
Step H must be finished before step J can begin.
|
||||
Step B must be finished before step O can begin.
|
||||
Step W must be finished before step A can begin.
|
||||
Step P must be finished before step N can begin.
|
||||
Step Z must be finished before step G can begin.
|
||||
Step W must be finished before step D can begin.
|
||||
Step D must be finished before step E can begin.
|
||||
Step W must be finished before step J can begin.
|
||||
Step N must be finished before step D can begin.
|
||||
Step C must be finished before step J can begin.
|
||||
Step B must be finished before step Y can begin.
|
||||
Step F must be finished before step P can begin.
|
||||
Step L must be finished before step P can begin.
|
||||
Step X must be finished before step G can begin.
|
||||
Step R must be finished before step Y can begin.
|
||||
Step K must be finished before step A can begin.
|
||||
Step M must be finished before step Y can begin.
|
||||
Step W must be finished before step Y can begin.
|
||||
Step F must be finished before step I can begin.
|
||||
Step L must be finished before step X can begin.
|
||||
Step R must be finished before step J can begin.
|
||||
Step V must be finished before step J can begin.
|
||||
Step V must be finished before step D can begin.
|
||||
Step H must be finished before step C can begin.
|
||||
Step O must be finished before step G can begin.
|
||||
Step P must be finished before step R can begin.
|
||||
115
py/2018/07/solve.py
Normal file
115
py/2018/07/solve.py
Normal file
|
|
@ -0,0 +1,115 @@
|
|||
import re
|
||||
import sys
|
||||
|
||||
# PART 1
|
||||
|
||||
STEP_RE = r"Step (\S+) must be finished before step (\S+) can begin.\n"
|
||||
|
||||
def load_steps(filename):
|
||||
steps = {}
|
||||
with open(filename, "r") as f:
|
||||
for line in f:
|
||||
match = re.fullmatch(STEP_RE, line)
|
||||
step, before = match.groups()
|
||||
steps[step] = steps.get(step, set()) | {before}
|
||||
|
||||
return steps
|
||||
|
||||
def reverse_steps(steps):
|
||||
reverse = {}
|
||||
for step, befores in steps.items():
|
||||
# Make sure that step exists in reverse
|
||||
reverse[step] = reverse.get(step, set())
|
||||
|
||||
for before in befores:
|
||||
reverse[before] = reverse.get(before, set()) | {step}
|
||||
|
||||
return reverse
|
||||
|
||||
def duration_of(step):
|
||||
return ord(step) - ord("A") + 61
|
||||
|
||||
class Tree:
|
||||
def __init__(self, steps, workers=1):
|
||||
self.workers = {i: None for i in range(workers)}
|
||||
self.steps = reverse_steps(steps) # Warning: Steps are reversed in Trees.
|
||||
self.result = []
|
||||
self.duration = 0
|
||||
|
||||
def working(self):
|
||||
return {worker: work for worker, work in self.workers.items() if work is not None}
|
||||
|
||||
def find_free(self):
|
||||
return {step for step, afters in self.steps.items() if len(afters) == 0}
|
||||
|
||||
def find_working(self):
|
||||
return {step for (step, _) in self.working().values()}
|
||||
|
||||
def find_available(self):
|
||||
return self.find_free() - self.find_working()
|
||||
|
||||
def remove_step(self, step):
|
||||
try:
|
||||
del self.steps[step]
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
for s in self.steps.values():
|
||||
try:
|
||||
s.remove(step)
|
||||
except KeyError:
|
||||
pass
|
||||
|
||||
def update_workers(self):
|
||||
min_duration = min(duration for (_, duration) in self.working().values())
|
||||
self.duration += min_duration
|
||||
|
||||
finished_steps = set()
|
||||
|
||||
# Subtract min_duration from all workers
|
||||
for w, s in self.workers.items():
|
||||
if s is not None:
|
||||
step, duration = s
|
||||
duration -= min_duration
|
||||
|
||||
if duration <= 0:
|
||||
finished_steps.add(step)
|
||||
self.remove_step(step)
|
||||
self.workers[w] = None
|
||||
else:
|
||||
self.workers[w] = (step, duration)
|
||||
|
||||
self.result += list(finished_steps)
|
||||
|
||||
def distribute_jobs(self):
|
||||
available = list(reversed(sorted(self.find_available())))
|
||||
|
||||
for w, s in self.workers.items():
|
||||
if not available:
|
||||
break
|
||||
|
||||
if s is None:
|
||||
step = available.pop()
|
||||
duration = duration_of(step)
|
||||
self.workers[w] = (step, duration)
|
||||
|
||||
def run(self):
|
||||
while self.steps:
|
||||
self.distribute_jobs()
|
||||
self.update_workers()
|
||||
|
||||
def main(filename):
|
||||
print(f"Solutions for {filename}")
|
||||
steps = load_steps(filename)
|
||||
tree = Tree(steps, workers=1)
|
||||
tree.run()
|
||||
sequence = "".join(tree.result)
|
||||
print(f"Part 1: {sequence}")
|
||||
tree = Tree(steps, workers=5)
|
||||
tree.run()
|
||||
duration = tree.duration
|
||||
print(f"Part 2: {duration}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
7
py/2018/07/test_input.txt
Normal file
7
py/2018/07/test_input.txt
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
Step C must be finished before step A can begin.
|
||||
Step C must be finished before step F can begin.
|
||||
Step A must be finished before step B can begin.
|
||||
Step A must be finished before step D can begin.
|
||||
Step B must be finished before step E can begin.
|
||||
Step D must be finished before step E can begin.
|
||||
Step F must be finished before step E can begin.
|
||||
1
py/2018/08/input.txt
Normal file
1
py/2018/08/input.txt
Normal file
File diff suppressed because one or more lines are too long
53
py/2018/08/solve.py
Normal file
53
py/2018/08/solve.py
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
import sys
|
||||
|
||||
# PART 1
|
||||
|
||||
def load_stream(filename):
|
||||
with open(filename) as f:
|
||||
# Too lazy to do this properly
|
||||
return list(reversed(list(map(int, f.read()[:-1].split(" ")))))
|
||||
|
||||
def parse_node(stream):
|
||||
amt_nodes = stream.pop()
|
||||
amt_meta = stream.pop()
|
||||
|
||||
nodes = []
|
||||
for _ in range(amt_nodes):
|
||||
nodes.append(parse_node(stream))
|
||||
|
||||
meta = []
|
||||
for _ in range(amt_meta):
|
||||
meta.append(stream.pop())
|
||||
|
||||
return (nodes, meta)
|
||||
|
||||
def sum_of_meta(node):
|
||||
nodes, meta = node
|
||||
return sum(meta) + sum(map(sum_of_meta, nodes))
|
||||
|
||||
# PART 2
|
||||
|
||||
def value_of(node):
|
||||
nodes, meta = node
|
||||
if nodes:
|
||||
total = 0
|
||||
for i in meta:
|
||||
i -= 1
|
||||
if i >= 0 and i < len(nodes):
|
||||
total += value_of(nodes[i])
|
||||
return total
|
||||
else:
|
||||
return sum(meta)
|
||||
|
||||
def main(filename):
|
||||
print(f"Solutions for {filename}")
|
||||
stream = load_stream(filename)
|
||||
node = parse_node(stream)
|
||||
meta = sum_of_meta(node)
|
||||
print(f"Part 1: {meta}")
|
||||
value = value_of(node)
|
||||
print(f"Part 2: {value}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
1
py/2018/08/test_input.txt
Normal file
1
py/2018/08/test_input.txt
Normal file
|
|
@ -0,0 +1 @@
|
|||
2 3 0 3 10 11 12 1 1 0 1 99 2 1 1 2
|
||||
87
py/2018/09/solve.py
Normal file
87
py/2018/09/solve.py
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
import sys
|
||||
import collections
|
||||
|
||||
# PART 1
|
||||
|
||||
class Circle:
|
||||
def __init__(self):
|
||||
self.marbles = collections.deque([0])
|
||||
#self.marbles = [0]
|
||||
self.next = 1
|
||||
|
||||
def move_focus(self, steps):
|
||||
self.marbles.rotate(steps)
|
||||
#self.marbles = self.marbles[steps:] + self.marbles[:steps]
|
||||
|
||||
def insert(self):
|
||||
self.marbles.append(self.next)
|
||||
#self.marbles = [self.next] + self.marbles
|
||||
self.next += 1
|
||||
|
||||
def remove(self):
|
||||
return self.marbles.pop()
|
||||
#n = self.marbles[0]
|
||||
#self.marbles = self.marbles[1:]
|
||||
#return n
|
||||
|
||||
def insert_marble(self):
|
||||
# returns the two marbles removed in a tuple, or None
|
||||
if self.next % 23 == 0:
|
||||
return self.insert_multiple()
|
||||
else:
|
||||
self.insert_normal()
|
||||
return None
|
||||
|
||||
def insert_normal(self):
|
||||
self.move_focus(2)
|
||||
self.insert()
|
||||
|
||||
def insert_multiple(self):
|
||||
cur = self.next
|
||||
self.next += 1
|
||||
|
||||
self.move_focus(-7)
|
||||
left = self.remove()
|
||||
|
||||
return (cur, left)
|
||||
|
||||
class Game:
|
||||
def __init__(self, elves, until):
|
||||
self.circle = Circle()
|
||||
self.until = until
|
||||
self.elves = [0 for _ in range(elves)]
|
||||
|
||||
def play(self):
|
||||
while True:
|
||||
for elf in range(len(self.elves)):
|
||||
if self.circle.next % 10000 == 0:
|
||||
print(f"{self.circle.next:5} of {self.until:5} - {100 * self.circle.next / self.until:.04}% {len(self.circle.marbles):8}")
|
||||
|
||||
if self.circle.next > self.until:
|
||||
return
|
||||
|
||||
result = self.circle.insert_marble()
|
||||
if result is not None:
|
||||
fst, snd = result
|
||||
self.elves[elf] += fst + snd
|
||||
|
||||
def highscore(self):
|
||||
return max(self.elves)
|
||||
|
||||
# PART 2
|
||||
|
||||
def main(elves, until):
|
||||
game = Game(elves, until)
|
||||
game.play()
|
||||
score = game.highscore()
|
||||
print(score)
|
||||
|
||||
if __name__ == "__main__":
|
||||
#main( 9, 25)
|
||||
#main(10, 1618)
|
||||
#main(13, 7999)
|
||||
#main(17, 1104)
|
||||
#main(21, 6111)
|
||||
#main(30, 5807)
|
||||
main(429, 70901)
|
||||
main(429, 70901*100)
|
||||
359
py/2018/10/input.txt
Normal file
359
py/2018/10/input.txt
Normal file
|
|
@ -0,0 +1,359 @@
|
|||
position=< 41710, 52012> velocity=<-4, -5>
|
||||
position=<-20558, -20616> velocity=< 2, 2>
|
||||
position=<-41271, 52017> velocity=< 4, -5>
|
||||
position=< 31365, -41361> velocity=<-3, 4>
|
||||
position=< 20944, 41633> velocity=<-2, -4>
|
||||
position=< 10588, -20613> velocity=<-1, 2>
|
||||
position=<-20510, -10238> velocity=< 2, 1>
|
||||
position=< 52099, 41642> velocity=<-5, -4>
|
||||
position=< 10584, 10510> velocity=<-1, -1>
|
||||
position=< 41734, 20883> velocity=<-4, -2>
|
||||
position=<-51679, -51742> velocity=< 5, 5>
|
||||
position=<-20542, 52017> velocity=< 2, -5>
|
||||
position=< 41732, -10237> velocity=<-4, 1>
|
||||
position=<-30892, 10517> velocity=< 3, -1>
|
||||
position=<-51663, -30984> velocity=< 5, 3>
|
||||
position=< 41733, 10512> velocity=<-4, -1>
|
||||
position=< 41735, -10238> velocity=<-4, 1>
|
||||
position=< 20990, 52017> velocity=<-2, -5>
|
||||
position=< 31370, -10233> velocity=<-3, 1>
|
||||
position=< 52096, 20883> velocity=<-5, -2>
|
||||
position=<-51631, 31266> velocity=< 5, -3>
|
||||
position=< 41720, 41641> velocity=<-4, -4>
|
||||
position=< 31325, -51739> velocity=<-3, 5>
|
||||
position=<-30884, 41634> velocity=< 3, -4>
|
||||
position=<-41257, -51736> velocity=< 4, 5>
|
||||
position=<-51643, 41634> velocity=< 5, -4>
|
||||
position=< 41748, -41359> velocity=<-4, 4>
|
||||
position=<-10130, 52009> velocity=< 1, -5>
|
||||
position=< 10588, 31261> velocity=<-1, -3>
|
||||
position=< 10569, -20613> velocity=<-1, 2>
|
||||
position=<-10130, -51738> velocity=< 1, 5>
|
||||
position=<-10155, 31258> velocity=< 1, -3>
|
||||
position=< 10567, 31265> velocity=<-1, -3>
|
||||
position=<-51675, 20883> velocity=< 5, -2>
|
||||
position=<-30909, 10515> velocity=< 3, -1>
|
||||
position=<-10155, 31259> velocity=< 1, -3>
|
||||
position=< 52108, -30988> velocity=<-5, 3>
|
||||
position=<-20497, 31260> velocity=< 2, -3>
|
||||
position=< 10588, 52010> velocity=<-1, -5>
|
||||
position=< 41708, 20888> velocity=<-4, -2>
|
||||
position=< 52107, -20611> velocity=<-5, 2>
|
||||
position=< 10571, -30988> velocity=<-1, 3>
|
||||
position=< 20975, 20892> velocity=<-2, -2>
|
||||
position=< 10620, 20889> velocity=<-1, -2>
|
||||
position=< 52096, 41633> velocity=<-5, -4>
|
||||
position=< 20984, 10512> velocity=<-2, -1>
|
||||
position=< 31327, 20887> velocity=<-3, -2>
|
||||
position=<-30920, -20615> velocity=< 3, 2>
|
||||
position=< 31370, 10512> velocity=<-3, -1>
|
||||
position=<-41290, 10512> velocity=< 4, -1>
|
||||
position=< 52118, 41638> velocity=<-5, -4>
|
||||
position=< 52083, 31259> velocity=<-5, -3>
|
||||
position=<-51630, -20612> velocity=< 5, 2>
|
||||
position=< 41711, 31264> velocity=<-4, -3>
|
||||
position=<-30912, -10233> velocity=< 3, 1>
|
||||
position=<-51646, -51742> velocity=< 5, 5>
|
||||
position=< 52123, 10515> velocity=<-5, -1>
|
||||
position=< 52120, 31267> velocity=<-5, -3>
|
||||
position=< 20998, -30983> velocity=<-2, 3>
|
||||
position=< 10601, 52017> velocity=<-1, -5>
|
||||
position=<-30933, 52012> velocity=< 3, -5>
|
||||
position=<-51667, -20617> velocity=< 5, 2>
|
||||
position=< 20975, -20617> velocity=<-2, 2>
|
||||
position=<-41308, 41633> velocity=< 4, -4>
|
||||
position=<-51655, -51739> velocity=< 5, 5>
|
||||
position=<-30893, -10238> velocity=< 3, 1>
|
||||
position=<-51630, -10239> velocity=< 5, 1>
|
||||
position=< 52067, 10513> velocity=<-5, -1>
|
||||
position=< 41742, -41364> velocity=<-4, 4>
|
||||
position=<-51683, 52015> velocity=< 5, -5>
|
||||
position=<-10122, 52009> velocity=< 1, -5>
|
||||
position=<-20549, -20613> velocity=< 2, 2>
|
||||
position=<-51627, 31262> velocity=< 5, -3>
|
||||
position=<-41256, 10515> velocity=< 4, -1>
|
||||
position=< 20950, 31258> velocity=<-2, -3>
|
||||
position=< 41697, -10241> velocity=<-4, 1>
|
||||
position=<-41247, 52013> velocity=< 4, -5>
|
||||
position=<-20530, 41639> velocity=< 2, -4>
|
||||
position=<-30893, 20890> velocity=< 3, -2>
|
||||
position=<-20505, 52015> velocity=< 2, -5>
|
||||
position=< 41702, 52008> velocity=<-4, -5>
|
||||
position=<-10179, 41637> velocity=< 1, -4>
|
||||
position=< 41703, 20887> velocity=<-4, -2>
|
||||
position=<-10139, -20613> velocity=< 1, 2>
|
||||
position=< 41748, -51738> velocity=<-4, 5>
|
||||
position=< 10618, -30986> velocity=<-1, 3>
|
||||
position=< 31329, 20887> velocity=<-3, -2>
|
||||
position=<-41259, 31260> velocity=< 4, -3>
|
||||
position=< 10615, 10513> velocity=<-1, -1>
|
||||
position=< 31345, 20890> velocity=<-3, -2>
|
||||
position=< 52070, -20617> velocity=<-5, 2>
|
||||
position=<-30892, -30992> velocity=< 3, 3>
|
||||
position=< 41748, -51735> velocity=<-4, 5>
|
||||
position=<-51650, -20617> velocity=< 5, 2>
|
||||
position=< 10567, 20883> velocity=<-1, -2>
|
||||
position=<-30893, -10234> velocity=< 3, 1>
|
||||
position=<-20554, 20887> velocity=< 2, -2>
|
||||
position=< 41753, -20614> velocity=<-4, 2>
|
||||
position=<-51649, 10512> velocity=< 5, -1>
|
||||
position=< 10594, -20608> velocity=<-1, 2>
|
||||
position=<-10130, 41635> velocity=< 1, -4>
|
||||
position=< 41708, -41359> velocity=<-4, 4>
|
||||
position=<-10127, 41637> velocity=< 1, -4>
|
||||
position=<-30877, -30989> velocity=< 3, 3>
|
||||
position=<-20558, -10234> velocity=< 2, 1>
|
||||
position=< 10567, -30991> velocity=<-1, 3>
|
||||
position=< 31357, 31267> velocity=<-3, -3>
|
||||
position=<-51622, -41363> velocity=< 5, 4>
|
||||
position=<-20522, -41358> velocity=< 2, 4>
|
||||
position=<-20502, 10513> velocity=< 2, -1>
|
||||
position=< 41718, 31267> velocity=<-4, -3>
|
||||
position=<-30928, 52009> velocity=< 3, -5>
|
||||
position=<-10174, 10508> velocity=< 1, -1>
|
||||
position=<-20550, 10517> velocity=< 2, -1>
|
||||
position=< 10607, 10516> velocity=<-1, -1>
|
||||
position=< 31373, -51734> velocity=<-3, 5>
|
||||
position=< 41708, 41636> velocity=<-4, -4>
|
||||
position=< 20978, 31258> velocity=<-2, -3>
|
||||
position=< 52108, 41642> velocity=<-5, -4>
|
||||
position=< 10623, -51741> velocity=<-1, 5>
|
||||
position=<-51675, 52009> velocity=< 5, -5>
|
||||
position=< 20977, -30983> velocity=<-2, 3>
|
||||
position=<-41268, 52008> velocity=< 4, -5>
|
||||
position=< 41713, 31258> velocity=<-4, -3>
|
||||
position=<-10138, -30983> velocity=< 1, 3>
|
||||
position=<-51635, -51738> velocity=< 5, 5>
|
||||
position=< 52120, 52014> velocity=<-5, -5>
|
||||
position=<-41300, 31265> velocity=< 4, -3>
|
||||
position=< 41713, -51741> velocity=<-4, 5>
|
||||
position=<-30905, 20888> velocity=< 3, -2>
|
||||
position=<-30898, 10508> velocity=< 3, -1>
|
||||
position=<-20523, -51742> velocity=< 2, 5>
|
||||
position=< 31336, -20612> velocity=<-3, 2>
|
||||
position=<-51622, 52012> velocity=< 5, -5>
|
||||
position=< 10595, -20613> velocity=<-1, 2>
|
||||
position=<-51635, 52010> velocity=< 5, -5>
|
||||
position=< 20976, -51742> velocity=<-2, 5>
|
||||
position=<-20510, 31259> velocity=< 2, -3>
|
||||
position=< 31320, 41633> velocity=<-3, -4>
|
||||
position=< 31351, -30992> velocity=<-3, 3>
|
||||
position=< 41705, -41366> velocity=<-4, 4>
|
||||
position=< 41741, -30991> velocity=<-4, 3>
|
||||
position=< 20995, -51735> velocity=<-2, 5>
|
||||
position=<-51675, -10239> velocity=< 5, 1>
|
||||
position=< 31349, -30990> velocity=<-3, 3>
|
||||
position=<-30896, -30992> velocity=< 3, 3>
|
||||
position=< 20963, 10517> velocity=<-2, -1>
|
||||
position=< 52128, -20610> velocity=<-5, 2>
|
||||
position=<-20522, -41358> velocity=< 2, 4>
|
||||
position=<-51683, -51739> velocity=< 5, 5>
|
||||
position=< 10610, 52017> velocity=<-1, -5>
|
||||
position=< 31361, 41633> velocity=<-3, -4>
|
||||
position=< 31334, -41365> velocity=<-3, 4>
|
||||
position=< 20958, 52017> velocity=<-2, -5>
|
||||
position=<-10146, -20617> velocity=< 1, 2>
|
||||
position=<-51643, 31258> velocity=< 5, -3>
|
||||
position=<-10155, -30987> velocity=< 1, 3>
|
||||
position=<-20550, -20611> velocity=< 2, 2>
|
||||
position=< 31349, 31264> velocity=<-3, -3>
|
||||
position=< 10620, 20888> velocity=<-1, -2>
|
||||
position=<-10183, -10236> velocity=< 1, 1>
|
||||
position=<-10162, -51734> velocity=< 1, 5>
|
||||
position=<-41266, -10242> velocity=< 4, 1>
|
||||
position=<-30933, 10510> velocity=< 3, -1>
|
||||
position=<-30872, 10516> velocity=< 3, -1>
|
||||
position=< 20976, -10238> velocity=<-2, 1>
|
||||
position=<-30877, -20614> velocity=< 3, 2>
|
||||
position=<-41247, 52011> velocity=< 4, -5>
|
||||
position=<-10151, 10509> velocity=< 1, -1>
|
||||
position=< 10600, -41363> velocity=<-1, 4>
|
||||
position=<-20510, 41639> velocity=< 2, -4>
|
||||
position=<-30914, 31263> velocity=< 3, -3>
|
||||
position=< 52083, 41637> velocity=<-5, -4>
|
||||
position=<-10143, -30986> velocity=< 1, 3>
|
||||
position=<-51675, -41365> velocity=< 5, 4>
|
||||
position=<-41287, 41640> velocity=< 4, -4>
|
||||
position=< 41705, 10510> velocity=<-4, -1>
|
||||
position=< 10595, -41364> velocity=<-1, 4>
|
||||
position=<-10122, 20891> velocity=< 1, -2>
|
||||
position=<-51657, -10233> velocity=< 5, 1>
|
||||
position=< 20970, 20887> velocity=<-2, -2>
|
||||
position=< 20960, 52011> velocity=<-2, -5>
|
||||
position=< 10588, 10515> velocity=<-1, -1>
|
||||
position=< 10607, -20609> velocity=<-1, 2>
|
||||
position=<-41295, 20884> velocity=< 4, -2>
|
||||
position=< 52075, -51738> velocity=<-5, 5>
|
||||
position=< 52115, 20890> velocity=<-5, -2>
|
||||
position=<-41268, 41635> velocity=< 4, -4>
|
||||
position=< 41705, -41366> velocity=<-4, 4>
|
||||
position=<-41287, -51740> velocity=< 4, 5>
|
||||
position=< 20977, -51738> velocity=<-2, 5>
|
||||
position=< 20960, -10239> velocity=<-2, 1>
|
||||
position=<-41265, 31267> velocity=< 4, -3>
|
||||
position=<-20524, -30983> velocity=< 2, 3>
|
||||
position=<-30898, -51742> velocity=< 3, 5>
|
||||
position=<-51666, -30990> velocity=< 5, 3>
|
||||
position=<-20497, -41366> velocity=< 2, 4>
|
||||
position=< 10595, 10508> velocity=<-1, -1>
|
||||
position=< 41752, -20613> velocity=<-4, 2>
|
||||
position=<-30893, 41633> velocity=< 3, -4>
|
||||
position=< 41692, -51742> velocity=<-4, 5>
|
||||
position=< 31338, -30987> velocity=<-3, 3>
|
||||
position=< 41692, -51741> velocity=<-4, 5>
|
||||
position=<-10172, -10242> velocity=< 1, 1>
|
||||
position=< 41728, 31262> velocity=<-4, -3>
|
||||
position=< 20970, -10234> velocity=<-2, 1>
|
||||
position=<-30872, -10241> velocity=< 3, 1>
|
||||
position=< 31359, -10238> velocity=<-3, 1>
|
||||
position=<-10175, -30992> velocity=< 1, 3>
|
||||
position=< 41740, 52016> velocity=<-4, -5>
|
||||
position=< 10599, -20612> velocity=<-1, 2>
|
||||
position=<-20534, -30985> velocity=< 2, 3>
|
||||
position=<-30893, -30991> velocity=< 3, 3>
|
||||
position=< 10568, -10242> velocity=<-1, 1>
|
||||
position=< 10603, 52017> velocity=<-1, -5>
|
||||
position=<-20537, 52011> velocity=< 2, -5>
|
||||
position=<-10174, 20887> velocity=< 1, -2>
|
||||
position=<-30904, -20617> velocity=< 3, 2>
|
||||
position=< 20982, -51741> velocity=<-2, 5>
|
||||
position=< 31373, 20883> velocity=<-3, -2>
|
||||
position=<-10143, 10514> velocity=< 1, -1>
|
||||
position=<-41292, 10515> velocity=< 4, -1>
|
||||
position=< 10599, -30990> velocity=<-1, 3>
|
||||
position=< 52128, 41637> velocity=<-5, -4>
|
||||
position=< 52115, 10517> velocity=<-5, -1>
|
||||
position=<-30893, -51739> velocity=< 3, 5>
|
||||
position=< 52123, -10237> velocity=<-5, 1>
|
||||
position=<-10175, -20616> velocity=< 1, 2>
|
||||
position=< 20974, 20891> velocity=<-2, -2>
|
||||
position=< 21003, 52014> velocity=<-2, -5>
|
||||
position=<-41255, -41359> velocity=< 4, 4>
|
||||
position=<-41268, -30989> velocity=< 4, 3>
|
||||
position=< 41700, -30989> velocity=<-4, 3>
|
||||
position=< 10599, 31261> velocity=<-1, -3>
|
||||
position=< 31343, -51733> velocity=<-3, 5>
|
||||
position=<-20497, -51735> velocity=< 2, 5>
|
||||
position=<-20517, -30983> velocity=< 2, 3>
|
||||
position=< 52102, -20608> velocity=<-5, 2>
|
||||
position=<-30900, 20883> velocity=< 3, -2>
|
||||
position=<-51651, 20883> velocity=< 5, -2>
|
||||
position=<-30898, -41358> velocity=< 3, 4>
|
||||
position=< 52084, -10241> velocity=<-5, 1>
|
||||
position=< 41708, 10512> velocity=<-4, -1>
|
||||
position=<-20556, 52008> velocity=< 2, -5>
|
||||
position=< 31325, -30986> velocity=<-3, 3>
|
||||
position=<-30925, 20888> velocity=< 3, -2>
|
||||
position=<-10151, -20616> velocity=< 1, 2>
|
||||
position=< 52101, -20617> velocity=<-5, 2>
|
||||
position=< 52072, -20615> velocity=<-5, 2>
|
||||
position=< 21003, 10517> velocity=<-2, -1>
|
||||
position=<-51658, -30983> velocity=< 5, 3>
|
||||
position=<-30933, 52013> velocity=< 3, -5>
|
||||
position=<-51630, 10516> velocity=< 5, -1>
|
||||
position=<-20531, -10233> velocity=< 2, 1>
|
||||
position=<-30933, -10238> velocity=< 3, 1>
|
||||
position=< 10584, 10509> velocity=<-1, -1>
|
||||
position=< 20994, 41641> velocity=<-2, -4>
|
||||
position=< 52091, 31265> velocity=<-5, -3>
|
||||
position=<-10130, -51741> velocity=< 1, 5>
|
||||
position=<-30885, 31261> velocity=< 3, -3>
|
||||
position=<-41276, -30985> velocity=< 4, 3>
|
||||
position=< 41751, -20613> velocity=<-4, 2>
|
||||
position=<-41272, -20613> velocity=< 4, 2>
|
||||
position=<-30901, -51739> velocity=< 3, 5>
|
||||
position=<-20501, 31262> velocity=< 2, -3>
|
||||
position=<-10130, -51742> velocity=< 1, 5>
|
||||
position=<-41266, 20883> velocity=< 4, -2>
|
||||
position=<-30877, 10516> velocity=< 3, -1>
|
||||
position=<-10156, -20617> velocity=< 1, 2>
|
||||
position=< 10609, 31262> velocity=<-1, -3>
|
||||
position=< 41695, 41637> velocity=<-4, -4>
|
||||
position=<-41252, 20892> velocity=< 4, -2>
|
||||
position=< 52123, -41365> velocity=<-5, 4>
|
||||
position=< 41740, -30987> velocity=<-4, 3>
|
||||
position=<-41275, 20892> velocity=< 4, -2>
|
||||
position=< 20970, -30990> velocity=<-2, 3>
|
||||
position=< 10569, 52008> velocity=<-1, -5>
|
||||
position=<-41295, -51739> velocity=< 4, 5>
|
||||
position=<-20541, -51741> velocity=< 2, 5>
|
||||
position=<-30921, 20883> velocity=< 3, -2>
|
||||
position=<-20502, 41639> velocity=< 2, -4>
|
||||
position=<-30930, 20883> velocity=< 3, -2>
|
||||
position=< 20975, -10233> velocity=<-2, 1>
|
||||
position=< 31362, -51742> velocity=<-3, 5>
|
||||
position=<-20505, -41366> velocity=< 2, 4>
|
||||
position=< 41753, 52008> velocity=<-4, -5>
|
||||
position=<-41252, -41361> velocity=< 4, 4>
|
||||
position=<-41276, 20886> velocity=< 4, -2>
|
||||
position=<-30892, 31262> velocity=< 3, -3>
|
||||
position=< 52099, -30986> velocity=<-5, 3>
|
||||
position=<-30912, 31261> velocity=< 3, -3>
|
||||
position=< 31365, 41636> velocity=<-3, -4>
|
||||
position=<-41292, -10242> velocity=< 4, 1>
|
||||
position=< 10583, 41639> velocity=<-1, -4>
|
||||
position=< 52123, 10510> velocity=<-5, -1>
|
||||
position=<-20553, 10509> velocity=< 2, -1>
|
||||
position=<-41257, -30987> velocity=< 4, 3>
|
||||
position=< 52083, -41358> velocity=<-5, 4>
|
||||
position=<-30885, -51741> velocity=< 3, 5>
|
||||
position=< 41713, -41365> velocity=<-4, 4>
|
||||
position=< 31360, 31258> velocity=<-3, -3>
|
||||
position=< 52099, -30992> velocity=<-5, 3>
|
||||
position=<-41255, 41637> velocity=< 4, -4>
|
||||
position=<-30932, 20887> velocity=< 3, -2>
|
||||
position=< 10599, 41633> velocity=<-1, -4>
|
||||
position=<-51683, 52010> velocity=< 5, -5>
|
||||
position=< 41745, 31258> velocity=<-4, -3>
|
||||
position=< 20991, 31260> velocity=<-2, -3>
|
||||
position=<-30925, -10234> velocity=< 3, 1>
|
||||
position=< 20974, 20889> velocity=<-2, -2>
|
||||
position=<-30921, -20617> velocity=< 3, 2>
|
||||
position=<-30893, 41635> velocity=< 3, -4>
|
||||
position=< 41736, -41358> velocity=<-4, 4>
|
||||
position=<-51627, -41358> velocity=< 5, 4>
|
||||
position=< 10595, 41633> velocity=<-1, -4>
|
||||
position=<-20498, 20887> velocity=< 2, -2>
|
||||
position=<-10167, 10510> velocity=< 1, -1>
|
||||
position=<-51675, 10510> velocity=< 5, -1>
|
||||
position=<-41287, 10514> velocity=< 4, -1>
|
||||
position=< 20992, -51738> velocity=<-2, 5>
|
||||
position=< 31321, -10242> velocity=<-3, 1>
|
||||
position=< 20990, -51741> velocity=<-2, 5>
|
||||
position=< 10585, -20613> velocity=<-1, 2>
|
||||
position=<-10151, 10510> velocity=< 1, -1>
|
||||
position=<-51643, -10237> velocity=< 5, 1>
|
||||
position=<-10183, 20892> velocity=< 1, -2>
|
||||
position=< 31317, 20892> velocity=<-3, -2>
|
||||
position=<-30905, -10236> velocity=< 3, 1>
|
||||
position=<-51627, 20885> velocity=< 5, -2>
|
||||
position=< 31341, 41641> velocity=<-3, -4>
|
||||
position=< 52109, 52017> velocity=<-5, -5>
|
||||
position=<-30893, 31265> velocity=< 3, -3>
|
||||
position=< 41724, 31262> velocity=<-4, -3>
|
||||
position=<-30933, -51740> velocity=< 3, 5>
|
||||
position=<-10163, -41360> velocity=< 1, 4>
|
||||
position=<-20542, 20885> velocity=< 2, -2>
|
||||
position=< 52123, -41362> velocity=<-5, 4>
|
||||
position=< 10615, 10508> velocity=<-1, -1>
|
||||
position=< 52086, -10237> velocity=<-5, 1>
|
||||
position=< 10588, 41633> velocity=<-1, -4>
|
||||
position=<-41268, -41358> velocity=< 4, 4>
|
||||
position=<-41255, 20888> velocity=< 4, -2>
|
||||
position=< 41753, 20889> velocity=<-4, -2>
|
||||
position=<-41260, -20611> velocity=< 4, 2>
|
||||
position=<-41308, -10233> velocity=< 4, 1>
|
||||
position=<-10162, 10512> velocity=< 1, -1>
|
||||
position=< 10594, -51733> velocity=<-1, 5>
|
||||
position=< 20978, -20617> velocity=<-2, 2>
|
||||
position=< 10576, -41367> velocity=<-1, 4>
|
||||
position=< 31338, -30988> velocity=<-3, 3>
|
||||
position=<-30917, 10508> velocity=< 3, -1>
|
||||
position=< 41732, 20885> velocity=<-4, -2>
|
||||
position=< 10595, 52010> velocity=<-1, -5>
|
||||
position=< 52125, -41363> velocity=<-5, 4>
|
||||
position=< 20974, -20610> velocity=<-2, 2>
|
||||
position=< 10572, 52011> velocity=<-1, -5>
|
||||
position=< 20958, 10514> velocity=<-2, -1>
|
||||
position=<-30885, -10234> velocity=< 3, 1>
|
||||
position=< 31320, 52012> velocity=<-3, -5>
|
||||
86
py/2018/10/solve.py
Normal file
86
py/2018/10/solve.py
Normal file
|
|
@ -0,0 +1,86 @@
|
|||
import re
|
||||
import sys
|
||||
|
||||
# PART 1
|
||||
|
||||
POINT_RE = r"position=<\s*(-?\d+),\s*(-?\d+)> velocity=<\s*(-?\d+),\s*(-?\d+)>\n"
|
||||
|
||||
class Point:
|
||||
def __init__(self, pos, vel):
|
||||
self.pos = pos
|
||||
self.vel = vel
|
||||
|
||||
@classmethod
|
||||
def from_line(cls, line):
|
||||
match = re.fullmatch(POINT_RE, line)
|
||||
x, y, dx, dy = map(int, match.groups())
|
||||
return cls((x, y), (dx, dy))
|
||||
|
||||
def step(self):
|
||||
x, y = self.pos
|
||||
dx, dy = self.vel
|
||||
self.pos = (x + dx, y + dy)
|
||||
|
||||
class Field:
|
||||
def __init__(self, points=None):
|
||||
self.points = points or []
|
||||
self.steps = 0
|
||||
|
||||
@classmethod
|
||||
def from_file(cls, filename):
|
||||
points = []
|
||||
with open(filename, "r") as f:
|
||||
for line in f:
|
||||
points.append(Point.from_line(line))
|
||||
return cls(points=points)
|
||||
|
||||
def step(self):
|
||||
for point in self.points:
|
||||
point.step()
|
||||
self.steps += 1
|
||||
|
||||
def step_until_in_limits(self):
|
||||
while True:
|
||||
coords = set(point.pos for point in self.points)
|
||||
xs = set(x for (x, _) in coords)
|
||||
ys = set(y for (_, y) in coords)
|
||||
|
||||
if max(xs) - min(xs) < 500:
|
||||
return
|
||||
|
||||
self.step()
|
||||
|
||||
print(min(xs), max(xs), min(ys), max(ys))
|
||||
|
||||
def render(self):
|
||||
coords = set(point.pos for point in self.points)
|
||||
xs = set(x for (x, _) in coords)
|
||||
ys = set(y for (_, y) in coords)
|
||||
|
||||
for y in range(min(ys), max(ys) + 1):
|
||||
for x in range(min(xs), max(xs) + 1):
|
||||
if (x, y) in coords:
|
||||
print("#", end="")
|
||||
else:
|
||||
print(".", end="")
|
||||
print()
|
||||
|
||||
print(self.steps)
|
||||
|
||||
# PART 2
|
||||
|
||||
def main(filename):
|
||||
print(f"Solutions for {filename}")
|
||||
|
||||
print("Part 1:")
|
||||
field = Field.from_file(filename)
|
||||
field.step_until_in_limits()
|
||||
while input() == "":
|
||||
field.render()
|
||||
field.step()
|
||||
|
||||
print("Part 2: NYI")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
79
py/2018/11/solve.py
Normal file
79
py/2018/11/solve.py
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
import sys
|
||||
|
||||
# PART 1
|
||||
|
||||
def nth_digit(num, pos):
|
||||
# nth_digit(1234, 0) = 123[4] = 4
|
||||
# nth_digit(1234, 2) = 1[2]34 = 2
|
||||
# nth_digit(1234, 4) = [0]1234 = 0
|
||||
|
||||
pos += 1
|
||||
s = ("{:0" + str(pos) + "}").format(num) # UGLY!
|
||||
n = s[-pos]
|
||||
return int(n)
|
||||
|
||||
def power_level(number, x, y):
|
||||
rack_id = x + 10
|
||||
level = rack_id * y
|
||||
level += number
|
||||
level *= rack_id
|
||||
level = nth_digit(level, 2) # 100-er digit
|
||||
level -= 5
|
||||
return level
|
||||
|
||||
def init_grid(number):
|
||||
grid = {}
|
||||
for x in range(1, 300 + 1):
|
||||
for y in range(1, 300 + 1):
|
||||
grid[(x, y)] = power_level(number, x, y)
|
||||
return grid
|
||||
|
||||
def power_of_square(grid, x, y):
|
||||
power = 0
|
||||
for dx in range(3):
|
||||
for dy in range(3):
|
||||
power += grid[(x+dx, y+dy)]
|
||||
return power
|
||||
|
||||
def find_max_power(grid):
|
||||
max_power = 0
|
||||
max_coords = None
|
||||
|
||||
for x in range(1, 300 - 2 + 1):
|
||||
for y in range(1, 300 - 2 + 1):
|
||||
power = power_of_square(grid, x, y)
|
||||
if power > max_power:
|
||||
max_power = power
|
||||
max_coords = (x, y)
|
||||
|
||||
return max_coords
|
||||
|
||||
# PART 2
|
||||
|
||||
def square_power(grid, x, y, size):
|
||||
pass
|
||||
|
||||
def max_square(grid):
|
||||
max_power = 0
|
||||
max_coords = None
|
||||
max_size = None
|
||||
|
||||
for size in range(1, 300 + 1):
|
||||
for x in range(1, 300 + 1 - (size - 1)):
|
||||
for y in range(1, 300 + 1 - (size - 1)):
|
||||
pass
|
||||
|
||||
def main(number):
|
||||
print(f"Solutions for {number}")
|
||||
grid = init_grid(number)
|
||||
x, y = find_max_power(grid)
|
||||
print(f"Part 1: {x},{y}")
|
||||
print(f"Part 2: NYI")
|
||||
|
||||
if __name__ == "__main__":
|
||||
print(power_level( 8, 3, 5))
|
||||
print(power_level(57, 122, 79))
|
||||
print(power_level(39, 217, 196))
|
||||
print(power_level(71, 101, 153))
|
||||
|
||||
main(5153)
|
||||
14
py/solve.py
Normal file
14
py/solve.py
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
import sys
|
||||
|
||||
# PART 1
|
||||
|
||||
# PART 2
|
||||
|
||||
def main(filename):
|
||||
print(f"Solutions for {filename}")
|
||||
print(f"Part 1: NYI")
|
||||
print(f"Part 2: NYI")
|
||||
|
||||
if __name__ == "__main__":
|
||||
for filename in sys.argv[1:]:
|
||||
main(filename)
|
||||
Loading…
Add table
Add a link
Reference in a new issue