diff --git a/python/README.md b/python/README.md new file mode 100644 index 0000000..15fe71c --- /dev/null +++ b/python/README.md @@ -0,0 +1,8 @@ +ToDo +===== + +- Day 1 Part 2 + +- Day 5 Part 2 + +- Day 7 Part 2 \ No newline at end of file diff --git a/python/day5.py b/python/day5.py new file mode 100644 index 0000000..5911e1c --- /dev/null +++ b/python/day5.py @@ -0,0 +1,161 @@ +from multiprocessing import Pool + +lines = open('inputs/day5.txt').readlines() + +def parsed_seeds(lines: list[str]) -> list[int]: + seeds = [int(x) for x in lines[0].strip("\n")[6:].split()] + return seeds + +def parsed_maps(lines: list[str]) -> dict: + maps = {} + curr = "" + for i in range(2, len(lines)): + if lines[i] == "\n": + continue + elif lines[i] == "seed-to-soil map:\n": + maps[lines[i].split()[0]] = [] + curr = lines[i].split()[0] + elif lines[i] == "soil-to-fertilizer map:\n": + maps[lines[i].split()[0]] = [] + curr = lines[i].split()[0] + elif lines[i] == "fertilizer-to-water map:\n": + maps[lines[i].split()[0]] = [] + curr = lines[i].split()[0] + elif lines[i] == "water-to-light map:\n": + maps[lines[i].split()[0]] = [] + curr = lines[i].split()[0] + elif lines[i] == "light-to-temperature map:\n": + maps[lines[i].split()[0]] = [] + curr = lines[i].split()[0] + elif lines[i] == "temperature-to-humidity map:\n": + maps[lines[i].split()[0]] = [] + curr = lines[i].split()[0] + elif lines[i] == "humidity-to-location map:\n": + maps[lines[i].split()[0]] = [] + curr = lines[i].split()[0] + else: + maps[curr].append([int(x) for x in lines[i].strip("\n").split()]) + return maps + +def traverse(seed: int) -> int: + map_names = list(maps.keys()) + for name in map_names: + map_applied = False + for l in maps[name]: + if not map_applied: + if seed in range(l[1],l[1]+l[2]): + seed = seed + l[0] - l[1] + map_applied = True + return seed + +def seeds_to_locations(seeds: list[int], maps: dict) -> list[int]: + locations = [] + with Pool(4) as p: + locations = p.map(traverse, seeds) + return locations + +def parsed_seed_ranges(lines: list[str]) -> list[tuple]: + seeds = [int(x) for x in lines[0].strip("\n")[6:].split()] + seed_ranges = [] + for i in range(0, len(seeds), 2): + seed_ranges.append((seeds[i], seeds[i] + seeds[i+1])) + return seed_ranges + +def seed_is_valid(seed: int, seed_ranges: list[tuple]) -> bool: + for seed_range in seed_ranges: + if seed >= seed_range[0] and seed < seed_range[1]: + return True + return False + +def rev_traverse(loc: int) -> int: + map_names = list(maps.keys()).reverse() + for name in map_names: + map_applied = False + for l in maps[name]: + if not map_applied: + if seed in range(l[0],l[0]+l[2]): + seed = seed - l[0] + l[1] + map_applied = True + return seed + + +maps = parsed_maps(lines) +seeds = parsed_seeds(lines) +seed_ranges = parsed_seed_ranges(lines) + +print(f"Solution Part 1: {min(seeds_to_locations(seeds, maps))}") +print(f"Solution Part 2: {min(min_loc_ranges)}") + + + """ yikes + +def parsed_seed_ranges(lines: list[str]) -> list[tuple]: + seeds = [int(x) for x in lines[0].strip("\n")[6:].split()] + seed_ranges = [] + for i in range(0, len(seeds), 2): + seed_ranges.append((seeds[i], seeds[i] + seeds[i+1])) + return seed_ranges + +def map_seed_range(seed_range: tuple, mapping: list[int]) -> tuple: + #returns transformed range for one map and remaining range(s) that were not affected + def apply_map(tup: tuple, mapping): + x = tup[0] + y = tup[1] + result = (x + l[0] - l[1], y + l[0] - l[1]) + #print(f"mapped {tup, result}") + return result + + mapped = [] + remaining = seed_range + for l in mapping: + not_mapped = [] + #print(f"l: {l}") + #print(f"source range from {l[1]} to {l[1] + l[2]}") + while len(remaining) > 0: + r = remaining.pop() + #print(f"-----r: {r}-----") + if r[0] == r[1]: + pass + #print("just delete, empty range") + else: + if r[1] <= l[1]: + #print("not mapped") + not_mapped.append(r) + elif r[0] >= l[1] + l[2]: + #print("not mapped") + not_mapped.append(r) + elif r[0] >= l[1] and r[1] <= l[1] + l[2]: + mapped.append(apply_map(r, l)) + elif r[0] < l[1] and r[1] <= l[1] + l[2]: + mapped.append(apply_map((l[1], r[1]), l)) + not_mapped.append((r[0], l[1])) + #print(f"remained: {(r[0], l[1])}") + elif r[0] >= l[1] and r[1] > l[1] + l[2]: + mapped.append(apply_map((r[0], l[1] + l[2]), l)) + not_mapped.append((l[1] + l[2], r[1])) + #print(f"remained: {(l[1] + l[2], r[1])}") + elif r[0] < l[1] and r[1] > l[1] + l[2]: + not_mapped.append(apply_map((l[1], l[1] + l[2]), l)) + remaining.append((r[0], l[1])) + #print(f"remained: {(r[0], l[1])}") + remaining.append((l[1] + l[2], r[1])) + #print(f"remained: {(l[1] + l[2], r[1])}") + #print(not_mapped) + remaining = list(set(not_mapped)) + #print(f"remaining {remaining}") + return mapped + remaining + + +def seed_range_to_loc_ranges(seed_ranges: list[tuple], maps: dict) -> list[tuple]: + # single seed range going through maps + #print(seed_ranges) + map_names = list(maps.keys()) + for name in map_names: + #print(f"apply {name}") + seed_ranges = map_seed_range(seed_ranges, maps[name]) + #print(seed_ranges) + return seed_ranges + +#loc_ranges = seed_range_to_loc_ranges(parsed_seed_ranges(lines), maps) +#min_loc_ranges = [x for x, y in loc_ranges] + """ \ No newline at end of file diff --git a/python/day6.py b/python/day6.py new file mode 100644 index 0000000..1777d1b --- /dev/null +++ b/python/day6.py @@ -0,0 +1,31 @@ +lines = open('inputs/day6.txt').readlines() + +time = [int(x) for x in lines[0].split()[1:]] +dist = [int(x) for x in lines[1].split()[1:]] + +time2 = int("".join(lines[0].split()[1:])) +dist2 = int("".join(lines[1].split()[1:])) + +def gained_dist(push_t: int, trvl_t: int) -> int: + return trvl_t * push_t + +def record_beat(record: int, t: int, push_t: int) -> bool: + trvl_t = t - push_t + return gained_dist(push_t, trvl_t) > record + +def count_wins(t: int, d: int) -> int: + counter = 0 + for i in range(1, t+1): + counter += record_beat(d, t, i) + return counter + +wins = [] +win_counter = 1 +for t, d in zip(time, dist): + wins.append(count_wins(t,d)) +for w in wins: + win_counter *= w + +print(f"Solution to Part 1: {win_counter}") + +print(f"Solution to Part 2: {count_wins(time2, dist2)}") \ No newline at end of file diff --git a/python/day7.py b/python/day7.py new file mode 100644 index 0000000..357a58e --- /dev/null +++ b/python/day7.py @@ -0,0 +1,190 @@ +lines = open('inputs/day7.txt').readlines() +strength = ['A', 'K', 'Q', 'J', 'T', '9', '8', '7', '6', '5', '4', '3', '2'][::-1] +strength2 = ['J'] + strength[:9] + strength[10:] + + +def parse_hands(lines: list[str]) -> tuple: + hands, bids = [], [] + for line in lines: + hands.append(line.split()[0]) + bids.append(line.split()[1]) + return hands, [int(x) for x in bids] + +def rel_occ(hand: str) -> list[int]: + occ = [] + for i in hand: + occ.append(hand.count(i)) + return occ + +def fiveofakind(hand: str, j: int) -> bool: + if j == 5: + return True + elif j == 4: + return True + elif j == 3: + return onepair(hand, 0) or twopair(hand, 0) + elif j == 2: + return threeofakind(hand, 0) + elif j == 1: + return fourofakind(hand, 0) + else: + if rel_occ(hand)[0] == 5: + return True + return False + +def fourofakind(hand: str, j: int) -> bool: + if j == 3: + return True + elif j == 2: + return twopair(hand, 0) + elif j == 1: + return threeofakind(hand, 0) + else: + occ = rel_occ(hand) + for i in occ: + if i == 4: + return True + return False + +def fullhouse(hand: str, j: int) -> bool: + if j == 3: + return True + elif j == 2: + occ = rel_occ(hand) + counter = 0 + for i in occ: + if i == 2: + counter += 1 + if counter == 4: + return True + elif j == 1: + return twopair(hand, 0) + else: + threes = False + twos = False + occ = rel_occ(hand) + for i in occ: + if i == 3: + threes = True + if i == 2: + twos = True + return twos and threes + +def threeofakind(hand: str, j: int) -> bool: + if j == 2: + return True + if j == 1: + return onepair(hand, 0) + else: + threes = False + ones = False + occ = rel_occ(hand) + for i in occ: + if i == 3: + threes = True + if i == 1: + ones = True + return ones and threes + +def twopair(hand: str, j: int) -> bool: + if j == 2: + return True + else: + occ = rel_occ(hand) + counter = 0 + for i in occ: + if i == 2: + counter += 1 + if counter == 4: + return True + return False + +def onepair(hand: str, j:int) -> bool: + if j == 1: + return True + else: + occ = rel_occ(hand) + counter = 0 + for i in occ: + if i == 2: + counter += 1 + if counter == 2: + return True + return False + +def value(hand: str, joker: bool) -> int: + if joker: + j = hand.count('J') + else: + j = 0 + if fiveofakind(hand, j): + return 6 + elif fourofakind(hand, j): + return 5 + elif fullhouse(hand, j): + return 4 + elif threeofakind(hand, j): + return 3 + elif twopair(hand, j): + return 2 + elif onepair(hand, j): + return 1 + else: + return 0 + +def compare_equal(hand1: str, hand2: str, part2: bool = False) -> bool: + if part2: + for i in range(len(hand1)): + if strength2.index(hand1[i]) > strength2.index(hand2[i]): + return True + if strength2.index(hand1[i]) < strength2.index(hand2[i]): + return False + else: + for i in range(len(hand1)): + if strength.index(hand1[i]) > strength.index(hand2[i]): + return True + if strength.index(hand1[i]) < strength.index(hand2[i]): + return False + +def stronger(hand1: str, hand2: str, part2: bool = False) -> bool: + if value(hand1, part2) > value(hand2, part2): + return True + elif value(hand1, part2) < value(hand2, part2): + return False + else: + return compare_equal(hand1, hand2, part2) + +hands, bids = parse_hands(lines) + +ranks1 = [] +ranks2 = [] +for j in range(len(hands)): + count1 = 0 + count2 = 0 + for i in range(len(hands)): + if hands[j] == hands[i]: + count1 += 1 + count2 += 1 + else: + if stronger(hands[j], hands[i]): + count1 += 1 + if stronger(hands[j], hands[i], part2 = True): + count2 += 1 + ranks1.append(count1) + ranks2.append(count2) + +earnings1 = [] +earnings2 = [] +for bid, rank in zip(bids, ranks1): + earnings1.append(bid * rank) +for bid2, rank2 in zip(bids, ranks2): + earnings2.append(bid2 * rank2) + + +#print(f"Solution Part 1: {sum(earnings1)}") + +#print(f"Solution Part 2: {sum(earnings2)}") + +for hand in hands: + if hand.count('J') == 2: + print(hand, value(hand, True)) \ No newline at end of file diff --git a/python/day8.py b/python/day8.py new file mode 100644 index 0000000..a43a8fd --- /dev/null +++ b/python/day8.py @@ -0,0 +1,90 @@ +lines = open('inputs/day8.txt').readlines() + +class Node(): + def __init__(self, name, l, r): + self.name = name + self.l = l + self.r = r + +def parse_nodes(lines: str) -> dict: + nodes = {} + for i in range(2, len(lines)): + line = lines[i].split('=') + name = line[0].strip() + ns = line[1].strip().strip('\n').strip('(').strip(')').split(',') + l = ns[0].strip() + r = ns[1].strip() + nodes[name] = Node(name, l, r) + return nodes + +def all_zs_reached(nodes: list[str]) -> bool: + for node in nodes: + if node[2] != "Z": + return False + return True + +def traverse_nodes(nodes: list[str], start: str = "AAA", ghost: bool = False) -> int: + instructions = lines[0].strip("\n") + found = False + counter = 0 + curr = nodes[start] + while not found: + for instr in instructions: + if ghost: + if curr.name[2] == "Z": + found = True + break + if curr.name == "ZZZ": + found = True + break + if instr == 'L': + curr = nodes[curr.l] + else: + curr = nodes[curr.r] + counter += 1 + return counter + +nodes = parse_nodes(lines) +print(f"Solution Part 1: {traverse_nodes(nodes)}") + +def traverse_nodes_ghost(nodes: list[str]) -> int: + instructions = lines[0].strip("\n") + found = False + counter = 0 + currs = [node for node in nodes if node[2] == "A"] + while not found: + for instr in instructions: + if all_zs_reached(currs): + found = True + break + if instr == 'L': + currs = [nodes[c].l for c in currs] + else: + currs = [nodes[c].r for c in currs] + counter += 1 + return counter + +def traverse_all_XXA(nodes: list[str]) -> list[int]: + currs = [node for node in nodes if node[2] == "A"] + steps = [] + for curr in currs: + steps.append(traverse_nodes(nodes, curr, True)) + return steps + +# lcm of multiple numbers stolen from https://stackoverflow.com/questions/147515/least-common-multiple-for-3-or-more-numbers +def gcd(a, b): + """Return greatest common divisor using Euclid's Algorithm.""" + while b: + a, b = b, a % b + return a + +def lcm(a, b): + """Return lowest common multiple.""" + return a * b // gcd(a, b) + +steps = traverse_all_XXA(nodes) +x = steps[0] +for i in range(1, len(steps)): + x = lcm(x, steps[i]) + +print(f"Solution Part 2: {x}") \ No newline at end of file diff --git a/python/inputs/day4.txt b/python/inputs/day4.txt new file mode 100644 index 0000000..af195d5 --- /dev/null +++ b/python/inputs/day4.txt @@ -0,0 +1,219 @@ +Card 1: 98 16 95 90 53 33 43 7 46 45 | 85 15 78 57 34 10 46 90 33 13 8 54 4 37 25 63 55 41 7 82 69 16 30 76 2 +Card 2: 55 34 32 64 52 76 54 8 36 94 | 94 95 76 66 38 26 80 54 32 91 19 64 21 55 36 96 52 82 15 56 70 89 46 71 74 +Card 3: 35 26 78 89 82 92 37 10 3 43 | 41 81 62 52 92 63 26 57 28 55 93 30 72 71 99 84 96 60 82 78 73 65 43 50 25 +Card 4: 71 27 75 73 79 83 44 55 31 49 | 74 79 17 38 28 41 88 25 61 55 12 40 43 44 6 73 71 83 49 75 67 80 27 10 31 +Card 5: 26 10 58 57 85 65 42 23 97 30 | 65 26 85 97 31 10 23 88 58 16 80 22 67 44 7 77 30 69 34 42 24 57 66 27 99 +Card 6: 56 24 39 96 36 46 48 94 30 58 | 16 24 99 48 73 30 91 7 87 57 23 49 69 39 94 63 17 58 56 9 34 36 31 46 96 +Card 7: 82 75 29 17 66 41 25 52 98 5 | 30 41 73 66 25 57 47 22 89 34 75 21 5 63 90 85 13 38 82 17 29 71 98 52 1 +Card 8: 45 56 10 72 89 61 64 32 82 7 | 64 32 45 67 84 28 2 56 10 82 55 72 6 61 97 91 89 7 22 70 88 3 41 98 13 +Card 9: 92 39 44 48 96 72 43 78 98 86 | 76 87 9 45 98 47 31 44 34 92 43 54 72 39 50 96 77 86 62 13 16 6 78 48 8 +Card 10: 66 44 15 56 88 27 54 51 5 92 | 44 92 18 56 22 85 40 76 90 83 5 13 35 59 27 65 62 15 95 94 81 39 88 54 6 +Card 11: 13 42 7 36 46 82 78 60 1 55 | 42 7 95 43 13 82 94 32 74 16 46 70 60 78 86 30 53 36 55 96 4 92 49 44 26 +Card 12: 65 39 28 30 99 73 95 92 55 58 | 23 86 39 28 88 48 41 73 89 95 34 92 5 21 72 10 97 30 20 32 40 85 27 68 65 +Card 13: 68 60 92 16 70 71 15 94 43 83 | 70 59 88 67 27 77 51 54 15 22 49 71 94 60 7 72 47 1 38 39 36 19 68 12 16 +Card 14: 73 83 6 7 67 48 24 13 17 70 | 72 77 78 96 50 83 12 92 80 60 10 87 38 23 31 30 58 47 1 43 59 34 75 8 5 +Card 15: 69 53 76 5 55 85 42 10 94 63 | 59 66 87 60 28 6 24 32 40 70 69 63 54 97 96 82 94 10 53 74 42 16 76 44 55 +Card 16: 84 77 93 78 46 70 5 12 98 83 | 89 4 27 30 98 91 93 52 67 39 88 56 92 79 25 1 83 60 11 68 53 69 84 73 85 +Card 17: 26 37 9 58 78 49 52 31 97 34 | 39 99 37 81 49 72 84 94 76 70 33 41 12 89 85 47 51 65 97 16 3 24 19 79 8 +Card 18: 49 74 17 93 46 15 85 59 24 36 | 46 25 20 94 47 90 61 84 63 4 41 79 18 74 54 80 43 29 97 86 77 52 5 99 8 +Card 19: 85 64 79 31 53 92 42 69 93 3 | 47 62 61 21 3 49 7 74 98 22 86 34 48 15 76 13 89 81 31 77 37 56 99 97 50 +Card 20: 73 64 45 77 19 33 82 14 84 29 | 17 90 95 78 54 35 49 55 62 60 30 56 59 81 68 88 69 87 77 7 83 65 92 6 1 +Card 21: 91 38 35 34 53 92 66 82 55 21 | 23 39 87 34 27 31 15 5 36 64 80 97 52 89 94 50 26 37 45 44 17 30 88 1 82 +Card 22: 64 85 88 91 87 84 43 35 39 41 | 73 3 89 63 75 99 24 5 9 70 26 2 21 30 86 96 40 81 78 60 61 32 74 51 17 +Card 23: 84 72 32 92 44 94 46 7 19 4 | 73 39 45 18 76 65 25 40 32 66 78 51 15 50 69 9 11 6 26 90 61 35 22 54 55 +Card 24: 57 78 95 5 97 47 42 10 73 35 | 77 67 28 93 52 55 54 51 92 66 49 56 27 17 37 7 89 74 14 62 87 88 82 53 2 +Card 25: 21 69 58 54 90 1 95 45 72 53 | 72 81 77 1 69 9 58 21 29 22 95 45 68 80 90 54 78 97 48 53 59 36 31 46 75 +Card 26: 12 46 92 10 21 97 35 27 68 74 | 47 74 27 72 90 25 49 30 7 26 97 60 61 3 31 51 68 92 41 10 4 9 35 88 63 +Card 27: 21 27 52 20 85 42 5 70 56 37 | 55 57 2 5 79 11 58 77 49 45 74 69 27 70 21 56 66 12 76 20 92 84 37 85 61 +Card 28: 95 39 51 30 19 90 75 3 25 21 | 20 97 83 95 25 84 30 22 78 33 51 46 74 79 19 89 63 61 39 90 21 3 2 52 31 +Card 29: 53 5 71 37 67 81 19 52 36 74 | 52 93 15 5 33 36 28 8 12 32 31 43 2 13 74 62 59 10 20 70 68 14 87 19 38 +Card 30: 9 67 73 21 20 64 11 84 97 31 | 13 57 40 58 21 84 80 30 67 52 85 74 56 55 50 97 72 10 51 89 6 70 64 96 11 +Card 31: 64 54 68 67 50 6 88 29 63 38 | 38 67 3 31 61 83 28 44 1 99 66 65 74 98 64 55 51 8 54 94 46 68 95 79 50 +Card 32: 86 43 79 54 5 7 78 38 10 23 | 39 92 54 6 38 23 5 8 57 91 41 7 70 10 45 82 9 35 62 87 56 69 4 78 36 +Card 33: 66 58 52 9 27 81 1 17 94 78 | 34 3 95 56 69 78 91 45 32 30 59 84 64 52 36 62 26 16 63 99 27 89 74 28 24 +Card 34: 73 58 80 18 17 67 70 41 29 75 | 81 27 76 63 20 31 72 46 33 53 45 38 39 29 57 92 78 28 70 61 19 55 36 32 24 +Card 35: 79 31 6 76 62 27 97 40 92 41 | 26 97 5 47 76 40 21 87 3 4 38 61 53 48 43 36 41 65 55 25 57 96 79 18 49 +Card 36: 34 43 78 88 72 74 97 3 10 38 | 55 62 96 44 79 33 68 52 75 22 98 26 71 82 36 56 86 15 64 41 46 24 83 11 67 +Card 37: 26 61 31 17 4 56 12 50 86 51 | 17 68 22 61 85 78 9 51 14 6 39 31 28 27 96 50 52 4 86 43 12 26 59 74 7 +Card 38: 7 99 77 74 6 43 85 33 53 19 | 94 45 19 36 6 55 66 82 16 47 65 42 78 12 76 77 48 79 8 75 93 62 56 50 33 +Card 39: 57 97 81 84 25 60 16 44 1 78 | 4 78 9 51 90 40 34 64 89 38 80 16 71 35 88 87 41 6 65 23 39 15 67 52 72 +Card 40: 81 44 16 11 53 72 46 91 86 20 | 17 47 80 40 1 69 93 55 54 12 26 82 64 45 61 58 70 83 28 98 94 89 92 59 23 +Card 41: 55 89 25 91 42 45 80 59 84 82 | 83 31 11 42 61 48 77 95 89 84 13 79 92 25 68 33 26 40 52 24 66 45 97 29 17 +Card 42: 2 96 32 73 8 34 66 9 6 41 | 55 90 96 29 45 14 9 6 75 30 60 47 51 37 81 3 72 58 73 87 70 18 23 69 80 +Card 43: 65 3 18 82 67 22 62 79 17 94 | 51 11 26 23 89 55 13 32 77 9 12 38 60 20 25 64 14 43 24 35 56 80 42 99 86 +Card 44: 30 47 49 35 19 82 26 85 27 95 | 43 97 86 69 42 94 78 11 27 31 17 39 79 46 90 18 57 48 4 22 32 87 38 29 84 +Card 45: 83 15 74 94 99 1 57 82 68 16 | 95 97 84 6 87 81 20 64 69 5 28 30 29 88 43 15 98 7 24 55 34 39 47 92 3 +Card 46: 73 22 25 83 84 55 53 34 51 2 | 27 90 24 61 29 43 50 17 18 68 15 80 8 81 87 16 10 85 54 31 56 91 46 52 95 +Card 47: 70 19 17 60 46 78 75 86 27 59 | 86 99 19 45 8 17 29 41 52 75 60 47 79 54 57 70 46 59 51 68 94 78 27 53 1 +Card 48: 45 6 22 51 11 30 31 1 83 77 | 2 73 85 49 61 86 77 90 59 97 47 89 10 22 45 41 31 6 83 11 1 65 58 82 60 +Card 49: 60 78 33 6 11 36 72 56 61 94 | 43 16 62 46 31 61 78 56 60 67 33 6 13 72 94 68 18 77 11 5 36 54 10 8 66 +Card 50: 88 21 74 31 20 46 75 10 89 77 | 23 88 43 10 74 64 5 77 55 76 28 78 21 31 27 89 1 72 20 96 75 82 46 47 35 +Card 51: 12 8 3 94 21 26 24 86 45 85 | 6 14 12 10 7 69 78 31 64 5 44 3 80 4 52 71 20 84 50 59 13 8 94 77 99 +Card 52: 14 84 36 27 8 46 99 30 7 44 | 30 16 89 87 60 9 14 78 99 8 65 58 38 88 7 46 67 29 69 37 40 44 97 36 51 +Card 53: 39 37 12 83 4 98 96 92 41 73 | 67 20 91 99 4 10 63 26 6 75 40 92 37 65 39 73 68 84 12 83 96 98 54 41 7 +Card 54: 1 27 72 18 88 99 64 19 86 37 | 88 19 37 64 5 22 80 99 1 27 65 8 9 53 14 16 79 95 71 72 32 21 86 39 98 +Card 55: 39 88 93 55 97 9 34 92 45 2 | 92 55 21 1 78 34 97 94 11 38 2 44 64 15 80 35 60 9 81 54 88 91 96 85 45 +Card 56: 79 74 85 84 65 87 27 44 16 90 | 98 79 48 77 52 82 58 18 57 72 16 84 3 85 90 74 64 87 44 14 27 71 75 4 21 +Card 57: 96 53 75 92 9 43 56 52 91 97 | 7 76 56 3 92 75 16 43 96 72 29 49 66 91 28 70 87 33 58 1 52 19 9 97 53 +Card 58: 44 25 31 71 95 73 10 54 53 17 | 37 99 57 16 80 73 24 47 17 83 68 31 13 52 93 71 76 95 12 81 14 21 49 7 34 +Card 59: 29 45 26 80 95 57 20 13 14 63 | 83 51 36 19 5 58 44 3 97 1 16 67 15 41 53 31 28 91 84 40 90 24 88 60 18 +Card 60: 50 63 56 53 14 35 18 1 91 19 | 25 96 66 45 36 58 90 91 1 32 35 14 3 47 33 22 86 40 95 24 23 4 27 68 48 +Card 61: 42 83 31 68 92 7 26 4 29 22 | 7 17 31 43 79 2 33 4 63 88 26 61 81 93 69 85 89 11 65 77 42 92 37 57 32 +Card 62: 64 85 65 55 43 53 10 69 33 97 | 78 61 31 76 18 30 39 12 90 42 8 58 27 67 89 46 26 69 82 11 16 62 1 44 10 +Card 63: 6 33 83 73 17 30 32 81 49 5 | 52 90 76 93 5 86 73 34 92 47 67 55 43 61 26 18 1 33 16 50 49 74 24 46 89 +Card 64: 87 91 82 58 84 50 48 3 27 55 | 60 96 72 26 81 1 6 52 78 99 4 23 40 30 36 47 48 69 25 34 83 87 37 70 20 +Card 65: 92 76 38 30 50 39 75 90 44 1 | 68 71 39 13 53 25 63 76 16 59 41 43 18 22 17 98 4 10 86 89 12 26 72 95 19 +Card 66: 76 41 77 37 23 94 96 27 66 22 | 59 24 20 92 4 37 91 33 16 53 3 90 5 69 50 27 99 62 98 61 35 28 86 95 82 +Card 67: 37 98 85 97 69 64 72 47 13 50 | 43 10 6 41 67 80 82 29 40 94 61 33 36 63 65 76 24 9 86 57 79 73 8 45 2 +Card 68: 55 35 94 69 38 26 63 33 98 76 | 7 41 71 84 21 25 12 20 98 46 82 72 38 8 56 89 39 27 75 43 96 44 29 78 35 +Card 69: 24 86 74 36 66 84 90 61 1 94 | 55 57 18 85 69 97 16 34 32 54 93 35 64 9 8 4 98 5 72 59 75 23 62 91 26 +Card 70: 56 52 41 51 88 93 17 44 32 7 | 46 57 16 69 10 50 26 5 36 92 24 55 63 98 11 3 75 31 33 99 74 1 89 60 61 +Card 71: 15 41 67 78 51 72 12 77 32 88 | 83 93 91 13 50 87 47 96 16 19 11 34 6 27 82 5 46 56 69 79 62 85 35 40 61 +Card 72: 2 58 18 85 23 66 40 9 50 79 | 41 2 50 8 10 75 7 61 62 87 11 99 33 30 56 25 98 54 59 82 94 74 35 60 15 +Card 73: 75 90 45 31 56 86 11 42 89 26 | 89 90 28 11 57 49 24 35 14 19 72 94 79 44 30 3 43 41 53 46 26 86 97 51 20 +Card 74: 27 24 43 10 84 39 96 22 25 78 | 39 33 42 11 63 50 91 43 35 4 80 84 32 26 70 48 18 6 29 23 78 24 89 45 8 +Card 75: 79 38 25 51 77 84 68 43 83 10 | 75 74 13 3 24 6 55 81 11 39 49 66 99 50 48 15 14 37 61 57 17 59 87 36 9 +Card 76: 24 9 81 35 34 1 59 80 56 58 | 9 56 36 60 1 58 80 59 72 34 12 24 35 81 17 68 77 62 67 97 69 78 41 90 93 +Card 77: 84 55 45 44 36 80 97 5 64 70 | 57 22 49 54 43 71 53 90 12 35 6 64 79 84 99 7 94 17 38 70 45 72 68 80 74 +Card 78: 24 49 27 96 77 18 82 33 50 19 | 60 6 67 19 9 82 98 11 15 50 49 62 14 18 22 33 27 77 96 3 2 4 24 57 37 +Card 79: 83 54 1 2 26 55 33 37 76 20 | 30 55 1 51 50 7 26 34 76 62 89 92 17 38 33 20 13 95 2 65 45 54 37 6 25 +Card 80: 72 60 47 97 98 37 24 71 92 38 | 76 60 68 93 24 82 22 45 19 97 53 61 98 88 49 77 70 92 8 40 15 38 52 75 74 +Card 81: 78 90 38 77 11 47 1 80 64 30 | 90 2 67 95 70 75 83 19 11 18 86 38 30 93 62 1 77 7 65 41 84 64 78 47 4 +Card 82: 65 17 18 85 47 25 89 84 28 1 | 92 40 96 66 5 25 61 48 73 71 13 35 70 18 19 84 43 12 87 57 37 1 30 65 51 +Card 83: 99 71 23 76 61 19 58 57 78 15 | 96 19 98 71 34 38 95 93 48 79 53 42 15 61 56 29 23 99 39 60 78 40 49 12 57 +Card 84: 65 13 8 63 12 61 45 34 38 75 | 13 89 79 18 83 24 56 34 8 23 15 19 71 12 26 45 86 72 76 25 17 42 46 35 88 +Card 85: 29 85 81 70 92 51 67 83 48 13 | 28 53 4 11 55 61 27 9 36 82 47 98 65 43 33 74 88 64 2 3 37 22 62 6 84 +Card 86: 92 75 84 17 33 18 46 81 77 2 | 36 53 13 25 6 28 54 42 70 34 61 31 86 68 67 4 48 73 41 62 60 57 38 65 1 +Card 87: 29 68 34 54 22 33 6 28 1 47 | 4 79 62 77 82 78 75 70 93 58 38 56 97 13 80 2 45 76 31 90 15 37 81 63 95 +Card 88: 49 30 56 59 7 20 38 28 90 68 | 61 39 32 22 51 81 41 60 14 77 7 19 89 47 43 38 23 65 36 35 80 4 78 62 26 +Card 89: 17 70 26 62 84 57 67 31 15 87 | 59 74 32 72 7 97 23 5 99 77 50 22 17 76 73 30 10 20 44 70 55 38 75 29 24 +Card 90: 33 56 47 17 6 51 71 42 1 83 | 82 6 52 50 45 49 66 16 60 97 85 62 90 64 58 7 41 43 83 25 3 48 69 80 32 +Card 91: 69 37 35 55 42 57 78 80 60 43 | 16 91 92 10 32 68 84 64 60 79 2 9 21 58 77 93 53 11 52 83 50 4 86 89 22 +Card 92: 94 76 95 35 25 21 36 75 99 55 | 58 54 41 85 27 42 69 30 89 53 68 52 33 56 3 39 26 73 97 47 10 38 17 64 62 +Card 93: 30 38 15 75 10 78 45 57 51 96 | 51 57 46 78 6 55 96 35 38 15 45 63 28 41 26 10 18 64 24 93 75 62 32 92 30 +Card 94: 2 3 80 42 55 29 95 49 67 96 | 3 66 49 92 13 51 42 67 28 37 95 99 71 5 17 29 30 2 98 32 12 96 8 55 80 +Card 95: 54 8 7 36 81 32 62 66 92 6 | 77 92 8 54 53 34 88 62 84 48 6 35 68 32 66 23 95 81 7 18 17 36 3 60 75 +Card 96: 10 94 86 82 85 62 89 45 15 8 | 5 94 30 69 82 12 10 42 92 39 52 46 85 89 84 55 78 62 8 24 45 77 15 58 59 +Card 97: 21 92 18 5 25 95 55 67 52 78 | 11 68 32 41 67 66 80 82 72 15 49 25 97 12 18 38 37 76 92 34 74 53 55 36 78 +Card 98: 87 23 17 15 72 86 91 70 19 21 | 64 17 13 45 87 10 86 59 73 19 27 94 91 70 23 50 39 46 51 48 21 72 54 15 90 +Card 99: 10 14 71 83 92 54 52 64 27 15 | 58 89 63 24 57 55 1 95 53 43 84 54 65 61 26 87 96 71 3 9 82 77 91 62 92 +Card 100: 14 88 31 96 27 22 75 21 33 94 | 66 87 76 81 51 57 36 64 96 90 5 39 37 97 8 65 77 35 85 49 84 94 14 86 52 +Card 101: 32 70 58 16 57 5 34 79 12 74 | 37 29 87 68 84 16 54 27 24 65 48 62 60 85 86 55 19 61 35 9 17 69 32 99 75 +Card 102: 49 94 51 52 5 98 86 59 67 29 | 34 48 59 87 92 28 81 44 58 47 97 11 75 99 69 85 66 60 80 76 64 56 72 23 90 +Card 103: 22 96 38 63 73 62 57 18 93 19 | 97 87 5 68 47 88 78 70 77 62 17 94 81 19 28 36 79 72 64 53 29 3 20 89 60 +Card 104: 14 18 46 49 60 90 9 22 17 44 | 26 94 56 99 21 55 47 86 27 51 28 96 64 70 87 45 62 81 63 30 35 20 50 48 76 +Card 105: 40 5 36 22 90 29 58 54 53 64 | 64 47 95 43 16 60 22 1 9 71 94 27 18 59 32 20 52 92 12 90 55 83 19 61 89 +Card 106: 59 48 97 50 67 99 89 39 90 95 | 3 40 56 68 6 16 41 38 62 54 97 10 14 44 30 86 37 84 48 65 52 36 53 63 5 +Card 107: 55 34 89 15 93 2 31 43 87 17 | 88 70 83 32 98 53 86 68 50 37 27 56 51 10 45 36 20 94 59 80 66 44 73 99 8 +Card 108: 53 26 99 90 39 25 66 80 82 37 | 34 46 28 60 89 96 15 84 7 88 95 31 22 94 61 78 93 62 81 87 44 5 20 72 2 +Card 109: 50 31 91 6 92 72 90 18 71 37 | 18 86 37 50 68 71 35 95 16 85 93 55 96 80 52 6 77 4 92 20 91 56 90 31 72 +Card 110: 66 18 11 94 16 58 54 63 47 82 | 81 42 24 47 16 54 59 38 67 66 35 49 96 10 64 63 11 94 58 78 65 82 44 74 18 +Card 111: 98 21 14 86 68 94 60 31 24 38 | 84 98 22 11 71 9 83 14 89 94 85 42 63 30 16 86 2 23 3 31 61 18 68 54 4 +Card 112: 71 62 11 73 54 74 12 82 69 31 | 78 1 5 72 92 74 18 11 71 10 93 83 81 21 31 62 61 82 54 8 68 73 69 9 12 +Card 113: 42 62 85 51 61 40 76 8 78 12 | 85 78 2 42 71 28 25 75 69 40 88 24 98 84 92 51 10 21 27 12 62 8 56 41 76 +Card 114: 55 11 43 33 97 83 30 37 52 6 | 94 71 81 20 4 43 97 30 33 56 69 99 13 8 32 37 96 58 55 26 29 31 83 80 67 +Card 115: 4 40 9 71 18 59 19 84 91 72 | 62 43 73 87 42 61 7 99 45 70 97 18 6 77 8 93 81 55 41 38 12 64 1 82 51 +Card 116: 60 21 16 17 29 83 46 20 64 18 | 83 21 18 41 43 73 53 29 35 17 4 46 1 57 81 20 70 97 5 16 64 30 84 38 60 +Card 117: 51 54 92 49 29 82 43 58 19 50 | 7 50 71 4 82 22 23 56 31 27 58 26 19 29 49 11 69 52 92 54 24 43 51 93 73 +Card 118: 91 4 57 51 13 18 8 34 24 3 | 18 4 65 97 17 47 99 41 57 91 94 8 34 40 48 68 37 3 2 13 53 60 44 24 90 +Card 119: 81 80 42 19 62 23 86 5 20 45 | 96 27 94 86 39 67 20 93 81 66 14 23 45 98 84 37 85 19 62 80 5 61 82 12 59 +Card 120: 17 47 14 32 51 92 87 37 68 93 | 97 54 31 39 69 99 41 2 26 75 86 13 25 55 81 44 77 4 72 74 80 95 40 76 63 +Card 121: 75 68 67 87 7 16 71 12 8 19 | 8 42 99 66 70 64 5 73 67 15 40 72 34 28 18 61 30 83 49 17 87 93 25 24 43 +Card 122: 72 8 67 23 21 77 66 28 19 82 | 47 59 90 55 75 36 52 17 70 28 91 15 11 66 80 82 34 25 44 83 53 67 63 23 87 +Card 123: 48 80 92 9 12 61 29 32 41 55 | 53 28 21 64 24 56 89 9 80 29 85 67 46 15 52 90 11 62 74 69 47 32 75 60 31 +Card 124: 83 79 14 51 85 13 91 98 66 2 | 53 48 34 70 46 44 18 54 50 67 73 8 61 81 40 29 17 65 86 30 76 59 47 16 74 +Card 125: 1 11 69 75 62 45 35 53 34 23 | 97 12 16 45 31 21 87 95 22 7 25 62 64 6 11 10 29 91 9 24 53 74 75 40 41 +Card 126: 85 31 48 37 11 26 44 69 61 82 | 46 34 11 87 68 86 39 73 90 23 98 32 71 28 22 29 20 49 77 63 70 76 6 52 3 +Card 127: 11 15 54 44 46 82 78 74 26 23 | 29 11 18 99 20 17 67 55 83 65 22 27 10 3 62 89 69 1 45 91 84 61 90 92 44 +Card 128: 80 55 19 83 49 18 72 37 68 21 | 64 53 67 47 65 41 34 15 89 10 32 51 91 61 58 69 23 56 87 57 79 84 78 5 4 +Card 129: 30 46 40 21 99 2 51 95 74 97 | 62 67 68 44 86 93 47 5 39 12 49 88 9 36 89 3 38 65 79 42 20 45 14 70 91 +Card 130: 54 65 73 3 21 93 68 43 10 20 | 51 66 6 4 76 27 48 87 86 81 47 92 82 28 91 18 62 8 96 59 88 37 25 46 49 +Card 131: 71 43 15 32 16 50 28 80 1 81 | 76 64 21 55 12 6 96 20 77 22 26 32 54 8 62 68 17 86 56 53 10 81 33 41 24 +Card 132: 55 64 61 49 79 90 8 34 85 97 | 50 6 40 30 91 48 41 57 22 8 62 70 84 38 98 76 83 94 82 68 2 42 32 47 14 +Card 133: 48 60 44 27 13 41 99 35 78 74 | 88 25 8 19 69 34 79 83 46 72 52 6 16 97 62 15 70 4 56 30 3 7 36 23 73 +Card 134: 40 72 54 4 18 20 3 39 46 91 | 3 18 91 69 66 29 60 33 39 96 84 9 20 24 41 16 53 46 49 72 95 81 4 40 54 +Card 135: 82 66 29 16 86 89 15 23 95 11 | 14 43 57 68 80 11 89 92 59 67 86 39 8 18 16 23 83 64 82 66 95 29 15 37 6 +Card 136: 30 36 52 77 67 75 76 1 11 79 | 36 85 67 16 76 52 69 47 14 22 20 26 11 30 18 13 75 87 79 93 39 89 1 99 77 +Card 137: 54 79 25 62 93 65 7 68 90 11 | 94 73 86 78 64 71 25 82 20 30 97 28 9 65 90 35 70 87 32 31 49 51 74 26 72 +Card 138: 6 76 2 87 89 20 95 23 42 21 | 95 32 59 60 46 84 79 81 80 17 86 18 36 98 52 3 83 68 88 38 67 72 51 22 26 +Card 139: 61 81 70 50 3 47 88 54 60 90 | 26 63 75 70 81 13 90 8 60 46 56 61 14 68 88 82 47 36 50 18 73 54 98 3 76 +Card 140: 58 71 64 80 27 99 29 94 30 40 | 58 53 31 76 65 23 29 54 45 22 94 30 99 70 27 80 5 81 3 71 37 7 14 64 40 +Card 141: 12 73 17 11 89 3 80 72 92 63 | 23 78 2 80 35 96 41 72 30 39 48 10 51 87 12 34 92 73 6 45 89 76 27 11 60 +Card 142: 82 22 6 68 97 86 15 56 84 7 | 52 40 91 39 92 32 84 26 78 24 37 38 74 90 86 50 64 77 3 95 94 2 87 75 34 +Card 143: 28 59 68 11 93 48 63 96 39 54 | 98 15 56 11 45 78 54 93 44 66 33 59 90 74 63 97 39 30 96 5 48 26 76 42 28 +Card 144: 92 18 45 37 69 99 26 43 81 91 | 26 91 64 55 18 57 11 95 9 37 45 38 92 31 3 34 69 87 24 97 98 99 81 14 10 +Card 145: 11 69 35 21 10 49 84 75 50 68 | 16 67 48 15 43 54 95 11 91 27 39 9 34 88 86 20 4 89 47 75 62 61 64 85 8 +Card 146: 27 44 15 92 93 56 76 72 34 81 | 86 43 66 95 33 76 27 60 32 25 37 29 1 53 72 61 85 36 93 62 97 58 96 56 47 +Card 147: 54 67 15 21 28 99 33 63 96 82 | 76 54 91 95 8 73 30 28 65 82 67 98 43 81 39 33 44 53 49 16 21 88 12 45 15 +Card 148: 80 74 55 33 70 92 63 21 79 23 | 86 84 40 53 20 49 97 5 66 95 93 96 46 18 24 28 51 9 52 67 89 14 30 8 11 +Card 149: 65 14 55 81 1 73 41 44 47 87 | 71 87 90 34 25 36 82 59 88 85 4 27 63 98 30 13 17 44 93 14 32 55 68 41 29 +Card 150: 51 34 46 92 85 57 59 62 42 40 | 22 93 39 44 83 37 4 48 33 7 41 95 70 26 30 56 78 65 6 67 81 14 58 87 27 +Card 151: 89 79 66 24 39 35 9 32 76 30 | 69 80 83 86 22 4 15 92 87 11 64 40 94 77 82 29 57 36 54 95 43 78 65 74 84 +Card 152: 63 26 47 96 13 14 8 7 32 51 | 40 65 90 80 33 9 99 67 42 1 29 83 2 93 23 45 53 94 79 39 18 35 72 91 3 +Card 153: 76 45 64 13 85 42 5 47 2 40 | 34 46 19 21 35 77 71 56 94 27 37 8 60 90 96 63 57 55 32 95 68 10 73 4 51 +Card 154: 96 31 79 16 50 15 92 67 91 47 | 27 44 86 41 18 63 28 21 38 12 68 48 39 66 58 99 52 53 80 64 24 7 93 95 55 +Card 155: 84 46 62 78 15 29 87 73 27 67 | 50 25 75 90 66 34 72 31 33 24 8 41 29 69 20 54 32 85 65 68 21 94 64 9 42 +Card 156: 57 55 36 90 19 73 42 5 17 21 | 60 26 47 37 51 86 9 65 69 92 88 44 53 42 54 15 63 17 91 72 83 89 8 4 81 +Card 157: 32 39 2 75 90 5 85 50 22 80 | 19 29 5 85 20 90 87 61 75 78 47 95 34 63 57 2 33 82 24 56 80 49 70 72 21 +Card 158: 36 76 91 66 19 88 59 24 11 87 | 48 72 97 45 75 29 70 9 31 96 3 16 36 24 90 67 76 82 42 18 80 81 40 5 46 +Card 159: 97 33 68 61 50 87 77 92 36 38 | 6 58 78 65 36 42 80 98 12 47 7 54 67 60 5 9 1 17 90 32 62 39 11 64 26 +Card 160: 83 97 81 82 90 68 54 57 24 96 | 26 90 51 86 47 93 43 32 14 46 54 50 79 37 28 3 21 24 96 33 83 31 82 29 72 +Card 161: 40 64 36 35 17 82 15 52 20 79 | 36 32 57 52 60 46 17 16 20 79 75 35 58 65 44 63 47 49 82 48 76 64 40 15 4 +Card 162: 82 68 31 74 28 39 94 34 61 80 | 74 25 38 3 66 32 1 19 28 39 31 94 67 78 99 7 68 80 18 42 61 72 82 49 34 +Card 163: 73 89 42 20 85 80 45 71 75 32 | 14 39 54 81 69 47 79 46 20 2 43 88 92 31 45 32 80 55 30 85 27 40 63 73 75 +Card 164: 75 44 66 52 15 32 53 99 19 48 | 27 26 44 55 48 96 32 29 2 53 52 15 51 83 79 22 41 66 50 28 91 99 61 75 19 +Card 165: 63 15 31 95 9 83 77 42 80 68 | 31 13 48 93 78 69 82 44 57 28 11 84 86 20 40 76 99 30 47 1 88 6 49 51 21 +Card 166: 93 15 3 43 88 77 24 36 70 74 | 58 36 21 77 15 37 28 22 46 41 88 7 23 47 9 63 3 93 91 70 74 43 26 24 76 +Card 167: 59 10 26 33 69 4 47 21 78 54 | 78 21 85 44 52 5 80 64 42 30 11 59 22 10 33 69 47 23 86 50 20 4 54 26 96 +Card 168: 93 33 56 73 7 32 66 75 35 18 | 54 83 8 29 81 19 51 77 36 26 86 56 76 90 85 46 18 96 79 3 13 57 40 53 59 +Card 169: 4 25 15 63 18 35 64 88 43 29 | 15 1 7 21 84 67 36 33 37 17 65 25 30 18 51 83 63 99 98 66 92 73 39 52 22 +Card 170: 70 44 78 92 43 99 58 36 45 52 | 21 53 74 78 83 95 20 27 69 8 18 15 7 51 2 13 46 57 9 50 17 33 48 6 10 +Card 171: 14 18 42 99 88 89 76 5 60 67 | 11 43 99 89 85 84 53 41 23 60 13 59 18 9 95 88 8 2 25 77 76 54 28 79 14 +Card 172: 14 36 61 7 96 68 48 3 25 26 | 90 21 7 78 3 44 33 34 62 61 31 10 8 37 12 94 11 20 60 91 41 28 9 80 48 +Card 173: 23 13 66 64 57 61 62 12 85 55 | 78 58 36 84 66 19 95 60 31 98 50 75 83 64 96 16 14 47 72 74 86 61 6 65 63 +Card 174: 87 17 65 38 93 64 23 35 44 30 | 18 74 73 34 58 46 54 97 85 42 67 53 92 21 90 70 12 32 82 61 57 37 3 94 29 +Card 175: 16 40 45 76 34 43 82 29 15 65 | 74 15 25 5 16 93 18 84 33 17 37 34 44 72 59 47 43 95 54 39 75 48 69 7 61 +Card 176: 97 38 94 13 74 37 95 17 73 40 | 93 44 64 39 15 46 30 16 35 50 85 71 49 99 36 34 98 47 43 83 76 2 78 52 29 +Card 177: 47 35 15 69 3 28 31 36 99 19 | 29 53 70 11 37 22 50 92 76 80 71 30 58 63 20 32 83 68 34 17 81 14 13 62 59 +Card 178: 20 89 11 12 41 26 49 82 27 56 | 73 40 86 43 75 59 46 81 78 67 44 68 93 98 22 51 92 66 14 5 13 31 7 83 3 +Card 179: 77 72 54 47 44 12 74 80 19 35 | 87 85 17 34 73 31 25 23 39 79 75 82 15 41 68 58 57 1 61 36 50 65 2 96 94 +Card 180: 20 15 32 52 24 80 25 23 41 92 | 52 61 67 28 29 80 16 25 97 2 86 53 9 33 57 56 1 23 41 20 32 12 24 92 15 +Card 181: 89 45 15 68 1 54 27 12 78 11 | 54 28 17 56 98 27 3 89 15 45 87 24 12 11 20 53 1 9 78 68 57 90 36 43 22 +Card 182: 89 91 25 36 50 81 32 75 52 15 | 85 90 76 96 93 36 67 99 75 32 91 29 50 18 66 89 11 40 39 52 35 81 15 25 16 +Card 183: 21 74 42 66 75 99 89 50 24 6 | 88 54 64 29 80 35 69 36 91 25 40 53 8 39 92 58 26 44 60 49 27 46 93 71 77 +Card 184: 40 12 28 35 29 77 91 83 27 38 | 99 58 90 49 85 26 33 64 15 30 40 97 61 41 52 5 22 2 56 17 74 62 84 51 89 +Card 185: 86 29 49 67 58 15 2 25 92 94 | 15 36 18 71 39 49 48 58 86 88 68 67 27 92 47 91 37 90 2 25 41 23 31 29 94 +Card 186: 28 63 5 29 4 25 53 61 81 34 | 52 98 45 33 79 27 51 37 29 38 2 81 25 95 85 77 13 78 63 82 97 71 62 8 50 +Card 187: 24 38 16 63 49 28 86 39 21 2 | 64 24 95 98 80 54 96 19 46 18 82 66 41 28 49 72 90 17 44 71 81 13 25 50 15 +Card 188: 40 88 91 96 21 65 46 38 10 89 | 80 40 89 68 54 96 71 79 70 11 97 93 91 69 65 75 32 38 46 61 67 12 78 88 36 +Card 189: 64 99 58 43 42 51 5 57 86 6 | 77 35 64 88 72 10 58 21 23 6 80 41 55 24 48 11 98 59 52 30 53 57 71 26 49 +Card 190: 44 59 64 10 49 33 4 35 45 5 | 8 5 49 67 26 12 78 48 60 44 51 20 47 99 93 30 9 10 69 72 6 33 37 35 77 +Card 191: 65 48 31 5 19 90 85 40 36 38 | 66 46 92 53 6 56 23 34 12 75 28 44 47 42 76 39 86 49 33 35 70 32 37 18 8 +Card 192: 12 40 48 60 14 23 21 78 6 42 | 90 61 57 85 66 83 43 82 7 67 55 93 17 60 15 20 70 81 89 80 62 18 53 44 3 +Card 193: 19 63 70 77 73 13 33 83 72 49 | 48 71 18 49 99 47 91 83 16 26 51 31 3 12 5 73 88 1 95 10 54 90 8 22 70 +Card 194: 48 51 17 59 61 25 13 70 33 12 | 4 68 37 80 3 61 42 85 57 51 87 65 12 35 21 15 5 19 17 2 58 70 59 73 6 +Card 195: 97 8 45 27 2 14 94 92 37 51 | 30 80 59 35 23 66 24 62 20 54 99 73 82 51 93 60 28 46 95 89 40 61 38 39 14 +Card 196: 67 90 56 86 73 96 40 91 75 25 | 32 71 34 25 85 72 65 51 7 59 83 94 52 49 58 21 53 42 93 63 46 45 24 64 47 +Card 197: 34 60 30 42 2 58 50 6 8 65 | 79 92 57 76 20 78 86 47 58 99 65 80 84 16 5 30 36 77 46 73 29 26 96 45 98 +Card 198: 27 14 25 8 32 93 59 94 89 98 | 46 82 57 37 45 41 33 18 73 55 38 21 13 40 96 87 23 83 49 10 74 2 61 99 56 +Card 199: 3 36 72 71 13 85 45 35 79 93 | 75 7 51 59 81 15 18 57 77 8 1 70 42 34 63 49 69 67 89 99 94 2 39 46 86 +Card 200: 72 10 70 76 33 82 25 19 46 6 | 23 83 41 5 84 78 32 74 47 16 89 7 54 48 14 40 50 31 24 79 97 96 49 53 55 +Card 201: 69 33 86 4 98 77 3 51 63 84 | 63 32 59 3 51 90 98 86 42 88 33 84 12 4 41 60 78 17 25 66 18 54 69 77 26 +Card 202: 32 71 80 75 17 47 90 33 59 60 | 19 90 51 82 2 30 29 5 86 56 11 75 33 39 59 12 3 71 60 6 80 47 32 46 22 +Card 203: 2 6 88 74 73 49 98 3 63 29 | 4 60 48 69 5 19 49 96 73 78 89 99 29 74 25 71 47 44 35 32 43 31 27 23 90 +Card 204: 82 96 98 15 30 50 63 95 6 14 | 25 11 15 81 27 95 1 68 40 4 6 30 59 64 66 97 31 98 74 54 77 71 60 76 72 +Card 205: 24 97 90 42 15 62 21 23 36 31 | 29 30 66 10 23 62 31 69 26 75 20 34 90 27 32 41 24 14 36 59 42 93 21 91 17 +Card 206: 92 8 83 85 47 74 42 35 87 16 | 92 89 13 42 35 23 60 36 45 21 8 80 87 85 83 16 14 49 47 76 91 72 15 54 74 +Card 207: 26 3 38 10 20 46 27 81 66 91 | 94 48 81 46 77 35 91 37 3 99 63 43 60 44 16 38 20 82 66 15 88 12 56 45 13 +Card 208: 65 15 67 49 89 94 72 98 17 55 | 90 63 93 55 18 72 41 58 73 19 89 96 59 82 15 20 52 57 81 3 74 25 98 67 94 +Card 209: 41 69 22 59 45 53 52 21 78 34 | 87 63 96 61 18 37 9 50 90 39 7 23 59 99 81 12 38 30 42 31 94 51 52 86 78 +Card 210: 8 66 74 64 11 68 5 57 18 36 | 89 83 19 75 41 33 20 67 99 43 87 7 81 55 69 97 31 12 50 27 35 58 80 39 44 +Card 211: 2 63 10 57 71 65 40 54 9 42 | 37 81 54 35 65 67 83 10 24 61 41 52 42 53 71 56 63 58 62 11 9 80 84 99 68 +Card 212: 23 39 30 14 28 79 46 55 52 50 | 15 73 78 25 61 46 27 93 51 88 5 99 87 20 32 66 26 58 77 42 94 47 7 76 91 +Card 213: 81 3 71 56 91 87 93 37 47 49 | 56 71 41 85 81 42 20 38 79 39 90 7 55 40 49 60 37 78 61 1 65 35 28 34 66 +Card 214: 22 23 90 10 52 37 71 72 60 32 | 87 9 94 19 34 89 57 53 1 48 44 33 4 32 49 51 98 2 41 66 27 54 23 17 64 +Card 215: 75 39 31 5 71 87 92 72 8 50 | 32 56 34 50 86 64 4 85 49 81 26 74 42 47 70 17 67 95 2 7 99 77 83 91 73 +Card 216: 61 77 58 37 12 20 25 68 18 22 | 76 70 65 17 9 98 61 33 7 30 66 95 44 27 72 46 32 14 40 81 49 87 56 4 11 +Card 217: 30 73 66 90 65 71 84 1 10 27 | 4 52 56 49 17 39 53 3 69 88 8 55 68 43 41 59 99 44 81 47 91 5 50 45 97 +Card 218: 27 40 32 35 55 13 98 94 16 12 | 63 96 50 19 36 65 71 48 49 51 78 46 75 88 24 16 70 84 53 1 30 3 34 9 29 +Card 219: 74 89 55 5 24 77 64 83 84 94 | 32 19 93 92 82 69 12 38 3 60 39 95 11 71 88 99 98 51 20 40 9 17 18 57 16 \ No newline at end of file diff --git a/python/inputs/day4_1_ex.txt b/python/inputs/day4_1_ex.txt new file mode 100644 index 0000000..71f208a --- /dev/null +++ b/python/inputs/day4_1_ex.txt @@ -0,0 +1,6 @@ +Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53 +Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19 +Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1 +Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83 +Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36 +Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11 \ No newline at end of file diff --git a/python/inputs/day5.txt b/python/inputs/day5.txt new file mode 100644 index 0000000..f30e7f2 --- /dev/null +++ b/python/inputs/day5.txt @@ -0,0 +1,244 @@ +seeds: 1482445116 339187393 3210489476 511905836 42566461 51849137 256584102 379575844 3040181568 139966026 4018529087 116808249 2887351536 89515778 669731009 806888490 2369242654 489923931 2086168596 82891253 + +seed-to-soil map: +3356468240 2934525445 29117552 +4275689831 4042213712 19277465 +949730239 1589971986 381295142 +2205130246 3387543719 106537240 +2442849314 2188173171 261901063 +2027919967 875104547 177210279 +4258838211 4278115676 16851620 +1969509044 3125327238 8268732 +3602491835 652291761 28146990 +3630638825 3122528592 2798646 +1725486280 3012647256 109881336 +3232765106 192460045 36910273 +4042213712 4061491177 216624499 +2311667486 3256361891 131181828 +2849273982 3133595970 102505596 +1365732141 2963642997 49004259 +3093408594 3494080959 139356512 +3385585792 1971267128 216906043 +2954083526 56695294 82629774 +1331025381 2483732118 34706760 +3322810356 2450074234 33657884 +3269675379 139325068 53134977 +2704750377 680438751 144523605 +1977777776 824962356 50142191 +929469914 3236101566 20260325 +0 1363064706 224603332 +1835367616 2800384017 134141428 +647524775 2518438878 281945139 +2951779578 1587668038 2303948 +1414736400 1052314826 310749880 +224603332 229370318 422921443 +3036713300 0 56695294 + +soil-to-fertilizer map: +1496362907 858318422 178940893 +2630847538 53056663 113045954 +2283611281 2088524569 46779241 +3913589699 3841520880 84292875 +2330390522 2567432522 113508448 +2524251705 2460836689 106595833 +3063003021 2963042999 10035541 +3857182342 4222898477 56407357 +37310480 2913919563 49123436 +740077448 300637488 194492816 +1474645818 1456131667 21717089 +934570264 166102617 54182136 +988752400 1796958285 94278756 +1717132707 1928547521 159977048 +521508712 2758310702 26883128 +3092599643 495130304 257125345 +1877109755 2785193830 128725733 +3997882574 3925813755 297084722 +548391840 2269151081 191685608 +3841520880 4279305834 15661462 +86433916 2187553774 81597307 +1675303800 816489515 41828907 +2443898970 220284753 80352735 +2005835488 2973078540 277775793 +0 1891237041 37310480 +1299192340 1390736804 45833782 +1345026122 2680940970 77369732 +168031223 1037259315 353477489 +1083031156 3250854333 138997462 +3073038562 1436570586 19561081 +1275085281 792382456 24107059 +1222028618 0 53056663 +3349724988 752255649 40126807 +2743893492 1477848756 319109529 +1422395854 2135303810 52249964 + +fertilizer-to-water map: +4238460975 3150676058 14156194 +4014738493 2552067322 165315151 +2782663538 3067003586 60442604 +718350022 1496692875 242681298 +0 662267357 48987302 +73802866 465780476 196486881 +270289747 736070223 448060275 +2501821195 4263593575 31373721 +961031320 0 47107691 +2448671317 2498917444 53149878 +2843106142 3164832252 729755546 +4180053644 2717382473 58407331 +2533194916 4223942180 39651395 +48987302 711254659 24815564 +2037107882 2799681618 267321968 +2424779503 2775789804 23891814 +1547175259 1304493961 192198914 +4252617169 4084472268 19120259 +1871165319 3918529705 61914957 +3572861688 1871165319 441876805 +2758721631 3894587798 23941907 +2304429850 4103592527 120349653 +1933080276 3980444662 104027606 +1008139011 47107691 418672785 +1426811796 1184130498 120363463 +4271737428 3127446190 23229868 +2572846311 2313042124 185875320 + +water-to-light map: +1985898327 3318267441 140753926 +1347635148 2083526793 398378839 +3514250773 2747115878 571151563 +2126652253 1347635148 86837038 +3336431644 3459021367 177819129 +2927342235 1508339551 335222044 +0 365247178 425818944 +500722155 917309008 28280043 +580341873 0 365247178 +3262564279 1434472186 73867365 +2662131989 2481905632 265210246 +2213489291 3636840496 415606487 +529002198 791066122 51339675 +1746013987 1876597806 206928987 +2629095778 1843561595 33036211 +425818944 842405797 74903211 +1952942974 4052446983 32955353 + +light-to-temperature map: +2521168614 3718558727 45222681 +2372021437 4250929390 44037906 +2416059343 3070381062 105109271 +391082070 1490595758 135161830 +2750033935 3567996322 26024928 +2631208948 4085216210 118824987 +1606793146 1161017018 154561777 +0 27318229 64007187 +2566391295 3763781408 64817653 +2205452704 2073181756 31511904 +2354729618 109736771 15352358 +526243900 143079078 467881514 +165490760 1625757588 156087087 +321577847 610960592 69504223 +1116662502 1843304861 180171121 +2173847890 2322708438 31604814 +64007187 1315578795 101483573 +1315244978 1417062368 73533390 +2989245773 2722605383 134588769 +3800621948 4204041197 46888193 +3287840442 2372021437 350583946 +1067967658 12382058 14936171 +3276570277 3971207241 11270165 +3152032800 3594021250 124537477 +1761354923 2023475982 49705774 +2236964608 680464815 117765010 +4152595905 3982477406 102738804 +3847510141 3920328030 50879211 +3638424388 3429696886 70468591 +1098672553 125089129 17989949 +1999021216 798229825 174826674 +4255334709 3528363735 39632587 +1296833623 91325416 18411355 +3708892979 3828599061 91728969 +1388778368 2104693660 218014778 +1811060697 973056499 187960519 +1082903829 2354313252 15768724 +2776058863 2857194152 213186910 +3898389352 3175490333 254206553 +994125414 1781844675 61460186 +3123834542 3500165477 28198258 +1055585600 0 12382058 + +temperature-to-humidity map: +3270313314 2596058682 35302332 +4226607799 1853648898 10548841 +2997401183 2994049594 173176623 +3460843740 3377888646 164140301 +762069527 4252128205 42839091 +3170577806 1535455627 99735508 +356504730 1864197739 73760842 +1176796835 3767577945 398679053 +2184102927 1268190151 103654223 +1839964412 1995769237 103314277 +623505847 2855485914 138563680 +551373625 970847216 72132222 +2605053483 2099083514 149971726 +804908618 510961861 330954039 +2476122167 841915900 128931316 +3809356495 2631856914 172503566 +3981860061 3167226217 210662429 +254072453 98437479 41846688 +3305615646 1164087491 104102660 +98437479 140284167 137804809 +236242288 278088976 17830165 +2939640029 1477694473 57761154 +2390051063 2249055240 86071104 +2755025209 3582963125 184614820 +1135862657 3542028947 40934178 +4237156640 1937958581 57810656 +3409718306 2804360480 51125434 +1943774589 4166256998 85871207 +2029645796 356504730 154457131 +3624984041 1827821728 25827170 +430265572 1042979438 121108053 +1575475888 1371844374 3556186 +4192522490 1635191135 34085309 +3650811211 1669276444 158545284 +1943278689 2631361014 495900 +1579032074 2335126344 260932338 +2287757150 1375400560 102293913 + +humidity-to-location map: +4260564640 3164238850 33008819 +2293789713 3286584985 52546193 +2087002602 2864270962 68938922 +1297747555 1309838844 89337809 +3093628267 3842203176 155987450 +2609276317 3498417185 343785991 +658125616 1701481170 20754060 +1593540119 1399176653 128695111 +2283933279 2244808425 9856434 +3849705959 3012295008 151943842 +678879676 1170609407 139229437 +1009204170 485451665 270016861 +2155941524 4227835566 67131730 +4032228982 4161145047 66690519 +3532191685 2179585888 65222537 +2953062308 2268317830 85579399 +2252523457 3339131178 23090374 +818109113 755468526 17485651 +4098919501 2254664859 13652971 +3379699400 2416907530 152492285 +4293573459 2662947015 1393837 +835594764 1527871764 173609406 +2275613831 3422250936 8319448 +4112572472 2933209884 24098564 +1279221031 466925141 18526524 +3038641707 2957308448 54986560 +397655230 0 260470386 +2223073254 3392800733 29450203 +0 772954177 397655230 +4136671036 3430570384 30346404 +3597414222 3998190626 162954421 +2546266016 2353897229 63010301 +3249615717 3460916788 37500397 +1387085364 260470386 206454755 +3287116114 2087002602 92583286 +3760368643 3197247669 89337316 +2346335906 2664340852 199930110 +4167017440 2569399815 93547200 +4001649801 3362221552 30579181 \ No newline at end of file diff --git a/python/inputs/day5_1_ex.txt b/python/inputs/day5_1_ex.txt new file mode 100644 index 0000000..bd902a4 --- /dev/null +++ b/python/inputs/day5_1_ex.txt @@ -0,0 +1,33 @@ +seeds: 79 14 55 13 + +seed-to-soil map: +50 98 2 +52 50 48 + +soil-to-fertilizer map: +0 15 37 +37 52 2 +39 0 15 + +fertilizer-to-water map: +49 53 8 +0 11 42 +42 0 7 +57 7 4 + +water-to-light map: +88 18 7 +18 25 70 + +light-to-temperature map: +45 77 23 +81 45 19 +68 64 13 + +temperature-to-humidity map: +0 69 1 +1 0 69 + +humidity-to-location map: +60 56 37 +56 93 4 \ No newline at end of file diff --git a/python/inputs/day6.txt b/python/inputs/day6.txt new file mode 100644 index 0000000..4f96786 --- /dev/null +++ b/python/inputs/day6.txt @@ -0,0 +1,2 @@ +Time: 48 87 69 81 +Distance: 255 1288 1117 1623 \ No newline at end of file diff --git a/python/inputs/day6_1_ex.txt b/python/inputs/day6_1_ex.txt new file mode 100644 index 0000000..b39f49d --- /dev/null +++ b/python/inputs/day6_1_ex.txt @@ -0,0 +1,2 @@ +Time: 7 15 30 +Distance: 9 40 200 \ No newline at end of file diff --git a/python/inputs/day7.txt b/python/inputs/day7.txt new file mode 100644 index 0000000..59655f6 --- /dev/null +++ b/python/inputs/day7.txt @@ -0,0 +1,1000 @@ +6JA22 162 +TQJQ8 732 +7T77A 882 +6K66K 850 +QQAQQ 11 +7QQ7Q 321 +28966 921 +34433 801 +8QQ8Q 914 +K63K5 636 +47777 533 +K62Q9 773 +25J52 717 +A6AAA 631 +23222 720 +267Q4 9 +K8QK5 15 +QQA22 400 +563T8 50 +2J5J2 756 +77T83 647 +T9596 27 +53AJA 371 +6J666 916 +833TK 380 +5TK4J 506 +TK3KK 794 +JTJ55 54 +TTT4T 422 +9J3KK 491 +488K4 30 +87878 654 +QQKKK 894 +A4A3J 360 +55559 232 +33388 148 +JK599 632 +KK663 300 +JJ448 514 +AKATA 188 +6J537 885 +98888 65 +9TT3J 361 +668A9 227 +Q3285 257 +JT54J 208 +K8QA7 373 +77K39 681 +33T4J 281 +KA832 578 +6QQQ5 214 +52222 154 +6A4Q4 78 +39339 282 +2A82A 25 +5A66J 261 +5594J 4 +TTTT6 752 +9A3K5 760 +KA5AA 26 +K7464 447 +33676 605 +K7J7A 946 +5T5KQ 805 +654Q8 888 +35358 315 +A4A57 552 +669AA 485 +7A77Q 105 +Q3333 372 +57A9Q 665 +97655 367 +24222 698 +Q6KT7 820 +99KKK 83 +T33JK 389 +9KKQ2 602 +TT9JQ 278 +JT5KJ 638 +88JJ7 588 +4664J 205 +36T95 193 +7272K 329 +JTTTK 328 +7K79T 653 +84948 192 +4444K 258 +578QA 337 +9J999 980 +JT4A2 950 +QJT22 598 +TTTTJ 384 +QAKJK 310 +58955 547 +Q2497 264 +55444 746 +793K4 256 +QKQ5Q 802 +ATTTT 878 +Q92K5 469 +88388 969 +T99TQ 456 +44384 560 +3773J 545 +82293 224 +8558J 879 +TT98T 342 +AJKJ4 490 +T9996 238 +TKQQQ 810 +J5Q55 229 +Q564Q 932 +4K6KJ 349 +3J939 909 +28K2K 563 +8787K 262 +JTK34 365 +A3832 165 +2T3A8 562 +229Q5 761 +9TTK9 58 +KK55T 536 +K6JJJ 216 +44466 940 +67777 897 +QQ9Q9 963 +48AJT 507 +4TT4T 160 +82936 584 +99TTJ 597 +698QA 573 +398K5 618 +56J54 438 +45584 124 +83657 892 +J2782 574 +68862 270 +5Q5A7 132 +TKK8K 288 +6AT55 689 +22J62 61 +QJQ55 884 +2J445 713 +TJ952 913 +3QAJ4 347 +J73JK 122 +555TT 64 +AQ829 830 +5384A 924 +44446 146 +Q7JTT 248 +73K3K 22 +22572 335 +55JJJ 225 +K56KK 587 +9Q8TT 745 +833QQ 420 +63828 489 +J6368 199 +45464 31 +72724 550 +66Q6Q 543 +66334 191 +55Q54 965 +KK7A7 73 +TJQ8A 806 +33Q23 283 +928J3 804 +4J4Q4 470 +4KKKK 865 +Q6K9K 266 +7QJ2Q 237 +7AT65 723 +9TAJ2 327 +73344 207 +44TKK 179 +86T68 203 +TTT28 519 +4J684 391 +97779 169 +9229K 593 +KKK77 280 +J2224 926 +A5J5A 472 +Q673J 697 +K88KK 823 +7K63J 198 +4A65T 115 +J2424 302 +55A55 424 +TTTQ6 142 +48888 97 +KK66T 672 +7J7T7 809 +4A444 153 +3A33A 494 +A7K25 790 +88A9A 880 +KQ549 473 +6J2Q7 803 +QQK2J 345 +9KKJT 152 +T4KJT 917 +23593 608 +33383 798 +44Q22 841 +AQQQT 709 +7747Q 1 +4333A 959 +4666Q 163 +AA5A5 920 +7A77A 576 +55J4K 357 +6KKQT 354 +A6866 837 +JK6KT 341 +QQQQ8 778 +966Q9 710 +59995 101 +7KKJ2 79 +4J58Q 680 +K55KK 967 +A3AAT 352 +Q435J 20 +453JJ 683 +9T4QK 669 +595J9 307 +KK35K 673 +98563 113 +QJ943 181 +88498 340 +AKAAA 931 +Q58Q5 183 +QJAKT 145 +3K8TA 952 +JKA2J 173 +JA734 443 +68226 291 +QT7J5 777 +AAT8Q 377 +T9T3T 991 +44T75 642 +79772 96 +2Q5QQ 881 +8TTTT 398 +22K2J 45 +46TQQ 497 +QQ522 7 +6JA99 35 +TK65T 559 +65885 532 +76868 156 +74J4J 274 +Q85JQ 378 +596K7 566 +AJ522 286 +5K455 362 +483JJ 170 +8JQ78 866 +QQ3Q3 392 +52292 250 +77977 678 +55AA3 604 +33663 571 +9KKKT 759 +K8243 923 +363J7 603 +3333K 332 +94333 660 +555T5 98 +5772A 206 +TTTQT 103 +Q3KJ2 29 +99669 674 +6625J 338 +Q4444 904 +7K6Q8 40 +A73JA 646 +77545 231 +QTJ87 956 +Q944Q 872 +K8892 393 +5AQ6T 503 +7K7K7 322 +74297 851 +4QKJ6 508 +Q665Q 114 +8Q93T 825 +AAA8T 799 +6598K 910 +78A27 766 +JAAJA 993 +88788 763 +Q7925 117 +A22A2 74 +98T95 716 +2QQQ3 75 +A3479 107 +KAKAK 13 +8863K 271 +J668A 919 +342TA 62 +6295A 226 +T398T 558 +54696 699 +J444T 614 +34442 41 +86488 815 +88T8T 755 +78Q76 548 +A6666 725 +422TK 768 +JJTTK 998 +99393 730 +967JQ 771 +J9A94 500 +KKQQ3 213 +6TJ6K 899 +K88KJ 346 +52J22 835 +J8827 651 +5A588 67 +333A3 737 +J2J22 331 +4Q3J6 953 +7K443 601 +A2868 355 +TQ2K3 492 +765Q2 521 +AJ7AA 121 +5J5J5 172 +48A44 627 +57TAA 891 +58555 912 +46436 195 +K9AT3 859 +78338 84 +54J75 186 +TTTTK 740 +75777 461 +25K5T 401 +94994 272 +5679Q 129 +64666 375 +327A9 243 +7Q7QT 656 +JAAAK 691 +4AA4A 877 +T5TTK 682 +599QJ 395 +3835K 502 +46667 906 +44443 408 +5J558 430 +5QJ44 670 +3K693 585 +33393 277 +QQ992 849 +4T4KT 368 +99996 323 +2QTT9 542 +K253A 971 +7799J 482 +59QQ7 939 +53633 405 +4Q2Q2 677 +9KQKK 975 +78877 428 +9KAJ6 987 +JJ8JJ 951 +46A6A 979 +8K58J 915 +433J4 304 +33QTQ 657 +8KKKK 167 +J5J35 439 +979J9 827 +JK47Q 968 +AAAJA 936 +9747K 46 +4449J 100 +T7AJ6 204 +5556Q 517 +666T6 870 +38QJA 57 +277T7 764 +4J834 964 +22626 128 +2334T 664 +449Q4 454 +6T6T6 590 +TATAT 233 +37555 609 +ATK69 249 +K33JK 784 +J8JJ8 19 +8T888 202 +555AA 111 +T3339 86 +5Q963 816 +7AK2K 650 +J9J27 509 +JJQQQ 436 +59958 705 +KKJAK 833 +33K63 623 +47764 690 +58855 501 +4754K 177 +T5K5J 451 +554Q4 762 +99J29 595 +6668J 621 +7KK7J 795 +46J56 465 +28228 985 +33J3J 343 +J28J6 76 +292T2 774 +K99K9 459 +2KTT5 147 +AJQ3K 836 +87JT7 744 +97KJ6 524 +82T2J 425 +KJJ43 200 +55KJ5 130 +Q7985 718 +777T7 846 +QT46J 864 +TAJ6A 520 +A666A 493 +75555 477 +37878 930 +TA882 306 +Q93Q9 793 +9JT99 954 +993T9 643 +28AK8 235 +KJ69T 228 +96869 102 +24884 403 +769AJ 867 +6J434 47 +6TTQ9 990 +8T7TT 748 +795AJ 753 +84JKA 629 +8J428 855 +JJ2J9 997 +TJ524 818 +26662 686 +567AA 219 +97997 275 +QQQ66 853 +JQ77Q 692 +66TTT 984 +95353 16 +8QQ7J 955 +22272 814 +8A868 616 +6Q2QQ 983 +KQKQQ 770 +JJ66J 69 +7KQJQ 505 +J9J97 23 +85ATA 986 +A64KA 89 +96669 684 +9Q538 414 +6AT62 427 +JJ956 415 +T24QQ 409 +3277A 28 +JA5TK 125 +2586Q 157 +K93QA 311 +AA3TJ 960 +34434 640 +8J448 977 +55333 267 +T3TT3 667 +55856 610 +J375Q 873 +344JQ 18 +38J2K 36 +QJ225 523 +656A6 313 +33J33 875 +2JQ4A 480 +AA4TA 3 +TT3KJ 668 +59996 933 +A5AQK 104 +AQ382 10 +56A64 487 +QQJA5 854 +666K6 402 +474AA 546 +QAQAQ 452 +ATQ32 171 +7A777 861 +Q4A9K 324 +39Q26 247 +29229 309 +2QQ2Q 450 +47424 394 +2A2JA 55 +7TAA9 687 +9JTK4 661 +KKK66 786 +99989 839 +59JK6 675 +3QTTT 455 +48TT6 780 +542K6 397 +79A56 471 +QQQQ3 903 +J2296 817 +AQ52K 194 +65A9K 842 +9998J 246 +2835K 662 +74444 437 +2754Q 685 +98J67 907 +8T8TT 134 +343Q7 406 +999T9 511 +59JQQ 240 +27KTT 973 +AAKA9 577 +3A223 840 +QK787 655 +K5977 754 +JATQ7 468 +6TT6A 464 +99JJ9 564 +2K242 320 +66766 223 +Q858Q 442 +55T22 658 +77QQ7 379 +44JJ5 648 +TK498 48 +9J4J2 580 +95945 957 +A64J8 385 +86666 242 +8AA88 150 +67877 77 +AA999 144 +J32J5 498 +777TT 938 +KJKKK 929 +72689 353 +684TA 970 +JK8JK 92 +56656 483 +TTTT3 363 +8T88K 868 +AKAAK 382 +42A7A 80 +44349 474 +37A7A 180 +2QAA2 976 +Q68K6 704 +3373J 141 +77666 279 +9TTTK 49 +36QT5 724 +5T6JT 751 +T257A 556 +TA44J 59 +AAATA 293 +KKJ2K 410 +7J64Q 871 +2AQQ4 269 +8777K 708 +7K42T 594 +22J22 775 +899K8 918 +53355 639 +44429 326 +7K777 944 +573J7 221 +T7A2Q 149 +92242 579 +5K7K6 63 +386QK 722 +JKQQQ 516 +KA6A7 8 +A9T28 633 +T4Q67 220 +KK233 962 +AJ73J 831 +KJ344 876 +22277 635 +99833 215 +46JT7 42 +QQQT3 88 +88445 947 +J7T55 935 +29J22 44 +5777J 178 +999TT 230 +J82TT 488 +K3K9T 336 +4T474 285 +J5T54 53 +KK7JK 433 +K3374 908 +55QTQ 95 +665J5 453 +35TQA 6 +J2QQJ 630 +6JK36 386 +743J5 292 +3Q9QQ 495 +4JJ44 344 +88285 534 +766J4 553 +QJ846 700 +AAAA8 263 +5655A 351 +K67T8 197 +3TA9A 460 +8T9T8 481 +TAJA9 526 +8822J 742 +4Q44K 625 +K6663 110 +AAA7A 32 +432KK 726 +KK288 540 +67677 527 +33882 693 +QQQ35 316 +J4Q4J 863 +6639J 898 +248QK 847 +AA99J 758 +T7QTT 383 +AA442 572 +JJJJJ 900 +3353T 297 +Q68A3 479 +222KK 339 +7J878 586 +9292J 38 +79QQQ 883 +87J73 276 +7488K 175 +5J59A 421 +67222 314 +9K9KJ 449 +JK447 528 +KKKAK 303 +A84A4 222 +K6KJA 273 +8T5QA 848 +33352 591 +AT833 617 +2AAAA 305 +3Q74K 555 +24K44 739 +3J342 925 +QJK65 356 +72333 807 +J2AAA 750 +K7779 554 +33J45 886 +79J96 895 +9T6Q3 413 +K3A4J 94 +4T525 974 +63333 418 +55KK5 829 +J4896 531 +J8T8J 118 +35435 741 +722Q3 513 +A3QAQ 72 +3J8A6 958 +T9QQ2 376 +QA7AQ 287 +9A555 348 +T559T 695 +4T774 999 +22253 68 +38838 772 +462QJ 112 +969K9 981 +Q55Q5 992 +J5555 14 +Q565Q 995 +755J5 510 +KJKK9 189 +J6T42 529 +2748K 241 +769T4 120 +7K5TJ 845 +Q2272 515 +KTKKK 60 +49J24 71 +TT2J2 844 +858J8 781 +42643 364 +TJ44J 448 +QQQQ9 504 +QQJQ6 37 +J7974 796 +T549Q 434 +398J7 137 +K6K55 161 +TKTQQ 476 +A9898 703 +6J9K3 808 +KK29J 201 +QQ9J9 736 +KKJKJ 712 +66KJK 486 +73777 82 +824T6 496 +78847 404 +JQQ22 441 +QQQQ4 694 +555Q8 776 +J7J7T 407 +43Q6K 91 +6T6K6 196 +J66J6 308 +54844 334 +K9T44 457 +K444K 135 +38343 860 +34323 735 +KKK5J 734 +4339J 541 +JJQJ4 707 +28222 972 +KJA53 676 +KKKK6 158 +8Q558 783 +T2TT2 34 +74J67 209 +5KKKK 945 +9TTTT 412 +66363 70 +9399J 858 +7J3TQ 589 +7K468 116 +3TA6Q 133 +42Q6T 396 +65886 557 +449J9 728 +8KT2J 446 +J8888 822 +2T266 927 +8955K 138 +QQQ5Q 943 +92272 318 +AA77J 1000 +8TT66 569 +T8AJ3 606 +AT98K 628 +34Q92 641 +75QK5 499 +8TJ93 155 +KK7K5 176 +JA859 21 +9K523 727 +K44JK 582 +2Q8AQ 942 +J5565 611 +888K8 265 +98982 747 +K6866 982 +883J3 538 +6K6J6 767 +7423J 2 +QTQQT 252 +4T4JT 812 +5TT28 599 +69766 440 +QJ777 136 +Q48J3 260 +QQQJQ 253 +7T994 989 +A4Q4T 93 +88K78 645 +JA2QJ 797 +55TJ3 151 +JKQ96 696 +99299 312 +7777J 126 +7437J 769 +2Q382 620 +2T5KK 298 +Q4JJ5 333 +8JJ88 874 +QK33T 52 +KTKTT 634 +A7298 811 +7J766 652 +JAA5A 966 +85385 702 +5JK35 369 +223J2 432 +AAA33 56 +3AA35 824 +29222 423 +6AA6A 212 +29228 551 +A22TT 996 +J423Q 289 +99J94 843 +A364K 592 +A4AAA 787 +96TA2 706 +Q3Q4Q 994 +9334A 887 +45555 857 +AJ6AA 893 +4J444 174 +9JQ9J 731 +9J964 143 +K44KK 429 +29JA8 159 +53523 359 +59Q23 522 +A3663 24 +53AAA 12 +T7982 5 +8Q888 140 +A36J9 928 +83668 961 +28J2J 435 +25Q42 659 +ATK7Q 185 +26855 462 +J4624 567 +97994 644 +57989 109 +KK883 417 +JT676 721 +T2222 51 +34TTA 679 +JTTJT 370 +67267 463 +A444Q 325 +J77TT 813 +24555 245 +9TKJ8 612 +48464 792 +35K33 366 +2A333 626 +64A57 583 +K3QJ6 43 +24K86 244 +28744 164 +589Q4 688 +A8888 896 +6J626 666 +65666 182 +J3QJ5 387 +QJK99 467 +59455 889 +3K555 330 +35K35 832 +A3KAA 106 +Q6JQ6 81 +KK2K2 838 +79999 828 +24A64 561 +47JK9 785 +77772 284 +9T7T6 765 +573Q5 934 +4Q479 431 +JJKAT 184 +799JA 596 +5QK5Q 411 +TJ522 911 +9A95A 87 +5Q82Q 988 +KTJJJ 294 +566J3 729 +7JA65 218 +99J59 901 +49K5T 301 +5QQQ5 478 +55552 39 +99AAA 210 +5665Q 649 +2J822 530 +QTTTQ 622 +998J8 374 +44222 600 +77J7J 259 +63888 782 +93763 458 +222TT 123 +22T44 821 +37KQQ 714 +J688A 127 +244QQ 581 +33K3K 852 +TJTJQ 738 +TT2TQ 399 +QTQ54 549 +7T543 131 +999A9 800 +T435T 788 +T3JQK 637 +T725Q 358 +59955 862 +2J227 905 +2T2TQ 99 +9K7T5 119 +987J7 296 +77J55 779 +KAJK8 711 +8TJA7 168 +666Q2 535 +9J2T8 255 +8J6J5 187 +9JK44 743 +55888 749 +8KQJ4 733 +T3399 570 +TJT97 236 +82597 890 +TAAA7 715 +AA797 268 +27AA8 17 +TTJAJ 317 +984JA 624 +56JA5 701 +68668 819 +75575 419 +66626 613 +4Q962 671 +9Q898 484 +95994 757 +T3T33 615 +3Q397 619 +89747 381 +6429A 922 +J6996 254 +Q3Q43 568 +48864 416 +678QA 388 +TT5TT 239 +69K6K 85 +7667A 512 +QJ9QQ 949 +AJA5J 789 +8JAJA 663 +88AAK 575 +3Q77J 295 +6T4Q6 856 +3856Q 539 +47747 466 +Q5T75 444 +39A69 90 +59956 299 +J3JQ2 869 +T65JK 941 +74488 166 +QAKTK 139 +88668 251 +KTTKK 190 +88989 290 +KKKK9 475 +Q7JQ6 607 +8K6T4 33 +37968 834 +48884 426 +T929T 902 +2KT54 217 +86439 66 +344J4 518 +46664 350 +J5392 537 +74TT4 445 +2J247 319 +K66AT 565 +39327 390 +Q6656 525 +75757 544 +88688 108 +486A6 978 +72KQ3 826 +277QQ 234 +KK399 948 +QJ828 791 +97697 211 +KKK6J 719 +AA5TT 937 \ No newline at end of file diff --git a/python/inputs/day7_1_ex.txt b/python/inputs/day7_1_ex.txt new file mode 100644 index 0000000..bf2815e --- /dev/null +++ b/python/inputs/day7_1_ex.txt @@ -0,0 +1,5 @@ +32T3K 765 +T55J5 684 +KK677 28 +KTJJT 220 +QQQJA 483 \ No newline at end of file diff --git a/python/inputs/day8.txt b/python/inputs/day8.txt new file mode 100644 index 0000000..f9be5ec --- /dev/null +++ b/python/inputs/day8.txt @@ -0,0 +1,788 @@ +LRRLRRRLLRRLRRLRRRLRLRRLRRLRRRLRRRLRRLRLLRRLRLRRLRRLRLRLRRLRRLRRRLLRLLRRLRLRRRLRRRLLRRRLRRLRLLRRLRRRLRLLRLRLLRRRLRLRRRLLRRRLRRRLRRLLRLRLLRRLRRLLRRRLLRLLRRLRRRLRLRRRLRLRRLRLRLRRLRRLRRLLLRRRLRLRLLLRRRLLRLRRLRRRLRRLRRLRRRLRRRLRRLLRLLRRLRRRLLRRRLRLRLRRRLRRRLRRLRRLRLLRLRRLLRRLLRRRR + +LRV = (NNC, BHD) +KBR = (MLH, XGR) +BJB = (RCR, LBC) +SXL = (HTF, LTX) +BLV = (TXF, SPK) +FCH = (DMS, HVX) +GPM = (HJV, JLK) +BRQ = (BLR, BTD) +LNT = (XDS, GTJ) +CHP = (TRF, PQM) +CMF = (CLT, NBM) +HNT = (SGQ, BLP) +GXG = (JFP, JHQ) +NDD = (GTJ, XDS) +KBJ = (FXP, VBJ) +RKM = (HTT, DPG) +GCQ = (CDT, TSQ) +XQX = (CCD, TVG) +BJF = (NHQ, MPM) +SFD = (MJD, MMH) +SGQ = (LNX, BRL) +NXR = (TXD, GCF) +QJH = (FJX, NFV) +RSR = (MCM, RLH) +VBG = (QFH, SXX) +PLH = (XGJ, HTP) +LTK = (SJJ, JBB) +CPK = (TMX, NRX) +BCC = (PVV, PLM) +CGC = (MCF, HFK) +TGB = (TQQ, LRV) +PCF = (GMV, DTG) +PDB = (DPG, HTT) +RFQ = (GKM, VFF) +VKZ = (GCL, VPP) +FGL = (MDS, PGM) +KRZ = (CFT, XPM) +LSR = (GRQ, KKJ) +VKM = (GRQ, KKJ) +SKT = (NXT, KRQ) +FMB = (VBH, NFJ) +RRR = (TJF, QGN) +FHT = (XMT, RKV) +HTF = (SRB, QVD) +GTJ = (CHD, PLJ) +QSM = (CMF, TDS) +VNG = (DKC, SMV) +MNT = (BKN, BKN) +VRV = (GJM, JCG) +QBC = (CKV, LCC) +GPD = (SXD, BML) +SFR = (SVD, BDL) +PBK = (VPQ, NMC) +TJF = (XDN, RMG) +HGM = (GGH, BXS) +PJB = (TPR, VMD) +FDL = (QBC, KLN) +RXB = (BSB, NLD) +MMN = (SGQ, BLP) +BDN = (BJS, NTS) +RRG = (BLV, LPG) +MBF = (DJD, FGF) +FMK = (NDG, XHN) +CMX = (VNV, KBN) +XML = (TQJ, FCX) +TKF = (HQM, LGK) +RVF = (GFG, MQN) +FJX = (GVX, FHK) +JPQ = (STP, GLH) +GLK = (PCR, BBF) +DBR = (JFQ, JFQ) +GJG = (DXX, QLR) +DRH = (QTG, GJG) +FHS = (PHB, NJH) +JCT = (CDT, TSQ) +NDM = (LVV, GPP) +LDF = (XLT, GKX) +NNX = (PQK, DRB) +VKP = (BPF, CPC) +PCG = (FJD, MRT) +TQJ = (LMN, SHR) +CVH = (BRQ, KJK) +VJT = (SLG, XGB) +QHG = (NDG, NDG) +FRL = (GDQ, SMJ) +FTF = (JPD, DCK) +VGF = (XNN, GVN) +LSB = (NMC, VPQ) +NSC = (KPQ, PNK) +QPR = (JFP, JHQ) +CRX = (MQC, HMB) +CQM = (TXD, GCF) +MBS = (LTF, KKG) +VFG = (BPB, MHX) +CCF = (HHS, LDR) +JLB = (PBK, LSB) +GNR = (CMK, FTK) +TSA = (DJG, MFF) +BDL = (BJB, XKR) +CMN = (GDQ, SMJ) +TMR = (MCN, MBF) +FFC = (MFN, STT) +VPM = (VCH, FBB) +RNX = (RGH, SDF) +RDF = (TML, PLH) +NBM = (FLQ, RBD) +MTK = (TDM, XPV) +NFK = (SLD, FRS) +PNB = (QPT, HPC) +MGH = (NDK, KGN) +CRT = (MMB, BBM) +NDG = (JGT, JGT) +GJM = (FMB, NDP) +GPP = (VDJ, CDX) +JFP = (SDH, QFJ) +TSQ = (PQG, GXT) +CNB = (SFD, MQG) +TVN = (CNP, LCS) +XDQ = (LNT, NDD) +JCG = (NDP, FMB) +NDC = (NTH, FSJ) +KRQ = (JVD, LVS) +LMF = (KPQ, PNK) +GTP = (RJD, FCH) +XTV = (VLX, RXB) +GCL = (LJJ, TTC) +THX = (RMQ, VBK) +RJD = (DMS, HVX) +VLV = (LNT, NDD) +BRD = (HTF, LTX) +SMJ = (SKV, HXP) +DLX = (FFC, GNS) +BXS = (RSR, KFB) +KTV = (PLM, PVV) +VCH = (RCF, LXP) +LHK = (SDF, RGH) +VTK = (HNM, MMM) +TRC = (PJB, CKN) +XMX = (BLH, XCF) +VDL = (PCG, DHB) +CPC = (KDC, BFD) +KNG = (VTK, DTL) +LQX = (FGL, TSP) +HXH = (JSB, LSD) +SCS = (VTX, PLG) +DRB = (TGV, QRX) +GDN = (MQX, KPC) +DPG = (NFR, BPN) +HTD = (HGV, BSZ) +GVL = (DGJ, CHP) +PMB = (MTB, JCB) +NKT = (KBJ, JJP) +KGC = (KFR, NRT) +RTT = (XPM, CFT) +LFG = (RCB, NNX) +HTT = (BPN, NFR) +MHX = (JRL, JQB) +RXS = (HQM, LGK) +CJB = (DKD, KMJ) +CXL = (LRN, LFG) +XKR = (RCR, LBC) +BLR = (MLC, CGC) +DGJ = (PQM, TRF) +CPD = (DGJ, CHP) +DRN = (TRQ, TLH) +CFT = (TSH, PHS) +PHQ = (RMQ, VBK) +SXD = (XHC, TDX) +TLQ = (VLX, RXB) +BHF = (VNV, KBN) +PFB = (MQX, KPC) +BRL = (HPN, SRJ) +XFL = (KNG, KTS) +RMX = (VBG, NTD) +HQC = (VXL, GXJ) +GHQ = (CRT, LNJ) +TXD = (VGF, VFJ) +MQG = (MJD, MMH) +HPN = (RST, VDD) +QNL = (TKF, RXS) +NGJ = (NFP, RCP) +NFB = (MHX, BPB) +GNF = (GFG, MQN) +TSP = (PGM, MDS) +QTG = (QLR, DXX) +TXF = (FQQ, HBQ) +BPB = (JQB, JRL) +NHS = (LQS, NDX) +MVV = (PBD, PBD) +GKV = (GXG, QPR) +CNX = (FTV, KFQ) +HQS = (VSX, FTS) +JSB = (MDD, SKT) +FDX = (NTS, BJS) +SNB = (VTX, PLG) +TDS = (CLT, NBM) +LKJ = (JPX, RPQ) +KGN = (SCQ, FLR) +HBD = (SXD, BML) +DSR = (MRC, BFN) +GVN = (QHD, XSJ) +MJB = (NDC, SFH) +RQS = (KND, HGR) +NFG = (NJH, PHB) +PHF = (TFN, NQQ) +MHQ = (THL, VHQ) +KXG = (FFC, GNS) +RTL = (NFK, NTM) +NJH = (VXB, DNR) +TSH = (TRJ, QTP) +STL = (GTL, HJC) +JQL = (LRN, LFG) +SHT = (BSG, PNB) +VCL = (FPP, SQP) +GKX = (LSM, GQF) +TCN = (BLV, LPG) +PLR = (JNJ, FPR) +HBG = (NBP, VKT) +RPQ = (LVH, RDF) +JTA = (TKF, RXS) +XPV = (DQM, JJD) +GJC = (LBN, HFF) +SLG = (TKM, FQH) +HFK = (VJT, DNQ) +TML = (XGJ, HTP) +VCM = (DFX, KBR) +XHC = (KHD, PHF) +JXJ = (VKJ, CVH) +NFJ = (FXL, CJB) +TDN = (JCN, SQS) +SST = (TDS, CMF) +HLN = (QKM, CCF) +MSV = (HDC, KSX) +VPG = (NBD, GTP) +XCF = (CPD, GVL) +PQK = (QRX, TGV) +FVN = (HSJ, RXR) +JBB = (PGR, HTL) +VLX = (NLD, BSB) +BMS = (HJT, PFP) +VVV = (DRH, RGF) +GTL = (KCS, MHQ) +BFD = (DTF, VTN) +DKC = (TXT, JKR) +QRB = (LQS, NDX) +NDL = (LHK, RNX) +XQQ = (LLX, QGR) +FHK = (MMN, HNT) +SNV = (KJP, BPC) +QGK = (DHB, PCG) +HVG = (KXG, DLX) +PNK = (XQD, MPP) +BFN = (PVP, NVL) +HKN = (DLL, FVN) +XGR = (QLP, TXM) +KCS = (VHQ, THL) +RCR = (SXL, BRD) +KHC = (KSX, HDC) +HXN = (RRR, JGK) +MPB = (PLR, TLV) +PRX = (RGF, DRH) +NGN = (GRC, NCT) +QRG = (PHQ, THX) +MFR = (GXJ, VXL) +QQX = (JTL, HQH) +DBN = (HJT, PFP) +LVV = (VDJ, CDX) +JVD = (RFQ, NRR) +JTL = (CRX, LRM) +FJQ = (CMX, BHF) +LNX = (HPN, SRJ) +XQD = (MLS, XPH) +MQN = (CJM, RQS) +NRT = (FNF, VCX) +CGJ = (QMK, MPB) +KRM = (GBJ, FPG) +MPP = (MLS, XPH) +BKN = (GBB, VXV) +JCB = (CNX, RTS) +CJM = (HGR, KND) +DDR = (CPK, QFP) +MGC = (FFV, QJQ) +GJP = (NHQ, NHQ) +QVD = (DPP, FQP) +RBC = (VTV, QTV) +KND = (KSV, JLB) +GGH = (RSR, KFB) +SQB = (XFL, HMP) +DJG = (LHG, GND) +DTF = (TKJ, XPL) +RXR = (VCT, SFR) +LLH = (VLV, XDQ) +SDF = (GCQ, JCT) +BLA = (XPM, CFT) +RLF = (XRH, KFF) +VDD = (DRN, GHB) +MQC = (SHQ, PCV) +VBK = (VHD, FXH) +KJK = (BLR, BTD) +JQB = (JQL, CXL) +FCX = (LMN, SHR) +MQX = (MBS, MQV) +NHQ = (RTT, RTT) +QNG = (DLX, KXG) +FTS = (KQN, GXH) +JXP = (FJQ, LVX) +JMD = (BLH, XCF) +FQQ = (SDB, GNR) +GFH = (LTK, KTT) +HDC = (NNM, HGM) +BTD = (MLC, CGC) +FLQ = (BQS, NBK) +DXP = (MCN, MBF) +QGR = (NXR, CQM) +MLS = (LSH, BJM) +FGV = (DXP, TMR) +RLR = (NFV, FJX) +NNC = (MVV, MVV) +MGK = (CSG, NMV) +FFV = (LSF, QBP) +NCT = (GNF, RVF) +SLD = (XFS, HXH) +GFR = (GPM, GLD) +CXT = (GTP, NBD) +KKG = (LVB, FKX) +VLL = (TVN, JQV) +KFQ = (CGX, NKT) +RMG = (KRM, MKC) +QFL = (TQQ, LRV) +FKX = (SMN, LDH) +QPT = (FCJ, VCM) +XPH = (LSH, BJM) +DHB = (MRT, FJD) +NBK = (QJM, GNN) +DLJ = (MNT, PCS) +TMK = (KJP, BPC) +HQM = (CMB, BVP) +TGV = (QQX, DSP) +DSP = (HQH, JTL) +DLL = (RXR, HSJ) +JLJ = (SNV, TMK) +MMM = (GJP, BJF) +BMQ = (VHX, VRV) +MKC = (GBJ, FPG) +CPL = (QBC, KLN) +SVD = (XKR, BJB) +GXH = (CPQ, BNV) +VTS = (DCK, JPD) +CNJ = (PCF, DFJ) +TDX = (PHF, KHD) +LJJ = (MSV, KHC) +DXX = (LKJ, STN) +KFF = (CNJ, XBC) +RLH = (LQX, RNJ) +LHG = (PSH, SJM) +HSJ = (VCT, SFR) +DFV = (PCR, BBF) +MLC = (HFK, MCF) +JPK = (DPD, JXP) +LVS = (RFQ, NRR) +SMN = (QCL, MQK) +RQL = (PMB, NDT) +GNS = (MFN, STT) +GDD = (DLL, FVN) +GBJ = (CNS, MJB) +LKM = (VCH, FBB) +SPK = (HBQ, FQQ) +KHD = (TFN, NQQ) +GRC = (GNF, RVF) +MLH = (TXM, QLP) +QTQ = (HFF, LBN) +LHS = (DXC, RQL) +QTV = (BMQ, KHB) +QLX = (FHT, RLL) +VKT = (BVK, HHF) +CKV = (QLD, QLD) +LBC = (SXL, BRD) +KFR = (FNF, VCX) +HDT = (BSG, PNB) +SKQ = (NDV, VKN) +TQQ = (NNC, BHD) +XHN = (JGT, VKZ) +PNS = (FTF, VTS) +QBP = (VPG, CXT) +BSG = (HPC, QPT) +GLD = (JLK, HJV) +LTF = (LVB, FKX) +RMQ = (VHD, FXH) +VXL = (GDD, HKN) +GDC = (QSM, SST) +CSS = (NDV, VKN) +BBF = (KBH, THK) +PLM = (GJC, QTQ) +PLX = (KGN, NDK) +NVZ = (RXS, TKF) +TPR = (PVJ, CVJ) +QGN = (RMG, XDN) +SQP = (LQQ, HDS) +QTT = (XRH, KFF) +PGM = (XQX, FQM) +KJP = (CSB, QHR) +PSM = (VKM, LSR) +NBA = (VPP, GCL) +CSB = (LDF, HXG) +XTH = (SGX, NLP) +STP = (CMN, FRL) +HGR = (JLB, KSV) +MRT = (XTH, SML) +DFJ = (GMV, DTG) +RBD = (BQS, NBK) +TCC = (FFV, QJQ) +PHS = (QTP, TRJ) +TQH = (LTK, KTT) +QTP = (XMX, JMD) +HFF = (PFB, GDN) +GXT = (LCT, NHC) +LMP = (RNX, LHK) +KQN = (CPQ, BNV) +JRL = (JQL, CXL) +VSX = (GXH, KQN) +XNN = (QHD, XSJ) +HPC = (VCM, FCJ) +PGJ = (QNL, QNL) +TLH = (FHS, NFG) +MMH = (RLF, QTT) +JXR = (JQV, TVN) +LDH = (MQK, QCL) +SQS = (CGJ, CFS) +VNV = (RBC, MLK) +BML = (TDX, XHC) +MGL = (QXC, LLH) +FXH = (GDC, NTV) +NLD = (MGH, PLX) +HJV = (FPL, RTL) +PLG = (DDR, PNN) +KPH = (TMR, DXP) +LRM = (HMB, MQC) +TRT = (NPC, GFR) +HTL = (SPT, QLX) +VPP = (TTC, LJJ) +FPG = (CNS, MJB) +KJN = (JGK, RRR) +PVV = (QTQ, GJC) +VPQ = (NHS, QRB) +DCC = (LHS, DGL) +KBH = (QJH, RLR) +PFP = (BDN, FDX) +KSV = (LSB, PBK) +NTS = (SCS, SNB) +HTP = (QMM, VCL) +BPC = (QHR, CSB) +XPM = (PHS, TSH) +PQM = (RKM, PDB) +DFC = (CVH, VKJ) +HMP = (KTS, KNG) +PHB = (VXB, DNR) +MTB = (CNX, RTS) +MJD = (QTT, RLF) +HNM = (GJP, GJP) +QLP = (TCN, RRG) +JPD = (VHR, PSM) +KBN = (MLK, RBC) +LDR = (SHT, HDT) +NTH = (QNG, HVG) +RCP = (HBD, GPD) +SGX = (HXN, KJN) +XDK = (JFQ, MDQ) +LLQ = (VSX, FTS) +TXT = (QFL, TGB) +NRR = (VFF, GKM) +DGL = (DXC, RQL) +KKJ = (MGC, TCC) +QJQ = (QBP, LSF) +CPQ = (CSS, SKQ) +TFN = (VDL, QGK) +TVK = (SNV, TMK) +HJC = (KCS, MHQ) +VKJ = (KJK, BRQ) +HQH = (CRX, LRM) +PVJ = (VVV, PRX) +HHS = (SHT, HDT) +XDN = (MKC, KRM) +XGB = (FQH, TKM) +HXG = (XLT, GKX) +NMC = (QRB, NHS) +MFF = (GND, LHG) +JGT = (VPP, GCL) +LLX = (NXR, CQM) +BVK = (GKV, VMV) +NDV = (THG, THG) +CKN = (TPR, VMD) +FTK = (KQG, GHQ) +SGZ = (VXV, GBB) +KFN = (PJB, CKN) +DQM = (HBG, KTB) +LNJ = (MMB, BBM) +JJP = (VBJ, FXP) +XFS = (JSB, LSD) +GBB = (XTV, TLQ) +BJS = (SNB, SCS) +JNJ = (QHG, QHG) +TRJ = (XMX, JMD) +TVG = (HDH, STL) +AAA = (MRC, BFN) +BNV = (CSS, SKQ) +JHQ = (QFJ, SDH) +BVX = (NFB, VFG) +NDP = (VBH, NFJ) +NTD = (QFH, SXX) +NVL = (QRG, HTG) +VDP = (GRC, NCT) +MLK = (VTV, QTV) +JPX = (RDF, LVH) +PBD = (HGV, HGV) +RCF = (DFC, JXJ) +CVJ = (VVV, PRX) +DTL = (HNM, MMM) +VCX = (MFR, HQC) +VFF = (DFV, GLK) +MQK = (TVK, JLJ) +TKJ = (XFH, MTS) +SBX = (KMD, NDM) +VXV = (TLQ, XTV) +GRQ = (MGC, TCC) +NTV = (QSM, SST) +LVX = (BHF, CMX) +QXC = (XDQ, VLV) +QCL = (JLJ, TVK) +QXA = (GBB, VXV) +RKV = (PQQ, PQH) +QLD = (MNT, MNT) +LBQ = (TQJ, FCX) +NXT = (JVD, LVS) +CPX = (VFG, NFB) +KQG = (LNJ, CRT) +GHB = (TRQ, TLH) +TRF = (PDB, RKM) +SHQ = (JPQ, RKS) +NBD = (FCH, RJD) +CSG = (JPK, CPV) +DNR = (MGK, DPF) +TMX = (MGL, HBN) +KMD = (LVV, GPP) +TLV = (JNJ, FPR) +MCN = (DJD, FGF) +BSZ = (MFF, DJG) +GMV = (RSQ, HLN) +LCT = (KTV, BCC) +KPQ = (MPP, XQD) +VBH = (FXL, CJB) +NDK = (SCQ, FLR) +VTX = (PNN, DDR) +HGV = (DJG, MFF) +TRG = (BVG, SQB) +THG = (PGJ, PGJ) +SDB = (CMK, FTK) +NTM = (SLD, FRS) +KMJ = (PBM, SXJ) +MTM = (LLQ, HQS) +NFP = (GPD, HBD) +TKM = (NCC, TRG) +XMT = (PQQ, PQH) +THL = (TRC, KFN) +CPV = (JXP, DPD) +GVX = (HNT, MMN) +XSJ = (CJT, RMX) +HMB = (PCV, SHQ) +SRJ = (VDD, RST) +STT = (KGV, VNG) +LSH = (KPK, MTK) +CHD = (XQQ, CTF) +NFV = (GVX, FHK) +XDS = (PLJ, CHD) +BVP = (VKC, PNS) +VFJ = (GVN, XNN) +TSC = (JCN, SQS) +RGF = (GJG, QTG) +VMD = (PVJ, CVJ) +GPR = (GCB, VKP) +PNN = (CPK, QFP) +DKD = (PBM, SXJ) +FSJ = (QNG, HVG) +KGV = (SMV, DKC) +LSM = (DBR, DBR) +QLR = (LKJ, STN) +FLR = (GPR, HVJ) +NHC = (BCC, KTV) +LQS = (XML, LBQ) +NNM = (GGH, BXS) +FNF = (HQC, MFR) +MTS = (FTG, CNB) +FBB = (RCF, LXP) +JGK = (QGN, TJF) +SHR = (LQR, SBX) +QHD = (CJT, RMX) +LXF = (NRT, KFR) +PGR = (SPT, QLX) +PLJ = (CTF, XQQ) +DPF = (CSG, NMV) +MDQ = (DSR, ZZZ) +NLP = (HXN, KJN) +SJJ = (HTL, PGR) +GDQ = (SKV, HXP) +BPF = (KDC, BFD) +SXJ = (LKM, VPM) +VDJ = (NGJ, TCK) +JCN = (CGJ, CFS) +BJM = (KPK, MTK) +XLT = (LSM, GQF) +KHB = (VRV, VHX) +RKS = (STP, GLH) +CLT = (FLQ, RBD) +MMB = (FDL, CPL) +HVJ = (GCB, VKP) +LTX = (SRB, QVD) +KLN = (CKV, LCC) +PCS = (BKN, SGZ) +HDH = (HJC, GTL) +VBJ = (MTM, MHR) +QMK = (PLR, TLV) +THK = (QJH, RLR) +VHX = (JCG, GJM) +GKM = (DFV, GLK) +FXL = (KMJ, DKD) +LSD = (SKT, MDD) +FGF = (VDP, NGN) +TSL = (DGL, LHS) +VCT = (BDL, SVD) +MDD = (KRQ, NXT) +SML = (SGX, NLP) +FTG = (SFD, MQG) +QMM = (SQP, FPP) +TXM = (TCN, RRG) +LVB = (LDH, SMN) +KSX = (HGM, NNM) +LSF = (VPG, CXT) +LQQ = (LMF, NSC) +FRS = (XFS, HXH) +KTB = (NBP, VKT) +JJD = (HBG, KTB) +DFX = (XGR, MLH) +BBM = (CPL, FDL) +PQQ = (JXR, VLL) +DXC = (NDT, PMB) +KTT = (JBB, SJJ) +SFH = (NTH, FSJ) +XPL = (XFH, MTS) +CCD = (STL, HDH) +RTS = (KFQ, FTV) +MPM = (RTT, KRZ) +XBC = (PCF, DFJ) +HVX = (BMS, DBN) +SDH = (KGC, LXF) +HHF = (VMV, GKV) +FQM = (CCD, TVG) +LCC = (QLD, DLJ) +GCF = (VFJ, VGF) +HTG = (PHQ, THX) +CMK = (KQG, GHQ) +NFR = (GJX, TRT) +DTG = (HLN, RSQ) +VXB = (MGK, DPF) +NCC = (SQB, BVG) +CFS = (MPB, QMK) +VKN = (THG, BBV) +PQH = (VLL, JXR) +KDC = (DTF, VTN) +CDT = (PQG, GXT) +HVQ = (QNL, NVZ) +KTS = (VTK, DTL) +FCJ = (KBR, DFX) +CDX = (NGJ, TCK) +DCK = (VHR, PSM) +RNJ = (FGL, TSP) +NDX = (XML, LBQ) +DPD = (LVX, FJQ) +CGX = (KBJ, JJP) +TCK = (NFP, RCP) +JFQ = (DSR, DSR) +PCV = (RKS, JPQ) +HBQ = (GNR, SDB) +PSH = (FGV, KPH) +MHR = (HQS, LLQ) +SCQ = (HVJ, GPR) +SPT = (FHT, RLL) +GJX = (NPC, GFR) +CTF = (QGR, LLX) +LCS = (LMP, NDL) +RGH = (GCQ, JCT) +BBV = (PGJ, HVQ) +KFB = (MCM, RLH) +VHR = (VKM, LSR) +FJD = (XTH, SML) +FQH = (TRG, NCC) +NPC = (GPM, GLD) +DJD = (NGN, VDP) +XRH = (XBC, CNJ) +LMN = (LQR, SBX) +QFP = (NRX, TMX) +KPC = (MBS, MQV) +NMV = (CPV, JPK) +LBN = (GDN, PFB) +GCB = (BPF, CPC) +MDS = (FQM, XQX) +MRC = (NVL, PVP) +GFG = (RQS, CJM) +MCF = (DNQ, VJT) +VHQ = (KFN, TRC) +XFH = (FTG, CNB) +SRB = (FQP, DPP) +NBP = (HHF, BVK) +BQS = (GNN, QJM) +NDT = (MTB, JCB) +LPG = (SPK, TXF) +RST = (GHB, DRN) +HBN = (QXC, LLH) +LGK = (CMB, BVP) +QFJ = (KGC, LXF) +TTC = (KHC, MSV) +QHR = (LDF, HXG) +VKC = (VTS, FTF) +FTV = (CGX, NKT) +PCR = (THK, KBH) +NRX = (MGL, HBN) +SKV = (TQH, GFH) +FPR = (QHG, FMK) +PQG = (LCT, NHC) +BHD = (MVV, HNR) +XGJ = (VCL, QMM) +ZZZ = (BFN, MRC) +BLH = (GVL, CPD) +HJT = (BDN, FDX) +PBM = (LKM, VPM) +TRQ = (FHS, NFG) +JKR = (TGB, QFL) +JQV = (LCS, CNP) +SXX = (DCC, TSL) +CMB = (PNS, VKC) +MCM = (RNJ, LQX) +GLH = (FRL, CMN) +DNQ = (SLG, XGB) +FPP = (HDS, LQQ) +DMS = (BMS, DBN) +CNS = (SFH, NDC) +VTV = (KHB, BMQ) +HNR = (PBD, HTD) +GNN = (CPX, BVX) +KPK = (TDM, XPV) +GXJ = (GDD, HKN) +MFN = (VNG, KGV) +BVG = (XFL, HMP) +QRX = (QQX, DSP) +VTN = (XPL, TKJ) +QFH = (TSL, DCC) +GND = (PSH, SJM) +LVH = (PLH, TML) +QJM = (CPX, BVX) +NQQ = (VDL, QGK) +LQR = (KMD, NDM) +HXP = (TQH, GFH) +RSQ = (QKM, CCF) +PVP = (QRG, HTG) +RCB = (DRB, PQK) +SJM = (KPH, FGV) +CNP = (NDL, LMP) +LRN = (NNX, RCB) +SMV = (JKR, TXT) +HDS = (NSC, LMF) +VHD = (NTV, GDC) +TDM = (DQM, JJD) +BLP = (BRL, LNX) +JLK = (FPL, RTL) +FPL = (NTM, NFK) +FXP = (MTM, MHR) +LXP = (DFC, JXJ) +GQF = (DBR, XDK) +QKM = (HHS, LDR) +STN = (RPQ, JPX) +BSB = (PLX, MGH) +DPP = (TDN, TSC) +VMV = (QPR, GXG) +FQP = (TDN, TSC) +BPN = (GJX, TRT) +RLL = (XMT, RKV) +CJT = (VBG, NTD) +MQV = (LTF, KKG) \ No newline at end of file diff --git a/python/inputs/day8_1_ex.txt b/python/inputs/day8_1_ex.txt new file mode 100644 index 0000000..34ffa8a --- /dev/null +++ b/python/inputs/day8_1_ex.txt @@ -0,0 +1,5 @@ +LLR + +AAA = (BBB, BBB) +BBB = (AAA, ZZZ) +ZZZ = (ZZZ, ZZZ) \ No newline at end of file diff --git a/python/inputs/day8_2_ex.txt b/python/inputs/day8_2_ex.txt new file mode 100644 index 0000000..5b3fa58 --- /dev/null +++ b/python/inputs/day8_2_ex.txt @@ -0,0 +1,10 @@ +LR + +11A = (11B, XXX) +11B = (XXX, 11Z) +11Z = (11B, XXX) +22A = (22B, XXX) +22B = (22C, 22C) +22C = (22Z, 22Z) +22Z = (22B, 22B) +XXX = (XXX, XXX) diff --git a/python/inputs/test.txt b/python/inputs/test.txt index 694fe36..6940427 100644 --- a/python/inputs/test.txt +++ b/python/inputs/test.txt @@ -1,3 +1,19 @@ -Game 1: 2 blue, 3 red; 3 green, 3 blue, 6 red; 4 blue, 6 red; 2 green, 2 blue, 9 red; 2 red, 4 blue -Game 2: 4 red, 1 green; 3 red; 13 green, 5 red, 3 blue; 3 green, 2 red; 3 blue, 5 red, 3 green; 2 red, 3 blue, 12 green -Game 3: 4 red, 1 green, 1 blue; 1 red, 1 blue; 6 red, 1 green; 6 red, 3 blue, 1 green; 4 red \ No newline at end of file +2345A 1 +Q2KJJ 13 +Q2Q2Q 19 +T3T3J 17 +T3Q33 11 +2345J 3 +J345A 2 +32T3K 5 +T55J5 29 +KK677 7 +KTJJT 34 +QQQJA 31 +JJJJJ 37 +JAAAA 43 +AAAAJ 59 +AAAAA 61 +2AAAA 23 +2JJJJ 53 +JJJJ2 41 \ No newline at end of file