add 2023 stuff oops

This commit is contained in:
a 2024-03-05 03:32:18 -06:00
parent 77bea7b01a
commit 0f38cd6bf0
18 changed files with 3243 additions and 0 deletions

25
2023/01/01.py Normal file
View file

@ -0,0 +1,25 @@
with open("input.txt") as f:
lines = f.readlines()
def extract_numbers(line: str) -> int:
nums = [c for c in line if c in "1234567890"]
return int(nums[0] + nums[-1])
part1 = sum(map(extract_numbers, lines))
print(part1)
def extract_numbers2(line: str) -> int:
# we need to preserve overlaps in both directions
line = line.replace("one", "one1one")
line = line.replace("two", "two2two")
line = line.replace("three", "three3three")
line = line.replace("four", "four4four")
line = line.replace("five", "five5five")
line = line.replace("six", "six6six")
line = line.replace("seven", "seven7seven")
line = line.replace("eight", "eight8eight")
line = line.replace("nine", "nine9nine")
return extract_numbers(line)
part2 = sum(map(extract_numbers2, lines))
print(part2)

1000
2023/01/input.txt Normal file

File diff suppressed because it is too large Load diff

50
2023/02/02.py Normal file
View file

@ -0,0 +1,50 @@
with open("input.txt") as f:
lines = f.readlines()
def parse_game(line: str) -> tuple[int, list[dict[str, int]]]:
prefix, turns = line.strip("\n").split(": ")
game = int(prefix[5:]) # remove "Game ", yielding just the number
draw_list = []
for turn in turns.split("; "):
draws = {}
for color in turn.split(", "):
v, k = color.split(" ") # count, then color
draws[k] = int(v) # map color -> count
draw_list.append(draws)
return (game, draw_list)
part1 = 0
R = 12
G = 13
B = 14
for line in lines:
game, draw_list = parse_game(line)
possible = True
for draw in draw_list:
red = draw.get("red", 0)
green = draw.get("green", 0)
blue = draw.get("blue", 0)
if red > R or green > G or blue > B:
possible = False
if possible:
part1 += game
print(part1)
part2 = 0
for line in lines:
game, draw_list = parse_game(line)
R = 0
G = 0
B = 0
for draw in draw_list:
red = draw.get("red", 0)
green = draw.get("green", 0)
blue = draw.get("blue", 0)
R = max(red, R)
G = max(green, G)
B = max(blue, B)
power = R*G*B
part2 += power
print(part2)

100
2023/02/input.txt Normal file
View file

@ -0,0 +1,100 @@
Game 1: 12 blue, 15 red, 2 green; 17 red, 8 green, 5 blue; 8 red, 17 blue; 9 green, 1 blue, 4 red
Game 2: 6 red, 6 blue, 2 green; 1 blue, 1 red; 6 green, 1 red, 10 blue
Game 3: 1 green, 2 blue; 7 blue, 4 green; 2 green, 1 blue; 10 blue, 4 green; 4 blue; 1 green, 7 blue, 1 red
Game 4: 16 red, 12 blue, 10 green; 15 red, 5 green, 6 blue; 10 green, 15 red, 12 blue
Game 5: 2 green, 2 red, 9 blue; 1 red, 5 green; 4 green, 12 blue, 1 red; 5 blue, 8 green
Game 6: 17 blue, 3 green, 4 red; 6 green, 16 blue, 3 red; 2 red, 15 blue
Game 7: 4 green, 10 red; 1 green, 4 red, 4 blue; 4 blue, 11 red
Game 8: 8 green, 4 blue; 17 green, 4 red; 10 blue, 5 green, 9 red; 9 green, 8 red, 3 blue; 9 green, 5 red, 2 blue
Game 9: 4 red, 2 green; 7 blue, 3 red, 3 green; 3 green, 7 blue, 3 red
Game 10: 3 green, 2 red, 2 blue; 3 green, 11 red, 1 blue; 16 green, 11 red
Game 11: 2 blue, 18 green; 12 blue, 1 green; 2 green, 6 blue; 1 red, 4 blue, 20 green; 14 blue, 1 red, 4 green
Game 12: 2 green, 1 blue, 7 red; 11 red, 3 green, 6 blue; 1 red, 2 blue, 3 green; 4 red, 2 green, 5 blue
Game 13: 4 red, 17 blue, 5 green; 6 blue, 2 green; 12 blue, 4 green, 2 red; 5 green, 9 blue; 5 green, 3 blue, 3 red; 4 green, 1 red, 7 blue
Game 14: 4 blue, 18 green; 3 blue, 3 red, 13 green; 5 blue, 10 green; 10 green, 2 blue; 1 blue, 14 green; 3 blue, 18 green, 2 red
Game 15: 1 green, 2 blue, 1 red; 1 green, 2 red, 1 blue; 1 green, 2 red; 1 green, 4 blue, 4 red; 6 blue, 2 red, 1 green; 3 blue, 2 red
Game 16: 3 green, 2 red; 4 green, 1 red, 8 blue; 5 blue, 9 red, 3 green; 7 blue, 19 green, 18 red
Game 17: 10 blue, 9 red, 7 green; 16 red, 11 green, 11 blue; 8 blue, 3 green; 12 red, 1 blue, 10 green
Game 18: 11 green, 11 blue, 5 red; 7 red, 11 green, 13 blue; 5 green, 9 red, 6 blue; 9 red, 16 green, 17 blue
Game 19: 8 red, 3 green, 16 blue; 13 green, 8 blue; 7 red, 8 green, 1 blue; 13 red, 3 blue, 7 green; 6 green, 14 blue, 13 red; 15 blue, 9 green, 13 red
Game 20: 1 red, 7 green, 5 blue; 14 green, 4 blue; 10 green, 11 blue, 2 red; 2 red, 3 blue, 1 green; 1 red, 5 blue, 8 green
Game 21: 10 green, 12 blue, 6 red; 17 blue, 6 red, 6 green; 12 blue, 9 green, 4 red; 5 blue, 3 red, 4 green; 6 green, 7 blue, 5 red
Game 22: 1 blue, 3 red, 16 green; 4 red, 1 blue, 3 green; 12 green, 1 blue, 2 red; 12 red
Game 23: 2 red, 6 blue, 1 green; 11 red, 13 blue, 4 green; 8 red, 3 blue, 6 green; 2 green, 8 blue, 2 red; 7 red, 11 blue, 4 green
Game 24: 4 red, 12 green, 2 blue; 8 blue, 15 red; 1 blue, 10 green, 8 red; 1 green, 2 blue, 6 red; 10 green, 8 blue, 5 red
Game 25: 2 blue, 11 green; 17 green, 1 red, 2 blue; 2 blue, 3 red, 1 green
Game 26: 16 blue, 11 green; 4 green; 9 green, 4 blue; 10 green, 5 blue; 1 red, 5 blue, 9 green; 5 green, 5 blue
Game 27: 10 green, 2 red; 5 blue, 1 red; 6 red, 5 green
Game 28: 3 red, 5 green, 10 blue; 1 red, 5 green, 2 blue; 6 blue, 2 green, 2 red; 6 red, 9 blue, 1 green; 3 red; 3 red, 2 green, 2 blue
Game 29: 8 red, 18 blue, 5 green; 1 blue, 8 red, 2 green; 2 red, 4 green, 18 blue; 6 red, 4 green, 7 blue
Game 30: 1 red, 18 green; 11 green; 4 blue, 5 red, 14 green; 3 green, 8 blue, 2 red
Game 31: 1 red, 5 blue, 17 green; 7 blue; 10 green, 8 blue, 1 red; 11 green, 4 blue
Game 32: 5 blue, 15 red, 12 green; 6 red, 8 green, 8 blue; 2 red, 14 green, 3 blue; 4 blue, 15 green; 7 blue, 12 red, 7 green; 2 blue, 9 red, 7 green
Game 33: 13 red, 2 green; 1 green, 7 red, 15 blue; 1 green, 14 blue, 13 red; 8 red, 2 green; 12 red, 14 blue, 10 green; 8 green, 16 blue, 10 red
Game 34: 11 green, 9 blue, 2 red; 4 red, 1 green, 8 blue; 4 blue, 7 green, 4 red; 7 blue, 1 red, 8 green; 9 blue, 1 red, 4 green; 2 red, 10 green, 4 blue
Game 35: 3 red, 9 blue; 11 blue, 3 red, 12 green; 7 green, 10 blue, 2 red
Game 36: 9 blue, 3 green, 3 red; 5 blue, 1 red, 3 green; 2 green, 6 red; 9 blue, 7 red
Game 37: 1 red, 7 blue; 4 red, 1 green; 1 green, 9 red, 9 blue
Game 38: 1 green, 12 red; 4 green, 12 red, 4 blue; 5 green, 10 red; 6 red, 4 green, 3 blue; 4 green, 10 red; 2 green, 5 blue, 4 red
Game 39: 2 blue; 4 red; 4 red, 5 green, 1 blue
Game 40: 7 red, 2 green, 17 blue; 12 green, 1 red, 7 blue; 9 green, 2 red, 8 blue
Game 41: 18 green, 5 red, 4 blue; 20 green, 17 blue, 5 red; 3 red, 7 blue, 7 green; 4 red, 19 green, 18 blue; 20 blue, 20 green
Game 42: 1 green, 6 blue, 1 red; 5 blue, 1 red, 3 green; 3 green, 7 blue, 1 red
Game 43: 4 blue, 6 green, 13 red; 16 red, 7 blue, 8 green; 4 green, 16 red
Game 44: 5 green, 4 red, 13 blue; 4 red, 12 blue, 3 green; 6 green
Game 45: 1 red, 17 blue, 15 green; 6 red, 3 green, 9 blue; 5 green, 1 blue, 7 red; 6 blue, 4 red, 4 green
Game 46: 1 blue, 11 red, 1 green; 2 red, 2 green, 1 blue; 4 red, 1 green, 1 blue; 2 blue, 7 red, 3 green; 11 red, 3 green
Game 47: 2 red, 1 blue; 1 green, 1 red, 1 blue; 5 green, 1 red
Game 48: 9 blue, 1 red; 1 green, 2 red, 11 blue; 2 red, 6 blue
Game 49: 5 blue, 7 red, 17 green; 5 red, 4 green, 7 blue; 1 red, 3 blue; 4 red, 12 green, 6 blue; 6 green, 4 blue, 3 red
Game 50: 11 blue, 12 green, 1 red; 8 green, 7 red, 9 blue; 13 red, 12 blue, 10 green; 5 green, 10 blue, 3 red
Game 51: 8 blue, 1 red; 5 red, 2 green; 9 blue, 6 red, 4 green; 4 green, 1 red, 13 blue; 15 blue, 3 red, 8 green; 6 red, 1 green, 4 blue
Game 52: 2 blue, 1 red; 1 red, 4 blue, 5 green; 3 red, 14 blue, 2 green
Game 53: 8 blue, 10 green, 11 red; 5 red, 4 blue, 19 green; 8 red, 3 blue; 3 red, 3 blue, 2 green; 4 red, 4 green
Game 54: 3 green, 17 red; 7 green, 13 red, 5 blue; 11 blue, 10 red, 10 green; 3 green, 19 red, 4 blue; 11 green, 6 blue, 19 red; 5 red, 4 blue, 9 green
Game 55: 3 blue, 4 red; 1 red, 1 blue, 2 green; 4 blue, 2 green, 4 red
Game 56: 10 red, 3 green, 5 blue; 2 blue, 2 red; 7 red, 3 blue, 2 green
Game 57: 12 red, 1 blue, 8 green; 1 blue, 3 green, 10 red; 5 green, 8 red
Game 58: 6 red, 4 green, 2 blue; 7 red, 6 blue, 14 green; 5 blue, 6 red, 2 green; 2 red, 4 blue; 7 blue, 12 green; 7 green, 3 blue, 8 red
Game 59: 6 red, 5 blue; 5 blue, 1 green; 1 blue, 6 red; 4 blue, 2 red, 1 green; 3 red, 2 blue; 3 blue, 5 red, 1 green
Game 60: 1 red, 12 green, 2 blue; 4 red, 5 blue; 12 green, 1 red; 5 blue, 13 red, 17 green; 15 green, 1 blue
Game 61: 10 blue, 18 red; 4 blue, 1 green, 14 red; 4 blue, 2 green; 2 green, 6 red, 10 blue
Game 62: 2 green, 13 blue, 8 red; 7 green, 5 red, 8 blue; 5 red, 8 blue; 3 red, 5 green, 4 blue; 15 blue, 5 red, 6 green
Game 63: 6 red, 7 green, 2 blue; 2 red, 6 green; 2 blue, 4 red, 5 green; 1 blue, 2 red, 5 green; 4 red, 8 green; 9 green, 2 red
Game 64: 4 red, 4 blue; 7 blue, 5 red; 8 green, 5 red, 6 blue; 2 red, 3 blue, 1 green; 7 blue, 9 green, 7 red; 11 green, 2 red, 3 blue
Game 65: 1 red, 11 green, 9 blue; 2 red, 5 green, 17 blue; 2 red, 3 blue, 6 green; 2 red, 6 green, 14 blue
Game 66: 7 green, 5 red, 2 blue; 5 red, 7 green, 2 blue; 6 green, 3 blue, 15 red; 8 green, 20 red, 4 blue; 8 red, 8 green, 3 blue; 3 blue, 11 red, 5 green
Game 67: 2 blue, 2 green; 6 blue, 1 green, 3 red; 3 red, 7 green, 4 blue; 1 red, 1 green, 8 blue
Game 68: 1 green, 3 red; 2 green, 1 blue, 5 red; 2 red, 2 green, 1 blue; 2 green, 3 red, 1 blue; 6 red, 1 blue
Game 69: 4 red, 2 green, 3 blue; 14 red; 3 blue; 11 red, 1 green; 13 red, 3 green, 2 blue
Game 70: 1 green, 1 blue, 6 red; 1 green, 4 red, 1 blue; 6 red, 1 blue
Game 71: 1 green, 8 blue, 10 red; 6 green, 3 red, 2 blue; 14 red, 3 green; 9 blue, 2 green, 2 red; 7 blue, 5 red, 1 green; 6 green, 5 blue, 10 red
Game 72: 2 red, 10 blue; 1 red, 7 blue, 4 green; 1 red, 3 green, 6 blue
Game 73: 6 red, 6 blue, 5 green; 1 blue, 11 green, 7 red; 10 red, 7 blue, 2 green
Game 74: 4 green, 2 red, 3 blue; 1 red, 6 green; 2 red, 4 blue; 1 blue; 2 blue, 1 green
Game 75: 10 red, 5 blue, 1 green; 12 blue; 2 green, 11 blue, 9 red; 1 blue, 14 red; 2 red, 2 green, 13 blue
Game 76: 9 green, 1 blue; 8 green, 2 blue, 7 red; 4 blue, 7 green, 4 red
Game 77: 14 red, 3 blue, 10 green; 3 blue, 7 green, 2 red; 5 red, 7 green, 3 blue; 14 red, 8 green, 3 blue; 9 green, 5 red; 2 blue, 7 red, 15 green
Game 78: 5 blue, 9 green, 8 red; 11 green, 9 blue, 4 red; 8 red, 2 blue, 10 green; 3 blue, 7 green
Game 79: 4 red, 6 blue, 10 green; 2 blue, 17 green, 15 red; 15 red, 6 blue, 14 green
Game 80: 2 red, 8 green; 6 blue, 6 green; 1 green, 3 red, 8 blue; 5 green, 4 blue, 3 red; 3 blue, 1 red; 7 green, 8 blue, 3 red
Game 81: 5 blue, 1 red; 10 blue, 7 red, 3 green; 4 green, 1 red, 10 blue; 8 red, 4 blue, 3 green; 11 blue, 9 green, 1 red; 6 red, 10 green
Game 82: 1 green, 2 blue, 1 red; 2 blue, 1 green, 2 red; 2 red, 8 green; 3 red, 3 blue, 5 green
Game 83: 3 blue, 4 green, 5 red; 6 blue, 5 red, 5 green; 4 red, 2 blue, 5 green; 2 green, 6 blue, 5 red; 1 red, 2 green
Game 84: 14 blue, 1 green; 9 green, 3 red, 1 blue; 5 green, 10 blue, 3 red; 9 green; 6 green, 18 blue; 2 red, 8 green
Game 85: 1 blue, 7 red; 12 green, 7 red, 5 blue; 9 blue, 6 green, 7 red; 10 red, 7 green, 1 blue; 3 green, 6 blue, 7 red; 10 red, 16 blue
Game 86: 9 red, 10 blue, 2 green; 2 red, 12 blue, 9 green; 11 green, 2 blue, 3 red
Game 87: 1 blue, 7 red, 9 green; 1 red, 6 blue; 3 blue, 12 green
Game 88: 1 blue, 4 green; 4 red, 13 blue, 1 green; 7 green, 4 blue, 3 red; 2 blue, 4 green, 5 red; 4 red, 7 green, 10 blue; 1 red, 7 green, 13 blue
Game 89: 5 blue, 8 red, 1 green; 7 blue, 2 green, 7 red; 2 green, 8 blue, 11 red
Game 90: 5 blue, 1 green, 11 red; 6 blue, 8 red; 2 red, 3 blue, 4 green; 2 green, 4 blue, 7 red; 3 blue, 8 red; 6 red, 3 blue, 1 green
Game 91: 2 green, 13 red, 9 blue; 12 blue, 6 green; 14 green, 10 blue, 3 red; 13 blue, 7 green, 5 red; 1 green, 9 blue, 14 red; 10 green, 8 blue, 17 red
Game 92: 10 green, 3 red, 17 blue; 13 red, 7 green, 15 blue; 9 blue, 8 red, 4 green; 1 blue, 8 red; 9 red, 1 green, 19 blue
Game 93: 1 blue, 7 green, 4 red; 2 blue, 8 green; 10 red, 10 green, 1 blue; 10 green, 2 blue; 3 red, 3 blue
Game 94: 5 red, 8 green, 14 blue; 4 red, 7 green, 20 blue; 11 blue, 4 red, 13 green; 18 blue, 1 red, 3 green
Game 95: 5 red, 8 green, 11 blue; 12 green, 5 blue; 4 blue, 14 green; 7 green, 9 blue, 5 red; 3 red, 4 green, 7 blue; 3 red, 12 blue, 3 green
Game 96: 10 red, 12 blue, 9 green; 4 green, 8 blue, 4 red; 8 blue, 3 red, 4 green; 6 green, 10 red; 2 blue, 3 green, 15 red; 12 red, 2 green, 2 blue
Game 97: 13 green, 1 blue; 9 green, 1 red, 1 blue; 6 blue, 10 green; 1 red, 6 blue, 11 green
Game 98: 2 blue, 14 green, 2 red; 7 green, 1 blue; 1 blue, 1 red, 3 green; 2 red, 1 blue, 15 green; 1 blue, 2 red, 10 green
Game 99: 3 green, 8 red, 7 blue; 6 red, 13 blue; 12 red, 4 green, 4 blue; 12 red, 8 green, 3 blue; 11 blue, 11 red, 4 green
Game 100: 2 red, 13 blue, 1 green; 1 green, 12 blue; 1 red, 5 blue, 1 green; 3 blue, 3 red

61
2023/03/03.py Normal file
View file

@ -0,0 +1,61 @@
from re import finditer
from collections import defaultdict
from math import prod
with open("input.txt") as f:
lines = f.read().split("\n")
### part 1
symbols = {
(i,j)
for i, line in enumerate(lines)
for j, c in enumerate(line)
if c not in "1234567890."
}
part_numbers = []
for i, line in enumerate(lines):
for match in finditer(r"\d+", line):
j1, j2 = match.span()
number = int(match[0])
window = {
(i+x, j+y)
for x in (-1, 0, 1)
for y in (-1, 0, 1)
for j in range(j1, j2)
}
for _ in window & symbols:
part_numbers.append(number)
part1 = sum(part_numbers)
print(part1)
### part 2
potential_gears = {
(i,j)
for i, line in enumerate(lines)
for j, c in enumerate(line)
if c == "*"
}
parts = defaultdict(list)
for i, line in enumerate(lines):
for match in finditer(r"\d+", line):
j1, j2 = match.span()
number = int(match[0])
window = {
(i+x, j+y)
for x in (-1, 0, 1)
for y in (-1, 0, 1)
for j in range(j1, j2)
}
for cell in window & potential_gears:
parts[cell].append(number)
gear_ratios = (prod(p) for p in parts.values() if len(p) == 2)
part2 = sum(gear_ratios)
print(part2)

140
2023/03/input.txt Normal file
View file

@ -0,0 +1,140 @@
.........................3.......................................94...............806....................596.........793...........186......
.../..........*574.587..*........161......904.......412.........*.................*.................................=.....637.%......*......
..614..831..33.....*...........@....*398..&.....690*............183.........503..916..790................................*.....256....632...
.........*.................332..374......................%184...........467..........*....969.632.......26....457......440.........@........
..........535...541=........*.......696..@..323..................93=.......*.......30......*....*......-........+.222$.......458.817....66..
....*.......................885.....*...123.=...641...&188..577.......339..688.........287.684..219.........................+...........*...
...61........397...#386...=........313........-...&............*......*................@.............../.........621+....................169
..............*.........34..................934..........17..168..320..263.........412.......$......966.....................303.....554.....
...............353.447.......@.....251............54....*........#.............149....*...871..964.................714.....*....403...*.....
...805......$......*.......632.....#...+514.944.....*....48..........*133.959.*....814...........-.521...........................*.....398..
..../.......906.289...238.....................*................772........*...591......260.122......*........309...677...357.....790........
........#................/.........450.....594.................*.......705............*....&.....676...@954.%....@....&.*...................
.....310..928...+.............488.*.............790.........286..982.........416*944..103.........................351...519...705...........
..............872.....+........*..820.....5....*.....529.........*...........................@..884......356*449................*..596......
...................780......507.........$..*...936.............406...........*560..704....931...+....618..................%243.817...*......
.386.....937.+904......*.............540...320............702.............118.........*............../.....445.....291.............899......
........*...........930............*......................&......204...............243....*948.....*..........*...*.......512$..............
......956....................$..788.487...........894.955..............................479.......709.........57....374................930...
............/534..260*33..680...............324...*....*......574......219................................................../934.......-....
..261...........................*813....=...*..........378......&....-..%...198............................885.........666..................
...*....../........905$......706......281...314...642......701....736.......*.................................*..........*...532............
..235..400....670.........-........................../......................849...204...197..646...............548.......61.*.........538...
.............*.............927....340...........641..............................&......*...*.........137..144...............513............
..400./285...16.......704............*896..836.....*..........738......102.&190..........89.137............*...$582....................&....
...*.............763...#....541....................629...........*646.............295............368@....&..62........990...@428........955.
....218...650.....*.........%................269............669...........709.......+..810.............52........447...@.........784........
.............=.....313.............*........+..........444....*.%.........................-.....225.......684...*.........../107...*........
..66...643.......................87...770.........=.......@.122.495.......177.....226.974.........*.580..*......921....216*.........724.....
...*..*....................328.........../...460.325.....................+...........*.........198.....-.316...............912..............
..882..421.......%766.........*..............................978*..........124.110.......$.....................467..............780.........
...........732.........531.....439...%...........................230..........*....396..126........................508...........*..........
............/..........*.............401..69.........$.................630............*.....114.......959...81.............515..664......43.
......-............491..929.363*.............178..686.....546...................628...4.......%......+..............106...*.........*.......
...456....154..659...+..........111.*...........-.........*...............66.%...*......%...................583../1.*.....206.......439.....
...........&...$..........548.......560................431......752......@...574.534....303...843../.................844....................
.........%.....................320%.......871*.....647..........*....................89.............981.....................................
.92....832.....194.804.270.992................388..................%..583*..........*......255..730.............................138..121....
.../................%..../..*.........58.106......*..373.........107......964...52.910.465..*..*........15...@.....*14.=847...........#.....
......850...503......................*......*....411....*....674...............*...........532.124.......*.471..380.........................
......*........*...390..641......99...997..688..............-......403...6.....156.....................320................*721..............
.......471....555..*.....*......*.../................749...........*......*..........92*756................336.....241.581..................
...................904..762..681..695.&639..903&......*.........753........936...................683-..........921..*......654....7.470.....
.........16*494.....................................395..112...........=..................601..........+..........*.901.......*....*........
................45...........77............$..636.........*...@593...670.........*796.270..*.......%..835.501...190......369.618.%..........
......918..@....*....597...........758..550...$...895...688...................952.....*...761...176........%..............*......261........
.....*......957.108.....+.....788................&..........221..........-308.....$..567..............562-.............963...833............
....431.484...............35.+.....476.902.....................$.....495.......137...........880.199.......306+................*..725.......
..........*..............*.....312...=.....50-...687...274..........................-........%.....*.................*......930...*....349..
.....197...748.........639........=................*..*.........601*.......19....995..............470.....81.954..684....82......872...*....
....=................................996........457..208.403........379...=...............193..........61...*...........*....37.........248.
........155...................%........*.......................................689.211...+..........52*..................969..*....922......
......*.........151......698.723.....175..10...........&............................*......852.486......442...900....934......60.....+......
...103.896..142*.................430.....*..........-...743.........346&.................#..*...&........*.............*.........197........
......................811........*..................813........802.............#333...167...916...856.....590..........658....-....-...563..
..............838.275...-......529.............718.......502....*.................................*................284.....967..............
...8....64.......*............................*....870......*.901......606.226...................534........773....*...............*43......
....*.........57............338*142.......589.525....*...563...................745#......152..............%..*..298..206....................
.....311.....=............................&.........309........630.....238................*.....345......701............*.....235....541....
..................288...596...45...............953.............%.................@....379.746......-..%.........937....571...........=......
161@................&......*.....47.=.........#......586.....&...281............764....*...............903.=810..-............837...........
............................944..&...650.............&....918.......*..74...............369....437&............................*........777.
......146...*..................................772*.................52...@......*895.@.......................371.......*76.....282..........
......*.....278...696...........365....=334........786........879.=..........983.....877......@38........784..*.....255....&................
.....132.............*.849........*........................%......783...553.................................&..663......297........419.440..
.977...........839&.......=.393&.77....895*770............636..........................-803..353+......-.......................406*.....*...
...*.=....376......................................69..........&.....116*949.......................186..295............%.................833
261...853...*...81........993.191.810...731..........*575......636..................306...........*............129....691....999*.+712......
...........319...&..........*..*....*....-..903*187....................890....875......@........557............&............................
...........................840..403.255.............*.......138.........*......../.841..................257........499.........*........%...
....430.....283.........................897......566.74..11...........705.641...................71*104.*...........*........197.782......290
.....................605..........401..../....................690....................633...............957........739.......................
.280*135...706...........709.........*................388..............813............*.....906....%..................606...................
..............*.=965...............669.......944$..............................288.131.........-.183..594...............*..852..819.........
.......#513.676......667...............93..........#.....$.......984.............#.....511.....................172.283.323............+426..
......................%....826........$...........709..91...........*....919..........*......................./....*..........%.............
....................$.......*....829........656......................400.*....................995.798.203..........107.994.....598.543......
.........88.../..568.......194......*931.......*654..............*........533....................*.....*................+...................
............844................491.......642..................839.603.125.....777...96..24.312.........272................671.394.....532...
........85............/...@........*339..%......914...601.............+........*.....-....*......251.......29.....962.......+........@......
...969...............916.265....630........791&....*.*..........$.........-166..307.................*........*543.&.............445.........
..........811.457...................942.........755..944.......108..254...................322.....695....250................86..*........290
..........+....@............-871.......*....602......................*.......................*........15.=...........274.......637..........
.....................&810........894-..130...*..........................................315...76.....+...............*.....55...............
..........................261.................894..582.....................................*............14....%...737.....*.........+.......
..375.987........803..69.*........&....80#................685.....386.....................602....10.....%......65........932./..742.24......
.........@.608..*......*........563........630..947.................*..........234...728..........*..........................92..*..........
.....89.......+.550....43........................*....471......286..517.510....../......*..........966...795............$.........813.......
.....*...651...............#.../573..569..........239.*..................*...........591.....935..........*...........536...536.............
.....344.*.............681..90........*........./......43.........../...473.....................=.....679..545.................*843.........
..........610.72.952..................850.......81.........733......895.....975..........132..........*........+898.......583.........656...
790=.@179...........*........$...............................&..............@....935.......#...270..621...................#.............*...
...................618....366...776..................143.......115.../..............*....*.......=...........306.........................369
..............258................*...97........./967.-........*.....281...%............32.65........43.721.....*...........738...462*.......
..606........*................713.....*..................513............114..746...............................86.............*......507....
......402.....200...983...............746...335......938........488.........*......$.649.............................214.......493..........
........*..............*32.....................*381..*....46.......*..205..16...100....*.444#....&..522........896..*...............411.....
.......583........./................734..19..........795..*.....219...*.............804.......391......*............881................&....
..............93....228............%.......*...985........936.......%..........=..+........................361.692................784.......
.....219.................808..........755..........233............348.......463....147..............162.....*.......464$....................
.......+....&...876...+....*..461$...$.............*.....550...........456.............826.330.........*997..657.................763........
..../......143....%...87...............225..160*8.66.......+.....#623..*..................*.......612............709...679*........$........
.....271..................#.....610.....................................799......*....866.....965...=.456........*.........530......./......
.........10...#495..508.521.......+......746.........165.........-978.........638.145...*.576*...........*......926.............468...267...
...........*........*.................&....$...........*...294..............$.........822.................535.........727.351...............
...671..233.......903....541.....421..760..............299.*..............570..............540.......947.............*....*...802...........
.....#........920.........*..455*...............942.........953..390..................365.....+.........*..........779...55.......293*......
.................*........40......50..827........*..............*......................*..&.....-....374..............................80....
......#...........636.274...............=.......72.............785...+596.............36..59...843............206..+625....%................
......767.......*......*..........948..............*.345..................#..........................927..861....%........701...........64..
.242.........476.363...936....347.*.........@.....41...............31...362.447...+902.....538........*.....*......+...........262&.........
......#.........................&.517..*911..791...................*......................=....187.....926.800...54......108................
.593..829..............................................166.524=.....................+381........+..*.................468*.............&.....
..........766*......273...347.........347..........$...............836......436............843=....473..@.....=344...............573.675....
..............279...%........*...786..........-..100.860..........*........*....421.....................414.................616...#.........
...322....496............334.648..*....75...520......*......881....87....120....$..............*.............79.............*..........*....
.....*......*.....................367.............704.............................&..........59.542.........*.......-992..53...811..192.556.
...308....485...948.......................383*559........282.......15.........298.774.......................377...................*.........
...............+.......348........................&.809.-.....249.......699../............740..650...584...............801*563..721..470....
.........343..........................970...324.782................324..*...........380...*...*......*....-.........................*.......
...627$....*...713#.....799...420........*....*......................*...24..........$..131.......148......245....94*781...%.......302......
........698.........635.+...............644..593.%......784.....-....644......................409........&.....*...........952..............
.999.................*............................627.........866..........418..........483*.....$....227...248.665...265.......222...&.....
...*...............320...396......%......................77........186........*991..................*.................*...232....*....255...
..363..35...=39............*.......831.......892.........@...=..+........268..................513..373.....875.......48....../....680.......
.........................259.............374*...............137..482.432...&...276....132........*.....798...&.................16...........
..669*246.......................491.............+...+..492...........................*.........=..603.@..........849........................
...............429.220......-......*..........928..304...*......177................741...482.204.........*.........+....=........36.........
...218..449.......*..........214...620.................827.252..@...689...................*......598..460.473...........341.704../...434....
......*....*548.....-679.149.................................%......*...371..........998..815...*...................................&.......
.......403................=.........166............................741.....&........%...........329.............62..............*...........
..706*......991*738..347.....571...*....983..........+..208...319...............406..................175#......*.................891........
......392...........*...........*.409.....*........72......*.-.........233.......*...........................478.............256............
...................559..................-.540..734........6....*.......-......771............398.729.............928#..+....................
.....603.......472................%...892..............=....314.684.......712............206......+.....657.%..........844.584.456...=......
......*..........*..#..........801...............738...524.................*........817.......+........*....57.............*..........749...
648..799........517.999...............#...........$..+.....................742..516*....939=..694...945..................863...480..........
..........700........................994....314......214....105.............................................#....137............*...522.....
...153.....*.........685..283................*...151........*....#....232......$.......99.92...863....*.....567.....*.285.....69.....*......
............205.........*..*..............275....*.........220...644...*....293.........$..%..*....337.91...............*.............963...
.......................844.32......449..........932....................869....................77......................288...................

29
2023/04/04.py Normal file
View file

@ -0,0 +1,29 @@
with open("input.txt") as f:
lines = f.readlines()
part1 = 0
for line in lines:
_, card = line.split(": ")
winning, yours = card.split(" | ")
winning = {int(n) for n in winning.split()}
yours = {int(n) for n in yours.split()}
how_many_wins = len(winning & yours)
worth = 2 ** (how_many_wins - 1) if how_many_wins >= 1 else 0
part1 += worth
print(part1)
cards = [1]*len(lines)
for i, line in enumerate(lines):
_, card = line.split(": ")
winning, yours = card.split(" | ")
winning = {int(n) for n in winning.split()}
yours = {int(n) for n in yours.split()}
how_many_wins = len(winning & yours)
for n in range(i+1, i+1+how_many_wins):
cards[n] += 1 * cards[i]
part2 = sum(cards)
print(part2)

218
2023/04/input.txt Normal file
View file

@ -0,0 +1,218 @@
Card 1: 9 32 7 82 10 36 31 12 85 95 | 7 69 23 9 32 22 47 10 95 14 24 71 57 12 31 59 36 68 2 82 38 80 85 21 92
Card 2: 16 35 95 22 59 82 76 60 19 88 | 63 91 16 35 26 82 95 51 53 60 94 59 56 73 28 76 12 44 22 62 8 7 19 38 88
Card 3: 1 88 48 52 70 19 11 78 94 28 | 19 92 70 18 34 78 83 8 82 87 3 97 66 31 63 17 69 4 75 94 52 54 77 24 45
Card 4: 72 14 2 92 65 62 16 28 55 91 | 73 8 35 4 9 86 83 51 47 53 3 7 15 52 96 54 49 88 85 30 6 59 81 33 99
Card 5: 60 61 24 41 30 77 94 50 38 75 | 47 93 82 98 96 5 9 53 17 6 10 21 2 91 80 4 14 71 29 69 62 1 7 87 88
Card 6: 21 4 16 41 58 68 66 22 64 94 | 72 69 60 62 34 21 75 66 38 25 63 17 81 23 71 73 78 64 89 24 26 56 68 79 51
Card 7: 10 90 4 56 14 26 7 23 57 19 | 62 10 60 51 46 34 23 49 44 8 53 50 2 56 21 81 69 89 87 91 16 63 38 36 22
Card 8: 36 27 38 47 16 57 96 31 43 76 | 62 99 87 68 76 44 49 63 47 16 58 81 84 48 45 88 64 34 54 42 72 24 26 12 50
Card 9: 92 9 35 2 26 97 79 88 43 45 | 89 96 62 1 39 98 72 66 28 78 64 68 42 63 15 25 22 60 31 91 69 94 21 81 29
Card 10: 40 17 3 9 47 23 82 90 13 87 | 51 2 36 85 34 27 11 53 71 38 8 57 58 17 24 20 54 23 31 37 35 70 9 83 99
Card 11: 2 21 9 53 45 19 91 74 23 25 | 29 26 91 39 58 18 96 53 31 63 46 21 32 54 22 66 17 25 94 74 4 41 77 35 23
Card 12: 13 84 68 67 99 97 73 49 86 65 | 97 49 35 40 42 80 45 11 94 53 99 29 72 73 23 77 62 3 38 90 83 68 59 20 95
Card 13: 70 9 7 11 95 46 69 91 22 71 | 30 56 31 90 91 69 17 71 25 46 66 9 62 89 70 98 36 57 45 94 21 40 75 95 24
Card 14: 54 37 89 14 18 1 60 34 7 80 | 83 98 11 85 50 35 61 29 18 67 33 63 32 92 68 65 95 56 74 96 27 73 81 47 15
Card 15: 25 82 90 66 50 40 15 43 32 62 | 49 77 96 36 89 70 50 29 26 1 20 71 37 30 9 91 7 52 5 82 51 55 72 38 12
Card 16: 26 46 79 29 52 10 87 75 45 49 | 52 25 2 42 73 44 58 85 10 37 4 17 8 86 95 65 35 31 16 12 99 51 70 80 45
Card 17: 17 96 64 38 73 11 32 24 25 65 | 83 37 25 81 59 18 4 15 98 87 2 1 3 60 5 53 67 46 6 20 79 84 95 50 62
Card 18: 48 50 90 87 40 71 59 61 30 85 | 85 19 13 39 76 55 72 29 5 84 22 91 67 63 74 73 61 90 62 42 30 9 69 87 48
Card 19: 4 99 93 55 22 37 41 75 32 79 | 95 7 65 50 40 49 42 64 89 1 59 33 9 53 20 44 23 98 60 30 39 12 66 84 45
Card 20: 14 34 73 91 30 48 35 44 50 8 | 48 33 35 40 65 29 9 42 18 79 43 89 92 68 75 97 87 69 85 80 98 14 6 25 76
Card 21: 33 15 83 71 94 61 87 54 36 72 | 56 52 83 46 32 99 36 67 12 47 38 13 14 2 7 26 20 63 90 40 37 6 84 42 92
Card 22: 66 45 79 71 92 57 47 43 62 9 | 45 89 9 5 53 84 80 19 77 61 68 40 98 23 56 36 6 60 93 1 11 49 71 52 29
Card 23: 29 53 13 4 76 62 25 94 82 98 | 24 45 85 59 41 11 13 78 54 67 74 21 50 75 16 37 63 86 14 26 92 31 57 33 40
Card 24: 16 66 90 39 24 92 53 76 52 31 | 21 7 57 65 58 2 10 61 35 73 68 95 84 43 12 18 76 71 83 15 82 88 30 55 5
Card 25: 9 45 17 42 64 93 54 33 77 62 | 35 81 82 18 47 92 2 20 95 1 6 58 40 73 43 37 15 48 23 75 26 13 50 63 79
Card 26: 1 99 92 73 57 29 18 97 34 5 | 82 89 61 3 95 39 14 98 15 87 45 48 49 60 22 28 65 16 9 58 4 53 38 56 51
Card 27: 87 45 35 93 62 1 66 91 6 3 | 51 60 96 84 35 91 6 28 32 40 3 57 29 90 73 12 81 89 31 69 97 66 70 36 18
Card 28: 72 89 51 45 10 21 84 23 6 94 | 26 45 23 13 68 51 89 66 34 99 83 70 44 56 72 57 73 94 30 84 61 80 85 29 6
Card 29: 58 80 96 47 13 44 71 38 55 54 | 58 35 3 61 81 96 71 44 43 14 36 54 20 69 63 13 75 28 80 18 73 11 38 55 47
Card 30: 44 17 81 16 13 65 85 60 34 46 | 60 71 72 13 10 51 65 56 34 59 80 75 18 64 35 92 58 50 97 46 81 37 44 16 17
Card 31: 84 55 99 95 42 83 26 33 43 87 | 78 59 45 26 28 94 63 17 2 73 38 84 96 34 99 19 75 65 8 92 58 20 11 82 57
Card 32: 57 67 49 76 15 84 27 39 24 14 | 20 15 21 14 67 97 76 19 17 38 23 41 24 32 27 57 26 81 99 49 34 96 9 84 39
Card 33: 96 76 23 95 5 37 8 62 65 63 | 59 23 67 51 40 68 70 38 8 36 41 53 62 65 96 76 66 57 37 5 46 34 95 19 69
Card 34: 52 13 90 81 94 62 91 40 53 42 | 82 90 35 13 55 95 93 74 44 70 89 87 62 5 80 22 53 94 21 77 54 20 18 52 40
Card 35: 1 75 37 64 17 12 57 18 58 3 | 65 74 89 12 72 64 93 23 51 73 44 80 21 7 35 87 42 82 25 53 71 38 79 43 61
Card 36: 15 49 18 30 20 90 69 3 60 59 | 14 63 53 86 5 62 69 52 21 9 18 48 13 34 2 67 60 55 10 98 15 81 88 83 94
Card 37: 48 39 43 81 40 59 70 22 62 61 | 48 14 79 26 12 56 3 89 66 17 87 9 43 27 73 23 47 1 18 97 96 65 59 42 6
Card 38: 35 94 15 31 22 55 8 2 11 45 | 78 53 41 13 37 64 36 90 26 97 16 99 57 54 20 59 82 24 58 81 14 74 95 93 79
Card 39: 74 25 37 8 53 36 86 68 91 79 | 48 45 24 80 20 49 86 42 47 28 17 22 93 38 35 34 85 21 18 14 97 61 27 41 88
Card 40: 41 16 26 14 79 27 62 55 80 99 | 52 83 5 38 69 11 89 6 35 58 4 74 99 97 63 30 90 33 46 60 95 59 22 76 40
Card 41: 57 77 60 66 35 4 13 89 14 40 | 78 4 97 58 9 65 94 44 89 95 80 7 47 59 37 26 19 76 91 18 45 6 56 3 90
Card 42: 83 19 31 59 78 54 22 16 44 88 | 53 84 90 39 56 29 44 55 58 13 72 80 49 6 28 97 25 18 99 89 40 43 10 33 71
Card 43: 81 94 73 42 85 45 28 61 88 19 | 84 86 36 44 51 40 82 72 39 57 13 53 87 83 38 76 63 35 47 15 2 95 79 26 1
Card 44: 78 28 92 59 51 37 61 55 58 98 | 49 6 30 89 61 98 58 78 31 28 48 92 60 56 59 51 29 14 37 63 38 55 24 42 21
Card 45: 23 59 74 5 81 53 3 93 54 68 | 68 15 38 45 66 61 87 54 3 81 74 43 5 25 59 23 93 78 44 72 53 52 89 97 48
Card 46: 79 17 74 72 84 44 3 59 66 76 | 3 44 95 84 66 79 62 97 63 48 76 10 75 72 6 17 74 94 80 59 30 12 20 83 87
Card 47: 98 18 11 52 66 14 68 89 80 19 | 66 67 23 52 80 89 95 44 60 11 55 34 18 59 19 53 98 82 14 38 63 65 90 68 77
Card 48: 84 64 87 81 54 61 31 57 53 79 | 99 74 9 45 54 14 96 38 7 82 4 17 43 69 62 83 66 81 41 86 55 75 30 10 21
Card 49: 95 4 89 38 67 71 70 75 35 39 | 39 71 22 80 75 43 35 89 17 38 4 29 7 69 94 63 85 6 5 95 70 58 67 50 68
Card 50: 18 59 9 34 83 68 80 21 61 78 | 10 96 19 11 74 15 26 8 65 56 35 79 32 44 55 36 94 95 53 86 3 27 88 67 85
Card 51: 17 79 69 92 39 51 46 81 14 21 | 49 92 48 29 47 74 76 81 69 85 86 98 73 43 24 45 21 84 25 10 17 44 1 31 28
Card 52: 39 31 1 21 7 27 85 59 35 67 | 84 29 91 89 70 5 94 23 21 65 71 12 26 41 15 11 61 73 14 52 76 9 16 24 75
Card 53: 93 21 1 18 54 87 35 98 9 48 | 44 30 79 82 23 43 51 46 34 35 9 75 12 60 77 36 27 86 32 47 85 98 87 1 13
Card 54: 51 95 69 73 66 61 9 28 75 24 | 42 28 87 69 24 19 56 98 57 66 95 73 9 51 61 50 64 75 76 27 86 1 29 30 79
Card 55: 73 99 56 8 10 97 26 64 52 2 | 79 47 80 89 5 53 37 63 41 48 12 96 1 25 84 70 9 76 58 75 72 31 20 17 46
Card 56: 71 43 8 50 95 1 2 77 45 81 | 43 85 24 59 46 15 36 81 3 50 9 45 95 77 71 12 65 1 60 2 8 5 7 20 88
Card 57: 10 76 62 41 58 67 80 39 9 21 | 58 10 42 60 37 27 51 1 25 18 56 23 67 88 62 50 87 80 9 54 41 81 26 21 7
Card 58: 41 80 74 71 10 63 58 26 38 21 | 63 66 80 65 12 68 72 10 20 91 88 44 11 70 36 71 3 61 74 7 21 41 67 43 38
Card 59: 41 60 82 94 90 7 76 69 28 95 | 35 69 77 9 81 65 11 90 19 22 36 75 12 52 98 55 92 79 14 67 47 83 39 74 94
Card 60: 44 82 36 55 94 72 99 70 6 50 | 35 29 95 62 97 11 33 92 19 91 10 54 56 53 98 1 39 16 64 52 73 66 30 4 43
Card 61: 55 19 82 18 24 91 99 36 54 98 | 68 58 99 51 79 1 7 50 4 28 59 8 19 14 10 40 57 34 60 82 88 47 52 80 54
Card 62: 14 20 49 2 94 59 33 72 86 34 | 35 33 54 94 5 14 7 6 60 41 40 38 20 26 72 22 49 13 83 98 36 3 51 82 74
Card 63: 73 78 8 64 52 7 86 30 98 27 | 95 4 48 24 45 72 60 31 25 18 59 90 51 14 50 65 2 16 3 33 94 11 93 6 32
Card 64: 26 71 76 85 70 80 81 61 58 77 | 87 10 24 38 4 40 42 96 47 63 99 7 20 68 78 66 53 12 46 90 75 59 60 88 5
Card 65: 26 37 35 44 45 10 13 85 6 8 | 39 80 93 79 60 89 58 96 44 85 59 94 24 23 48 86 22 42 6 5 25 57 43 90 21
Card 66: 62 45 67 18 36 84 66 90 98 95 | 1 71 68 54 76 48 42 35 19 94 39 69 80 17 41 20 93 59 29 30 15 37 14 12 88
Card 67: 33 10 5 94 72 86 84 80 19 85 | 76 26 61 3 93 17 74 42 23 16 18 2 14 46 1 38 72 13 28 29 91 21 12 7 48
Card 68: 70 73 2 79 88 36 35 13 16 6 | 75 47 30 7 89 78 39 69 96 91 19 83 61 4 10 77 81 44 90 50 29 38 32 53 60
Card 69: 60 20 40 38 6 49 5 85 84 80 | 38 12 59 94 27 15 85 17 65 69 82 36 7 43 47 99 5 87 61 77 4 83 81 90 40
Card 70: 85 96 73 11 22 33 9 61 37 42 | 27 70 96 74 9 75 60 88 22 86 13 63 37 80 83 73 42 85 17 33 35 82 61 65 11
Card 71: 41 47 37 52 73 97 77 69 5 45 | 47 95 78 41 74 54 5 88 63 87 34 18 37 85 26 73 52 50 28 77 97 86 1 69 45
Card 72: 90 88 85 71 5 59 65 52 30 13 | 5 29 68 62 24 12 90 30 85 18 76 25 40 60 77 14 19 33 61 88 70 17 95 73 2
Card 73: 44 98 60 49 51 9 21 88 87 70 | 63 3 46 65 49 70 44 7 74 88 35 45 17 24 51 60 25 9 98 87 21 10 81 83 61
Card 74: 31 23 80 11 13 72 63 57 29 70 | 57 28 70 45 3 94 5 80 14 11 2 29 20 47 72 63 10 31 66 19 79 38 74 13 23
Card 75: 82 54 62 8 30 7 88 20 71 85 | 83 65 74 44 79 3 29 64 51 35 98 56 41 22 27 13 26 34 39 59 24 4 33 14 63
Card 76: 16 24 87 73 17 71 69 26 4 76 | 59 71 32 3 56 64 24 41 66 26 12 36 87 65 73 4 75 16 8 17 57 69 49 46 76
Card 77: 98 57 96 56 39 12 69 37 54 65 | 21 48 87 97 29 27 56 31 18 88 7 79 70 35 64 38 91 15 14 43 3 84 20 85 32
Card 78: 5 62 37 51 73 78 18 64 42 48 | 35 82 85 62 23 66 3 14 19 64 79 18 93 53 69 58 96 63 90 24 41 65 94 40 95
Card 79: 8 73 46 15 99 29 96 34 59 75 | 48 65 57 99 63 33 37 73 79 28 72 56 34 3 25 75 70 95 58 27 43 30 54 8 87
Card 80: 91 81 96 55 44 82 31 23 11 74 | 24 51 96 77 40 28 56 44 54 89 78 38 76 74 17 92 3 23 36 63 80 65 55 7 11
Card 81: 81 77 30 26 93 28 97 10 84 88 | 57 28 36 33 54 11 96 58 18 99 30 1 5 79 12 24 56 93 25 78 10 40 76 84 81
Card 82: 31 67 3 90 28 76 55 6 29 26 | 75 34 82 73 38 17 67 91 86 40 43 45 42 60 37 63 55 87 93 84 58 78 80 20 11
Card 83: 8 97 43 88 62 34 68 50 82 71 | 8 68 2 96 85 36 10 14 35 32 73 16 26 29 67 60 37 89 52 98 74 22 78 1 59
Card 84: 77 97 5 33 12 73 90 57 31 19 | 97 46 48 57 4 10 94 85 59 31 17 60 81 49 62 58 25 8 79 78 50 36 55 51 32
Card 85: 74 85 97 19 76 99 21 47 20 50 | 50 69 72 39 45 26 13 7 92 21 63 58 84 9 94 53 43 81 89 49 62 32 70 82 10
Card 86: 81 96 82 76 97 77 40 3 68 98 | 4 26 69 88 43 15 78 64 79 92 62 30 49 89 37 59 95 63 58 98 75 99 80 51 6
Card 87: 80 73 51 20 41 67 31 66 97 27 | 16 59 75 86 24 83 95 44 85 13 11 77 70 14 2 39 88 89 93 55 52 6 53 94 98
Card 88: 18 38 66 87 56 25 46 63 37 15 | 86 22 17 96 10 49 80 21 15 77 66 3 20 95 36 87 16 74 46 26 79 76 38 43 6
Card 89: 51 55 41 3 20 60 99 70 23 43 | 51 81 99 32 50 96 41 53 80 76 43 3 83 65 20 46 70 60 38 35 57 55 7 74 23
Card 90: 94 19 23 81 44 15 74 73 22 71 | 83 66 54 43 23 55 69 81 85 71 62 96 19 86 78 22 15 58 94 74 44 73 57 17 8
Card 91: 72 77 21 83 82 75 1 56 99 43 | 42 77 56 90 68 96 39 72 83 97 21 17 66 70 49 43 69 63 82 75 47 99 87 11 1
Card 92: 62 58 71 78 38 80 52 94 48 92 | 11 7 56 4 77 59 62 49 14 94 52 80 92 64 71 58 13 1 48 12 78 9 17 38 35
Card 93: 98 45 63 46 48 97 91 29 90 15 | 95 31 41 15 43 80 24 44 75 83 30 87 98 12 27 36 74 16 86 35 33 85 54 94 78
Card 94: 27 60 36 26 76 65 86 89 10 54 | 80 78 95 36 88 82 6 46 73 58 22 40 12 50 76 14 65 26 70 60 54 17 27 89 93
Card 95: 18 62 66 98 24 16 80 58 53 97 | 93 9 15 61 51 19 81 8 21 36 6 71 80 13 52 87 5 37 86 75 68 60 97 54 10
Card 96: 6 55 40 79 3 67 13 96 91 34 | 54 13 63 17 52 72 7 81 82 69 6 91 90 57 14 2 8 74 75 40 96 21 3 38 55
Card 97: 40 33 3 59 8 88 99 14 41 74 | 99 48 41 35 69 64 18 50 3 96 40 8 36 63 17 90 59 33 49 26 88 93 74 27 14
Card 98: 63 44 52 11 32 46 62 19 30 6 | 71 51 48 70 82 44 8 60 92 21 77 62 53 95 31 73 80 96 55 34 86 97 76 88 6
Card 99: 66 46 22 44 94 50 68 59 25 75 | 40 46 56 32 64 89 80 22 60 87 77 9 59 25 75 38 44 48 8 50 94 68 66 72 20
Card 100: 15 8 13 93 80 58 66 10 76 32 | 58 68 34 54 53 79 69 18 71 33 66 13 92 77 93 40 80 94 76 75 15 10 83 8 70
Card 101: 22 25 48 97 63 81 7 84 60 43 | 58 91 10 85 59 76 16 36 96 39 42 50 72 34 86 61 67 11 79 27 83 73 98 57 70
Card 102: 1 35 10 28 59 2 74 45 25 13 | 47 56 90 19 20 95 64 72 88 28 27 18 31 7 55 61 48 2 10 81 70 25 96 73 74
Card 103: 28 5 31 23 76 83 25 94 35 18 | 10 85 72 18 23 60 17 50 30 76 35 83 8 42 65 4 34 84 28 39 5 98 25 94 92
Card 104: 32 45 61 94 5 44 3 15 77 87 | 37 15 84 94 19 33 11 51 1 81 16 61 87 68 74 97 62 88 8 98 45 44 92 70 83
Card 105: 32 89 96 15 67 83 9 64 60 44 | 76 38 75 54 44 67 3 88 89 46 15 40 96 19 7 36 55 64 1 83 78 72 31 18 21
Card 106: 78 7 12 67 54 29 76 66 17 35 | 53 19 78 86 36 33 84 63 16 43 64 46 31 58 66 11 39 38 76 14 49 94 47 67 56
Card 107: 95 91 53 27 12 51 29 1 36 9 | 43 70 74 89 52 12 82 97 96 4 45 37 14 68 15 58 63 51 59 34 50 81 3 6 83
Card 108: 68 79 91 36 9 55 21 81 2 17 | 26 21 63 91 27 45 73 92 29 24 74 57 43 61 4 82 20 50 84 88 54 89 81 8 15
Card 109: 68 37 88 22 26 53 67 43 62 35 | 24 19 46 44 49 7 17 51 21 81 96 30 59 3 72 99 71 58 22 28 60 52 43 65 86
Card 110: 95 66 14 29 71 44 35 73 15 63 | 2 87 82 39 55 92 33 98 51 20 16 89 24 12 64 8 85 41 37 77 42 45 22 48 52
Card 111: 83 21 90 50 91 82 73 19 41 25 | 47 74 77 86 84 33 3 99 30 93 37 98 42 59 24 12 69 36 61 68 55 17 32 53 18
Card 112: 72 29 25 73 15 93 4 36 78 56 | 35 80 62 12 88 59 30 17 51 76 70 64 21 42 79 31 96 83 63 57 1 68 52 53 75
Card 113: 39 52 17 98 34 9 72 53 47 51 | 70 72 17 48 83 98 64 9 15 94 57 68 87 14 27 55 40 38 53 8 47 51 16 28 67
Card 114: 18 1 14 61 17 28 24 34 63 5 | 62 64 68 67 8 88 18 73 28 17 14 34 65 95 47 1 31 5 24 99 61 89 63 42 80
Card 115: 31 76 94 50 65 52 21 53 5 43 | 93 38 97 35 2 82 1 45 65 50 43 59 21 27 94 5 31 53 61 52 10 76 99 44 47
Card 116: 2 13 64 10 14 29 33 55 19 6 | 91 68 22 47 5 65 23 64 20 18 70 21 45 1 42 31 59 17 61 58 30 73 81 14 2
Card 117: 52 22 10 59 25 80 48 28 99 82 | 93 52 25 19 94 80 85 28 46 90 74 65 48 99 22 66 87 49 83 57 3 10 59 78 67
Card 118: 22 98 56 42 95 5 62 50 26 71 | 42 50 56 98 41 92 71 69 60 22 59 64 62 27 30 26 21 87 2 51 40 89 24 95 5
Card 119: 25 61 90 69 15 3 33 14 59 21 | 61 30 25 44 18 90 74 64 33 73 51 3 14 60 45 82 23 69 46 59 27 21 49 15 7
Card 120: 99 83 2 21 85 47 45 34 58 31 | 18 34 47 91 58 97 40 60 71 85 24 45 83 21 10 53 56 99 32 38 77 31 2 79 23
Card 121: 91 63 88 9 66 25 48 94 44 51 | 42 24 19 83 43 9 25 28 18 88 91 35 63 69 66 55 3 14 54 75 80 51 73 94 44
Card 122: 4 32 37 25 8 13 3 67 39 5 | 94 99 11 5 93 60 29 37 45 28 3 8 32 66 98 25 36 97 34 96 80 67 63 71 31
Card 123: 93 89 1 53 15 98 21 26 82 42 | 17 25 40 63 15 21 28 42 30 46 13 53 81 74 93 85 98 57 39 65 60 38 12 36 92
Card 124: 14 12 90 59 56 54 94 80 51 63 | 5 7 14 33 86 94 34 3 80 25 40 56 90 65 63 59 71 67 54 12 82 66 46 51 44
Card 125: 52 37 74 28 4 96 92 40 3 64 | 23 44 64 71 22 34 35 17 10 74 93 37 40 42 52 96 53 91 92 70 28 4 75 3 12
Card 126: 40 70 12 23 61 99 47 96 77 24 | 58 32 96 66 44 21 83 84 43 11 94 13 99 62 87 1 31 10 71 53 39 14 95 97 56
Card 127: 9 40 39 4 19 3 25 96 5 95 | 86 9 31 25 14 19 40 55 5 84 66 4 28 3 88 95 27 1 34 52 97 29 12 96 15
Card 128: 56 35 9 95 93 66 38 85 39 65 | 92 14 12 79 86 95 66 1 38 93 6 94 77 2 34 62 56 87 46 39 65 72 40 10 45
Card 129: 77 19 10 24 25 68 67 5 38 29 | 73 59 50 39 37 24 58 56 70 72 74 3 20 66 26 92 71 29 83 15 96 79 2 28 27
Card 130: 19 42 20 87 76 41 83 47 99 51 | 85 27 63 1 55 9 49 28 25 14 76 51 36 34 53 57 73 12 58 66 78 16 22 84 26
Card 131: 33 82 49 90 74 24 53 48 12 51 | 48 29 52 12 31 99 81 33 80 76 37 32 96 28 8 51 79 56 26 62 53 10 15 42 58
Card 132: 51 90 31 49 77 64 20 76 91 45 | 77 93 27 16 45 53 57 84 63 42 25 44 4 64 71 8 70 66 95 34 23 85 35 31 87
Card 133: 76 84 3 16 25 79 35 8 50 60 | 32 97 7 51 49 12 37 54 59 60 27 87 40 64 38 78 8 53 43 39 81 66 68 44 18
Card 134: 77 36 47 40 44 14 94 91 39 5 | 95 25 45 99 59 27 64 12 15 9 22 4 50 62 73 39 34 6 8 72 56 96 89 90 35
Card 135: 33 49 25 71 39 75 30 16 46 55 | 94 82 64 10 16 73 79 68 4 12 1 87 6 53 34 98 66 99 78 59 58 2 36 77 52
Card 136: 53 22 58 94 49 25 6 64 69 73 | 42 23 3 76 77 83 8 1 89 2 33 78 46 12 34 95 26 96 41 93 97 35 5 82 55
Card 137: 64 25 86 72 6 39 48 95 73 62 | 52 4 29 18 11 84 79 87 19 32 96 71 61 35 17 15 44 27 68 70 98 45 22 51 85
Card 138: 60 30 89 73 76 11 23 90 86 80 | 11 89 23 86 66 5 80 13 67 73 59 96 90 76 49 20 84 30 82 29 72 87 63 60 92
Card 139: 82 6 17 76 72 5 70 45 90 7 | 12 50 25 41 9 16 29 20 63 70 28 10 53 90 76 5 7 82 17 15 45 93 72 97 6
Card 140: 3 88 95 62 81 35 92 16 21 87 | 92 42 18 35 21 12 30 25 27 17 87 71 81 95 88 40 16 29 69 70 14 62 3 2 31
Card 141: 2 36 5 53 22 30 40 94 84 52 | 86 67 38 32 90 33 18 26 13 2 96 49 25 74 83 31 54 42 52 36 97 55 63 44 47
Card 142: 84 77 81 89 56 61 39 2 22 7 | 79 40 62 91 39 20 13 80 81 63 7 22 84 77 6 5 2 42 89 61 53 52 56 75 88
Card 143: 90 86 6 75 67 76 18 41 36 55 | 25 7 30 21 40 65 47 42 77 34 53 60 97 10 49 39 45 57 8 94 83 93 32 80 98
Card 144: 26 5 82 70 75 88 53 47 29 93 | 23 40 49 74 62 93 60 75 86 98 53 45 47 29 97 67 8 88 4 5 26 37 71 82 70
Card 145: 8 62 96 13 21 82 42 54 41 61 | 87 13 23 96 29 27 6 14 53 75 5 24 31 60 90 12 82 51 64 65 70 58 9 74 47
Card 146: 57 20 68 46 52 36 49 48 14 34 | 52 45 92 33 49 57 61 54 44 18 47 59 46 34 63 32 65 53 50 14 20 80 38 42 15
Card 147: 47 86 79 34 64 91 57 21 1 89 | 14 79 31 91 44 11 89 75 40 97 81 92 63 73 21 49 93 86 64 22 35 8 13 99 57
Card 148: 83 62 84 25 96 13 30 99 24 82 | 64 2 65 63 60 98 91 76 81 94 23 22 88 85 28 92 15 38 35 72 52 32 47 69 31
Card 149: 62 32 13 59 96 78 11 73 34 52 | 89 73 13 1 52 24 71 83 53 97 62 85 78 20 17 11 59 96 74 19 32 29 34 43 9
Card 150: 76 14 58 69 8 21 49 60 29 6 | 29 86 82 88 3 91 72 71 55 57 51 95 9 61 12 79 23 33 19 20 50 37 62 30 4
Card 151: 68 93 22 66 81 77 16 75 47 34 | 47 76 34 52 25 68 9 26 29 66 37 57 10 54 99 46 77 95 81 93 53 13 97 22 7
Card 152: 2 9 24 70 11 42 44 98 79 27 | 18 72 91 78 44 77 35 17 79 21 9 5 4 98 43 54 70 42 2 6 76 11 24 68 27
Card 153: 36 28 10 9 69 25 87 50 77 11 | 7 54 25 40 85 33 15 20 87 71 96 99 77 53 94 9 67 28 69 32 26 18 63 29 43
Card 154: 41 15 97 7 50 92 9 66 20 6 | 91 53 3 15 66 92 72 67 85 9 20 1 28 32 14 95 81 34 79 8 7 59 82 52 6
Card 155: 8 1 15 14 44 81 89 37 55 43 | 76 62 83 79 37 24 56 30 34 58 45 64 23 41 84 71 14 22 60 27 18 9 42 54 85
Card 156: 1 44 85 92 7 35 52 50 72 26 | 62 69 85 60 80 73 94 37 12 63 99 70 17 51 23 8 95 29 32 55 47 41 6 36 25
Card 157: 12 49 19 14 28 64 17 76 34 8 | 33 87 95 61 84 55 86 19 92 44 3 42 24 96 94 36 38 13 10 51 15 81 27 75 67
Card 158: 29 88 66 19 41 57 52 30 46 47 | 16 1 36 91 8 70 27 3 38 32 89 84 90 31 88 49 60 22 18 9 62 67 47 7 34
Card 159: 99 87 7 36 67 23 14 92 52 82 | 93 41 76 15 8 63 50 40 30 85 92 48 1 99 87 53 46 70 34 5 44 79 16 35 17
Card 160: 40 35 56 38 93 47 42 72 80 79 | 77 90 83 4 65 61 27 41 21 13 25 68 34 11 84 40 94 42 69 64 14 70 58 97 63
Card 161: 57 54 92 91 51 37 93 55 59 41 | 2 78 35 85 23 41 74 33 8 21 72 94 63 90 95 64 71 12 65 27 38 18 19 9 60
Card 162: 51 37 4 45 15 59 71 23 61 77 | 72 81 19 35 53 60 11 93 54 2 31 70 40 28 57 63 6 46 89 96 30 36 12 20 29
Card 163: 52 53 7 23 29 89 86 43 97 77 | 79 18 34 45 80 61 30 41 68 7 52 89 8 49 29 86 67 17 81 98 97 78 26 48 70
Card 164: 98 61 60 4 5 28 70 37 41 10 | 22 58 68 41 98 53 30 99 60 61 17 12 4 25 49 10 70 92 5 83 36 28 13 37 56
Card 165: 16 12 15 73 22 31 20 63 42 95 | 26 53 40 17 97 15 8 25 78 46 44 45 54 39 61 23 51 11 90 95 2 35 68 24 18
Card 166: 14 89 75 8 90 29 18 27 64 19 | 74 76 7 75 23 72 45 54 59 90 80 44 29 27 20 64 12 89 14 52 79 8 83 11 15
Card 167: 16 78 33 67 66 63 69 59 36 94 | 89 70 42 47 92 34 14 69 37 83 19 25 57 36 3 44 77 26 73 85 18 59 13 65 76
Card 168: 33 76 58 94 34 84 79 69 60 2 | 49 54 80 51 68 84 71 17 44 12 82 69 4 88 76 8 98 34 93 5 52 95 13 75 39
Card 169: 2 63 48 44 25 75 51 36 29 52 | 24 84 56 37 17 60 74 36 77 48 62 32 16 2 80 41 15 35 88 72 30 58 20 49 12
Card 170: 98 14 67 30 5 15 89 28 74 12 | 99 88 7 35 19 27 81 50 70 97 98 61 2 67 92 46 75 30 53 4 59 1 74 26 45
Card 171: 4 26 44 61 5 75 76 20 56 33 | 34 97 62 70 83 35 23 78 13 3 86 58 56 65 72 59 76 20 39 32 36 71 33 30 46
Card 172: 47 15 51 8 77 74 7 41 30 35 | 8 30 45 15 99 80 75 52 74 28 49 81 16 2 66 62 32 10 69 65 92 77 38 73 13
Card 173: 65 57 60 74 69 55 21 59 10 50 | 32 28 78 16 17 79 67 76 35 66 9 63 80 58 62 20 89 88 92 26 64 10 12 97 3
Card 174: 40 66 82 30 61 27 78 54 8 48 | 73 45 28 49 52 91 25 20 55 34 33 7 23 4 5 56 74 44 9 75 2 24 71 3 70
Card 175: 49 42 2 59 41 38 32 83 89 23 | 25 57 90 46 99 54 67 40 73 87 9 27 82 58 53 63 22 7 13 37 52 68 15 81 88
Card 176: 22 81 29 71 28 4 94 32 19 98 | 53 47 84 63 45 73 7 79 52 31 75 49 55 21 96 38 23 58 1 15 40 83 2 90 41
Card 177: 44 43 42 73 56 74 64 61 29 89 | 91 15 96 77 65 23 84 20 94 45 95 6 33 13 63 50 53 18 12 24 41 47 54 9 14
Card 178: 12 16 77 20 89 41 55 94 13 50 | 78 36 67 75 55 12 20 28 94 63 45 81 53 26 43 41 16 89 50 68 77 22 32 62 13
Card 179: 41 64 96 46 85 5 11 79 89 51 | 98 62 92 55 49 93 90 91 41 64 94 17 48 46 70 31 51 74 34 33 75 12 28 35 84
Card 180: 27 13 89 84 45 16 77 86 72 83 | 55 89 12 83 5 37 38 53 98 77 16 27 22 78 45 87 35 64 68 93 41 84 13 34 88
Card 181: 79 31 12 61 49 11 68 56 78 54 | 58 23 21 59 62 72 69 17 12 34 68 87 26 98 67 16 1 3 11 38 31 78 89 27 91
Card 182: 52 55 4 31 57 5 23 66 78 68 | 52 31 87 50 98 83 66 4 26 25 68 63 14 70 54 29 7 22 85 42 17 27 67 32 5
Card 183: 71 9 31 84 59 32 74 26 85 36 | 5 9 58 26 50 74 80 37 59 16 44 27 98 11 21 48 43 77 57 62 33 86 24 28 63
Card 184: 47 16 69 11 99 34 79 65 49 9 | 92 97 64 83 49 73 17 36 29 46 1 15 78 25 58 81 51 23 84 39 60 91 67 3 56
Card 185: 84 21 9 64 45 19 51 90 91 76 | 91 83 76 26 8 6 21 70 32 42 11 51 19 39 9 69 4 67 82 49 61 68 64 45 57
Card 186: 69 5 36 53 16 65 64 32 62 50 | 8 4 2 92 18 13 33 9 42 78 59 25 68 79 19 28 38 32 16 36 71 69 65 63 17
Card 187: 37 58 19 57 26 21 55 92 68 50 | 95 61 58 35 6 55 31 45 76 23 22 96 18 30 86 15 94 70 53 13 80 26 68 87 36
Card 188: 46 30 47 87 12 68 84 51 90 42 | 71 61 95 42 60 14 22 84 83 48 23 20 27 69 47 18 85 94 96 35 66 93 87 5 50
Card 189: 36 31 8 73 83 14 39 90 67 74 | 89 21 37 74 36 19 8 14 53 32 17 39 23 96 95 38 46 78 90 3 35 52 26 56 84
Card 190: 41 75 39 18 97 85 30 24 83 40 | 81 95 22 33 97 40 98 48 30 47 37 39 75 78 46 27 59 85 82 41 6 56 24 12 29
Card 191: 39 29 11 97 41 63 57 87 10 53 | 14 68 22 52 75 35 97 42 13 38 54 23 24 3 71 20 4 43 86 56 34 70 51 94 47
Card 192: 18 88 98 45 41 71 32 87 29 99 | 99 85 91 7 21 86 5 12 87 35 95 94 65 57 17 58 39 78 22 49 32 2 8 19 97
Card 193: 5 31 29 36 40 65 95 74 9 69 | 79 64 74 44 9 95 73 65 70 18 48 58 33 22 88 81 26 57 67 46 42 11 30 5 15
Card 194: 45 87 50 51 64 69 13 83 40 52 | 54 82 76 85 32 61 70 81 44 33 9 77 99 23 39 60 19 35 31 52 65 78 79 34 95
Card 195: 48 35 73 17 39 44 91 70 45 66 | 76 3 23 30 15 20 22 40 25 8 90 75 24 42 21 46 10 7 77 72 29 64 55 49 28
Card 196: 45 95 66 40 83 68 96 84 15 89 | 51 86 89 90 70 88 36 53 14 18 22 74 46 17 56 1 9 65 87 24 30 32 38 66 92
Card 197: 92 25 8 82 33 4 52 55 95 83 | 75 50 53 28 14 76 61 65 90 29 81 39 27 33 15 56 24 97 80 40 70 13 21 78 37
Card 198: 30 94 70 37 58 66 8 78 71 18 | 97 64 16 13 77 57 87 74 54 92 1 52 35 23 82 9 72 22 80 27 75 10 15 20 43
Card 199: 20 30 64 54 88 32 16 59 43 48 | 88 2 11 27 21 52 68 99 75 80 84 62 23 37 56 82 89 8 1 24 48 98 7 15 72
Card 200: 86 18 84 48 80 11 30 72 1 88 | 16 48 55 32 41 51 18 2 76 72 81 84 58 22 88 27 11 89 8 66 30 53 93 20 19
Card 201: 35 12 66 89 38 67 14 64 51 7 | 6 88 40 49 86 96 47 67 70 71 23 7 32 42 12 51 30 81 20 74 28 34 35 14 15
Card 202: 89 13 72 16 67 26 37 46 66 33 | 56 95 63 93 67 97 44 74 83 60 36 78 30 45 87 24 90 70 99 88 80 48 82 68 54
Card 203: 94 55 82 24 41 48 28 14 42 80 | 28 22 78 14 80 41 42 58 48 13 44 57 61 55 15 47 53 11 21 19 29 82 63 65 94
Card 204: 54 66 41 71 2 91 73 85 78 69 | 24 82 41 38 45 91 4 68 77 18 54 78 85 73 71 2 69 44 76 80 63 89 9 34 66
Card 205: 76 2 81 21 16 64 10 6 30 45 | 72 38 8 84 64 21 81 45 69 3 22 5 60 23 18 63 74 9 6 29 82 4 46 30 16
Card 206: 62 17 63 99 1 31 48 89 22 53 | 28 74 78 47 48 97 73 31 68 23 42 14 2 99 49 37 39 8 35 64 66 92 44 54 11
Card 207: 69 76 21 35 49 91 77 75 72 53 | 88 57 58 16 91 84 21 99 53 70 19 29 3 56 55 22 49 41 1 72 10 35 9 20 60
Card 208: 33 97 67 76 69 63 13 41 54 21 | 84 69 9 11 21 50 12 45 97 67 54 42 18 63 62 81 96 33 31 95 26 48 17 68 76
Card 209: 66 35 6 71 82 16 14 97 68 50 | 58 50 82 71 97 90 96 49 16 84 91 21 98 63 76 31 65 51 1 80 52 30 47 93 33
Card 210: 56 53 62 97 78 68 27 16 50 10 | 48 71 80 87 8 39 22 9 53 58 54 1 11 14 96 6 41 65 37 34 98 17 85 24 20
Card 211: 52 6 85 59 80 96 77 26 65 36 | 38 77 86 29 98 27 58 51 8 75 87 50 63 2 82 1 41 92 97 53 33 14 16 93 49
Card 212: 82 69 16 77 49 12 19 29 30 31 | 42 81 22 94 32 78 61 29 11 1 64 87 19 57 88 82 24 8 7 46 5 28 30 77 26
Card 213: 71 48 25 24 37 40 77 88 44 74 | 51 92 62 34 33 93 54 78 6 25 10 96 70 63 81 82 85 20 48 12 99 40 86 8 58
Card 214: 12 43 97 95 19 39 98 13 41 93 | 69 89 10 36 50 20 51 33 67 88 73 59 81 29 17 34 85 28 92 55 5 63 79 72 52
Card 215: 21 31 62 69 74 97 40 45 20 35 | 25 18 1 52 86 84 68 44 15 47 91 99 57 87 98 17 66 56 73 42 33 93 30 8 95
Card 216: 94 71 33 51 86 70 60 78 12 17 | 98 68 80 56 47 53 41 55 70 37 46 43 8 22 74 48 62 9 10 65 7 60 39 29 97
Card 217: 70 98 21 38 77 68 67 39 45 72 | 63 57 37 21 94 64 8 96 69 80 84 25 71 26 83 99 81 31 48 42 41 73 54 60 22
Card 218: 92 44 79 17 16 34 55 78 19 9 | 52 39 85 98 93 46 21 91 20 45 1 89 66 27 4 88 99 41 86 72 38 40 84 81 69

3
2023/05/05.incomplete.py Normal file
View file

@ -0,0 +1,3 @@
with open("input.txt") as f:
text = f.read()

250
2023/05/input.txt Normal file
View file

@ -0,0 +1,250 @@
seeds: 28965817 302170009 1752849261 48290258 804904201 243492043 2150339939 385349830 1267802202 350474859 2566296746 17565716 3543571814 291402104 447111316 279196488 3227221259 47952959 1828835733 9607836
seed-to-soil map:
3680121696 1920754815 614845600
1920754815 3846369604 448597692
193356576 570761634 505124585
2369352507 2535600415 31531965
2400884472 2567132380 1279237224
0 459278395 111483239
698481161 97868205 361410190
1059891351 0 15994868
111483239 15994868 81873337
soil-to-fertilizer map:
1633669237 1273301814 72865265
2398515176 2671190790 99210785
2397916384 3018946373 598792
4034325916 3061716397 20017393
3298612516 3793795301 14249501
4030007411 3051046904 2833129
1906984482 224872691 14620134
864506893 1590633724 149044542
1029530319 442871336 36727018
1921604616 770934113 68546178
3560536321 3114405501 28822192
1019762634 1263534129 9767685
3852235341 3579014714 60339892
2385228698 1577946038 12687686
2234322470 239492825 150906228
0 170310676 54562015
3208946111 3808044802 89666405
1209615399 839480291 424053838
4032840540 4041982568 1485376
2497725961 2174737461 293042810
2002543511 1346167079 231778959
3312862017 3475611771 103402943
318739997 1739678266 354749094
1013551435 3012735174 6211199
4014277153 4160859076 15730258
3589358513 3143227693 230682158
1990150794 2467780271 12392717
3051046904 3081733790 32671711
3820040671 3761600631 32194670
148429321 0 170310676
673489091 2480172988 191017802
1066257337 627576051 143358062
2790768771 2770401575 242333599
3091554979 4043467944 117391132
3416264960 3897711207 144271361
3912575233 3373909851 101701920
4072291714 3639354606 104297620
3083718615 3053880033 7836364
54562015 3019545165 13557205
1759006785 479598354 147977697
68119220 2094427360 80310101
1706534502 390399053 52472283
4054343309 3743652226 17948405
fertilizer-to-water map:
0 1095885172 129797665
2661548513 1044284418 17872363
3282164642 3678907615 214830258
1440687421 2218635146 325889720
3496994900 4208791298 25912548
3253828209 4136945159 5561683
1797056017 864689597 109403664
3259389892 4186016548 22774750
2578517508 1225682837 83031005
3193832718 3618912124 59995491
3695649169 3214450646 211194594
820325042 974093261 70191157
1284591017 1074888739 20996433
2929761569 3893737873 85668135
1305587450 2605461705 73959171
2168339930 1062156781 12731958
2465234843 2135490203 52666067
3522907448 4108091872 882860
3523790308 4255675252 39292044
2517900910 1308713842 60616598
3563082352 3176039879 38410767
3015429704 3979406008 128685864
1913427402 2131043562 4446641
2235159285 1419841841 190190495
3673886186 4108974732 21762983
891504291 1610032336 393086726
3927815169 3425645240 193266884
4121082053 3002154636 173885243
2084864581 2004107154 83475349
1917874043 557612753 69524983
890516199 2003119062 988092
766355924 2551492587 53969118
1379546621 0 61140800
3187625274 4130737715 6207444
528804063 627137736 237551861
1987399026 230411125 97465555
1906459681 2544524866 6967721
2184647884 1369330440 50511401
2425349780 2091158499 39885063
2181071888 2087582503 3575996
3144115568 4142506842 43509706
1766577141 2188156270 30478876
359533738 61140800 169270325
129797665 327876680 229736073
3906843763 4234703846 20971406
3601493119 2929761569 72393067
water-to-light map:
2375927917 1595026882 126334140
1307603095 818620477 43777869
2050676589 1855896418 112224406
3618302244 2909504698 119958941
3078570200 3088215627 6211083
3084781283 3094426710 141266337
524666822 53020621 149058240
673725062 862398346 147671362
2364320682 2577001713 11607235
1941578413 1584221500 10805382
2162900995 2536766467 40235246
162015400 237365123 4480592
821396424 241845715 141336168
166495992 1138498800 212882164
4277433486 4220367555 17533810
3226047620 2229635217 307131250
2909428734 1968120824 34606070
1885573816 3954749082 56004597
2711875933 2868267590 41237108
0 726306378 92314099
2944034804 1721361022 134535396
1584221500 3392008740 301352316
962732592 34415039 18605582
2235705153 2101019688 128615529
4252936467 4237901365 24497019
92314099 202078861 35286262
981338174 400041457 326264921
379378156 1010069708 128429092
3591930858 3693361056 26371386
3785017329 3719732442 235016640
2502262057 4010753679 209613876
3533178870 3029463639 58751988
3738261185 2821511446 46756144
4020033969 2806534555 14976891
1952383795 2002726894 98292794
127600361 0 34415039
2753113041 3235693047 156315693
507807248 383181883 16859574
2203136241 4262398384 32568912
4035010860 2588608948 217925607
light-to-temperature map:
2137189745 1335050925 100355790
639139367 2440321747 987829
1663612748 1778059435 153830272
1122754252 1950103191 82536600
1929621334 1199531530 135519395
1286703174 2032639791 207137687
245313533 981575774 217955756
2597564380 2824691125 293777778
895004176 331442633 25226735
1493840861 236388681 616173
1494457034 764560381 107637728
1817443020 1435406715 112178314
1205290852 356669368 33552643
474799702 0 164339665
2341054397 2260378974 100255179
1043066658 2360634153 79687594
125852143 390222011 119461390
3924383937 3130691909 13614218
2467721984 3747288823 76649669
2065140729 164339665 72049016
920230911 1673437172 104622263
640127196 509683401 254876980
1024853174 1931889707 18213484
2331983314 2251307891 9071083
2237545535 237004854 94437779
3912160931 3118468903 12223006
1238843495 933716095 47859679
3326002417 3517222025 230066798
3556069215 3144306127 241363224
3797432439 4180238804 114728492
1602094762 872198109 61517986
2544371653 4127046077 53192727
2891342158 3823938492 303107585
463269289 2239777478 11530413
3194449743 3385669351 131552674
3937998155 2467721984 356969141
0 1547585029 125852143
temperature-to-humidity map:
2687600833 2313887435 187105587
3281196981 2291603041 22284394
1771250828 1899269239 314167725
784031720 478456148 306959384
2605226464 1771250828 58348072
2085418553 3793564740 111907603
1090991104 785415532 575136195
3437652344 1829598900 69670339
2874706420 2500993022 389039942
3303481375 3905472343 134170969
305575572 0 478456148
3263746362 2890032964 17450619
2527060387 2213436964 78166077
2428623843 3695128196 98436544
2663574536 4270940999 24026297
3507322683 2907483583 787644613
2197326156 4039643312 231297687
0 1360551727 305575572
humidity-to-location map:
1919184105 1156349110 51114849
4031284281 3411510751 25609498
0 171183359 79004094
1253227229 2072782209 122019778
4056893779 3437120249 136289693
3402931364 4156827458 101778985
84557792 1207463959 134801591
635909965 1371746366 266495395
4029464617 4127764171 1819664
4193183472 2857352625 101783824
1375247007 2200355685 41445634
1996492203 0 171183359
3601595563 3699895117 427869054
2218993186 1133540977 22808133
3217192942 2959136449 140385316
2987922009 4258606443 9236491
2628749093 2543337773 86365212
2167675562 369831582 51317624
3504710349 2446452559 96885214
902405360 421149206 108869392
3357578258 2811999519 45353106
1196458443 1638241761 56768786
1178674352 693035436 17784091
1970298954 530018598 26193249
2868723842 3099521765 91954544
1522874936 895259169 18612073
2841599480 4267842934 27124362
1880563756 1695010547 38620349
1011274752 913871242 137918784
219359383 556211847 136823589
1785350971 250187453 95212785
2960678386 4129583835 27243623
540622614 1977494858 95287351
356182972 710819527 184439642
1498443592 345400238 24431344
1416692641 1051790026 81750951
1541487009 1733630896 243863962
79004094 2194801987 5553698
1149193536 1342265550 29480816
2997158500 3191476309 220034442
2715114305 3573409942 126485175
2446452559 2629702985 182296534

36
2023/06/06.py Normal file
View file

@ -0,0 +1,36 @@
with open("input.txt") as f:
lines = f.readlines()
times, distances = lines
times = [int(t) for t in times.split()[1:]]
distances = [int(d) for d in distances.split()[1:]]
races = zip(times, distances)
def distance(t, t_max):
"""
Calculate the distance traveled if you charge for t seconds
"""
return (t) * (t_max - t)
def part1(races):
answer = 1
for race in races:
t_max, d_max = race
results = [
(t, distance(t, t_max))
for t in range(t_max)
if distance(t, t_max) > d_max
]
answer *= len(results)
return answer
print(part1(races))
def part2(times, distances):
t_max = int("".join(str(t) for t in times))
d_max = int("".join(str(d) for d in distances))
for t in range(t_max):
if distance(t, t_max) > d_max:
break
return t_max - 2*t + 1
print(part2(times, distances))

2
2023/06/input.txt Normal file
View file

@ -0,0 +1,2 @@
Time: 48 87 69 81
Distance: 255 1288 1117 1623

156
2023/07/07.py Normal file
View file

@ -0,0 +1,156 @@
from collections import defaultdict, Counter
with open("input.txt") as f:
hands = f.read().split("\n")
hands = [(hand.split()[0], int(hand.split()[1])) for hand in hands]
def rank(hands):
ranked = defaultdict(list)
for hand in hands:
r = get_rank(hand)
ranked[r].append(hand)
return ranked
def get_rank(hand):
c = Counter(hand[0])
counts = c.most_common(2)
# extract counts
first = counts[0][1]
second = counts[1][1] if len(counts) == 2 else 0
# discriminate based on counts
d = (first, second)
match d:
case (1,1):
return "HC" # high card
case (2,1):
return "1P" # one pair
case (2,2):
return "2P" # two pair
case (3,1):
return "3K" # three of a kind
case (3,2):
return "FH" # full house
case (4,1):
return "4K" # four of a kind
case (5,0):
return "5K" # five of a kind
def order(hand: str):
"""
Convert to base-15 for proper sorting
"""
# A = ten
# B = jack
# C = queen
# D = king
# E = ace
return hand.replace(
"A", "E"
).replace(
"K", "D"
).replace(
"Q", "C"
).replace(
"J", "B"
).replace(
"T", "A"
)
def part1(hands):
ranked = rank(hands)
ranked_hands = []
ranked_hands += sorted(ranked["HC"], key=lambda hand: order(hand[0]))
ranked_hands += sorted(ranked["1P"], key=lambda hand: order(hand[0]))
ranked_hands += sorted(ranked["2P"], key=lambda hand: order(hand[0]))
ranked_hands += sorted(ranked["3K"], key=lambda hand: order(hand[0]))
ranked_hands += sorted(ranked["FH"], key=lambda hand: order(hand[0]))
ranked_hands += sorted(ranked["4K"], key=lambda hand: order(hand[0]))
ranked_hands += sorted(ranked["5K"], key=lambda hand: order(hand[0]))
answer = sum(
[
hand[1] * (rank + 1)
for rank, hand in enumerate(ranked_hands)
]
)
print(answer)
part1(hands)
### Part 2
def order2(hand: str):
"""
Convert to base-15 for proper sorting
"""
# A = ten
# B = jack
# C = queen
# D = king
# E = ace
return hand.replace(
"A", "E"
).replace(
"K", "D"
).replace(
"Q", "C"
).replace(
"J", "1" # jokers are worth less than 2
).replace(
"T", "A"
)
def get_rank2(hand):
c1 = Counter(hand[0])
c2 = Counter(hand[0].replace("J", ""))
jokers_count = c1.get("J") or 0
counts = c2.most_common(2)
if not counts:
counts = [('', 0),('', 0)] # prevent index error when 5 jokers
# extract counts
first = counts[0][1] + jokers_count # convert jokers to highest-scoring card
second = counts[1][1] if len(counts) == 2 else 0
# discriminate based on counts
d = (first, second)
match d:
case (1,1):
return "HC" # high card
case (2,1):
return "1P" # one pair
case (2,2):
return "2P" # two pair
case (3,1):
return "3K" # three of a kind
case (3,2):
return "FH" # full house
case (4,1):
return "4K" # four of a kind
case (5,0):
return "5K" # five of a kind
def rank2(hands):
ranked = defaultdict(list)
for hand in hands:
r = get_rank2(hand)
ranked[r].append(hand)
return ranked
def part2(hands):
ranked = rank2(hands)
ranked_hands = []
ranked_hands += sorted(ranked["HC"], key=lambda hand: order2(hand[0]))
ranked_hands += sorted(ranked["1P"], key=lambda hand: order2(hand[0]))
ranked_hands += sorted(ranked["2P"], key=lambda hand: order2(hand[0]))
ranked_hands += sorted(ranked["3K"], key=lambda hand: order2(hand[0]))
ranked_hands += sorted(ranked["FH"], key=lambda hand: order2(hand[0]))
ranked_hands += sorted(ranked["4K"], key=lambda hand: order2(hand[0]))
ranked_hands += sorted(ranked["5K"], key=lambda hand: order2(hand[0]))
answer = sum(
[
hand[1] * (rank + 1)
for rank, hand in enumerate(ranked_hands)
]
)
print(answer)
part2(hands)

1000
2023/07/input.txt Normal file

File diff suppressed because it is too large Load diff

17
2023/10/10.incomplete.py Normal file
View file

@ -0,0 +1,17 @@
with open("input.txt") as f:
pipes = f.read().splitlines()
def part1(pipes):
start = [
(i, j)
for i, line in enumerate(pipes)
for j, char in enumerate(line)
if char == "S"
][0]
distance = [([0] * len(pipes[0]))] * len(pipes)
x, y = start
d = 0

140
2023/10/input.txt Normal file
View file

@ -0,0 +1,140 @@
F|7.F|-F|777FJ7FF77-F777F7F|7..FF-77FF|--JJFJ7-J-F77.FF-F7F-F-FL7|--7---F.FL-7-7J.FFF7|-FFJ7.7.LF-LLJ77|F7FJJ-JFF|-.|FFF7F7..FFL7F-FJ-7-LL77
|-J-JL.LL7-7-J|FLJLJ.L|7|F-J-|-FL7L-7-J-LJFJ-77FF-LL-FJFLLJ7L.L.||..7FJ7J7FJFL-LJFLJL--.|7JL||FLJLL|JLJ.LL7J.FF|-J.L---JJ.F77L-LLF7L|F77LJ|J
LLJ|FJF-F--7LFL-J|7F--F--JJ|-JF-7|F-JJJ..FLJ.LFJJ.FJ-|J|J7.JFFJ-7---LLJL7FJ.J-FL-FLF7|LLJJ|L-J--7JJ|77LJ.FJFFFJL7J7|-|-J.FL7JL|LLJL7L7JFF.JJ
7-L-J7|LJJ-7-JLLF77J7.LF77LLJJL7|||F7J.|-FJ|FL7|-|7|JL7JLF|--JJJ|J7..|LL|J7-|FFJ|LJ.7--L|L7.L|F7.FF||L..FLJL-JF-JFLFF77.FFLLJL7F|F-J-L7JFJJ.
-7JL|7L-||F7|F|JF-F---7|L77F|-FJLJ||L7-J7|7F7.L|7L|JL---7-|7LJ|-|.F7--.|.L-FJ7JJLL-7|LF-7F|FF77JF7JLJ7.|.|-|7J|.L-.|JL--FJ7--7|-FJ7|J|LLL--J
L77JLJ-FJ-FJJ-|7JF77LF-7LL-F7FJF-7||FJF7L|J-J7JL--||FJJ-|..J..F-7--FJ|77.L7|L7-7..FL-.L7|-L|J|J.FJ7|F-FJ--.J7F-LFJ--J.FF|-7--7--|-F-FJ.LL7|J
LLF7-7F7.-L|JLJ|.LJ-.F7|FF.||L-JFJ||L7F7L|J.L-77-77-JJ.-J77.F.L7|F|L77|L-7F--J|--LLJ|.F||J-LFLJFF7--|L|..|-|L|JFJ77|.L--77.LJ-JLL-7F|-7|LLL7
|.||.F-...FLF-7L7-7FJ|FJ||FJ|F-7L7||FJ||F77.-7L||.|-|.LLL-7.F-7||J7-LJ77L||J--||.|JFFJF|L-7F7JF-J|7J|||-LL7|.|F7LJ-|.F7FL7F7J||LL7LF--77-L|7
FFJ7.||.--7.JJF.7.F-J7|F7FL7LJFJFJ||L7|||L7.|L7|J-F777-|L7-7L7LJ|JL7-L-77L-.7L|7FF-|J|-L7FJ||F7.FLL77F-.FLLF7-||7LFF-LF|.|-J7FL-7|...-77F-LJ
||L|7F7JJ|J...F.777JJL7||F7L-7|FJFJL7||||FJ7-F7||-||-F-J|..FLL7FJ7JF-7L|7-L--FJ||7-J.F7FJL7|L7LLJJ7LFJF|J7F|L-JL7-7|.|||FL7LJ7LJ-|-77.LFJ|..
LJ7FJ-J|-JFF|-J7L-.|JFFJ||L--JLJFJF-JLJLJL7F7F7-7F||7|-F7-FFF7||F-7J-7-L|7J7.||F7.J|.||L7FJ|FJ|F|7LL-|7L---L--7FJJJF7F|JF-7--|7||||F-F-||L|7
|.LL|J.L-JFLJF7|.|7.F-L7LJF--7F7L7|F----7FJ||||-F7||FF7F7F--JLJLJFJ||F.|J.LF-LFJL7JF-JL-JL-JL7-F.|JF-|F77F|||FJL77.-JF7.LF7LFJ-|7-||FL-|-JL|
JFF-7.FFLFJ7-FLJ7L7F|7FL7FJF-J|L7LJL---7LJFJLJL7|LJL-J|||L----7F-J|FFJ--F77.|.L-7L7L-7F------JJ.FF77--J|7FF7FJF7L7-.LL--FJ|||L-LJ.LJ7.|J.L|J
|FJJ|.---L-JJLL||L|LF-7FLJ7|F-JJL-7F---JF7|F---JL--7F-J|L7F-7FJL7J7LJL-L||L-7F7FL7L7L|L---7F7J-FF7F777F-7FJLJFJL-J7F77J7.L|F|J|LJFL7F7L-7-7-
L77FJ-||7FF7---LJ-7.LJF7F-7LJF-7F-JL-7F7||||F7F7LF-JL7FJFJL7||F-JF77J||L||7LFJ|F7L7L7|F---J|L-7F|LJ|F7|FJL--7||F7F-J|F-77F-|J77LF|-JJJ.J7.LJ
||LJ..L-LJJ-7-7L7.L.FF|||FJF7L7|L-7F-J|||||||LJL7L7F-J|FJJFJLJ|F7|L7F-7.|L7FJFJ||.L7||L--7||F-J-L-7LJ|||F7|FJL7|||F-J|FJJ-.|L-7-|L|.|L.L|77.
F7-LJ7|JFL|7LFJ|L7.FF7|LJ|FJL-JL--J|-FJLJLJLJF--JFJL7FJ|F7L7F7||LJFJL7|-L7|L7||||F7|||F--JFJ|F7F7LL-7LJLJL7L7FJ|LJL--JL7J.-|-L--F-7F|--|J|7L
J77F.JJ.J-7J-L7F77F7||L-7|L-------7|FJF------JF7|L-7||FJ|L7LJ|LJF-JF7||F7||FJL7|LJLJLJL-7|L7|||||FF7L7F7F-JL||FJF7F----J---J|.|7L7L7|.FLF|77
FL-JF|FL-7.|7LLJF7||||LFJL-7F7F7F7|LJFJ-F--7-FJL7F-J|||L|FJFFJF7L-7|||||||LJF-JL---7F7F-JF-J||LJ|FJL7LJ|L-7L|||FJLJF7F7J.|-|FL.L--7FJ---|JL7
FF7L-|L|.L|||.FFJLJLJL7L--7||||LJ|L7FJF7|F7L-JF-JL-7LJL7|L--JFJL7FJ|||LJ||F-J-F-7F7||LJF7L-7||F-JL-7|F-JF-JFJLJL7F7|LJL77FFJLL|.L.JJL-J7J-J|
|-7FFJL|.|||..FL-----7L---JLJ|L-7L7|L7|LJ||F7FJJF-7|F7FJ|F--7|F7LJFJ|L-7|||F-7L7LJLJL--JL7FJ||L7F7FJ|L7FJF7L7F--J|||F--JF77L-7J.|L.|.LL|-7J7
7F77|J7|F--FF-7JLF7F7L------7S77L7LJFJ|F-JLJLJF7L7|LJ|L7LJF-JLJL77L7|F-JLJLJFJFJF---7F---JL7LJFJ||L7|L|L-JL-JL7F7||||F-7||LL|LF--J.L7FL|L|-|
L7|LJ|F7L.J.L7|FL|LJ|F7F----JFJF7L-7|FJL7F7F-7||FJL-7|FJF7L-7F-7L7FJ|L---7F-JFL7|F--JL----7|F7|FJ|FJ|FJF--7F--J|||||LJFJ||F7|F|F|FJLJ7.7J|LF
F-FJLJLL---FFJL7LL-7LJ|L-7F-7L7|L--JLJF-J|||FJ||L--7LJL7||F7|L7L-J|FJF-7L|L--77LJL--7F----JLJ|LJFJL7|L7|F7LJF-7|||LJF-JFJL--7-JL77||.|7LLL7L
FJ|J-|J-FJ.FL-7|-F7L-7|F7LJFJFJL--7F-7L-7||||7|L7F7L-7FJ||||L7L7F7|L7L7|FJF--JF7-F7FJL--7F-7FJF-JF7|L-JLJL7FJFJ|||F7L--JF7F-JFLLJ|L-.|FF.FJJ
L7.LF777FFF7F7||.|L--J|||F7L7|F7F7LJJ|F7||LJL7L7|||F7|L7|LJL7L7||||FJFJ|L7|7F7||FJLJF---J|FJL7|F7||L-7F---J|FJFJLJ|L----JLJF77--7-7.L-JLF|J.
FJ7LJJL--LLFJLJL-JF--7LJLJL-JLJ|||LF-J|LJL-7FJFJ||LJ||FJL-7FJ.|||LJL7L7L-JL7|LJ|L--7L7F7FJ|F7|||LJL7FJL7F7L|L7L-7FJF--7F7F7||JLFJF|7LLF--J.|
|JL.J7-|J|.L-7F---JF7L--------7|||FJF-JJF-7|L-JFJL-7||L-7FJL-7|LJF--JJL-7F-JL-7|F7FJFJ||L7|||||L-7FJL-7LJL-JFJF-JL7|F-J|LJ|||-FJFF7--J..||-|
JLLFJLFJFF--7LJF--7|L7F7F7F---JLJLJFJ7F7L7||F--JF-7|LJF-JL-7FJL-7L7F7F--JL7F7L||||L7L7||FJ|||||F7||F-7L7F---J7L-7FJ||F-JF-J||F7F-J|.|F|-L7.7
|.|.FJL-FL-7L-7L-7LJFJ|||||F7F---7FJF7||FJLJL-7FL7LJF7L7F7FJL7F7|FJ||L---7LJL7|LJ|JL7|||L7LJLJ||LJ|L7|7||LF7F7F7|L-JLJF7L--JLJLJF-JFF-|L|77F
L77.|7FFF--JF7L7FL-7|FJ|||LJLJF77|L7||||L--7F-JF7L--JL7LJ|L7FJ|||L7||F7F7|F--JL-7L7FJLJL7L7F--JL-7L7|L7|L7|||||LJF----J|F7F-7F--JFJ7|F--7L|J
F||7L-77L---J|FJ7F-J|L7|||.F--JL7L7|||||F--JL7.||F-7F-JF-JL||FJ||FJ|||||LJ|F7F7FJFJL--7FJFJL---7.L7||FJ|FJ|LJLJF7L----7LJLJLLJJJ-|-LL--7J-LJ
L|-FF7LF.FF--JL-7L-7L-J||L7L-7F7L-J|||||L---7L7||L7|L-7L7F-J||FJ||FJ|||L-7|||||L7L7F7FJL7L7F---JF7|LJ|FJ|FJF-7FJL-----JF--7F7.FLJ|L|.|JL--JJ
F.LLJF.|F7L----7L--JF-7|L7|F7LJ|F-7LJ||L7F7FJFJ||FJ|F7|FJL-7||L7|||FJ||F7|LJLJL7|FJ|||F7|FJ|F-7FJ||F-JL7LJFJ.LJF7F7F7F7|F-J||-||F|.|FL7L|..L
J.L|.L-FJL-7FF7|F---JFJL-J||L7FJ|7L7FJ|FJ|||FJ-||L7|||||F7L|||FJ||||.||||L7F---J||7||||LJL7||FJ|FJ||F7LL7FJF---J||LJLJLJ|F-JL--7-J7-|F7-L.|.
F----FFJF-7L-J|LJF7F-JF--7|L7||FJF7||FJL7|LJ|F-J|FJ||||||L7|||L7||||FJ|||FJL7F--J|FJ||L-7FJLJ|FJL7||||F7||FJF7F-J|F--7F7LJF7F--J7F7-F7J-7|LL
JJ-7L-L-JFL7F7L-7||L7FJF7||FJ|LJFJLJ||7L||F-JL-7|L7LJ||LJF|||L7||||||FJ||L7FJ|F--JL7|L7JLJ|F-J|F-J|||||LJ||FJLJF-JL-7LJL--J||F7LFJ|FJL7J7|F|
|L|LFLJJ.F7LJL-7||L7LJFJLJ|L7|F7L--7|L7FJ||F7F7||FJF-JL7F7|||FJLJ||||L7||FJL7|L-7F7|L7L7F--JF7||F7||||L77LJL---JF7F-JF-7|F7LJ||-L7||F-JLFFJ|
|-|..|J-FJL----J|L7||FJF-7L-JLJL---JL-J|FJ||||||LJFJF-7LJ|||||JF7||||7LJ|L7FJ|F-J|||FJFJL7F7|||LJ|||||FJF-----7FJLJF7L7L-J|F-JL--JLJ|J7||F.J
F-FL--7L|F---7F7L7||FJFJJL--7F7F-7F--7FJL7|||||L-7L-JFJF7||||L-J|LJ||F--JFJL7|L7FJ||L7|.FJ||||L7FJ|||LJFL---77LJF7-|L7|F--J|F----7F7|-|F-|7J
|FL|.|FFJL7F-J|L7LJLJFJF----J|||FJ|F-JL-7||||||F-JF7FJFJ|||||F-7L-7|||F-7|F-J|FJL7||FJL7L7||||FJL-J||F-----7L---JL7|FJ|L7F-JL---7LJLJ|LJ||.|
L-J.FFJL--JL--JFL---7L7|F7F-7|LJL-JL---7LJLJ||||JFJLJFJFJ||||L7L7FJ||||FJ|L-7||F7|||L7FJFLJ|||L7F--J|L7F--7L------J||7|FJL7F----JL|-L7FJ-|-7
|.F-J|L|7F---7F-----JFJLJLJ.||F---7F---JF7F7LJ|L7L7F7|-L7|LJL7|7|L7||LJ|FJF-J|||LJ|L7|L-7F-J||FJL7F7L7LJF-JF7.F--7J|L7||F7|L-7FF7F7.F-J|.LFJ
F-|7LJ-JFL--7|L7F7F-7|F7F7F7LJL--7|L----JLJL-7|FJJLJLJF-JL7FFJL7|FJLJF-JL7L-7||L-7|FJ|F7||F7|LJF7||L-JF7L--JL7|F-JFJFJ|LJLJF-JFJLJL-7JFFFJ|J
JFL-L7.F----J|JLJLJ||||LJLJL--7F-JL------7F7FJLJF7F-7|L7F7L7L7FJ|L-7FJF7FJ-FJ|L-7||L7||LJ||||7FJ|LJF77||-F---J||F7L7L7|F---JF7|F----J|||F--.
|FJF-|.L----7L-7F7F-J|L7F7F7F7|L--------7LJ|L7FFJLJFJF7LJL7L7|L7|F-JL7|||F-JFJF-J|L7|LJF7|||L7L7L--J|FJL-JF7.FJLJL-JFJ||FF7FJLJL----7-J-|.|7
J|.|L7FF7F-7L-7LJLJF7L7||||LJ|L-------7FJF7L-JFJF7FJ.||LF-JFJ|FJ||F7|LJ||L-7L7L-7L7|L--J|LJL7|LL---7LJF---JL-JF----7L-JL-JLJF---7F--J.||J-L7
|-F7-LL||L7|F7L7F-7|L7|||LJF7L-------7LJFJL7F-JFJLJF7|L7|F7L7|L7|LJL7LFJ|F-JFJF-JFJL7F7FJJF-J|F----JF7|F---7F7L---7L7F--7F-7L--7LJ7.J.LF-F-7
7-7L|.||L-JLJL-J|FJ|.||LJF-JL-------7L-7|F7|L-7|JF7|||FJLJL7||FJL7F-JFJFJL-7|-L-7L-7||||7FJF7|L7F7F7|||L-7.LJ|F-7FJ.|L-7LJFL7F7L--77FJ.|-7J.
--L7F-F|F-7F---7|L7L7||F-JF7F--7F--7L--J||LJF-JL-JLJLJL---7|||L-7LJF7L7L7F-JL-7-L7FJ|||L7L-JLJFJ|||LJ||F7L--7LJFJL-7|F7L---7|||F7FJ-J.-F-J.F
||L7|7JLJ-|L7F-JL7L7|LJL--JLJF7LJF7L---7||F7L7F----7F-7F--J|||F7L--JL7L7|L-7F7L7FJ||||L7L-7.F7L7|LJF7LJ|L---JF7L7F-JLJ|F7F7|||LJ||JLJFL||..|
FJFFFL.FLFJFJL7F-JFJ|F-7F7F--JL-7||F---J||||J|L---7||F||F-7|||||F7F7FJFJ|F-J|L-JL7L7LJFJF-JFJ|FLJLFJ|F7L-----J|||L--7FJ|LJLJ||F7LJF7|7FL7-FJ
L7L77JFFJL-JF-JL7-L-JL7LJLJF7F-7LJLJF7.FJLJL-JF---J|L7|LJFJLJLJLJ|||L7L7|L-7L---7L7|F7|FJF7L7|F7F7L7LJ|F------JFJF-7|L7L77F-JLJL7F-FL|L-F.J.
FJ-|||F--|F7L7F7|7LF--JF--7||L7L7F-7||FJF7F-7FJF--7L7||F7L7F-7F7L|||FJFJ|F-JF7F-J.LJ||LJFJL-JLJLJL-JF7|L-7F7F7JL-J7LJ7L7L7|F7F7FJ-FLFJLLJF.7
FJ|LJ-L7.FJL-J|LJF7L---JF7LJL-JLLJFLJLJFJLJL|L-JF-J|LJ||L7|L7LJL7LJLJFJFJL-7|LJF----JL-7L----7F7F7F-J||F7LJLJL---77F-7FJFJLJ|||L77-.L-7LF|-7
|-F7-|J|-L7F-7|F-J|F7F7FJL-7F7FF-------JF7F-JF--JF--7-LJFJL-JF7FJLF7LL7|F--JL-7L-7F7F7FJ-F7JFJ|LJLJF-JLJL---7F7F7L7L7|L-JF7-LJ|FJJ-FJ.F--J7|
L|LF7|-LL-LJFLJL-7||LJLJF-7LJL7L--------J||F7L7F-JF7L-7JL7F7FJLJF7|L7|||L7F7F-JF-J|LJ||.FJL-JFJF7F-JF------7LJ||L7L7|||F7|L--7LJ7-LF7-7F7LL7
FJ-L77777LFJ-F---J||F7F7|FJF7FJF----7F-7FJLJL7LJF7|L-7L-7LJ|L---JLJFJ-||-|||L-7|F7|F-JL7L----J-|LJF-JF7F7F7L-7LJ-L-J|L-JLJF--JJ.77.L7..F7-J|
|||L|J.77-L|FL---7|LJ||||L-J|L7L-7F7LJ7LJF7F-JF-J|L-7L--JF7L7F-7F7FJ.FLJL|||F-J||LJL7F7L--7F7F7L--JF-JLJLJL--JF7F7F-JF-7F7L--7|||-LF7FFF7.FJ
|FF-JJ7LF7-LF----JL7|LJLJ7F7L7L-7LJL7F---J||F7L-7L--JF7F-J|-LJJLJ|L--7-F-||||.LLJF-7LJL--7|||||F7F-JF-----7F7||LJLJF-JJLJL---J7F||LL-LFJ|F7J
LL7.J.LFJ|.FL-----7|F7F7F7|L7|F7|F7FJ|F---JLJL-7L7F--JLJF7L---777L7F-J--JLJLJ7..FL7|F7F--JLJ||||||F7|F----J|L7|F7F7L7F7-F7F7F7F-77.|.||L-LJJ
LL77.L7L7L7F7F7F--J||LJ|||L7|LJ|LJLJFJL---7FF-7L7LJF7F7FJ|F7F7L--7|||J-JF||LL7FFF7||||L-7F-7LJ|||LJ||L-7F7F|FJ||LJL-J|L7|||LJ||FJ|F--J|JJJFF
LL|||L7.L7LJ||LJF-7|L7FJ||FJL7FJF--7|F----JFJFJ-L--JLJLJ7LJLJL-7FJ||-J7FJL7|7.FFJLJ|||F7LJ.L-7LJL7JLJF7LJL-JL-JL--7F7L7LJ||F7LJL-77.|LFJJLJJ
.|LL-J.7|L-7|L--JFJL-J|FJ|L-7||FJF7LJL-7|F7L7|JF7F---------7F7-LJ.LJ.LF-7-J7-7JL--7LJ||L--7F7L7F7|F--JL-7F7F------J|L-JF7LJ||F7F7L7777|.FFJJ
FL-|LFF--7.||F77FJF7F7LJFJF-J|LJFJL-7F7L7||F|L7|LJF-7F7F7F7LJL---7|.7JF-JJLJFFF7F-JF-J|F-7LJL7||LJL----7LJ|L--7F---JF7FJL--J||||L7|7-J7FFL-7
||.|J|L-7L-JLJL-JFJLJL-7L7L-7L7FJF-7LJL7LJL-JFJ|F-JJLJLJ||L------JJ7-7LF|JJJF-J|L-7L-7LJ7L--7LJL7F7F7F7L-7L7F7LJF-7FJLJF---7||LJ-LJJ|.|LF-7|
FF|J.F|JL----7F7FJF---7L7L--JFJL7L7L-7.L7F-7FJ-||F7F---7|L--77L|LJ-F-L-L-F77L-7|F-JF-JF7-F7J|F-7LJLJLJL--J7LJ|F-JFJL---JF7FJ|L7|.|.F77-J.|FL
J.FJF7LLF--7.LJLJ|L--7L-JF7F7L-7L-JF-JF7LJFJL--JLJLJF--JL-7FJ77.|.|J.J-JJ|L--7||L-7|F7|L-JL-JL7L------7F---7J|L-7L7F7F-7||L7L7L7FL-FJJL7-LJ|
|F|F|7FLL-7|F7|-F----JF--JLJL7FJ7F-JF-JL7-L7F7F-7F-7L----7LJJLJFFFF--7|LLL7F7LJL--JLJLJF7F7F7FJF7F7LF7LJF-7L7|F7L7LJ|L7LJL-J7L7L7J.L|.LFJ.FL
FJLFF7F-7FJLJ|F7L-7F--JF-----J||FJF-JF--JF7|||L7LJFJF7F--JF|7.LFJF-JF-JJLLLJL-7F7F-7F-7|||LJLJFJLJ|FJL-7L7L-JLJL7L7FL7L7F7F7F7L-J.FFJ|.|.7-L
77F7|||FJL--7LJL7|LJF-7L7F-7F7L-JFJF-JF--J||||FJF7L-J|L---7F7F77L7-L|J...-F--7LJ|L7LJFJ|LJF---JF-7LJF-7L7L--77F7L7L-7L-J|||LJL----7JL|F|FL-|
F-JLJLJL---7L--7|F7-L7|JLJ.LJ|F-7L7L--JF7FJ|||L-JL--7L----J|LJ|7.|FL|.FL.FL-7L--JFJF7|FJF-JF7F7|JL7FJFL7L---JFJ||L--JFF-JLJF--7F--J7.LJ-7JF|
L-7F-7F-7F7L---JLJL-7||F-7FF-J|FJFJF7F7||L7LJ|F-----JF-----JF7L77-JL|77FL77|L-7F7L7|LJL7L--JLJ||F-JL7F-JF--7-L7L------JF7F7L7JLJ|F||F|-J.F||
L.LJ.||FJ|L-7F-7F7F7LJ|L7L7L--J|FJFJLJLJL-JF7LJF----7L7F--7FJL-JJ|FFJ|L7--L||FJ|L7||F-7|F-----J||F7FJL--JF-JF7|F------7|LJL-J7-F--7FF77.--77
.FLJFLJL-J7FJ|FJ||||F7L7L7|F7F7LJJL7F7|F7F7|L--JF--7|FJL-7|L-7F7-FFJL7-7|.LLFJFJFJ||L7LJL-----7|||LJF7|F7L--JLJL-----7|L-----7-L7FJ7|L.FJL||
FF7-FJF--77L-JL-J||LJL7L-JLJLJL7JF7LJL-JLJLJF---JF7LJ|F--JL--J||F7L7-|7L77.FL7L7L-JL-J.F--7F-7LJ||F-J|FJL-7F7F-------JL------JF7|||JL7F|.|L|
LFF7||L-7L7F-----J|F--JF7F----7|FJ|F---7F7F7L---7|L--JL--7F7F7||||F7F|J-||F7J|FJF-----7L-7|L7L-7LJ|F7LJF-7LJ|L7JF7F7F7.F7.F7F7|LJL-7.F-F-J.|
.FJL--7-L7|L------JL-7FJ||F--7||L7LJF-7LJ||L7F-7LJF------J|LJ||||||L7J-F7J7LFLJ7L----7L--JL7|F7L-7||L7FJFJF7L-JFJLJLJL-JL-J||LJF---J-J|L-7LJ
FL---7|F7||F7F---7FF7|L7||L-7LJ|JL-7|FJF7LJFJ|7|F7L-7F7F7F|F-J|LJLJFJJ.||||||F-7JF7F7L---7FJLJ|F-JLJ|LJ-L-JL---JF-----7F7F7LJF7|F--7-FJ7L7.|
7-LLFJLJLJLJLJF-7L-JLJFJLJF7L-7L-7-LJL-JL-7L-JFJ||F7LJLJL7||F7|F--7|JLF|L77--|FJFJLJL----JL7F7||F77F----7F------JF---7LJLJL--JLJ|F-J-|.|7LJJ
L--L|F-7F-7F7FJ-L-7F-7L77FJL7FJF7L------7FJF7-|FJLJ|F-7F-J|LJLJL-7||7LFJFJ.F7|L-JF7F------7LJLJLJL7L---7LJF7-F7F7|F-7L7F7F7F----JL-7FJ-J|FJ|
|-|.LJFJL7LJ|L-7F-J|FJFJFJF7LJFJ|F-----7|L-JL7|L--7|L7|L-7|F--7F-JLJF-JFJ|F-7L---JLJF-----JF7F-7F7L7|F7|F-JL-JLJ|||FL7LJ||LJF------JJ|LL7LF-
L--L-FJF7|F7L7FJL7FJ|FJJL-JL7FJFJ|F-7F-JL-7F7||F7FJL7|L-7||L-7|L--77L-7|F7L7L7LF7JF|L---7F-J||L||L7L7||LJF7F7F--J|L-7|F-J|F-J.F--7|JFFJ.7-LJ
.|-|.L7|LJ|L7|L-7|L7LJF---7FJL7L-JL7|L-7F7LJ|||||L-7|L-7LJ|F-JL---JF--JLJL7|FJ7|L7FF7F7JLJJFJL7LJ7L7LJL--JLJ||7F7|F-JLJ|FJL7F7|F-JF7-F7FJJ..
F.FF-FJL-7L7LJF-JL-JF7L--7|L--JF---J|F-J||F7LJLJ|F-JL--J-FJ|F7F--7|L----7FJ||F7L7|FJLJL----JF7L7F7-L7F-----7||FJLJL7F---JF7LJLJL--JL-JL77FL7
77-|LL-7FJLL-7|F-7LFJ|F7FJL7F7-L7F-7||F-JLJL7F7.LJ-F7F7F7L7||||F-J7F-7F7||FJ|||FJ||F--7F---7|L7||L--J|F---7|||L-7F-J|F---JL-7F---------J-FJ.
L7.L7LFJL7|FFJ|L7L7L7LJ|L7FJ||F7|||||||F---7LJL---7|||LJL-JLJ|||F-7L7|||||L7LJ||FJLJF-J|F--JL7||L----JL--7LJLJFFJL--JL-----7|L-----7|FLJJ|J.
|L--J-L7FJ77|FJLL7|JL-7L-JL-J|||LJFJLJ||F7FL------J|||F--7F--J|LJFJFJLJ||L-JF-J||7F7L--JL---7|||.F7F7.F-7L7F7F-JF7F7F---7F-J|F-----J777JL|.F
J7..|-FLJ|F7LJF--J|F--JF-7F-7LJL7FL77FJLJL7F------7||LJF-JL--7|F-JFJF-7LJF--JF7|L7||F7F---7LLJLJFJLJL7L7|FJ||L7FJLJ|L--7LJLFJL--------7J.JF|
FF--|-7FFF||F7L--7LJF--JJLJ|L--7L-7L-JF--7LJF--7F-J||F7L7F7F-J|L7|L-J7|F-JF7FJ||FJ||||L--7L-7F7FJF--7L-JLJF||FJL--7|F--J-F7L-7F-7F7F--J77.J|
FLJ-L-F7FF|LJL7F7L-7L7F-7LF7F-7|F7L--7L-7|F7L-7LJF7|||L7LJ|L7FJFJF7F7FJL--J|L7LJ|-||||FF7|F-J|LJFJF7L-7F---JLJF7F7||L7F--JL-7LJFJ|LJJLLFJ--7
7J7.L|LL-JL7F7LJ||FJFJL7L7||L7|LJL-7|L7FJLJL--JF-J||||FJJFJFJ|FJ.||||L-7F-7L7L7FJFJ||L7|||L7FL--JL||F7LJF---7FJLJLJL-J|F---7L-7L7L7||FFF7|J|
F-F7LFF7L-FJ||F7L-JFJF7L7LJ|FJL----JF7LJF7FF-7.|F-J||||F7L7|FJL7FJ||L-7||JL-JFJL7L7||FJ||L7L7F7F--JLJL7JL--7LJF7F7F7F7|L--7|F-JFJFJ-J---LJF|
L-.LJ|L77LL7|||L7F7|||L7L-7LJF------JL--JL7L7L7||FFJ||LJL7|||F-JL7|L-7LJL7F7FJF-JFJ||L-JL7|FJ||L-7F--7L7F-7L--JLJLJLJLJF--JLJF7L-J-7JJJ.L-L-
|-|LF7.LF7LLJ||FLJ|L7L7L--JF7|F-----------JFJFJ||FJFJL--7||LJL7F7||F7L--7LJ||FJF7|FJL---7LJL7||F7LJF-JFJL7L--------7F-7L--7F7|L-7JF77-JF.LL7
7|L|.||.J77J.LJ-F-JFJ7L--7FJLJL--------7F77|FJFJLJFJF---J||F--J||||||LF-JF-J||FJ||L7F7F7L-7FJ||||F-JF7L-7L--7F7-F7JLJ.L7F-J|LJF7|FJ|7FFL7-LJ
|7F|F7|7JF7-FJF|L--J7F---JL7F---------7LJL-JL7L7F-JFL--7FJ|L7F-J|||||FJF7|F7||L7||FJ||||JFJL7||||L7FJ|F7L--7LJL7|L-7F7JLJF-JF-JLJ|FJF-7-F.FJ
F-LJ|J7|--JF7-F7FFF--JF--7FJL7F7F7F--7L-7F--7|FJL--7F-7||FJFJL-7|||||L-J|LJLJ|FJ||L7|||L7L-7||||L7||JLJL--7|F-7LJF-J|L7F7L-7|.F7FJ|FJFJ|JFF7
|-|LJF7||.J-|.||FFJF-7|F-JL7F||LJLJF7L7FJL-7LJ|F---JL7||||FJF7FJLJLJ|F7FJF---JL7|L7|||L7|F-JLJ||FJLJF7F---JLJLL--JF-JFJ|L-7||FJLJFJL7|F7F7LJ
L7L7|FJL-7.-JL|L7L-J|LJ|F7FJFJ|F---JL-JL---JF-JL--7FFJLJ|||FJ|L----7|||L7|F7F7-|L-J|||FJ|L--7FJ||F--JLJF-7F7F-----JF-J||F-J|||F--JF7|LJLJL7J
LJFF---|.|7FF.L7L--7F-7LJLJJL-JL----7F7F7F7-L-7F--JFJF--J|||FJF7F-7|||L7|LJ|||FJF-7|||L7L-7FJ|FJ|L-7F-7|FJ|LJF7F-7FJF--JL--JLJL---JLJF----JJ
||LJ..LL-.J-FF7L--7|L7L----7F7F7F---J|||||L7F7||F-7L7|F-7|LJL7||L7|||L7LJF-J|LJFJ7LJ||FJF-JL7LJFJF7|L7||L-JF-JLJF|L-JF7F--7F--------7L--7JL-
|J7..||.|FJFFJ|F7L||-L----7LJLJLJF---JLJ||FJ||||L7|FJ||FJL--7|||FJ||L7L-7|F7|F-JF7F7||L7|F7-L7FJF||L-JLJFF7L----7L7F-J|L-7|L7F-----7L7F7|.||
|.LF-F7FLJLLL7LJL-J|F-----JF-----JLF----J||FJ|||FJ||FJ|L7F7FJ||||FJL7L7FJ||||L-7|LJ|||FJ|||F7|L-7|L7F7F--JL7F---JFJ|F7L7FJL7LJF7F-7|FLJLJ-|7
F7JL|.|||J..LL7F--7|L------JF------J|F7F7|||FJ||L7|||-|FJ||L7|||||.||FJL7|||L7FJ|F-J||L7|||||L7FJ|FJ||L---7LJF--7L7LJL7|L7FJF7||L7LJ-LJFL|..
-|-F-F-|77-7FFLJF7||FF7F7JF-JF7F-7F7FJ||||||L7||FJ|||FJL7|L7|LJ||L7FJ|F7|LJL7||FJ|F7|L7|||LJL7|L7|L7|L7F-7L--JF7L7L7F-J|FJ|FJ||L7L7JJFLJ---|
L-.F-7L7|LF-7F7FJLJL-JLJL-JF7||L7LJ|L7|||||L7LJ|L7||||-FJL7|L-7|L7||FJ||L7F7|||L7|||L7||||F-7|L7LJF||7|L7|F7F-J|FJF|L-7||FJL7|L7|FJF7-F--J.7
-J77FF7L7FL7LJLJF-----7F7F7|||L-JJFJFJLJ||L7|F-JFJ||||FJF7||F-J|FJ||L-JL7LJ|||L-JLJL7|LJ||L7LJFJF--JL7L7|LJ|L-7||F-JF7|LJL-7||FJLJFJJ||7.|F|
FJ|LLJF-J77L----J|F7F-J|||||LJF---JFJLF-J|.LJ|F-JFJ|||L7||||L7FLJ7LJF7F-JF-J||F-7|F-J|F-JL7|F7L7L--7FJFJL-7|F7|LJL7FJLJF7F7LJ|L-77||LFF-F-FL
77J|FF|JL|F-------JLJF-JLJ||F-JF--7|F7|F7|F--JL-7|FJ|L7||||L7L--7F--JLJF7L-7LJ|FJFJF7||F7FJLJ|FJF--JL7L7F7||||L-7FJL-7.|LJL-7|F-J-J|-FJFL7|7
|J-F--J.FFL-7F-7F7F7FJF7F-J||F7|F-J||||||||F-7F-JLJFJFJ||LJFL7F-JL--7F7||F7L--JL7|FJ|||||L7F-JL7L7F7FJJLJ||LJ|F-J|F-7L7L7F--J|L7..L7||J|FJLJ
J--7.|7.JFF-J|-||||||FJLJF7|LJLJL-7LJ|||||LJFJL--77L7|FJL-7F-JL---7FJ||||||F7F7FJ|L7|||||FJL7F-JFJ||L---7||F-JL-7|L7L7L-J|F77L7|-L.|FF7|LL||
L-|.-J7-F-|F7|FJ|||LJL7F7|||F--7F7L7FJ||LJ|FJF7F-JF-J|L7F7|L7F7F--J|FJ||||||||||FJFJ|||||L7FJL-7L7||F-7FJ|||F7F-JL-J.|F7FJ||F7LJ7F--7JLJ7LF|
|JL7J||.J-LJ||L-JLJF7FJ|||LJ|F7LJL-JL7||F--JFJ|L-7L-7|FJ|||FJ||L-7FJL7LJ||||||||L7|7LJLJL7||F7FJ-LJ|L7|L7|||||L-----7LJLJFJ||L--77|J|-FJF-L7
J-|7LJJF7FJ-||FF---JLJFJ||LFJ|L7F7F7FJ||L7F7|FJF7L7J||L7|||L7||F-J|F-JLFJ|||||||J|L---7F-J|||LJF---JFJ|FJLJLJ|F7F-7FJF7F7L7LJF-7L7-F..L7F7|J
|LL-.LF-77.-LJFJF-7F7FJ.||FJFJFJ|LJ|L7LJFJ||||FJL7L7|L7|||L7LJ|L-7|L--7|FJLJ|||L7L7F7FJ|F7||L-7|F-7FJ||L-7F7FJ||L7LJL|LJL-JF7|LL7|.LF|-J|JLJ
L.-J.FJ|LF77-FJFJ-||LJF7||L7|.L7L7FJFJF7|FJ|||L7||FJ|FJLJL7|F-JF7||F-7|||F-7||L7L7LJ|L7||||L7FJ||FJ|-FJF7LJ||FJL7L---JF7F7FJ|L-7LJ7--JF|LF7J
F7J|F7J7---7FL7L7-LJF-JLJ|FLJF-JFJL7L7||LJ7LJL-JFJL7|L-7|JLJL-7||||L7||LJL7LJL7L7|F-JFJLJ||FJL7||L7L7|FJL--JLJLLL7F-7FJLJ|L7|F7L7JL-J-F--|-J
FF.FLJL-7.LJ-LL7|7F-JF7F7|F7FJF7L-7L7LJL----7F--JF7|L-7L7F7F--J||||FJ|L--7L-7FJLLJ|F7L-7FJ|L7FJLJLL7||L------77F7|L7|L--7|FJ||L-J7-L-7|L-J||
-|7-|.-7J-7-FJFLJ-L7FJLJLJ||L7||F7|FJF------JL-7FJ|L7|L7|||L--7||||L7L7F7|F-J|-F7FJ||F7|L7L7|L7F--7LJ|F7F---7L7|LJFJL---JLJFJ|JLLJ--7L|-7F--
|L7F77FJF-J.||FJF|J||F---7|L-J|LJLJL7L----7F7F-JL7L7L-7|||L---J|||L7||LJLJL-7L7|||FJ||||7|FJL-JL-7L--J||L--7L7||F7L-------7|FJJ7LJ-FJFLL-|J.
L-7FJ7F7F|77.77LJJ|LJL--7LJF7FJ-F---JF-7F7LJ||F-7|FJF-J|||F7F-7|||FJL---7F--JFJ|LJL7|||L7|L-7F7F7L-7F7|L7F7L7LJLJ|F------7|LJJLF.|F-777.L-J.
||JLJ-L7LJL7-JJ-|-LL-F7-L-7||L-7L---7L7|||F7|LJFJ|L7L-7||LJ|||||LJ|F7F7FJ|F7FJFL7F7||||FJ|F-J|LJL--J||L7||L7L---7|L-----7||JL|LF7|7.LL-7-7.F
L|7FL||L|L7||J7.L7LLFJL---J||F7L7F--JFJLJ||||F-JFJFJF7|||F7LJFJL7FJ|LJ||JLJ|L--7||LJLJ|L7|L7FJF7F7F7|L7|LJFJF7F-JL7F-7F7|LJ|-F--L7JFLJJ|||-7
.|--FL|FF7L---|..|FFJF---7FJ|||FJL-7FJF-7||LJL-7|FJFJ|||||L--JF7|L7L-7LJF--JF7FJ|L---7L7||FJ|FJ||||||FJL7-L7||L--7|L7||LJJ-L-L7JJJ.|J|F77.||
F|.LJ.F-F7J||.L77--L7|F--J|F||LJ|F-JL-JFJLJF---J|L7||LJLJ|F--7|||FJF7|F7L--7|LJ-|F7F-JFLJLJ.LJ-LJ|||||F7|F-J||F7FJ|FJ|||L|J7|7||J.77||LLL7-L
FF-77.L7LL--|-|L7-77LJL--7L7||F--JF-7F7L7F7L-7F7L7|L7F7J|LJF-J|||L7||LJL-7FJL7F-J||L--7|.|JF|J-FL||LJLJLJ|F7|||LJFJL7LJ7FJ---77JF|||7|7.|..J
|LL777.--F-7J7|J.FJL7LLF-JFJ||L--7|FJ|L7LJL7FJ||FJL7LJL7F77L-7|LJFJ||F---JL-7|L7FJL-7FJJ-L7LJ-77-LJJ|LF--J||||L-7L-7L---77|L|LJ7FLJ|7..F7F||
L-J||J.J.LJ|L77.FF--|FL|F7|.LJF--J|L7L7L7F-JL7|LJF7L7F7|||F7-||F-JFJ|L--7LF-J|FJL--7LJ|JF-77FF|F-|LF-FJF-7|||L7FJF-JF-7FJJ7.L-F7-JLL7--7---L
L|LL7FF.F|F.|||7L7JJ|FJLJ|L7F-JF-7L7L7L7LJF--JL7FJL-J||LJLJL7||L7FJFL7F7|FL-7|L7F7FJ-L7.JF|F-|J||JF7|L-J.LJ||FJ||L7FJFLJJ.FF7F7JLFJL-..LLLJL
.7J-|-F7F77FJJJ7.|JF||LFFJFJL-7|FJFJLL7L7J|F-7FJL7F-7|L7F7F-J||FJL7F-J|LJ7-FJ|FJ||L7J-L7||-7.--J7FJL-JL|7LFLJL7L-7LJ|LJJ|J7|FL--7J7J-J.||L7L
.L.7.LLF-JLF|-77-|-FLJ.FL7L-7FJ||FJ|-|L7L7||FJ|F-J|L|L7|||L7.LJL-7|L-7L7-7-|FJL7||FJ.L-L||.|---J|FL-7.FJJ-F---JF-J|FJJJ||FF77.|L|LJ.7F7-|J7J
|.FL-F-JJ.FL--JF.L7|JJF|LL7FJL7||L-7F-JL7|LJL-JL7FJFJFJLJL-J.|J|.||J.L7L-7JLJ-L||LJ||JF7|F-FJ-.FF-JFL|7JJ-L7F-7L7F-7-F-JLFJ|LL77LF7|F7LL|L7-
F-J|.||7F7LJFL7J..FJ|L7J|.LJFLLJL-7|7|L|||F-7J.||L7L7L-7.||-7J.L-LJ7-.L--J7|JJFLJJ.JJ-L-J-7L.L|7JLF|J||7.F7LJLL-J77JFJ-JLL7.7.--.LJ|LJ--7.||
7JJFF-J|-7-7|FJLJ-J.F7..FLL|7FL|J.||LF--JLJFJJ-F|FJFJF7L7--F--||FJJ||-JLJ7LJ..FLL--J|..|-LLJ7L||7LF7L|.--L-7|F|||LJF-JL7.FJL7-L7.F|F7||L|JLJ
|JF-J-LJL|.|L-L7..F--7-L7|L-7FL|LFLJFL--7F-JJ-FFJ|-L7||FJJFLJ7.7LL|FJ7F7J|7FF-J|J.|.-J-F--L7L-----|JFLF.L-L-L7|L--|LJ.7-FJJ-|7.FF|7J|F--FJ7J
|-LL7|L|FJ-JF|L|77||JJL||FL7L77|-FLJ||LLLJJLL7FL7|F-J||L7FJ7-FJJ--7|-7|F7LL7LL7L-|.-.|-|J7.LJJ|J..L.J-J7.FFF.L|..FJFL-|.LLF--J-FJJ.-LL-7|.F7
LF.|-F.-7JJF7.|J|F---7-L--J77JL--J.FLF.J-JF77F77LJL--J|FJJ|L-L|-F7L.7L-L77F7.F7|7|--7JJ.F-L-FF7JFF77.|.--FFJL-LFF77|..L7JLJ..LLL.F7.JL--7F-F
FF.J7LL-7.FL77F-|777LJ7||--JJF||FLF-F.L-|FL7-|-LJ-|L|L||JLJL7F----|-J|.LLJLJ7F|LFLJ.-J-F|.|JLJJF|LJF7-7.F||7|J|...FL-7-JJFF-77.L77F|F7||LL.|
|LL|-.L-J7JLJ-JJLL7--J----LJ.|L-L-L-L-LJLJ-L-|J.J.|.-JLJ77.LL|J-|-LF-LJ.L-|7LF--|JLJ-L---JJ.FLLLJ7-FJ.L.LLJ-|L|.LJ-LJJLL7.LJLJ-LF-7LJ-JJJ--.

15
2023/15/15.rs Normal file
View file

@ -0,0 +1,15 @@
fn hash(s: &str) -> u32 {
let mut value: u8 = 0;
for c in s.chars() {
value = value.wrapping_add(c as u8);
value = value.wrapping_mul(17);
}
value as u32
}
fn main() {
let input: &str = include_str!("input.txt");
let steps = input.split(",");
let part1: &u32 = &steps.map(hash).sum();
println!("{:?}", part1);
}

1
2023/15/input.txt Normal file

File diff suppressed because one or more lines are too long