Compare commits
No commits in common. '8d1f106d4ec2d288c65d56276b49f4195452d1e9' and 'master' have entirely different histories.
8d1f106d4e
...
master
@ -0,0 +1 @@
|
|||||||
|
.idea
|
@ -1,8 +0,0 @@
|
|||||||
ToDo
|
|
||||||
=====
|
|
||||||
|
|
||||||
- Day 1 Part 2
|
|
||||||
|
|
||||||
- Day 5 Part 2
|
|
||||||
|
|
||||||
- Day 7 Part 2
|
|
@ -1,41 +0,0 @@
|
|||||||
lines = open('inputs/day1.txt').readlines()
|
|
||||||
digit_names = ["one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
|
|
||||||
replaced_names = ['o1e', 't2o', 't3e', 'f4r', 'f5e', 's6x', 's7n', 'e8h', 'n9e']
|
|
||||||
|
|
||||||
def digits(lines: list[str]) -> list[int]:
|
|
||||||
dgts = []
|
|
||||||
for line in lines:
|
|
||||||
numbers = ''
|
|
||||||
for char in line:
|
|
||||||
if char.isdigit():
|
|
||||||
numbers += char
|
|
||||||
break
|
|
||||||
for char in line[::-1]:
|
|
||||||
if char.isdigit():
|
|
||||||
numbers += char
|
|
||||||
break
|
|
||||||
dgts.append(int(numbers))
|
|
||||||
return dgts
|
|
||||||
|
|
||||||
def transform_digits(lines: list[str]) -> list[str]:
|
|
||||||
newlines = []
|
|
||||||
for line in lines:
|
|
||||||
indices = {}
|
|
||||||
for idx, c in enumerate(digit_names):
|
|
||||||
c_loc = line.find(c)
|
|
||||||
if c_loc != -1:
|
|
||||||
indices[str(c_loc)] = str(idx+1)
|
|
||||||
if len(indices) == 0:
|
|
||||||
newlines.append(line)
|
|
||||||
else:
|
|
||||||
first_index = sorted(indices)[0]
|
|
||||||
first_number = replaced_names[int(indices[first_index])-1]
|
|
||||||
first_digit_name = digit_names[int(indices[first_index])-1]
|
|
||||||
second_index = sorted(indices)[-1]
|
|
||||||
second_number = replaced_names[int(indices[second_index])-1]
|
|
||||||
second_digit_name = digit_names[int(indices[second_index])-1]
|
|
||||||
newlines.append(line.replace(first_digit_name, first_number).replace(second_digit_name, second_number))
|
|
||||||
return newlines
|
|
||||||
|
|
||||||
print(f'Part 1 Solution = {sum(digits(lines))}')
|
|
||||||
print(f'Part 2 Solution = {sum(digits(transform_digits(lines)))}')
|
|
@ -0,0 +1,11 @@
|
|||||||
|
f = open("input.txt", "r")
|
||||||
|
lines = f.readlines()
|
||||||
|
current = 0
|
||||||
|
calories = []
|
||||||
|
for line in lines:
|
||||||
|
if line == "\n":
|
||||||
|
calories.append(current)
|
||||||
|
current = 0
|
||||||
|
else:
|
||||||
|
current = current + int(line)
|
||||||
|
print(max(calories))
|
@ -0,0 +1,11 @@
|
|||||||
|
f = open("input.txt", "r")
|
||||||
|
lines = f.readlines()
|
||||||
|
current = 0
|
||||||
|
calories = []
|
||||||
|
for line in lines:
|
||||||
|
if line == "\n":
|
||||||
|
calories.append(current)
|
||||||
|
current = 0
|
||||||
|
else:
|
||||||
|
current = current + int(line)
|
||||||
|
print(sum(sorted(calories)[-3:]))
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,146 @@
|
|||||||
|
addx 15
|
||||||
|
addx -11
|
||||||
|
addx 6
|
||||||
|
addx -3
|
||||||
|
addx 5
|
||||||
|
addx -1
|
||||||
|
addx -8
|
||||||
|
addx 13
|
||||||
|
addx 4
|
||||||
|
noop
|
||||||
|
addx -1
|
||||||
|
addx 5
|
||||||
|
addx -1
|
||||||
|
addx 5
|
||||||
|
addx -1
|
||||||
|
addx 5
|
||||||
|
addx -1
|
||||||
|
addx 5
|
||||||
|
addx -1
|
||||||
|
addx -35
|
||||||
|
addx 1
|
||||||
|
addx 24
|
||||||
|
addx -19
|
||||||
|
addx 1
|
||||||
|
addx 16
|
||||||
|
addx -11
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 21
|
||||||
|
addx -15
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -3
|
||||||
|
addx 9
|
||||||
|
addx 1
|
||||||
|
addx -3
|
||||||
|
addx 8
|
||||||
|
addx 1
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -36
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
addx 7
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx 6
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 7
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx -13
|
||||||
|
addx 13
|
||||||
|
addx 7
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
addx -33
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 8
|
||||||
|
noop
|
||||||
|
addx -1
|
||||||
|
addx 2
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 17
|
||||||
|
addx -9
|
||||||
|
addx 1
|
||||||
|
addx 1
|
||||||
|
addx -3
|
||||||
|
addx 11
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -13
|
||||||
|
addx -19
|
||||||
|
addx 1
|
||||||
|
addx 3
|
||||||
|
addx 26
|
||||||
|
addx -30
|
||||||
|
addx 12
|
||||||
|
addx -1
|
||||||
|
addx 3
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -9
|
||||||
|
addx 18
|
||||||
|
addx 1
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 9
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -1
|
||||||
|
addx 2
|
||||||
|
addx -37
|
||||||
|
addx 1
|
||||||
|
addx 3
|
||||||
|
noop
|
||||||
|
addx 15
|
||||||
|
addx -21
|
||||||
|
addx 22
|
||||||
|
addx -6
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx -10
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 20
|
||||||
|
addx 1
|
||||||
|
addx 2
|
||||||
|
addx 2
|
||||||
|
addx -6
|
||||||
|
addx -11
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
@ -0,0 +1,6 @@
|
|||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx -5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
@ -0,0 +1,26 @@
|
|||||||
|
lines = open('input.txt', "r").read().splitlines()
|
||||||
|
|
||||||
|
cycle = 0
|
||||||
|
x = 1
|
||||||
|
signals = [20, 60, 100, 140, 180, 220]
|
||||||
|
strengths = []
|
||||||
|
for line in lines:
|
||||||
|
cmd = line.split(" ")
|
||||||
|
if len(signals) == 0:
|
||||||
|
signals.append(9999999)
|
||||||
|
elif cycle == signals[0]:
|
||||||
|
strengths.append(x *cycle)
|
||||||
|
signals.pop(0)
|
||||||
|
elif cycle + 1 == signals[0]:
|
||||||
|
strengths.append(x * (cycle+1))
|
||||||
|
signals.pop(0)
|
||||||
|
elif cycle + 2 == signals[0]:
|
||||||
|
strengths.append(x * (cycle+2))
|
||||||
|
signals.pop(0)
|
||||||
|
if cmd[0] == "noop":
|
||||||
|
cycle += 1
|
||||||
|
else:
|
||||||
|
cycle += 2
|
||||||
|
x += int(cmd[1])
|
||||||
|
print(sum(strengths))
|
||||||
|
|
@ -0,0 +1,29 @@
|
|||||||
|
lines = open('input.txt', "r").read().splitlines()
|
||||||
|
|
||||||
|
cycle = 0
|
||||||
|
x = 1
|
||||||
|
end = [40, 80, 120, 160, 200, 240]
|
||||||
|
registers = [999999 for y in range(240)]
|
||||||
|
for line in lines:
|
||||||
|
cmd = line.split(" ")
|
||||||
|
registers[cycle] = x
|
||||||
|
if cmd[0] == "noop":
|
||||||
|
cycle += 1
|
||||||
|
else:
|
||||||
|
registers[cycle+1] = x
|
||||||
|
cycle += 2
|
||||||
|
x += int(cmd[1])
|
||||||
|
|
||||||
|
pixel_pos = 0
|
||||||
|
screen = ""
|
||||||
|
for r in range(len(registers)):
|
||||||
|
if r in end:
|
||||||
|
screen += "\n"
|
||||||
|
pixel_pos = 0
|
||||||
|
if pixel_pos in [registers[r]-1, registers[r], registers[r]+1]:
|
||||||
|
screen += "#"
|
||||||
|
else:
|
||||||
|
screen += "."
|
||||||
|
pixel_pos += 1
|
||||||
|
|
||||||
|
print(screen)
|
@ -0,0 +1,146 @@
|
|||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
addx -2
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 7
|
||||||
|
addx 15
|
||||||
|
addx -14
|
||||||
|
addx 2
|
||||||
|
addx 7
|
||||||
|
noop
|
||||||
|
addx -2
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx 4
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx -40
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx 15
|
||||||
|
noop
|
||||||
|
addx -10
|
||||||
|
addx 3
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx -15
|
||||||
|
addx 20
|
||||||
|
addx -2
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx 3
|
||||||
|
addx -2
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx -38
|
||||||
|
addx 3
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -2
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx -2
|
||||||
|
noop
|
||||||
|
addx 7
|
||||||
|
noop
|
||||||
|
addx 10
|
||||||
|
addx -5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -15
|
||||||
|
addx 22
|
||||||
|
addx 3
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx -37
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 13
|
||||||
|
addx -10
|
||||||
|
noop
|
||||||
|
addx -5
|
||||||
|
addx 10
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx -6
|
||||||
|
addx 11
|
||||||
|
addx -2
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx 3
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx -2
|
||||||
|
noop
|
||||||
|
addx 6
|
||||||
|
addx -22
|
||||||
|
addx 23
|
||||||
|
addx -38
|
||||||
|
noop
|
||||||
|
addx 7
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 9
|
||||||
|
addx -8
|
||||||
|
addx 2
|
||||||
|
addx 7
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx -4
|
||||||
|
addx 5
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
addx -26
|
||||||
|
addx 31
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
noop
|
||||||
|
addx -40
|
||||||
|
addx 7
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx 4
|
||||||
|
noop
|
||||||
|
addx -1
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 4
|
||||||
|
addx 3
|
||||||
|
noop
|
||||||
|
addx -24
|
||||||
|
noop
|
@ -0,0 +1,27 @@
|
|||||||
|
Monkey 0:
|
||||||
|
Starting items: 79, 98
|
||||||
|
Operation: new = old * 19
|
||||||
|
Test: divisible by 23
|
||||||
|
If true: throw to monkey 2
|
||||||
|
If false: throw to monkey 3
|
||||||
|
|
||||||
|
Monkey 1:
|
||||||
|
Starting items: 54, 65, 75, 74
|
||||||
|
Operation: new = old + 6
|
||||||
|
Test: divisible by 19
|
||||||
|
If true: throw to monkey 2
|
||||||
|
If false: throw to monkey 0
|
||||||
|
|
||||||
|
Monkey 2:
|
||||||
|
Starting items: 79, 60, 97
|
||||||
|
Operation: new = old * old
|
||||||
|
Test: divisible by 13
|
||||||
|
If true: throw to monkey 1
|
||||||
|
If false: throw to monkey 3
|
||||||
|
|
||||||
|
Monkey 3:
|
||||||
|
Starting items: 74
|
||||||
|
Operation: new = old + 3
|
||||||
|
Test: divisible by 17
|
||||||
|
If true: throw to monkey 0
|
||||||
|
If false: throw to monkey 1
|
@ -0,0 +1,71 @@
|
|||||||
|
lines = open('input.txt', 'r').read().split("\n\n")
|
||||||
|
lines = [line.splitlines() for line in lines]
|
||||||
|
|
||||||
|
class Monkey:
|
||||||
|
def __init__(self, index, items, operator, mul, div, true, false):
|
||||||
|
self.index = index
|
||||||
|
self.items = items
|
||||||
|
self.operator = operator
|
||||||
|
self.mul = mul
|
||||||
|
self.div = div
|
||||||
|
self.true = true
|
||||||
|
self.false = false
|
||||||
|
self.activity = 0
|
||||||
|
|
||||||
|
def business(self):
|
||||||
|
throwing = []
|
||||||
|
at = []
|
||||||
|
for idx, item in enumerate(self.items):
|
||||||
|
worry = self.op(idx)
|
||||||
|
worry = worry // 3
|
||||||
|
target = self.true if self.test(worry) else self.false
|
||||||
|
throwing.append(worry)
|
||||||
|
at.append(target)
|
||||||
|
self.items = []
|
||||||
|
return (throwing, at)
|
||||||
|
def op(self, itemindex):
|
||||||
|
if self.mul == "old":
|
||||||
|
mult = int(self.items[itemindex])
|
||||||
|
else:
|
||||||
|
mult = int(self.mul)
|
||||||
|
if self.operator == "*":
|
||||||
|
worry = self.items[itemindex] * mult
|
||||||
|
else:
|
||||||
|
worry = self.items[itemindex] + mult
|
||||||
|
self.activity += 1
|
||||||
|
return worry
|
||||||
|
def test(self, worrylevel):
|
||||||
|
if worrylevel % self.div == 0:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
monkeys = []
|
||||||
|
for l in lines:
|
||||||
|
index = l[0].split(" ")[1][:-1]
|
||||||
|
items = [int(i) for i in l[1].split(":")[1].replace(",","").split(" ")[1:]]
|
||||||
|
operation, mul = l[2].split(" ")[-2:]
|
||||||
|
divisor = int(l[3].split(" ")[-1])
|
||||||
|
true = int(l[4].split(" ")[-1])
|
||||||
|
false = int(l[5].split(" ")[-1])
|
||||||
|
monkeys.append(Monkey(index, items, operation,mul, divisor, true, false))
|
||||||
|
|
||||||
|
|
||||||
|
for round in range(20):
|
||||||
|
#print(round)
|
||||||
|
for monkey in monkeys:
|
||||||
|
if len(monkey.items) == 0:
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
items, targets = monkey.business()
|
||||||
|
for i in range(len(items)):
|
||||||
|
monkeys[targets[i]].items.append(items[i])
|
||||||
|
|
||||||
|
active = []
|
||||||
|
for m in monkeys:
|
||||||
|
active.append(m.activity)
|
||||||
|
|
||||||
|
active = sorted(active)
|
||||||
|
|
||||||
|
print(active[-1] * active[-2])
|
@ -0,0 +1,77 @@
|
|||||||
|
lines = open('input.txt', 'r').read().split("\n\n")
|
||||||
|
lines = [line.splitlines() for line in lines]
|
||||||
|
|
||||||
|
def product(lst):
|
||||||
|
p = 1
|
||||||
|
for i in lst:
|
||||||
|
p *= i
|
||||||
|
return p
|
||||||
|
class Monkey:
|
||||||
|
def __init__(self, index, items, operator, mul, div, true, false):
|
||||||
|
self.index = index
|
||||||
|
self.items = items
|
||||||
|
self.operator = operator
|
||||||
|
self.mul = mul
|
||||||
|
self.div = div
|
||||||
|
self.true = true
|
||||||
|
self.false = false
|
||||||
|
self.activity = 0
|
||||||
|
|
||||||
|
def business(self):
|
||||||
|
throwing = []
|
||||||
|
at = []
|
||||||
|
for idx, item in enumerate(self.items):
|
||||||
|
worry = self.op(idx)
|
||||||
|
mod = product([m.div for m in monkeys])
|
||||||
|
worry = worry % mod
|
||||||
|
target = self.true if self.test(worry) else self.false
|
||||||
|
throwing.append(worry)
|
||||||
|
at.append(target)
|
||||||
|
self.items = []
|
||||||
|
return (throwing, at)
|
||||||
|
def op(self, itemindex):
|
||||||
|
if self.mul == "old":
|
||||||
|
mult = int(self.items[itemindex])
|
||||||
|
else:
|
||||||
|
mult = int(self.mul)
|
||||||
|
if self.operator == "*":
|
||||||
|
worry = self.items[itemindex] * mult
|
||||||
|
else:
|
||||||
|
worry = self.items[itemindex] + mult
|
||||||
|
self.activity += 1
|
||||||
|
return worry
|
||||||
|
def test(self, worrylevel):
|
||||||
|
if worrylevel % self.div == 0:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
monkeys = []
|
||||||
|
for l in lines:
|
||||||
|
index = l[0].split(" ")[1][:-1]
|
||||||
|
items = [int(i) for i in l[1].split(":")[1].replace(",","").split(" ")[1:]]
|
||||||
|
operation, mul = l[2].split(" ")[-2:]
|
||||||
|
divisor = int(l[3].split(" ")[-1])
|
||||||
|
true = int(l[4].split(" ")[-1])
|
||||||
|
false = int(l[5].split(" ")[-1])
|
||||||
|
monkeys.append(Monkey(index, items, operation,mul, divisor, true, false))
|
||||||
|
|
||||||
|
|
||||||
|
for round in range(10000):
|
||||||
|
print(round)
|
||||||
|
for monkey in monkeys:
|
||||||
|
if len(monkey.items) == 0:
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
items, targets = monkey.business()
|
||||||
|
for i in range(len(items)):
|
||||||
|
monkeys[targets[i]].items.append(items[i])
|
||||||
|
|
||||||
|
active = []
|
||||||
|
for m in monkeys:
|
||||||
|
active.append(m.activity)
|
||||||
|
|
||||||
|
active = sorted(active)
|
||||||
|
print(active)
|
||||||
|
print(active[-1] * active[-2])
|
@ -0,0 +1,55 @@
|
|||||||
|
Monkey 0:
|
||||||
|
Starting items: 77, 69, 76, 77, 50, 58
|
||||||
|
Operation: new = old * 11
|
||||||
|
Test: divisible by 5
|
||||||
|
If true: throw to monkey 1
|
||||||
|
If false: throw to monkey 5
|
||||||
|
|
||||||
|
Monkey 1:
|
||||||
|
Starting items: 75, 70, 82, 83, 96, 64, 62
|
||||||
|
Operation: new = old + 8
|
||||||
|
Test: divisible by 17
|
||||||
|
If true: throw to monkey 5
|
||||||
|
If false: throw to monkey 6
|
||||||
|
|
||||||
|
Monkey 2:
|
||||||
|
Starting items: 53
|
||||||
|
Operation: new = old * 3
|
||||||
|
Test: divisible by 2
|
||||||
|
If true: throw to monkey 0
|
||||||
|
If false: throw to monkey 7
|
||||||
|
|
||||||
|
Monkey 3:
|
||||||
|
Starting items: 85, 64, 93, 64, 99
|
||||||
|
Operation: new = old + 4
|
||||||
|
Test: divisible by 7
|
||||||
|
If true: throw to monkey 7
|
||||||
|
If false: throw to monkey 2
|
||||||
|
|
||||||
|
Monkey 4:
|
||||||
|
Starting items: 61, 92, 71
|
||||||
|
Operation: new = old * old
|
||||||
|
Test: divisible by 3
|
||||||
|
If true: throw to monkey 2
|
||||||
|
If false: throw to monkey 3
|
||||||
|
|
||||||
|
Monkey 5:
|
||||||
|
Starting items: 79, 73, 50, 90
|
||||||
|
Operation: new = old + 2
|
||||||
|
Test: divisible by 11
|
||||||
|
If true: throw to monkey 4
|
||||||
|
If false: throw to monkey 6
|
||||||
|
|
||||||
|
Monkey 6:
|
||||||
|
Starting items: 50, 89
|
||||||
|
Operation: new = old + 3
|
||||||
|
Test: divisible by 13
|
||||||
|
If true: throw to monkey 4
|
||||||
|
If false: throw to monkey 3
|
||||||
|
|
||||||
|
Monkey 7:
|
||||||
|
Starting items: 83, 56, 64, 58, 93, 91, 56, 65
|
||||||
|
Operation: new = old + 5
|
||||||
|
Test: divisible by 19
|
||||||
|
If true: throw to monkey 1
|
||||||
|
If false: throw to monkey 0
|
@ -0,0 +1,5 @@
|
|||||||
|
Sabqponm
|
||||||
|
abcryxxl
|
||||||
|
accszExk
|
||||||
|
acctuvwj
|
||||||
|
abdefghi
|
@ -0,0 +1,89 @@
|
|||||||
|
lines = open("input.txt", "r").read().splitlines()
|
||||||
|
|
||||||
|
relief = []
|
||||||
|
s = None
|
||||||
|
e = None
|
||||||
|
for i, line in enumerate(lines):
|
||||||
|
els = []
|
||||||
|
for j, letter in enumerate(line):
|
||||||
|
if letter == "S":
|
||||||
|
els.append(1)
|
||||||
|
s = (i, j)
|
||||||
|
elif letter == "E":
|
||||||
|
els.append(26)
|
||||||
|
e = (i, j)
|
||||||
|
else:
|
||||||
|
els.append(ord(letter) - 96)
|
||||||
|
relief.append(els)
|
||||||
|
|
||||||
|
|
||||||
|
class Node:
|
||||||
|
def __init__(self, x, y):
|
||||||
|
self.x = x
|
||||||
|
self.y = y
|
||||||
|
self.g = 999999
|
||||||
|
self.h = (e[0] - self.x) + (e[1] - self.y)
|
||||||
|
|
||||||
|
self.parent = None
|
||||||
|
|
||||||
|
def f(self):
|
||||||
|
return self.g + self.h
|
||||||
|
|
||||||
|
def get_children(self):
|
||||||
|
children = []
|
||||||
|
if self.x != 0 and relief[self.x][self.y] + 1 >= relief[self.x - 1][self.y]:
|
||||||
|
children.append(Node(self.x - 1, self.y))
|
||||||
|
if (
|
||||||
|
self.x != len(relief) - 1
|
||||||
|
and relief[self.x][self.y] + 1 >= relief[self.x + 1][self.y]
|
||||||
|
):
|
||||||
|
children.append(Node(self.x + 1, self.y))
|
||||||
|
if self.y != 0 and relief[self.x][self.y] + 1 >= relief[self.x][self.y - 1]:
|
||||||
|
children.append(Node(self.x, self.y - 1))
|
||||||
|
if (
|
||||||
|
self.y != len(relief[0]) - 1
|
||||||
|
and relief[self.x][self.y] + 1 >= relief[self.x][self.y + 1]
|
||||||
|
):
|
||||||
|
children.append(Node(self.x, self.y + 1))
|
||||||
|
return children
|
||||||
|
|
||||||
|
|
||||||
|
def a_star_search(start, goal):
|
||||||
|
start_node = Node(start[0], start[1])
|
||||||
|
start_node.g = 0
|
||||||
|
openSet = [start_node]
|
||||||
|
while len(openSet) > 0:
|
||||||
|
current_index, current_node = get_smallest_f(openSet)
|
||||||
|
if current_node.x == goal[0] and current_node.y == goal[1]:
|
||||||
|
return current_node.g
|
||||||
|
openSet.pop(current_index)
|
||||||
|
for child in current_node.get_children():
|
||||||
|
tentative_gScore = current_node.g + 1
|
||||||
|
if tentative_gScore < child.g:
|
||||||
|
child.parent = current_node
|
||||||
|
child.g = tentative_gScore
|
||||||
|
if not_in_set(child, openSet):
|
||||||
|
openSet.append(child)
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def get_smallest_f(openset):
|
||||||
|
smallest = 999999
|
||||||
|
smallest_node = None
|
||||||
|
smallest_idx = 99999
|
||||||
|
for idx, node in enumerate(openset):
|
||||||
|
if node.f() < smallest:
|
||||||
|
smallest = node.f()
|
||||||
|
smallest_node = node
|
||||||
|
smallest_idx = idx
|
||||||
|
return smallest_idx, smallest_node
|
||||||
|
|
||||||
|
|
||||||
|
def not_in_set(node, openset):
|
||||||
|
for n in openset:
|
||||||
|
if n.x == node.x and n.y == node.y:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
print(a_star_search(s, e))
|
@ -0,0 +1,75 @@
|
|||||||
|
lines = open("input.txt", "r").read().splitlines()
|
||||||
|
|
||||||
|
relief = []
|
||||||
|
starting_points = []
|
||||||
|
points = []
|
||||||
|
s = None
|
||||||
|
e = None
|
||||||
|
for i, line in enumerate(lines):
|
||||||
|
els = []
|
||||||
|
for j, letter in enumerate(line):
|
||||||
|
if letter == "a":
|
||||||
|
starting_points.append((i, j))
|
||||||
|
if letter == "S":
|
||||||
|
els.append(1)
|
||||||
|
s = (i, j)
|
||||||
|
starting_points.append((i, j))
|
||||||
|
elif letter == "E":
|
||||||
|
els.append(26)
|
||||||
|
e = (i, j)
|
||||||
|
else:
|
||||||
|
els.append(ord(letter) - 96)
|
||||||
|
points.append((i, j))
|
||||||
|
relief.append(els)
|
||||||
|
|
||||||
|
|
||||||
|
def neighbours(node):
|
||||||
|
n = []
|
||||||
|
if node[0] > 0 and relief[node[0]][node[1]] + 1 >= relief[node[0] - 1][node[1]]:
|
||||||
|
n.append((node[0] - 1, node[1]))
|
||||||
|
if (
|
||||||
|
node[0] < len(relief) - 1
|
||||||
|
and relief[node[0]][node[1]] + 1 >= relief[node[0] + 1][node[1]]
|
||||||
|
):
|
||||||
|
n.append((node[0] + 1, node[1]))
|
||||||
|
if node[1] > 0 and relief[node[0]][node[1]] + 1 >= relief[node[0]][node[1] - 1]:
|
||||||
|
n.append((node[0], node[1] - 1))
|
||||||
|
if (
|
||||||
|
node[1] < len(relief[0]) - 1
|
||||||
|
and relief[node[0]][node[1]] + 1 >= relief[node[0]][node[1] + 1]
|
||||||
|
):
|
||||||
|
n.append((node[0], node[1] + 1))
|
||||||
|
return n
|
||||||
|
|
||||||
|
|
||||||
|
def h(node):
|
||||||
|
return abs(e[0] - node[0]) + abs(e[1] - node[1])
|
||||||
|
|
||||||
|
|
||||||
|
def a_star_search(start, goal):
|
||||||
|
queue = [start]
|
||||||
|
gscore = {x: 9999999 for x in points}
|
||||||
|
gscore[start] = 0
|
||||||
|
fscore = {x: 9999999 for x in points}
|
||||||
|
fscore[start] = h(start)
|
||||||
|
while len(queue) > 0:
|
||||||
|
queue = sorted({x: fscore[x] for x in queue}, key=lambda x: x[1])
|
||||||
|
current = queue.pop(0)
|
||||||
|
if current[0] == goal[0] and current[1] == goal[1]:
|
||||||
|
return fscore[current]
|
||||||
|
for n in neighbours(current):
|
||||||
|
newg = gscore[current] + 1
|
||||||
|
if newg < gscore[n]:
|
||||||
|
gscore[n] = newg
|
||||||
|
fscore[n] = newg + h(n)
|
||||||
|
if n not in queue:
|
||||||
|
queue.append(n)
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
scenic = []
|
||||||
|
for starting_point in starting_points:
|
||||||
|
scene = a_star_search(starting_point, e)
|
||||||
|
if scene is not None:
|
||||||
|
scenic.append(scene)
|
||||||
|
print(sorted(scenic)[0])
|
@ -0,0 +1,41 @@
|
|||||||
|
abaaaaacaaaacccccccccaaaaaaccccccccccccccccccccccccccccccccccaaaaaa
|
||||||
|
abaaaaacaaaaccccaaaaaaaaaacccccccccccccccccccccccccccccccccccaaaaaa
|
||||||
|
abaaacccaaaaccccaaaaaaaaaaacccaacccccccccccaacccccccccccccccccaaaaa
|
||||||
|
abaaaacccaacccccaaaaaaaaaaaaaaaaacccccccccccacccccccccccccccccccaaa
|
||||||
|
abacaacccccccccccaaaaaaaaaaaaaaaaccccccccccaacccccccccccccccccccaaa
|
||||||
|
abcccacccccccccccaaaaaaaccaaaaaaaccccccccccclllcccccacccccccccccaac
|
||||||
|
abccccccccccccccccaaaaaccccccccccccccccccclllllllcccccccccccccccccc
|
||||||
|
abaaacccccccccccccaaaaaccccccccccccccccaakklllllllcccccccccaacccccc
|
||||||
|
abaaacccccccccccacccaaaccccccccccccccccakkklpppllllccddaaacaacccccc
|
||||||
|
abaaacccaaacccccaacaaaccccccccccccccccckkkkpppppllllcddddaaaacccccc
|
||||||
|
abaacccaaaacccccaaaaaccccccccccccccccckkkkpppppppllmmddddddaaaacccc
|
||||||
|
abaaaccaaaaccccccaaaaaacaaacccccccccckkkkpppuuuppplmmmmdddddaaacccc
|
||||||
|
abaaacccaaaccccaaaaaaaacaaaaccccccckkkkkoppuuuuuppqmmmmmmdddddacccc
|
||||||
|
abcccccccccccccaaaaaaaacaaaacccccjkkkkkooppuuuuuuqqqmmmmmmmddddcccc
|
||||||
|
abccccccccccccccccaaccccaaaccccjjjjkoooooouuuxuuuqqqqqqmmmmmddecccc
|
||||||
|
abacaaccccccccccccaacccccccccccjjjjoooooouuuxxxuvvqqqqqqqmmmeeecccc
|
||||||
|
abaaaacccccccacccaccccccccccccjjjjoootuuuuuuxxxyvvvvvqqqqmmmeeecccc
|
||||||
|
abaaaaacccccaaacaaacccccccccccjjjoooottuuuuuxxyyvvvvvvvqqmnneeecccc
|
||||||
|
abaaaaaccaaaaaaaaaaccccccccaccjjjooottttxxxxxxyyyyyyvvvqqnnneeecccc
|
||||||
|
abaaaccccaaaaaaaaaacccccccaaccjjjoootttxxxxxxxyyyyyyvvqqqnnneeecccc
|
||||||
|
SbcaaccccaaaaaaaaaaccccaaaaacajjjnnntttxxxxEzzzyyyyvvvrrqnnneeccccc
|
||||||
|
abcccccccaaaaaaaaaaacccaaaaaaaajjjnnntttxxxxyyyyyvvvvrrrnnneeeccccc
|
||||||
|
abcccccccaaaaaaaaaaacccccaaaaccjjjnnnnttttxxyyyyywvvrrrnnneeecccccc
|
||||||
|
abcccccccccaaaaaaccaccccaaaaaccciiinnnnttxxyyyyyyywwrrnnnneeecccccc
|
||||||
|
abccccccccccccaaacccccccaacaaaccciiinnnttxxyywwyyywwrrnnnffeccccccc
|
||||||
|
abccccccccccccaaacccccccaccaaaccciiinnnttwwwwwwwwwwwrrrnnfffccccccc
|
||||||
|
abccccccccccccccccccccccccccccccciiinnnttwwwwsswwwwwrrrnnfffccccccc
|
||||||
|
abaaaccaaccccccccccccccccccccccccciinnnttswwwssswwwwrrroofffacccccc
|
||||||
|
abaaccaaaaaacccccccccccccccccaaacciinnntssssssssssrrrrooofffacccccc
|
||||||
|
abaccccaaaaacccccccaaacccccccaaaaciinnnssssssmmssssrrrooofffacccccc
|
||||||
|
abaacaaaaaaacccccccaaaaccccccaaaaciiinmmmssmmmmmoosroooooffaaaacccc
|
||||||
|
abaaaaaaaaaaaccccccaaaaccccccaaacciiimmmmmmmmmmmoooooooofffaaaacccc
|
||||||
|
abcaaaaaaaaaaccccccaaaaccccccccccccihhmmmmmmmhggoooooooffffaaaccccc
|
||||||
|
abcccccaaacaccccccccaaccccccccccccchhhhhhhhhhhggggggggggffaaacccccc
|
||||||
|
abaccccaacccccccccccaaaccccccccccccchhhhhhhhhhgggggggggggcaaacccccc
|
||||||
|
abaaaccccaccccccccccaaaacccaacccccccchhhhhhhaaaaaggggggcccccccccccc
|
||||||
|
abaaaccccaaacaaaccccaaaacaaaacccccccccccccccaaaacccccccccccccccaaac
|
||||||
|
abaacccccaaaaaaaccccaaaaaaaaacccccccccccccccaaacccccccccccccccccaaa
|
||||||
|
abaaaccccaaaaaaccccaaaaaaaaccccccccccccccccccaacccccccccccccccccaaa
|
||||||
|
abccccccaaaaaaaaaaaaaaaaaaacccccccccccccccccaaccccccccccccccccaaaaa
|
||||||
|
abcccccaaaaaaaaaaaaaaaaaaaaacccccccccccccccccccccccccccccccccaaaaaa
|
@ -0,0 +1,23 @@
|
|||||||
|
[1,1,3,1,1]
|
||||||
|
[1,1,5,1,1]
|
||||||
|
|
||||||
|
[[1],[2,3,4]]
|
||||||
|
[[1],4]
|
||||||
|
|
||||||
|
[9]
|
||||||
|
[[8,7,6]]
|
||||||
|
|
||||||
|
[[4,4],4,4]
|
||||||
|
[[4,4],4,4,4]
|
||||||
|
|
||||||
|
[7,7,7,7]
|
||||||
|
[7,7,7]
|
||||||
|
|
||||||
|
[]
|
||||||
|
[3]
|
||||||
|
|
||||||
|
[[[]]]
|
||||||
|
[[]]
|
||||||
|
|
||||||
|
[1,[2,[3,[4,[5,6,7]]]],8,9]
|
||||||
|
[1,[2,[3,[4,[5,6,0]]]],8,9]
|
@ -0,0 +1,40 @@
|
|||||||
|
import ast
|
||||||
|
|
||||||
|
lines = open("input.txt", "r").read().splitlines()
|
||||||
|
|
||||||
|
order = []
|
||||||
|
|
||||||
|
|
||||||
|
def resolve(left, right):
|
||||||
|
if isinstance(left, int) and isinstance(right, list):
|
||||||
|
return resolve([left], right)
|
||||||
|
if isinstance(left, list) and isinstance(right, int):
|
||||||
|
return resolve(left, [right])
|
||||||
|
if isinstance(left, list) and isinstance(right, list):
|
||||||
|
for x, y in zip(left, right):
|
||||||
|
resolved = resolve(x, y)
|
||||||
|
if resolved is not None:
|
||||||
|
return resolved
|
||||||
|
return resolve(len(left), len(right))
|
||||||
|
if left < right:
|
||||||
|
return True
|
||||||
|
elif left > right:
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
counter = 0
|
||||||
|
for i in range(0, len(lines), 3):
|
||||||
|
left = lines[i + 0]
|
||||||
|
right = lines[i + 1]
|
||||||
|
counter += 1
|
||||||
|
left = ast.literal_eval(left)
|
||||||
|
right = ast.literal_eval(right)
|
||||||
|
|
||||||
|
right_order = resolve(left, right)
|
||||||
|
|
||||||
|
if right_order:
|
||||||
|
order.append(counter)
|
||||||
|
|
||||||
|
print(sum(order))
|
@ -0,0 +1,49 @@
|
|||||||
|
import ast
|
||||||
|
|
||||||
|
lines = open("input.txt", "r").read().splitlines()
|
||||||
|
|
||||||
|
|
||||||
|
def resolve(left, right):
|
||||||
|
if isinstance(left, int) and isinstance(right, list):
|
||||||
|
return resolve([left], right)
|
||||||
|
if isinstance(left, list) and isinstance(right, int):
|
||||||
|
return resolve(left, [right])
|
||||||
|
if isinstance(left, list) and isinstance(right, list):
|
||||||
|
for x, y in zip(left, right):
|
||||||
|
resolved = resolve(x, y)
|
||||||
|
if resolved is not None:
|
||||||
|
return resolved
|
||||||
|
return resolve(len(left), len(right))
|
||||||
|
if left < right:
|
||||||
|
return True
|
||||||
|
elif left > right:
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
ordered = []
|
||||||
|
lines.append("[[2]]")
|
||||||
|
lines.append("[[6]]")
|
||||||
|
for line in lines:
|
||||||
|
if line == "":
|
||||||
|
continue
|
||||||
|
ordered.append(ast.literal_eval(line))
|
||||||
|
|
||||||
|
sorted = False
|
||||||
|
while not sorted:
|
||||||
|
sorted = True
|
||||||
|
for i in range(len(ordered) - 1):
|
||||||
|
if not resolve(ordered[i], ordered[i + 1]):
|
||||||
|
hold = ordered[i]
|
||||||
|
ordered[i] = ordered[i + 1]
|
||||||
|
ordered[i + 1] = hold
|
||||||
|
sorted = False
|
||||||
|
|
||||||
|
signals = []
|
||||||
|
for idx, o in enumerate(ordered):
|
||||||
|
if str(o) == "[[2]]" or str(o) == "[[6]]":
|
||||||
|
signals.append(idx + 1)
|
||||||
|
|
||||||
|
print(signals)
|
||||||
|
print(signals[0] * signals[1])
|
@ -0,0 +1,449 @@
|
|||||||
|
[[[6,10,[],[8,1,6],6],[],[[1],7,1,0]],[9]]
|
||||||
|
[[[5]],[[[5],[7],[1],8],2,2,1]]
|
||||||
|
|
||||||
|
[[[3,[2,1,4],2,[],[4]],[1,[]]]]
|
||||||
|
[[1,[],[[3,8,9],9,2,[3,6,5]],[2,[7,1,3,0,9]],9],[[[4],4,7,3,[7,5,1,10]],1,[[5,10,7],[5,3,2,1],[4,5,0,10,9],[2],7],[7,8,5,[10,4,10]]],[4]]
|
||||||
|
|
||||||
|
[[3,8,0,6,[10,6,[10,0]]],[[[3,4],[7,9],[]],9],[10],[]]
|
||||||
|
[[1,10,2,3],[4],[]]
|
||||||
|
|
||||||
|
[[1,0],[[[5,3],10,[],[4]]],[[],8,9],[[2],[[6,5,10]]],[[[2,10],2]]]
|
||||||
|
[[9,[0],[],5,6],[2],[],[1,[4,[7,4,3,8,0],[1,5,1,1],[3],7],[4,10,5,[4,10]]]]
|
||||||
|
|
||||||
|
[[[[],2,[7,5,4,7,7],10],[[3],[2,8],1,6,[]],2],[[9,[3,6,5],[9,10,1,6]]],[],[[[3,10,5,6,0],[],[4,4,9,6,6],1,[8,4,7,1,0]]]]
|
||||||
|
[[1,[2,5,[10,6]],0,10],[[0,3]]]
|
||||||
|
|
||||||
|
[[9],[3],[2,4]]
|
||||||
|
[[],[],[],[]]
|
||||||
|
|
||||||
|
[[[3]],[[]],[[1,[],[6,8,5,8,8]]]]
|
||||||
|
[[],[[2,0,7],[]],[]]
|
||||||
|
|
||||||
|
[[],[[[5,5,6,0,4],[6,0,8,2]],4],[[10,3,2,3]],[[[6]]],[[]]]
|
||||||
|
[[],[[7,1,[],[2,1],7],[[9],0,5],[10,[7,6,3,7],[9,3],9]],[],[[[9,4,9,4],[5,1,1,5]]],[10,5,7,0,[[3,8],[],2]]]
|
||||||
|
|
||||||
|
[[[],[7,[],4,0,[7]],[1]],[[5,[8]]],[],[5]]
|
||||||
|
[[],[[[6,7,7],1,4,[7,6,6],0],[[2],9],[[3,4,5],2],[7],4],[[[9,1,4,0,3],[3,9,4]],[[7,8,7,10,1],9],[0],9,3],[[],[],[],[4],[[2,6,5],[5,4,8,7],[1],1]]]
|
||||||
|
|
||||||
|
[[],[[],[9,[1,8,8,7,6],2],0,[[0,0,7],[1,5,2,8,4],[8,5],0],[]],[[[10],0],2,[9,[2,10,0,5],3],1]]
|
||||||
|
[[[6,5]],[[[3],[3,3,4,5]]]]
|
||||||
|
|
||||||
|
[[3],[10],[[],[0,5,[2,2,4],8,[]],[[0,3],6,0],0]]
|
||||||
|
[[[],10,[[5,2,0]]],[10,2,9]]
|
||||||
|
|
||||||
|
[[],[[0,10,1,9],[2,[9,9]],[0,8,10,6]],[0,3,6,[[5,5,0],9,4]],[[7,[3,7]],5,4,[[8,6,0,1,10],[],[0],[],10],7]]
|
||||||
|
[[],[8,1,1]]
|
||||||
|
|
||||||
|
[[[2,[4,7,10]],3,1,[]],[],[[0,[6],4,1],2,[2,3,[5,7],9],9],[[8,[],[1],5],8,[[9],2,10,1],[[3,1],1],[[9,6,1,8]]],[3,3,4,3,[[],[10],1]]]
|
||||||
|
[[9,0,8,[[4,3,4,7,10],[8,9,6],2],[]],[9,[[1,0],9,7,9,[0,10,7]],[[8,10],[5,2,0]],4],[5,8,[7,[7,6,9,8,8]],[]],[2,[],2]]
|
||||||
|
|
||||||
|
[[],[6,5]]
|
||||||
|
[[10,5,2],[[1,8]]]
|
||||||
|
|
||||||
|
[[2,1],[9,[5]],[1,0,8,[]],[],[[4,5,[8,9,9],2,8],5,[0,[0,9],6,8],[],[3,10,4]]]
|
||||||
|
[[1,10],[]]
|
||||||
|
|
||||||
|
[[[0,9,[4]],[[7,8,9,8],[7],10]],[9]]
|
||||||
|
[[[[8,7],[2,5],8,6,9],10,7,[10],1],[6,0,0,4,0]]
|
||||||
|
|
||||||
|
[[[9,[3,4,10,8,0]],2],[[6,[0,6,10,9,10],0,[2,0,6,0],[4]],2,0],[[0],[[1,10,10]],[10,[6,5,2,9,9],[9],[8,8,7,1]],[5,5],6]]
|
||||||
|
[[[9],0,3,[[]],[[8,9,4]]],[]]
|
||||||
|
|
||||||
|
[[9],[8],[[8,5,2,4]],[],[[10,3,[8,3,3,1]],[[],0,[5,8,3,6],[]],[3]]]
|
||||||
|
[[],[[[0],[],10,[4,9]]],[[[3,2,3,2],1]]]
|
||||||
|
|
||||||
|
[[4,1,2,[[6],[8]],7],[7,0,[[7,5,3,10,7],[4,10,4,7,9]]],[0,[],[1,9],[8,2]],[7,3,[[4,3,4,0]],2,[8,[8,2,7],[3,2,0,4,6]]]]
|
||||||
|
[[],[]]
|
||||||
|
|
||||||
|
[[3,8,8,[],[[6],[9,9,1,0,3],[6,4,3]]]]
|
||||||
|
[[7,[[7,7,0],5,[1],10,10]],[2,7,[],3,[[],[5,8,7]]],[],[0,1],[[9,2,[0,1],[4,8,3,6]],[5,2,5,6],[9,[5,1,6,1,4],[8,5,9,4,9],[8,8]]]]
|
||||||
|
|
||||||
|
[[],[[8]],[8,[5,9,4,7],4,[8]],[2,[2,0],6,[[2,2,8],[9,7],10,5,[5,7]],[[9,6,0],7]]]
|
||||||
|
[[9,4],[[1,4,1,[6,9],5],4],[0,[9,7,[]]],[[[10,10],[9,2,7]],[0,6],[5,8],[]]]
|
||||||
|
|
||||||
|
[[[6,[10],[7,4,9,3]],[[],[5,0],[5,1,2,10,3],[]],3,[],3],[[],[7,8,2,10,[8,3,4,2]],1,[7,[6,3,9,6],2,4],10],[[]],[[],[[6],[5],[7],[9]]],[10,7,6,8]]
|
||||||
|
[[],[[4,[5,1,9],6,10],[[3,8,3,5,9],9,[7,6,10,9],10],[[3,7,8],9,[],8]]]
|
||||||
|
|
||||||
|
[[6,8,9,[[4,10,4,6,8]]],[],[[[],[7,6],8,[5,8,7,5],[7,3,0,1,1]],2,3],[5,10,[7,2,[5,5,2],[3],3]],[]]
|
||||||
|
[[],[1,9,8],[9],[7,[1],1]]
|
||||||
|
|
||||||
|
[[],[4,[[9,7,10],6,7]]]
|
||||||
|
[[[[6]],[[],3,0]]]
|
||||||
|
|
||||||
|
[[4,1],[],[5,3,3,[4]]]
|
||||||
|
[[[[10,7],10,[5,4,5,6,5],[8,2,5,4],[5]],[[8],[],9],[5,[2]]],[[[2,6,4],[1,5,4,10],[10,7],0,8],[6,6,[]],3,[[5,7,9,2],10],10]]
|
||||||
|
|
||||||
|
[[4,7,0,2]]
|
||||||
|
[[4,[],[2],[5,4,0],4],[[],9,[[7,1],2,9]],[10,1,[0,5,[6,2,7,1]],[[8]],[[9,9,7,8],5]],[],[[[4]],3]]
|
||||||
|
|
||||||
|
[[8,[],5,[[1],[3,5,7]]],[]]
|
||||||
|
[[[0],[5,5]]]
|
||||||
|
|
||||||
|
[[[8,[0],[0,2,6,9]],10,[],1]]
|
||||||
|
[[8,4,0],[],[7,9,[[10,4],10,10,0],[],0],[],[3,5,3]]
|
||||||
|
|
||||||
|
[[3,6,7],[4,5,6,[9,6],7]]
|
||||||
|
[[2],[[[6,6,4,5],[1,9]],[8,4,[5,5]],6,[3,[0,0,7],[3,9],[8,3,9],[2,0]]],[[[5,1,4,0,5],[10,5,9],3,2],[[4,0],[4,6],[4]]]]
|
||||||
|
|
||||||
|
[[6,4],[],[[]],[[[],1,2,0,[10,2]],6,4,5]]
|
||||||
|
[[1,[[],[3],[1,5]],[10,[],[2,8,4,10],[9,2]],[7,4,3,5,0],0]]
|
||||||
|
|
||||||
|
[[[[5,1,7],4],[]]]
|
||||||
|
[[[7,2,[]],[]],[[6],4,5,[[]],[[7,0,8],[0]]],[10,1,1,[[4,9],6,[10,2,3,9,0],[2,3,4,3]],3],[0,2,[7],5,2]]
|
||||||
|
|
||||||
|
[[4,3,[1,[9,0,8,7],1],[[],[],4,[5,7,10,6],10]],[]]
|
||||||
|
[[1,[4,5,[6,0,9,4,9],[],[1]],3,9]]
|
||||||
|
|
||||||
|
[[[],[6]]]
|
||||||
|
[[4,9,[3,[3,10,2,8],0,10,[2,3,2,10]],3,[2,[]]],[2,6],[],[6,0,5,[[6,1,3,5],5],[[3,8,1,9,10],[2],[1,4,10]]],[[[0,2],[7],[10,9,4,1],[4,2]],4,[]]]
|
||||||
|
|
||||||
|
[[[4]],[6,[[4],[8],[2],[4,0]],[4,9,[3]],[[8,10,6,10],[9]],9]]
|
||||||
|
[[[],5,[8,10],[4,[4,6,7,4],6,[4,10,5,4],[8,10,4]],8],[[[3,4,1],[1,6,6]],4,[[6,9,9],7,[],0,[1,4,7,2,1]],10,[[7,1,2],[6,3,3,8,10]]],[[[2,9,0,4,5]],[[9,0],4,[8,7]],[5,[3,9,2,8],9,[1]]],[6]]
|
||||||
|
|
||||||
|
[[[[8,10,10,1,7],[],1]]]
|
||||||
|
[[[3,3],[],[4],[]],[],[],[[],[7,8,3],10]]
|
||||||
|
|
||||||
|
[[],[0]]
|
||||||
|
[[8,[]],[6,[[1,10,7]],[2]],[],[],[[1,[],1,10],3]]
|
||||||
|
|
||||||
|
[[[6,7,4]],[2,5,[0,7,0,[],1],[10,4,[0,6],[5],[9]],[[5,7],[0,10,7,9]]],[[[1],6],[0,3,10]]]
|
||||||
|
[[[[9,0,1],7,[3,6,5,1],3,8],[[10,10],4,[4,8,1,10,2],[5,2,9]]]]
|
||||||
|
|
||||||
|
[]
|
||||||
|
[[]]
|
||||||
|
|
||||||
|
[[],[],[[[1,8,3],8,3,[9,6,1,9,1],1],[],2,4],[[0,[1,8]],8,[[5,0],[0,2,9],10,[5]],[[1],[],[9,2,1,0,7],6],5],[2,[5,7,8,[3],[1]],[[10,9,10],5,3]]]
|
||||||
|
[[2,10,6,4,[5,[]]],[0,[9,5,[2,6,10,3,8]],[]],[6,7,[[0,6,6],5,[4,3,0],[],3],6],[6,9,[[7,6,0,0,9],[9,10],7],[[],2],[4,2,7,[4],[4,6,2]]]]
|
||||||
|
|
||||||
|
[[2,5,[[2,0,5,8]],[1,[0,0,10],9,6,[1,9,3]],[[8,2,0,8,8],[9,10,3,9,7],[0]]],[6,[3,[1,2,1,7,4],[6,10,10,1],[10,0,9,7,2],8],9,8,[[],2,8,8]],[],[]]
|
||||||
|
[[4,9,[[3,1,2,5,0],5,[9,0,9,7],[8,5,7]],8],[[],2,[],[3,8]],[0,8,1,[[7,5,7,1],7,[10,9],4,8]]]
|
||||||
|
|
||||||
|
[[],[7]]
|
||||||
|
[[],[[3,[10,3,5,8]],[[0,9]],[[],10]],[[],0],[]]
|
||||||
|
|
||||||
|
[[2,9,0],[8,5],[[1,[0,1],7]],[[8,[2,9,6,4],9,[8,4],4],7]]
|
||||||
|
[[[[6,5,5,5,8],[9,1,1,0],[],[1],[2,5,2,7,10]],10]]
|
||||||
|
|
||||||
|
[[[[4,4,10,5],2,[]],[9],[[9,7],[2,0,1,1,5],0,10],10,5],[],[3,7,[9,9],4,2],[[[5,9],[],4],[[],[0,8]],[[10,4,6],7,3,[],[]]],[3,[0,2],[[0],7,[],6],3]]
|
||||||
|
[[],[9,[[6,3,2,8],[8],[2,8,0]]]]
|
||||||
|
|
||||||
|
[[[9],[[3,9,8,1,0],[3,10,7]],[5,[10,10],5,[],[1,6]],[[6,0,0,10,10]]],[],[5,[9,[1,3],[4,9,0,10],[8,5],[10]],[]],[[2,8,[5,1,6,1,4],10],6,[[4,6,6],8,[4,8,10],[10]],10,2]]
|
||||||
|
[[[[8,9,0,0],1,10],4],[6,5,0,[5,[6,0,9],[3,9,5],10,[4,8,3,6]],[]]]
|
||||||
|
|
||||||
|
[[[10],[5,[2,10,4],9,7,[6,5,10,7,6]],[9,[],[],[0,4]]]]
|
||||||
|
[[],[[9,[8],9],[[1,3,5],[5],[4,6,10,4],[7,8,10,9]],[[4,0,7,5],6,[]],[0]],[[[2,4,5,8]]],[5,[8],[[6,2,8,2,3]],[5,[],[2,0,4,1,4],[8]],6],[[8,0,6]]]
|
||||||
|
|
||||||
|
[[[],9,[[5,4]],4],[]]
|
||||||
|
[[3],[[[4,5],[2,1,8,9],[9,9,2]],6],[1,[10,4]],[10,[3],[[9],2,[10,0,8,5],4],[],8],[2,9]]
|
||||||
|
|
||||||
|
[[[2,5],7,8],[0,1,[],2]]
|
||||||
|
[[1,6],[[],9,7,0]]
|
||||||
|
|
||||||
|
[[[5,1,[3,2,6]]],[10,1,9,1],[]]
|
||||||
|
[[8,10],[],[[[8,7]],[10,[0,3,9]]],[[8,[7,3,2],[7],[2,1],[1]]],[4,0,1]]
|
||||||
|
|
||||||
|
[[[[2],[4],9,[0,1,0,1],6],[],[8,[4],5,9]],[]]
|
||||||
|
[[[5,[10,1]],[6,2,[6,4],[6,1],8]]]
|
||||||
|
|
||||||
|
[[[5],[6,0],1],[[[8,7],[1,6]]],[0,9],[],[0,0,[9,0,[],3]]]
|
||||||
|
[[[[8,10,3,0],[4],[0],[5,2,7,2],[4,7,5,5,4]],[[4,10,9,9],[1,1,4,8,0],10,[2,10]]]]
|
||||||
|
|
||||||
|
[[[[5,4,5,4,2]]],[8]]
|
||||||
|
[[[8,7,6],1,3,9,[[3,4,2,7],[],[10,10],[8,7,7,10,10]]],[5,8,3]]
|
||||||
|
|
||||||
|
[[4,[0]],[5,[5,1,1],[[2,1,6,4],[8,1,8,6,6],[10],7,1]],[],[],[5,9,3,3]]
|
||||||
|
[[6,[1,[5,1,4,8],[],[6,0,4,0,7]],9,[[6,5],[4,5,8],[4,10,8,7],[3,0],6]],[[3],[],7,9,[[6,10,1,2]]],[[],5,[[7],3,10],3]]
|
||||||
|
|
||||||
|
[[[0,[2],[8,4,4,2],[8,5,8,3,6]],[[6,4,0,8,1],[],4,[3,2]]]]
|
||||||
|
[[4],[[[6,0,1,3],[5,2,4,4],6],[[],1],[8,[]],7,[]]]
|
||||||
|
|
||||||
|
[[[[0,0],[3,4]]],[]]
|
||||||
|
[[[9,[10,0,9,10]],2],[4,6,[[8]]]]
|
||||||
|
|
||||||
|
[[],[[[8],[8,1,5],9,[9,0,1],[5,10,3,0]]],[]]
|
||||||
|
[[[1,[8,5],6,[]],[10,1,1,[2,10,4]],[],[8],[[4,10,6,3,0],[2,10],6,8,[0,10,10]]],[[[1,4,4,7,6]],9,8,[[6],4,[8,9],[0]],[[9],[4],3,3,[6,5,6,0,3]]]]
|
||||||
|
|
||||||
|
[[9],[[10,[5,2,8,0],7,[9,7,6,2,1],[5]],[9,[5,3],[4,10],[5,4,6,9]],[5,[6,8,4,4,7],[0,9,5,4],[1,0],3]],[],[[8],[[5,7,0]]]]
|
||||||
|
[[[8],[],4,9,1],[[1,[5,6,3,1],[8,6,0,5,0]],8,2,[[7,5,1]],1],[[[10,6,4],[8,6,1,4,9]],[[]],9,[7,[9,4,6],8,[6,4],7],[8,3,9,[10,6]]],[[7,8,[2],[7],[6,4,9,3]],10,[4,8,[0,6,2,1],6]]]
|
||||||
|
|
||||||
|
[[[4,1,6],3,[6,7]],[0,[6,0,[7,9,9],5],[10,2,[2,2,1,9],[4,0],[2,1]]],[[]]]
|
||||||
|
[[],[8,6,7,[9,[6,9,2,4,7],[10,0]],[]],[1,[5,3,10,[6],[8,6,3,6]],2,3],[[],[[9,3,10,0]],2,[[9,3,10,6],4],0],[[[0,5,10,9],6,[2],[1,2,2]]]]
|
||||||
|
|
||||||
|
[[[[],[8,1,5],[1,6],[2]],8],[[]],[1,5,[6],[[]]]]
|
||||||
|
[[],[[],[5,9,[3],[0,6,5],5],10,4,[8,[],6]],[8,0,[[3,4,1,10]],0]]
|
||||||
|
|
||||||
|
[[7,2],[],[[5,7,3],[],[[2,2],[],9,[2,6,7]]]]
|
||||||
|
[[[[2,9,2]]],[]]
|
||||||
|
|
||||||
|
[[4,3,10],[0,[1,9,[1,10,5]],8,[[8,6],[3,1],[9,8],1,[4,8,4,5]],3],[[[2,2],[8,5,5,2,0],3,[5]],[1,[3,10]]],[8,[[],[3,8],1]],[[]]]
|
||||||
|
[[[4,5,[],[10,3,10,4,10],8],[9],2,4,6],[[6,[10]]]]
|
||||||
|
|
||||||
|
[[[6],8,4,2],[1,[]],[[],10,[]]]
|
||||||
|
[[2,6,1],[[[7,6],7,[],[2,0],[3]]],[10],[[9],10,[7,3,[],9,7],6,9]]
|
||||||
|
|
||||||
|
[[0,6,9,[[0,10,1]]],[[[],7,3],[]],[],[8,9,2],[1,[0,8,[9,8]],[[3]],[1,7,7,1,[5,4,4,10]]]]
|
||||||
|
[[7,8,[]],[4,[8,[6,3],6],0],[2,9,7,[10]],[5,[[],0,3,[9]]],[]]
|
||||||
|
|
||||||
|
[[],[0,[7,6,[2,6],[7,2]],[4,3,6,7,8],7,1]]
|
||||||
|
[[[[3],7,[],2,[3,9,4]],[[0,4,10,8,0],0,9,[4,6,4,0],[4,6,2,8]],[[5],[2]],1,[]],[[3,7,6,7,10],[[10,3,9],[4,1,7],0],7,[0]],[3,7,6],[7,[8],7,[[0],5,9,9,1],0]]
|
||||||
|
|
||||||
|
[3,2,7,8]
|
||||||
|
[3,2,7,8,2]
|
||||||
|
|
||||||
|
[[[6,[10,3],0],4,[[1,7,9,9,10],1,3,[1,4,4,5]],[[8],[],9,9],[[6,8,9,7,3],9,[0],[2,7],0]],[3],[[10,[],6],[]],[[[9],10]]]
|
||||||
|
[[9],[10,7],[[0,[9,10,10],10],7,10]]
|
||||||
|
|
||||||
|
[[8,9,2,[],[9,7]],[[2,[7,6,2,3],8,6],[[7,7,9,4,5],[],[6,2,7,2],4,2],10,4],[4],[]]
|
||||||
|
[[10,0,[[],9,0],[[7,3,7,1],8,[0,3,8,5]]],[9,[4,0,10,9]],[]]
|
||||||
|
|
||||||
|
[[[[6,1,4,0,2],[4],[5,1,0]],[5,[1,7,2]],5,7,[[]]]]
|
||||||
|
[[],[[[],0,4],[[0,8,5,10]],[5],[4,8,10],6],[[5,10,[8,8,4,4],7,[6,8,10,7]],10,[],[[7,6],[1,8,10,10,0],2,[1],5]],[[6,[],0,2],0],[7,[[9,7,0,0,2],[3],0],9]]
|
||||||
|
|
||||||
|
[[[[1,1,8,8],5,[1],[5,3,6],[1,7,7,10,7]],10],[[1,[8,0,5,4],8],[[],6,5]]]
|
||||||
|
[[],[5,[],[6,8,5,[4]],[[4],[7,8,10,4],[6],[4,5,0]]],[3,[[3],[6,0,7,1,6],3,8,[6,10]],8,7],[[4,5,[2,8],[]],9]]
|
||||||
|
|
||||||
|
[[[7,0,7,3]],[],[6,1,[0],9]]
|
||||||
|
[[[8,10,9]],[7,[7,[],[9,3,6],[1,2,4,7]]],[0,2,[]]]
|
||||||
|
|
||||||
|
[[[[4],[7,4,6,7,1],8,6,9],6],[4,[],[1,[6,7,5],[7,7,4],8],9],[[9,10,7]]]
|
||||||
|
[[[0,[],[0,2,10]],7],[6,1,[[4,0],2,4,[10,3,5],10],9,[4]],[0],[[[6,3,4,4]],[[],[10,10],[8],9],0],[]]
|
||||||
|
|
||||||
|
[[[9,[1,2,6,6,2],[9,7,0,3,4],[5,9,10,4,0],5],7,[[5],0,[2,7,4]],[[9,6,10,5,10],8,5,[3]]]]
|
||||||
|
[[3,[4,1,7,5],[9,4,[2,6],[7,5]],[[9,0,6,6]],3],[[]],[],[5,[],9,8]]
|
||||||
|
|
||||||
|
[[0,5,[[],[8],[2,5]],4],[[1,[8,3,10],[6,3,8,1],[4,10,6,5],[9]]]]
|
||||||
|
[[0,3,2,4,4],[1,[],[[2,8]]]]
|
||||||
|
|
||||||
|
[[[[9],8],7,5,[0,[8,6]],[6,3,[10],[]]],[[1,[]],[[9,10]]],[[[10,2,10,5,5]],[],4],[[7],6]]
|
||||||
|
[[],[6,[],[],5,4],[[3,[1,5,10],7],[4,[6,4,4,0,5],[0,4,2,9]],[2,8,4,[6],[0]]],[[],[7,[4],[]]],[[],[[]],[[6,6,9],[9,5],8,[3,2,3]],[[8],6],10]]
|
||||||
|
|
||||||
|
[[[],5,1],[[[2,1,3,10],4,[],[4,1,4],10],7],[8,5,[6]],[[],0,[4,[7,1,2,4]],1,1]]
|
||||||
|
[[[[0],1],[2,[4]],[[],9,[3,7,6,2],[5,10,7,0]]],[],[[[1]],[[0,5],[0,6]],[[1,10],[0,7],[6,9,4,10]],5,[[3,6,5]]],[]]
|
||||||
|
|
||||||
|
[[[0,[0,6,7,6,3],2,[]]]]
|
||||||
|
[[7,5],[3,3,8,[8,[9,7],[2,2],[2,10,5,7],[7,1,8]]]]
|
||||||
|
|
||||||
|
[[[6,[3,4,8],[4],[1,1,1],9],3,[[7,5],4,[9,8,0],[1,6,4,10,3]],[3]],[[3,[1,5,3,3,1],9,8],6,[0,[2,10,7,3]],[7,2,[6]]],[9,4,[],[[10,4,4,10,8],7,[3,2,0,1,0]]],[[4,9]]]
|
||||||
|
[[[[7,5,9],[1,3],1,0,8],[[10,2]],5,4],[[[],4,[],6,[0,3,1,6,10]],1,2]]
|
||||||
|
|
||||||
|
[[9,9,[[],[7,5,4,3]]],[3,3,[],[4,[9,0,0,1]],8],[6],[[],6,[4,3,[],[1,7,6,9,6]]]]
|
||||||
|
[[10],[],[],[8],[9]]
|
||||||
|
|
||||||
|
[[4],[[0,[10,1],[2,7,9,4,6],3],5],[[[1,4],[3,8,10,4],8,[7,8,1,4,8],[]],3]]
|
||||||
|
[[],[3],[1,[0,[2,7,0],2,8,[3,8,6,1,8]],9],[]]
|
||||||
|
|
||||||
|
[[10],[],[[[3,9,9],[],[7,8,6,7,5],6],6,8,[4,[10,10,2,9,9],9,4,1]]]
|
||||||
|
[[6],[1,4,5,[[10,6],[],9,6]],[[0,[2,5],[5,9],7],[[0],3,1]],[[10],7],[[[8,4,2,7]],4,7]]
|
||||||
|
|
||||||
|
[[[7],1,[],[[],5,1],4],[],[0],[2,[1,[0],5],3,8],[10,[7,9,4,[2,5,1,7]],0]]
|
||||||
|
[[[],4,9,[1]],[6,10,[[9,7],[4],[0,10,6]],[1,10],8]]
|
||||||
|
|
||||||
|
[[[[],9,3,[5]],1,[4,[6,10,6,5,2],[],[6,7]],[10]],[2,[],4],[[10,8,0,[],2],[[],6,1,[5,6,8,7],[10,1,1]]],[[5,[2,9]],8,10,[7,10,[0,9],[8,5]]]]
|
||||||
|
[[[[6],0,8,2,[4,8,1,9]],[8,10,7],0],[4,[]],[9,2,[10,[]],6],[8,9,[5]],[]]
|
||||||
|
|
||||||
|
[[[[],8],[1,[4],[8,1,8,4,0],[9,7,4,1]],10,8,[[3,1],[10,0,9,10,10]]],[[]],[6,8,[[10,3],8,6,[0,9,5]],3,[]],[[6,8],1,6,[[4,10],[],5],[[3,8,6,1,1],[10]]],[[],[[7,1,3,8],0,[]]]]
|
||||||
|
[[8,[[9,9,4]],[[6,4,8,10],1,[6]],3]]
|
||||||
|
|
||||||
|
[[[[3,5],8,[0,0],2],[6,[2,5,5,7],[4,10],[6,6]],[[3,4,2,6]],[[1,7,2,6,0],[4],10,[9,2]],10]]
|
||||||
|
[[[[7,6,8,5,10],[7,0,9,8,9],5,[7,7],[2,8,1,0,5]]],[7],[],[[4,3,[2]]],[[[10,1],0,1],6]]
|
||||||
|
|
||||||
|
[[0,[[10,7,8],3,9,[10,4,2,0]],[10,7]],[0,10],[[]],[[[6,9],9],10,6,5,4],[[[],6,9],4,2]]
|
||||||
|
[[[9],[[]]],[5,[8,9,[4,9,6,6,6],1,[]],[0]],[[],5,[7,7,7,3,0]],[[8],6,4,7,[[9,4,7,8]]],[[[10,6,0,6,3],9,[7,7]],[9,1,[],9],[[3,4,10,8],5,9,2,5]]]
|
||||||
|
|
||||||
|
[[5],[]]
|
||||||
|
[[[10,[9,3,2],0,[7,10,8,0,1]]]]
|
||||||
|
|
||||||
|
[[[[],0,0,8,[5]],[8],[0,[2,7],[10]]]]
|
||||||
|
[[[[10,7,1,8],8,[],1],4,10,2],[[[9,3,10]],5,[[3,5],[4],[]]],[1]]
|
||||||
|
|
||||||
|
[[[3,[7,7,0],9],[5,[7,1],[4,5,1,1],8]],[[1],[7,5,1,9]],[[],[[5,10,0,1,5],3]]]
|
||||||
|
[[4,9,[5,[10,9,9,3,7],3,[4,1,3,3]],4,10],[],[[]],[[5,[10,3]],[[10,0,7],[2,1]],[8,[],4],4],[9,[0],[],[6,[1,9]],9]]
|
||||||
|
|
||||||
|
[[[],8,4,[1]],[[[2,1,2,1],[10]],10,7,4],[[5,8,[8,3,1,5,1],[5,6,8]],[[2,10],[]]]]
|
||||||
|
[[[9,[2,4,9],[10,5],[],3],0,[0,[],4],[8],3],[],[9,[9],2],[],[]]
|
||||||
|
|
||||||
|
[[10],[[]],[3,[],1,8,9],[0,[5,[8,7,8,6],8,[10,9,3,0]],[[],3,[8,1,7,8],2,7]]]
|
||||||
|
[[],[[4],3,[[8,8]],[],1],[],[4,0,4,[9,10]],[[9,[7,4,5],7],8,[6,[8,7,5,7,9]]]]
|
||||||
|
|
||||||
|
[[[[3,1,9,7,2]],1,3],[3,1,[[],[10,7,1,5,1]],[[2,5],[1,9,9]]],[10],[],[[[5,8,8,4,3],0,[2],[5,9]],2,2,[]]]
|
||||||
|
[[[[7]],2]]
|
||||||
|
|
||||||
|
[[7,[9,6],[[4,1,1,8],9,[]],[[],9],[0,0,[8,6,0,2]]],[[],[1]]]
|
||||||
|
[[4,7],[],[10,1,[9,0,[5,9],[0,5],7],[8,0,7],[[8,1,4,5],8]]]
|
||||||
|
|
||||||
|
[[10,[[8,10,4]],9,[]],[],[[10],7],[3,4,5,10,[[6,4,8,7,9],3,[0,5]]]]
|
||||||
|
[[9,[6,[2,8,9],3,[2],[0,1,5,0]]],[5],[[[9,8,1,9,8],[],[9,4,8],1,6],4,[3]],[[8,10,3,3,10],8,1,4],[]]
|
||||||
|
|
||||||
|
[[8],[[1,9,4],[9],0],[[],5,0],[3],[[9],3]]
|
||||||
|
[[0,5],[0,[[9,6,8]],8]]
|
||||||
|
|
||||||
|
[[1,[],[[8,10,2,5],6,[5,0,7,2,8],2]],[]]
|
||||||
|
[[6,5,10,9,[5,7,8,[2,3,9,8,10]]]]
|
||||||
|
|
||||||
|
[[],[8],[[4],[1,9,1,3],3]]
|
||||||
|
[[1,[[],[],10,[10,2],6],0,[]]]
|
||||||
|
|
||||||
|
[[[],10,[[7],[1,0,9],7]]]
|
||||||
|
[[1,2],[],[[[4,10]]],[[1,[6,9,1,0],4,[7]],4,[[8,10,0,5,5],1,6,[8,7,10,0],[5]],7]]
|
||||||
|
|
||||||
|
[[[],[5,9,[2,4,7,7],[10],7]]]
|
||||||
|
[[[1],2,[7,0,[7,9,3,5,10],6,[6,3,3,0]],[],[2,5]]]
|
||||||
|
|
||||||
|
[[],[[9,4,[5,5],[]],5,2,[6,10,10,[0,1,3],10],6],[10,[[5,3,0],[],2],[[1]],4]]
|
||||||
|
[[[[4,6,9]]],[[10,0,[8,1,5,3,6],[],10],2],[8,[[2,3,10,5,10]],[[9,1,3,3,2]],[[7,2,8],1]],[]]
|
||||||
|
|
||||||
|
[[],[[[],[],5,[1],[2,7,1,7,2]],7,9,[[6,2,3,4,0],8,2],2]]
|
||||||
|
[[],[4,2,5,[[1,3],1,[6,5],[3,5,7],[5,5,8,10,5]]],[],[]]
|
||||||
|
|
||||||
|
[[7,[2,[4,0,6,6],0],3]]
|
||||||
|
[[3,3,[[1,5]]]]
|
||||||
|
|
||||||
|
[[[[4],[5,5],[9,10,2,6],[4,2,1,4]],0,0,10,[[],[6],[3,4,4,2,6],[2,8],[]]]]
|
||||||
|
[[2,[[10],10,7,[],7],[[2,3,2,9],[2,2,8,6,2],[5,5,2,9,1]]],[[],2,8,1,[2,[4,5,9,5,1],8]],[[[]],6,[10,[6,5],[6,10,9,5,5],2]]]
|
||||||
|
|
||||||
|
[[4,[9,[3,2,2],[3,2,2,10],3,[10,8,5,2]]]]
|
||||||
|
[[0,9,8,[[2,1],[0,7,2,9,4],[6]]],[[5,9,[3],7],0,7,[0,[8,1,2],[2,10,9,3,6]],7]]
|
||||||
|
|
||||||
|
[[[1,[7,5],7],0],[2,0,4,1,7],[[2,9,4,[8,3,8],[2]]]]
|
||||||
|
[[],[[6,10],6,7],[0,9,6,4,[2,1,[5,1],[]]],[[],[[7],2,5,[6,0,6,2]],[[0,9,2,3],3]],[[[],10],0,6,8]]
|
||||||
|
|
||||||
|
[[],[],[2],[[4,[10,10]],[1],[7,3,[9,9],0],[[3,7],10,[5,1],9]]]
|
||||||
|
[[7,[[6,9]],4,6,2],[[],[],[6,6]]]
|
||||||
|
|
||||||
|
[[[10,5,10,7,7],4,3,1,3],[],[4]]
|
||||||
|
[[3,[5,2,7,[5],5],[[5]],0,2],[[],[[6,7,0],[0,8]],7,[2,0,8],[[0,2],[]]],[1,7,10,[7,3,1],[]],[4,[[9,1,10,7],[7,9,3]],[],[1,1,9,5]],[9,4,5,[[3,2,7,0],[1],7,4,6]]]
|
||||||
|
|
||||||
|
[[[[3,4,4,8],[],[5,9,10,4,3],[1]]],[2],[4,3,[],[4],[[3,3],3,[8,8],[1,4,10],[3]]],[[[0,7,10],[10,9,3,0,10],6,7,6],0,[9,4,0,0,[9,10,0,7]],[6],[]]]
|
||||||
|
[[3,[[]],0,[5],4],[6,8,10,6,[[8,1,5,5,7],3,0,[],4]]]
|
||||||
|
|
||||||
|
[[[5,4,5,8,1],6,[8,[],[0,6,0],[3,8,10,0]]]]
|
||||||
|
[[[[10,4,1,4],[2,5,9,2],[6,3,2,5,2],[],8],[10],2],[[2]]]
|
||||||
|
|
||||||
|
[[[7,[7,10,2,7],[]],[4,7,[0,10,10],4,10],[],10],[3,4,9,[],2],[[8],9,[7,[8,7,2],[2,4,6],4,[8,4,6]]]]
|
||||||
|
[[6,6,[[3],[3],[1]],8],[[9,[8,8,3,9],10]],[[5,5,4,[]],9,[]],[8,[[3],6,6],[1,[3,7],0,9,0],[[],[],9,3],[2]],[[[3],[6,6,4,9,6],[7,5],[3],8]]]
|
||||||
|
|
||||||
|
[[0,3,[7,10],[7,[7,1,5,4]]],[[7,7,10,[7,1,5]],[4,[2,3],[1],9,[]],4]]
|
||||||
|
[[4,[[3,6,10,8]],9,9],[[[6,0,9,7],[0,9,5,3],9]]]
|
||||||
|
|
||||||
|
[[[4,1],[1,1,[6,5,7],3,[9]]],[8,8,0,[6]],[0,[[8,8,4,0,0],[8,9,1,8,8],[2]]]]
|
||||||
|
[[9,1],[5,1,[[7],[6,5],[],[7]],10,3],[2,3],[1,5,[],[]]]
|
||||||
|
|
||||||
|
[[[[5,9,0,6]],[0,[9,9],0,[]],6],[[]],[[[6,4],10],10,0]]
|
||||||
|
[[],[[]],[[1,3,[7,8,6]],[[3]],8],[[[],[2,3,8,5,4]],8],[9,6,[5,[]],[9,[6,9,7,3]],9]]
|
||||||
|
|
||||||
|
[[5,3,1],[2,5,[[],1,[1,10,9,0,7],[],[]]],[5],[3,10,[[8,4],[5,7]],5],[[5,8],[[1,6,4],10,6,3,[7,5,1,8,3]],[],[[],[3,7],2,[5,7],[10,7,3]],[[5,10],1,[5,8]]]]
|
||||||
|
[[[1,[5,0],0,0],10,7,[],3],[[[0,0,6,9,0],[10,4,9,0]],3],[8]]
|
||||||
|
|
||||||
|
[[6,6,3,[6,0,10,[1,6,0,6],6]],[1,[[2,9,2,5,1],9],[6,[1],0,4,7]],[[[1,10,8]],[1,3,[2,1,10,0],10],0,8],[[[8,1,2,9,5],[4,6,10,8]],6,0,[],6]]
|
||||||
|
[[[[0,8,2,2],[9,1,5,8,6],8],1,0,[2,[0,4],[10]],[[9,4,2,3,3],[4,6,0],9,7]],[[6,[],0,[5,7,4]]]]
|
||||||
|
|
||||||
|
[[[[2],[8,9,1,3,3],[3,8,5,6],[7,3],5],[10,5,[8,0,5,7,8]],[],3],[4,[[0,4,7,4],1,[8,0,7,3],9,[10]]]]
|
||||||
|
[[[[7,1,8,1]],10,[10,[1,8,1,5],[9,9,9],[5,10,10]],5,[]],[],[],[[10],[[0,1,8]],2,[[],9,[0],5,[]]]]
|
||||||
|
|
||||||
|
[[0,0],[[],3,[[4,8,4,6],3,[1,5,0,0]]],[[],10],[[8,[5,8,7],8],2,0,[]],[8,5,[[],[]],2]]
|
||||||
|
[[10,[10],[],7,10],[[9,[10,6],2,4],[[6,9,6,0],4,7,1],[8,9,[]],[[5,3,10]],7],[8,[[5,1,1,1,5]],[[1,6,3,5]],[[4,5,7],[],3],[[7,1,5,4],[0,10,10],[1]]]]
|
||||||
|
|
||||||
|
[[6,1],[],[4,[[9,10,7,8,2],[8,2],10],3,10,[[8,8,3],4,7,[2,1,5,5,3],[8,6,7,5,0]]]]
|
||||||
|
[[[0,[4],[4],[2,5,4,7,7],5],0,[]],[]]
|
||||||
|
|
||||||
|
[[[],3,8,[[7,5,3,8,9],3,[8,10,4,7]]],[[[10],10,[0,9,3]],5,[[10,2,10,10,6],10,7,[7,4,7,9,9]]],[],[[7,[],5],9,[10,[4,9,0,2],[9]],[5,[1,10,2],[4,4],[8,2]],[[3,7,8],5,[9,2,5,5,5],[2,10,2]]],[[[9,9,9,10],[9],[10,10,9],[8]],8]]
|
||||||
|
[[],[[9,[10,7,7,4]],10],[[1,5,9,4],[[6,6,3,10],[],5],3,[[],9,[6,7,3],3,4],10],[[0,[6,8,10],10,[1]],[[2,2,5,5]]]]
|
||||||
|
|
||||||
|
[[8,0,9],[0,1,[0,1,4],0],[3,4],[[[0,1]],1,[9,5,9],[5,[3],5,[3],[2,1,6]]]]
|
||||||
|
[[[[10,3,10,2],7,3],4,[[1,5,6,4,5],[9,4,6,9],3,[9]],[[1,5,7],[4,10,7],[4,2],10,[9,6,0]]]]
|
||||||
|
|
||||||
|
[[5,5,[1,[9,6,9],4],1,0],[[[8,4],[6],5,[4,3,9,7],3]],[5,4,7,5,[]],[3,2]]
|
||||||
|
[[2],[9,[[3,7,1],[2,3,4,9],3,6,[1,2,9,0,4]],8]]
|
||||||
|
|
||||||
|
[[1],[[2,[2,2],[3,3,1,3]],1,[[8],[0,5]],[7,8]],[[[10,5],3,[9,6],2,[9,6,8,6]]],[[4],9,5],[3]]
|
||||||
|
[[6,[],[4],[[3,0,9],[4,9],[4,4,6],0,10],9]]
|
||||||
|
|
||||||
|
[[[8,7],2,[[]],6],[10,8],[1,3,8],[3],[4]]
|
||||||
|
[[7,[4,7,8,[0,2]],1],[[[10,9,9,6],9,[9],7,1],5,[[8],1,[10,4,10],6],9]]
|
||||||
|
|
||||||
|
[[[[2,5,1,8,0],10,7,[5,4,10,0]],6,6,[[4,6,7,9],2,[],[6,10,7,9]]],[[8,[8,6,10,0],4,5],6,4,[[4,2,3],8,6,3,3],[[9],[1,4,7,5,5],[4],7]],[[],[6,2,[6,5,4,6]],10,8],[3,[4,8,[0,2,10,10,9],4],[6],[[]]],[[]]]
|
||||||
|
[[[[3,7,2],10,10],6,[1,4,0,0,[]],[[0,5]]],[[0,[5,2,1,0,10]],[2],[0,[7],8,3]]]
|
||||||
|
|
||||||
|
[[],[6,5,3,6,[3,4,[7,2,9],0]],[3],[7,[[],4,[]],7,[]],[[[10,10,6],10],[[8],4,[9,9,0,10,7],4,4],9,[[1,8,10,7,4]],6]]
|
||||||
|
[[],[10,[6,2],[5,3],2],[4],[[7,[7]],8,[2,9,[10,2,0],2],[],[[7,1],1,9,[4,2]]]]
|
||||||
|
|
||||||
|
[[[],8,[9,0]],[],[4,2,[1,[1,5,7,4]]],[1,4,0,[[],5,4,9,[10,9]]],[[],[4,10,[1,10]],9,[]]]
|
||||||
|
[[[[7],[7,0,10]],[3],[[]],[]],[[[6],[],[6,0],1,[9,5]],[10,[5],[],1],[[1,8],[],9,[7],[1,8,8,8]],[],[0]],[[[]]],[1,[],[6,[],7,[5,5,2],1],8]]
|
||||||
|
|
||||||
|
[[8,[],7,[]],[5,6,[],9,[[7,9,9],1]],[3]]
|
||||||
|
[[[4,[3],[9,4,4,9],1,6],[10],2],[[0],[],[[2,3,7,2,3]],[[3,9],10,[4]]]]
|
||||||
|
|
||||||
|
[[[[2,3,9,1,6],[10],[10]],[0,9,[0,4,10],7,[3,2,7]],5]]
|
||||||
|
[[[7,[9],5],4,10,[[3,9,8],[5,6,1,0,9],9,[]]],[1,[[7],[5,10]],8,[[4,8,5],2,9]]]
|
||||||
|
|
||||||
|
[[[[3],9,2,8,[]],[10,[1,10,6],[10,7,9],4,[10]],[2,[3,6,9,6],[5,0],[3,5,10],8],4]]
|
||||||
|
[[7,[[10,10,3],1],4,[0,[8,9,6],9,[6,3,9,1,6]]],[]]
|
||||||
|
|
||||||
|
[[[8,[3,1,3,2,3],5,10],[3,2],9],[8]]
|
||||||
|
[[4,7],[],[7,6,[[10,5,0,3,4],9],7,[[0,5,9,5],7,2,[5,8]]]]
|
||||||
|
|
||||||
|
[[2,[],2],[2,[5,[2,2,10,2,4],[3,3,5,10],[6,1]],[6,[6]],2,8]]
|
||||||
|
[[[7,3,4],4,[[7],[10,6,9],[],[]],[[2,7,5],[8],[4,7,10,9,6],[]],[3,0,8]]]
|
||||||
|
|
||||||
|
[6,4,3,7,0]
|
||||||
|
[6,4,3,7]
|
||||||
|
|
||||||
|
[[[[0,2,5],9],1,8]]
|
||||||
|
[[[1,[4],[8,7,5,7,3]],10],[]]
|
||||||
|
|
||||||
|
[[8,[5,[9,1,2],5,10]]]
|
||||||
|
[[[4],7,8]]
|
||||||
|
|
||||||
|
[[7,[]]]
|
||||||
|
[[[[9,5],[2,10,6,7]],2,4,[],[10,6,8,3,8]],[[[]],9,[[2,9],10,3,6],[[1,10],[9]]]]
|
||||||
|
|
||||||
|
[[5,[[1,7,9],10],8],[[6,[7,1,9,2],10,[5],[6,4,9]],[10]]]
|
||||||
|
[[[2,8,6,[]]]]
|
||||||
|
|
||||||
|
[[9,8]]
|
||||||
|
[[3,9,[[0,2,0,3,3],[9,6,7,3,9],3,10,4]],[1,3,[[],[1,7,5],[8,4,8],0,[2,2]],9,6],[]]
|
||||||
|
|
||||||
|
[[[],[[0,4,9]],[[1,10,9,8,7],6,[5,1,6,10],4]],[[[],[9,0,2],10],[3],9,[]],[2,6],[[],1,[9,8,[5,3],[],[4]],6,10]]
|
||||||
|
[[0]]
|
||||||
|
|
||||||
|
[[1,3],[7,[],[[2,6,8,7,5],2,[],[7,0,6]]]]
|
||||||
|
[[[6,[],7,3],5,[2,[],[9,8,1,4],3]],[[[0,7]]],[10,[[6,0,1,7],[],[8,2,5],7],1],[]]
|
||||||
|
|
||||||
|
[[[],[],5,[],[[8,5,10]]],[10,[[0,3],[1],[6,3,1],[5,4,1]],4,1],[1,[],[],[[3],1,[9],5]]]
|
||||||
|
[[[7,[4,10],10,[0,3,10],6],1]]
|
||||||
|
|
||||||
|
[[[[3,4,6],7,[0,1,6,8,10],7],[[1,9,5,10]],9]]
|
||||||
|
[[[6,[2,7,5,9],0]]]
|
||||||
|
|
||||||
|
[[8]]
|
||||||
|
[[[[1,0,6],2,[3,10,1,9]],6]]
|
||||||
|
|
||||||
|
[[[7],0,[4,[4,0,7,8],[7,10,4,6,10],[]]]]
|
||||||
|
[[[10,7,[8,10,2,0,6]],6,[8,4,[8]],1,5],[8,[1,6],3]]
|
||||||
|
|
||||||
|
[[8,[7]],[7,0,0,6],[[[4,8,9,7],8,[6,0,1,3],9],1,1,10,7],[2,[7,[4,9,2,9,4],5,[10,9,5,4]],[5,[10,3,6,7],[8],[4,6],[3,1,1,5]],9,4],[4,[[8,7,2,2,0]],[[3,10]],[],[10,0,7,8]]]
|
||||||
|
[[[[5,4,9,4,9]],[[7,6,2,8],[3,9,10],2,3,9],9,[[10,2,8,2,0]]],[9,[4,[1],9],4],[],[5,5]]
|
||||||
|
|
||||||
|
[[[[8,2,4],[8,7,3]]],[7,[2,10,8,[7]]],[9,[[6,3]],[],8,6]]
|
||||||
|
[[[[],[0,1,0],[6,9,8,7,2]],[[3,1,0,10]]],[[6,[0,10],[],5,[4,2,1,6,5]],[]],[1],[3,[6,1,[6,7]],4],[[[],3,10,[10,1]],7]]
|
||||||
|
|
||||||
|
[[[10,[1]],8,5,[]],[9]]
|
||||||
|
[[[3,[1],10],[10,9]],[10],[1,9,[[7,2,1,8,7],[]],3,0]]
|
||||||
|
|
||||||
|
[[[],[[3,5,5,7,7],[9],2],[[10],0],8],[7,[[6,6,5,8],0,2,[4,7,3,5]]],[[1],2,[[2],[7,3,7]],6]]
|
||||||
|
[[],[3]]
|
||||||
|
|
||||||
|
[[4,[],[[2],[6,7],0],4],[10,[[9,4,7,6,10],[0,0,1,10,6],6,1,3]]]
|
||||||
|
[[4,1,0,1],[],[],[[1],[],[[9,10,5,0],[10,7,4],[10,9,1,10,3]]]]
|
||||||
|
|
||||||
|
[[[[4,8,8,0],[7],3,2],8,[[10,9,1]]]]
|
||||||
|
[[[1,6,[10,4,2]],1],[1,[4,[2,7],6,[7],2]],[3,9,10,9],[]]
|
||||||
|
|
||||||
|
[[[[10,1,4,6,5],[2,8,10,6],3],2,2,[6,3],[[4]]],[4,[[7,6,8,0],[4,0,3],0,[10,9]],[3,8,10],1]]
|
||||||
|
[[[2,5]],[[5,[8,7,2,0],8,[9,1,5],[9,8,0]],10,10,[9,3,[10]],3],[[2,2,7,[3,10,7,10,8],7],8],[4,0,[6,2,10],[10,3,0,[4,6,5,4,2]]]]
|
||||||
|
|
||||||
|
[[[],2],[0,6,[[2,7,7,2,4],[7,1]],6,2]]
|
||||||
|
[[3,[],[[10,2,1,5]]],[]]
|
||||||
|
|
||||||
|
[[],[8,[[5,10,5]],9]]
|
||||||
|
[[[[2,8,4],[2,0],4,6,4],2,[[10,5,10],1,[10,9,1,1]]],[2,7],[],[[[3,1,4,8,4],4,[0,5,9,3],4,[]],[],[8,2]]]
|
@ -0,0 +1,2 @@
|
|||||||
|
498,4 -> 498,6 -> 496,6
|
||||||
|
503,4 -> 502,4 -> 502,9 -> 494,9
|
@ -0,0 +1,54 @@
|
|||||||
|
lines = open("input.txt", "r").read().splitlines()
|
||||||
|
|
||||||
|
sand_source = (500, 0)
|
||||||
|
|
||||||
|
|
||||||
|
def parse_rocks(lines: list) -> list:
|
||||||
|
paths = []
|
||||||
|
for line in lines:
|
||||||
|
path = [int(c) for coord in line.split(" -> ") for c in coord.split(",")]
|
||||||
|
paths.append(path)
|
||||||
|
rocks = []
|
||||||
|
for path in paths:
|
||||||
|
for i in range(0, len(path) - 2, 2):
|
||||||
|
x1, y1 = path[i], path[i + 1]
|
||||||
|
x2, y2 = path[i + 2], path[i + 3]
|
||||||
|
xrange = range(min(x1, x2), max(x1, x2) + 1)
|
||||||
|
yrange = range(min(y1, y2), max(y1, y2) + 1)
|
||||||
|
coords = [(x, y) for x in xrange for y in yrange]
|
||||||
|
rocks = rocks + list(coords)
|
||||||
|
return list(set(rocks))
|
||||||
|
|
||||||
|
|
||||||
|
def drop_new_sand(sand, rocks, max_y):
|
||||||
|
x, y = sand_source
|
||||||
|
while True:
|
||||||
|
if y > max_y:
|
||||||
|
return sand, False
|
||||||
|
if (x, y + 1) not in rocks and (x, y + 1) not in sand:
|
||||||
|
y += 1
|
||||||
|
elif (x - 1, y + 1) not in rocks and (x - 1, y + 1) not in sand:
|
||||||
|
x -= 1
|
||||||
|
y += 1
|
||||||
|
elif (x + 1, y + 1) not in rocks and (x + 1, y + 1) not in sand:
|
||||||
|
x += 1
|
||||||
|
y += 1
|
||||||
|
else:
|
||||||
|
sand.append((x, y))
|
||||||
|
break
|
||||||
|
return sand, True
|
||||||
|
|
||||||
|
|
||||||
|
def get_max_y(rocks):
|
||||||
|
max_y = sorted(rocks, key=lambda x: x[1])[-1][1]
|
||||||
|
return max_y
|
||||||
|
|
||||||
|
|
||||||
|
rocks = parse_rocks(lines)
|
||||||
|
max_y = get_max_y(rocks)
|
||||||
|
room_for_sand = True
|
||||||
|
sand = []
|
||||||
|
while room_for_sand:
|
||||||
|
sand, room_for_sand = drop_new_sand(sand, rocks, max_y)
|
||||||
|
|
||||||
|
print(len(sand))
|
@ -0,0 +1,53 @@
|
|||||||
|
lines = open("input.txt", "r").read().splitlines()
|
||||||
|
|
||||||
|
sand_source = (500, 0)
|
||||||
|
|
||||||
|
|
||||||
|
def parse_rocks(lines: list) -> list:
|
||||||
|
paths = []
|
||||||
|
for line in lines:
|
||||||
|
path = [int(c) for coord in line.split(" -> ") for c in coord.split(",")]
|
||||||
|
paths.append(path)
|
||||||
|
rocks = set()
|
||||||
|
for path in paths:
|
||||||
|
for i in range(0, len(path) - 2, 2):
|
||||||
|
x1, y1 = path[i], path[i + 1]
|
||||||
|
x2, y2 = path[i + 2], path[i + 3]
|
||||||
|
xrange = range(min(x1, x2), max(x1, x2) + 1)
|
||||||
|
yrange = range(min(y1, y2), max(y1, y2) + 1)
|
||||||
|
coords = [(x, y) for x in xrange for y in yrange]
|
||||||
|
rocks.update(coords)
|
||||||
|
return rocks
|
||||||
|
|
||||||
|
|
||||||
|
def drop_sand(rocks, max_y):
|
||||||
|
x, y = sand_source
|
||||||
|
while True:
|
||||||
|
if (x, y) in rocks:
|
||||||
|
x, y = sand_source
|
||||||
|
if (x, y + 1) not in rocks and y < max_y + 1:
|
||||||
|
y += 1
|
||||||
|
elif (x - 1, y + 1) not in rocks and y < max_y + 1:
|
||||||
|
x -= 1
|
||||||
|
y += 1
|
||||||
|
elif (x + 1, y + 1) not in rocks and y < max_y + 1:
|
||||||
|
x += 1
|
||||||
|
y += 1
|
||||||
|
else:
|
||||||
|
rocks.add((x, y))
|
||||||
|
print(len(rocks) - onlyrocks)
|
||||||
|
if (x, y) == sand_source:
|
||||||
|
break
|
||||||
|
return rocks
|
||||||
|
|
||||||
|
|
||||||
|
def get_max_y(rocks):
|
||||||
|
max_y = sorted(rocks, key=lambda x: x[1])[-1][1]
|
||||||
|
return max_y
|
||||||
|
|
||||||
|
|
||||||
|
rocks = parse_rocks(lines)
|
||||||
|
onlyrocks = len(rocks)
|
||||||
|
max_y = get_max_y(rocks)
|
||||||
|
rocksandsand = drop_sand(rocks, max_y)
|
||||||
|
print(len(rocksandsand) - onlyrocks)
|
@ -0,0 +1,138 @@
|
|||||||
|
508,146 -> 513,146
|
||||||
|
514,142 -> 519,142
|
||||||
|
483,88 -> 487,88
|
||||||
|
522,146 -> 527,146
|
||||||
|
492,90 -> 496,90
|
||||||
|
525,161 -> 525,156 -> 525,161 -> 527,161 -> 527,156 -> 527,161 -> 529,161 -> 529,154 -> 529,161 -> 531,161 -> 531,154 -> 531,161 -> 533,161 -> 533,157 -> 533,161 -> 535,161 -> 535,152 -> 535,161 -> 537,161 -> 537,160 -> 537,161
|
||||||
|
508,93 -> 508,97 -> 507,97 -> 507,101 -> 517,101 -> 517,97 -> 510,97 -> 510,93
|
||||||
|
525,161 -> 525,156 -> 525,161 -> 527,161 -> 527,156 -> 527,161 -> 529,161 -> 529,154 -> 529,161 -> 531,161 -> 531,154 -> 531,161 -> 533,161 -> 533,157 -> 533,161 -> 535,161 -> 535,152 -> 535,161 -> 537,161 -> 537,160 -> 537,161
|
||||||
|
486,86 -> 490,86
|
||||||
|
489,84 -> 493,84
|
||||||
|
507,79 -> 511,79
|
||||||
|
486,90 -> 490,90
|
||||||
|
497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,21 -> 499,23 -> 501,23 -> 501,15 -> 501,23
|
||||||
|
494,26 -> 494,27 -> 505,27
|
||||||
|
485,113 -> 489,113
|
||||||
|
525,161 -> 525,156 -> 525,161 -> 527,161 -> 527,156 -> 527,161 -> 529,161 -> 529,154 -> 529,161 -> 531,161 -> 531,154 -> 531,161 -> 533,161 -> 533,157 -> 533,161 -> 535,161 -> 535,152 -> 535,161 -> 537,161 -> 537,160 -> 537,161
|
||||||
|
507,67 -> 507,63 -> 507,67 -> 509,67 -> 509,61 -> 509,67 -> 511,67 -> 511,66 -> 511,67 -> 513,67 -> 513,60 -> 513,67 -> 515,67 -> 515,62 -> 515,67 -> 517,67 -> 517,62 -> 517,67 -> 519,67 -> 519,59 -> 519,67
|
||||||
|
517,116 -> 517,119 -> 516,119 -> 516,126 -> 527,126 -> 527,119 -> 520,119 -> 520,116
|
||||||
|
517,116 -> 517,119 -> 516,119 -> 516,126 -> 527,126 -> 527,119 -> 520,119 -> 520,116
|
||||||
|
515,53 -> 515,54 -> 524,54
|
||||||
|
498,76 -> 502,76
|
||||||
|
515,53 -> 515,54 -> 524,54
|
||||||
|
512,139 -> 512,132 -> 512,139 -> 514,139 -> 514,136 -> 514,139 -> 516,139 -> 516,135 -> 516,139
|
||||||
|
525,161 -> 525,156 -> 525,161 -> 527,161 -> 527,156 -> 527,161 -> 529,161 -> 529,154 -> 529,161 -> 531,161 -> 531,154 -> 531,161 -> 533,161 -> 533,157 -> 533,161 -> 535,161 -> 535,152 -> 535,161 -> 537,161 -> 537,160 -> 537,161
|
||||||
|
508,93 -> 508,97 -> 507,97 -> 507,101 -> 517,101 -> 517,97 -> 510,97 -> 510,93
|
||||||
|
497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,21 -> 499,23 -> 501,23 -> 501,15 -> 501,23
|
||||||
|
495,88 -> 499,88
|
||||||
|
511,43 -> 511,46 -> 510,46 -> 510,50 -> 516,50 -> 516,46 -> 515,46 -> 515,43
|
||||||
|
497,103 -> 497,104 -> 513,104 -> 513,103
|
||||||
|
505,31 -> 513,31 -> 513,30
|
||||||
|
507,67 -> 507,63 -> 507,67 -> 509,67 -> 509,61 -> 509,67 -> 511,67 -> 511,66 -> 511,67 -> 513,67 -> 513,60 -> 513,67 -> 515,67 -> 515,62 -> 515,67 -> 517,67 -> 517,62 -> 517,67 -> 519,67 -> 519,59 -> 519,67
|
||||||
|
497,109 -> 501,109
|
||||||
|
507,67 -> 507,63 -> 507,67 -> 509,67 -> 509,61 -> 509,67 -> 511,67 -> 511,66 -> 511,67 -> 513,67 -> 513,60 -> 513,67 -> 515,67 -> 515,62 -> 515,67 -> 517,67 -> 517,62 -> 517,67 -> 519,67 -> 519,59 -> 519,67
|
||||||
|
511,43 -> 511,46 -> 510,46 -> 510,50 -> 516,50 -> 516,46 -> 515,46 -> 515,43
|
||||||
|
501,79 -> 505,79
|
||||||
|
497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,21 -> 499,23 -> 501,23 -> 501,15 -> 501,23
|
||||||
|
503,34 -> 503,37 -> 495,37 -> 495,40 -> 512,40 -> 512,37 -> 505,37 -> 505,34
|
||||||
|
510,76 -> 514,76
|
||||||
|
525,161 -> 525,156 -> 525,161 -> 527,161 -> 527,156 -> 527,161 -> 529,161 -> 529,154 -> 529,161 -> 531,161 -> 531,154 -> 531,161 -> 533,161 -> 533,157 -> 533,161 -> 535,161 -> 535,152 -> 535,161 -> 537,161 -> 537,160 -> 537,161
|
||||||
|
525,161 -> 525,156 -> 525,161 -> 527,161 -> 527,156 -> 527,161 -> 529,161 -> 529,154 -> 529,161 -> 531,161 -> 531,154 -> 531,161 -> 533,161 -> 533,157 -> 533,161 -> 535,161 -> 535,152 -> 535,161 -> 537,161 -> 537,160 -> 537,161
|
||||||
|
525,161 -> 525,156 -> 525,161 -> 527,161 -> 527,156 -> 527,161 -> 529,161 -> 529,154 -> 529,161 -> 531,161 -> 531,154 -> 531,161 -> 533,161 -> 533,157 -> 533,161 -> 535,161 -> 535,152 -> 535,161 -> 537,161 -> 537,160 -> 537,161
|
||||||
|
512,139 -> 512,132 -> 512,139 -> 514,139 -> 514,136 -> 514,139 -> 516,139 -> 516,135 -> 516,139
|
||||||
|
525,161 -> 525,156 -> 525,161 -> 527,161 -> 527,156 -> 527,161 -> 529,161 -> 529,154 -> 529,161 -> 531,161 -> 531,154 -> 531,161 -> 533,161 -> 533,157 -> 533,161 -> 535,161 -> 535,152 -> 535,161 -> 537,161 -> 537,160 -> 537,161
|
||||||
|
517,116 -> 517,119 -> 516,119 -> 516,126 -> 527,126 -> 527,119 -> 520,119 -> 520,116
|
||||||
|
507,67 -> 507,63 -> 507,67 -> 509,67 -> 509,61 -> 509,67 -> 511,67 -> 511,66 -> 511,67 -> 513,67 -> 513,60 -> 513,67 -> 515,67 -> 515,62 -> 515,67 -> 517,67 -> 517,62 -> 517,67 -> 519,67 -> 519,59 -> 519,67
|
||||||
|
525,161 -> 525,156 -> 525,161 -> 527,161 -> 527,156 -> 527,161 -> 529,161 -> 529,154 -> 529,161 -> 531,161 -> 531,154 -> 531,161 -> 533,161 -> 533,157 -> 533,161 -> 535,161 -> 535,152 -> 535,161 -> 537,161 -> 537,160 -> 537,161
|
||||||
|
525,161 -> 525,156 -> 525,161 -> 527,161 -> 527,156 -> 527,161 -> 529,161 -> 529,154 -> 529,161 -> 531,161 -> 531,154 -> 531,161 -> 533,161 -> 533,157 -> 533,161 -> 535,161 -> 535,152 -> 535,161 -> 537,161 -> 537,160 -> 537,161
|
||||||
|
513,79 -> 517,79
|
||||||
|
507,67 -> 507,63 -> 507,67 -> 509,67 -> 509,61 -> 509,67 -> 511,67 -> 511,66 -> 511,67 -> 513,67 -> 513,60 -> 513,67 -> 515,67 -> 515,62 -> 515,67 -> 517,67 -> 517,62 -> 517,67 -> 519,67 -> 519,59 -> 519,67
|
||||||
|
512,139 -> 512,132 -> 512,139 -> 514,139 -> 514,136 -> 514,139 -> 516,139 -> 516,135 -> 516,139
|
||||||
|
507,67 -> 507,63 -> 507,67 -> 509,67 -> 509,61 -> 509,67 -> 511,67 -> 511,66 -> 511,67 -> 513,67 -> 513,60 -> 513,67 -> 515,67 -> 515,62 -> 515,67 -> 517,67 -> 517,62 -> 517,67 -> 519,67 -> 519,59 -> 519,67
|
||||||
|
511,43 -> 511,46 -> 510,46 -> 510,50 -> 516,50 -> 516,46 -> 515,46 -> 515,43
|
||||||
|
491,109 -> 495,109
|
||||||
|
525,161 -> 525,156 -> 525,161 -> 527,161 -> 527,156 -> 527,161 -> 529,161 -> 529,154 -> 529,161 -> 531,161 -> 531,154 -> 531,161 -> 533,161 -> 533,157 -> 533,161 -> 535,161 -> 535,152 -> 535,161 -> 537,161 -> 537,160 -> 537,161
|
||||||
|
511,43 -> 511,46 -> 510,46 -> 510,50 -> 516,50 -> 516,46 -> 515,46 -> 515,43
|
||||||
|
507,67 -> 507,63 -> 507,67 -> 509,67 -> 509,61 -> 509,67 -> 511,67 -> 511,66 -> 511,67 -> 513,67 -> 513,60 -> 513,67 -> 515,67 -> 515,62 -> 515,67 -> 517,67 -> 517,62 -> 517,67 -> 519,67 -> 519,59 -> 519,67
|
||||||
|
497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,21 -> 499,23 -> 501,23 -> 501,15 -> 501,23
|
||||||
|
525,161 -> 525,156 -> 525,161 -> 527,161 -> 527,156 -> 527,161 -> 529,161 -> 529,154 -> 529,161 -> 531,161 -> 531,154 -> 531,161 -> 533,161 -> 533,157 -> 533,161 -> 535,161 -> 535,152 -> 535,161 -> 537,161 -> 537,160 -> 537,161
|
||||||
|
512,139 -> 512,132 -> 512,139 -> 514,139 -> 514,136 -> 514,139 -> 516,139 -> 516,135 -> 516,139
|
||||||
|
512,139 -> 512,132 -> 512,139 -> 514,139 -> 514,136 -> 514,139 -> 516,139 -> 516,135 -> 516,139
|
||||||
|
492,82 -> 496,82
|
||||||
|
515,146 -> 520,146
|
||||||
|
498,90 -> 502,90
|
||||||
|
517,116 -> 517,119 -> 516,119 -> 516,126 -> 527,126 -> 527,119 -> 520,119 -> 520,116
|
||||||
|
512,139 -> 512,132 -> 512,139 -> 514,139 -> 514,136 -> 514,139 -> 516,139 -> 516,135 -> 516,139
|
||||||
|
498,86 -> 502,86
|
||||||
|
491,113 -> 495,113
|
||||||
|
512,148 -> 517,148
|
||||||
|
511,144 -> 516,144
|
||||||
|
507,67 -> 507,63 -> 507,67 -> 509,67 -> 509,61 -> 509,67 -> 511,67 -> 511,66 -> 511,67 -> 513,67 -> 513,60 -> 513,67 -> 515,67 -> 515,62 -> 515,67 -> 517,67 -> 517,62 -> 517,67 -> 519,67 -> 519,59 -> 519,67
|
||||||
|
507,67 -> 507,63 -> 507,67 -> 509,67 -> 509,61 -> 509,67 -> 511,67 -> 511,66 -> 511,67 -> 513,67 -> 513,60 -> 513,67 -> 515,67 -> 515,62 -> 515,67 -> 517,67 -> 517,62 -> 517,67 -> 519,67 -> 519,59 -> 519,67
|
||||||
|
503,34 -> 503,37 -> 495,37 -> 495,40 -> 512,40 -> 512,37 -> 505,37 -> 505,34
|
||||||
|
508,93 -> 508,97 -> 507,97 -> 507,101 -> 517,101 -> 517,97 -> 510,97 -> 510,93
|
||||||
|
512,139 -> 512,132 -> 512,139 -> 514,139 -> 514,136 -> 514,139 -> 516,139 -> 516,135 -> 516,139
|
||||||
|
503,113 -> 507,113
|
||||||
|
503,34 -> 503,37 -> 495,37 -> 495,40 -> 512,40 -> 512,37 -> 505,37 -> 505,34
|
||||||
|
525,161 -> 525,156 -> 525,161 -> 527,161 -> 527,156 -> 527,161 -> 529,161 -> 529,154 -> 529,161 -> 531,161 -> 531,154 -> 531,161 -> 533,161 -> 533,157 -> 533,161 -> 535,161 -> 535,152 -> 535,161 -> 537,161 -> 537,160 -> 537,161
|
||||||
|
497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,21 -> 499,23 -> 501,23 -> 501,15 -> 501,23
|
||||||
|
503,34 -> 503,37 -> 495,37 -> 495,40 -> 512,40 -> 512,37 -> 505,37 -> 505,34
|
||||||
|
497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,21 -> 499,23 -> 501,23 -> 501,15 -> 501,23
|
||||||
|
505,148 -> 510,148
|
||||||
|
525,161 -> 525,156 -> 525,161 -> 527,161 -> 527,156 -> 527,161 -> 529,161 -> 529,154 -> 529,161 -> 531,161 -> 531,154 -> 531,161 -> 533,161 -> 533,157 -> 533,161 -> 535,161 -> 535,152 -> 535,161 -> 537,161 -> 537,160 -> 537,161
|
||||||
|
507,67 -> 507,63 -> 507,67 -> 509,67 -> 509,61 -> 509,67 -> 511,67 -> 511,66 -> 511,67 -> 513,67 -> 513,60 -> 513,67 -> 515,67 -> 515,62 -> 515,67 -> 517,67 -> 517,62 -> 517,67 -> 519,67 -> 519,59 -> 519,67
|
||||||
|
501,88 -> 505,88
|
||||||
|
504,70 -> 508,70
|
||||||
|
508,93 -> 508,97 -> 507,97 -> 507,101 -> 517,101 -> 517,97 -> 510,97 -> 510,93
|
||||||
|
507,67 -> 507,63 -> 507,67 -> 509,67 -> 509,61 -> 509,67 -> 511,67 -> 511,66 -> 511,67 -> 513,67 -> 513,60 -> 513,67 -> 515,67 -> 515,62 -> 515,67 -> 517,67 -> 517,62 -> 517,67 -> 519,67 -> 519,59 -> 519,67
|
||||||
|
489,88 -> 493,88
|
||||||
|
517,116 -> 517,119 -> 516,119 -> 516,126 -> 527,126 -> 527,119 -> 520,119 -> 520,116
|
||||||
|
507,67 -> 507,63 -> 507,67 -> 509,67 -> 509,61 -> 509,67 -> 511,67 -> 511,66 -> 511,67 -> 513,67 -> 513,60 -> 513,67 -> 515,67 -> 515,62 -> 515,67 -> 517,67 -> 517,62 -> 517,67 -> 519,67 -> 519,59 -> 519,67
|
||||||
|
508,93 -> 508,97 -> 507,97 -> 507,101 -> 517,101 -> 517,97 -> 510,97 -> 510,93
|
||||||
|
494,107 -> 498,107
|
||||||
|
497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,21 -> 499,23 -> 501,23 -> 501,15 -> 501,23
|
||||||
|
495,79 -> 499,79
|
||||||
|
517,116 -> 517,119 -> 516,119 -> 516,126 -> 527,126 -> 527,119 -> 520,119 -> 520,116
|
||||||
|
501,73 -> 505,73
|
||||||
|
503,34 -> 503,37 -> 495,37 -> 495,40 -> 512,40 -> 512,37 -> 505,37 -> 505,34
|
||||||
|
494,111 -> 498,111
|
||||||
|
508,93 -> 508,97 -> 507,97 -> 507,101 -> 517,101 -> 517,97 -> 510,97 -> 510,93
|
||||||
|
507,67 -> 507,63 -> 507,67 -> 509,67 -> 509,61 -> 509,67 -> 511,67 -> 511,66 -> 511,67 -> 513,67 -> 513,60 -> 513,67 -> 515,67 -> 515,62 -> 515,67 -> 517,67 -> 517,62 -> 517,67 -> 519,67 -> 519,59 -> 519,67
|
||||||
|
497,113 -> 501,113
|
||||||
|
511,43 -> 511,46 -> 510,46 -> 510,50 -> 516,50 -> 516,46 -> 515,46 -> 515,43
|
||||||
|
507,67 -> 507,63 -> 507,67 -> 509,67 -> 509,61 -> 509,67 -> 511,67 -> 511,66 -> 511,67 -> 513,67 -> 513,60 -> 513,67 -> 515,67 -> 515,62 -> 515,67 -> 517,67 -> 517,62 -> 517,67 -> 519,67 -> 519,59 -> 519,67
|
||||||
|
507,67 -> 507,63 -> 507,67 -> 509,67 -> 509,61 -> 509,67 -> 511,67 -> 511,66 -> 511,67 -> 513,67 -> 513,60 -> 513,67 -> 515,67 -> 515,62 -> 515,67 -> 517,67 -> 517,62 -> 517,67 -> 519,67 -> 519,59 -> 519,67
|
||||||
|
507,73 -> 511,73
|
||||||
|
525,161 -> 525,156 -> 525,161 -> 527,161 -> 527,156 -> 527,161 -> 529,161 -> 529,154 -> 529,161 -> 531,161 -> 531,154 -> 531,161 -> 533,161 -> 533,157 -> 533,161 -> 535,161 -> 535,152 -> 535,161 -> 537,161 -> 537,160 -> 537,161
|
||||||
|
503,34 -> 503,37 -> 495,37 -> 495,40 -> 512,40 -> 512,37 -> 505,37 -> 505,34
|
||||||
|
526,148 -> 531,148
|
||||||
|
507,67 -> 507,63 -> 507,67 -> 509,67 -> 509,61 -> 509,67 -> 511,67 -> 511,66 -> 511,67 -> 513,67 -> 513,60 -> 513,67 -> 515,67 -> 515,62 -> 515,67 -> 517,67 -> 517,62 -> 517,67 -> 519,67 -> 519,59 -> 519,67
|
||||||
|
488,111 -> 492,111
|
||||||
|
508,93 -> 508,97 -> 507,97 -> 507,101 -> 517,101 -> 517,97 -> 510,97 -> 510,93
|
||||||
|
497,103 -> 497,104 -> 513,104 -> 513,103
|
||||||
|
497,103 -> 497,104 -> 513,104 -> 513,103
|
||||||
|
497,23 -> 497,15 -> 497,23 -> 499,23 -> 499,21 -> 499,23 -> 501,23 -> 501,15 -> 501,23
|
||||||
|
519,148 -> 524,148
|
||||||
|
505,31 -> 513,31 -> 513,30
|
||||||
|
495,84 -> 499,84
|
||||||
|
480,90 -> 484,90
|
||||||
|
525,161 -> 525,156 -> 525,161 -> 527,161 -> 527,156 -> 527,161 -> 529,161 -> 529,154 -> 529,161 -> 531,161 -> 531,154 -> 531,161 -> 533,161 -> 533,157 -> 533,161 -> 535,161 -> 535,152 -> 535,161 -> 537,161 -> 537,160 -> 537,161
|
||||||
|
518,144 -> 523,144
|
||||||
|
525,161 -> 525,156 -> 525,161 -> 527,161 -> 527,156 -> 527,161 -> 529,161 -> 529,154 -> 529,161 -> 531,161 -> 531,154 -> 531,161 -> 533,161 -> 533,157 -> 533,161 -> 535,161 -> 535,152 -> 535,161 -> 537,161 -> 537,160 -> 537,161
|
||||||
|
494,26 -> 494,27 -> 505,27
|
||||||
|
503,34 -> 503,37 -> 495,37 -> 495,40 -> 512,40 -> 512,37 -> 505,37 -> 505,34
|
||||||
|
500,111 -> 504,111
|
||||||
|
504,76 -> 508,76
|
||||||
|
517,116 -> 517,119 -> 516,119 -> 516,126 -> 527,126 -> 527,119 -> 520,119 -> 520,116
|
||||||
|
512,139 -> 512,132 -> 512,139 -> 514,139 -> 514,136 -> 514,139 -> 516,139 -> 516,135 -> 516,139
|
||||||
|
507,67 -> 507,63 -> 507,67 -> 509,67 -> 509,61 -> 509,67 -> 511,67 -> 511,66 -> 511,67 -> 513,67 -> 513,60 -> 513,67 -> 515,67 -> 515,62 -> 515,67 -> 517,67 -> 517,62 -> 517,67 -> 519,67 -> 519,59 -> 519,67
|
||||||
|
504,90 -> 508,90
|
||||||
|
511,43 -> 511,46 -> 510,46 -> 510,50 -> 516,50 -> 516,46 -> 515,46 -> 515,43
|
||||||
|
511,43 -> 511,46 -> 510,46 -> 510,50 -> 516,50 -> 516,46 -> 515,46 -> 515,43
|
||||||
|
525,161 -> 525,156 -> 525,161 -> 527,161 -> 527,156 -> 527,161 -> 529,161 -> 529,154 -> 529,161 -> 531,161 -> 531,154 -> 531,161 -> 533,161 -> 533,157 -> 533,161 -> 535,161 -> 535,152 -> 535,161 -> 537,161 -> 537,160 -> 537,161
|
||||||
|
525,161 -> 525,156 -> 525,161 -> 527,161 -> 527,156 -> 527,161 -> 529,161 -> 529,154 -> 529,161 -> 531,161 -> 531,154 -> 531,161 -> 533,161 -> 533,157 -> 533,161 -> 535,161 -> 535,152 -> 535,161 -> 537,161 -> 537,160 -> 537,161
|
||||||
|
507,67 -> 507,63 -> 507,67 -> 509,67 -> 509,61 -> 509,67 -> 511,67 -> 511,66 -> 511,67 -> 513,67 -> 513,60 -> 513,67 -> 515,67 -> 515,62 -> 515,67 -> 517,67 -> 517,62 -> 517,67 -> 519,67 -> 519,59 -> 519,67
|
||||||
|
507,67 -> 507,63 -> 507,67 -> 509,67 -> 509,61 -> 509,67 -> 511,67 -> 511,66 -> 511,67 -> 513,67 -> 513,60 -> 513,67 -> 515,67 -> 515,62 -> 515,67 -> 517,67 -> 517,62 -> 517,67 -> 519,67 -> 519,59 -> 519,67
|
||||||
|
507,67 -> 507,63 -> 507,67 -> 509,67 -> 509,61 -> 509,67 -> 511,67 -> 511,66 -> 511,67 -> 513,67 -> 513,60 -> 513,67 -> 515,67 -> 515,62 -> 515,67 -> 517,67 -> 517,62 -> 517,67 -> 519,67 -> 519,59 -> 519,67
|
||||||
|
525,161 -> 525,156 -> 525,161 -> 527,161 -> 527,156 -> 527,161 -> 529,161 -> 529,154 -> 529,161 -> 531,161 -> 531,154 -> 531,161 -> 533,161 -> 533,157 -> 533,161 -> 535,161 -> 535,152 -> 535,161 -> 537,161 -> 537,160 -> 537,161
|
||||||
|
492,86 -> 496,86
|
@ -0,0 +1,14 @@
|
|||||||
|
Sensor at x=2, y=18: closest beacon is at x=-2, y=15
|
||||||
|
Sensor at x=9, y=16: closest beacon is at x=10, y=16
|
||||||
|
Sensor at x=13, y=2: closest beacon is at x=15, y=3
|
||||||
|
Sensor at x=12, y=14: closest beacon is at x=10, y=16
|
||||||
|
Sensor at x=10, y=20: closest beacon is at x=10, y=16
|
||||||
|
Sensor at x=14, y=17: closest beacon is at x=10, y=16
|
||||||
|
Sensor at x=8, y=7: closest beacon is at x=2, y=10
|
||||||
|
Sensor at x=2, y=0: closest beacon is at x=2, y=10
|
||||||
|
Sensor at x=0, y=11: closest beacon is at x=2, y=10
|
||||||
|
Sensor at x=20, y=14: closest beacon is at x=25, y=17
|
||||||
|
Sensor at x=17, y=20: closest beacon is at x=21, y=22
|
||||||
|
Sensor at x=16, y=7: closest beacon is at x=15, y=3
|
||||||
|
Sensor at x=14, y=3: closest beacon is at x=15, y=3
|
||||||
|
Sensor at x=20, y=1: closest beacon is at x=15, y=3
|
@ -0,0 +1,37 @@
|
|||||||
|
lines = open("input.txt", "r").read().splitlines()
|
||||||
|
|
||||||
|
|
||||||
|
def parse_lines(lines: list) -> (set, set):
|
||||||
|
sensors = []
|
||||||
|
beacons = []
|
||||||
|
for line in lines:
|
||||||
|
_, _, sx, sy, _, _, _, _, bx, by = line.split(" ")
|
||||||
|
sensors.append([int(sx.split("=")[1][:-1]), int(sy.split("=")[1][:-1])])
|
||||||
|
beacons.append([int(bx.split("=")[1][:-1]), int(by.split("=")[1])])
|
||||||
|
return sensors, beacons
|
||||||
|
|
||||||
|
|
||||||
|
def manhatten(a, b):
|
||||||
|
return abs(a[0] - b[0]) + abs(a[1] - b[1])
|
||||||
|
|
||||||
|
|
||||||
|
critical = 2000000
|
||||||
|
sensors, beacons = parse_lines(lines)
|
||||||
|
taken = set()
|
||||||
|
critical_beacons = set(tuple(x) for x in beacons if x[1] == critical)
|
||||||
|
print(critical_beacons)
|
||||||
|
for i in range(len(sensors)):
|
||||||
|
print(i)
|
||||||
|
s = sensors[i]
|
||||||
|
b = beacons[i]
|
||||||
|
d = manhatten(s, b)
|
||||||
|
min_y, max_y = s[1] - d, s[1] + d
|
||||||
|
if min_y <= critical <= max_y:
|
||||||
|
critical_d = abs(s[1] - critical)
|
||||||
|
critical_reach = d - critical_d
|
||||||
|
taken.update(
|
||||||
|
(x, critical)
|
||||||
|
for x in range(s[0] - critical_reach, s[0] + critical_reach + 1)
|
||||||
|
)
|
||||||
|
|
||||||
|
print(len(taken) - len(critical_beacons))
|
@ -0,0 +1,68 @@
|
|||||||
|
lines = open("input.txt", "r").read().splitlines()
|
||||||
|
|
||||||
|
|
||||||
|
def parse_lines(lines: list) -> (set, set):
|
||||||
|
sensors = []
|
||||||
|
beacons = []
|
||||||
|
for line in lines:
|
||||||
|
_, _, sx, sy, _, _, _, _, bx, by = line.split(" ")
|
||||||
|
sensors.append((int(sx.split("=")[1][:-1]), int(sy.split("=")[1][:-1])))
|
||||||
|
beacons.append((int(bx.split("=")[1][:-1]), int(by.split("=")[1])))
|
||||||
|
return sensors, beacons
|
||||||
|
|
||||||
|
|
||||||
|
def manhatten(a, b):
|
||||||
|
return abs(a[0] - b[0]) + abs(a[1] - b[1])
|
||||||
|
|
||||||
|
|
||||||
|
def build_search_space(sensors, beacons):
|
||||||
|
space = set()
|
||||||
|
for sensor, beacon in zip(sensors, beacons):
|
||||||
|
space.update(sensor_diamond(sensor, beacon))
|
||||||
|
return space
|
||||||
|
|
||||||
|
|
||||||
|
def sensor_diamond(sensor, beacon):
|
||||||
|
points = set()
|
||||||
|
d = manhatten(sensor, beacon)
|
||||||
|
xr = range(d + 2)
|
||||||
|
yr = xr[::-1]
|
||||||
|
xrneg = range(0, (d + 2) * -1, -1)
|
||||||
|
yrneg = xrneg[::-1]
|
||||||
|
for x, y, xneg, yneg in zip(xr, yr, xrneg, yrneg):
|
||||||
|
points.add((sensor[0] + x, sensor[1] + y))
|
||||||
|
points.add((sensor[0] + xneg, sensor[1] + y))
|
||||||
|
points.add((sensor[0] + x, sensor[1] + yneg))
|
||||||
|
points.add((sensor[0] + xneg, sensor[1] + yneg))
|
||||||
|
return points
|
||||||
|
|
||||||
|
|
||||||
|
def search_candidates(sensors, beacons, space):
|
||||||
|
candidates = set()
|
||||||
|
counter = 0
|
||||||
|
for point in space:
|
||||||
|
is_candidate = False
|
||||||
|
if x_min <= point[0] <= x_max and y_min <= point[1] <= y_max:
|
||||||
|
is_candidate = True
|
||||||
|
for sensor, beacon in zip(sensors, beacons):
|
||||||
|
if manhatten(sensor, point) <= manhatten(sensor, beacon):
|
||||||
|
is_candidate = False
|
||||||
|
if is_candidate:
|
||||||
|
print("candidate found")
|
||||||
|
candidates.add(point)
|
||||||
|
counter += 1
|
||||||
|
if counter % 100000 == 0:
|
||||||
|
print(f"{counter} points searched")
|
||||||
|
return candidates
|
||||||
|
|
||||||
|
|
||||||
|
x_min, x_max = 0, 4000000
|
||||||
|
y_min, y_max = 0, 4000000
|
||||||
|
sensors, beacons = parse_lines(lines)
|
||||||
|
|
||||||
|
space = build_search_space(sensors, beacons)
|
||||||
|
print("space set up")
|
||||||
|
candidates = search_candidates(sensors, beacons, space)
|
||||||
|
print(candidates)
|
||||||
|
x, y = candidates.pop()
|
||||||
|
print(x * 4000000 + y)
|
@ -0,0 +1,33 @@
|
|||||||
|
Sensor at x=2302110, y=2237242: closest beacon is at x=2348729, y=1239977
|
||||||
|
Sensor at x=47903, y=2473047: closest beacon is at x=-432198, y=2000000
|
||||||
|
Sensor at x=2363579, y=1547888: closest beacon is at x=2348729, y=1239977
|
||||||
|
Sensor at x=3619841, y=520506: closest beacon is at x=2348729, y=1239977
|
||||||
|
Sensor at x=3941908, y=3526118: closest beacon is at x=3772294, y=3485243
|
||||||
|
Sensor at x=3206, y=1564595: closest beacon is at x=-432198, y=2000000
|
||||||
|
Sensor at x=3123411, y=3392077: closest beacon is at x=2977835, y=3592946
|
||||||
|
Sensor at x=3279053, y=3984688: closest beacon is at x=2977835, y=3592946
|
||||||
|
Sensor at x=2968162, y=3938490: closest beacon is at x=2977835, y=3592946
|
||||||
|
Sensor at x=1772120, y=2862246: closest beacon is at x=2017966, y=3158243
|
||||||
|
Sensor at x=3283241, y=2619168: closest beacon is at x=3172577, y=2521434
|
||||||
|
Sensor at x=2471642, y=3890150: closest beacon is at x=2977835, y=3592946
|
||||||
|
Sensor at x=3163348, y=3743489: closest beacon is at x=2977835, y=3592946
|
||||||
|
Sensor at x=2933313, y=2919047: closest beacon is at x=3172577, y=2521434
|
||||||
|
Sensor at x=2780640, y=3629927: closest beacon is at x=2977835, y=3592946
|
||||||
|
Sensor at x=3986978, y=2079918: closest beacon is at x=3998497, y=2812428
|
||||||
|
Sensor at x=315464, y=370694: closest beacon is at x=-550536, y=260566
|
||||||
|
Sensor at x=3957316, y=3968366: closest beacon is at x=3772294, y=3485243
|
||||||
|
Sensor at x=2118533, y=1074658: closest beacon is at x=2348729, y=1239977
|
||||||
|
Sensor at x=3494855, y=3378533: closest beacon is at x=3772294, y=3485243
|
||||||
|
Sensor at x=2575727, y=210553: closest beacon is at x=2348729, y=1239977
|
||||||
|
Sensor at x=3999990, y=2813525: closest beacon is at x=3998497, y=2812428
|
||||||
|
Sensor at x=3658837, y=3026912: closest beacon is at x=3998497, y=2812428
|
||||||
|
Sensor at x=1551619, y=1701155: closest beacon is at x=2348729, y=1239977
|
||||||
|
Sensor at x=2625855, y=3330422: closest beacon is at x=2977835, y=3592946
|
||||||
|
Sensor at x=3476946, y=2445098: closest beacon is at x=3172577, y=2521434
|
||||||
|
Sensor at x=2915568, y=1714113: closest beacon is at x=2348729, y=1239977
|
||||||
|
Sensor at x=729668, y=3723377: closest beacon is at x=-997494, y=3617758
|
||||||
|
Sensor at x=3631681, y=3801747: closest beacon is at x=3772294, y=3485243
|
||||||
|
Sensor at x=2270816, y=3197807: closest beacon is at x=2017966, y=3158243
|
||||||
|
Sensor at x=3999999, y=2810929: closest beacon is at x=3998497, y=2812428
|
||||||
|
Sensor at x=3978805, y=3296024: closest beacon is at x=3772294, y=3485243
|
||||||
|
Sensor at x=1054910, y=811769: closest beacon is at x=2348729, y=1239977
|
@ -0,0 +1,13 @@
|
|||||||
|
2,2,2
|
||||||
|
1,2,2
|
||||||
|
3,2,2
|
||||||
|
2,1,2
|
||||||
|
2,3,2
|
||||||
|
2,2,1
|
||||||
|
2,2,3
|
||||||
|
2,2,4
|
||||||
|
2,2,6
|
||||||
|
1,2,5
|
||||||
|
3,2,5
|
||||||
|
2,1,5
|
||||||
|
2,3,5
|
@ -0,0 +1,22 @@
|
|||||||
|
lines = open("input.txt", "r").read().splitlines()
|
||||||
|
drops = set()
|
||||||
|
for line in lines:
|
||||||
|
drop = line.split(",")
|
||||||
|
drop = (int(drop[0]), int(drop[1]), int(drop[2]))
|
||||||
|
drops.add(drop)
|
||||||
|
|
||||||
|
|
||||||
|
def check_adjacent(drop, drops):
|
||||||
|
pos = ((0, 0, 1), (0, 1, 0), (1, 0, 0), (0, 0, -1), (0, -1, 0), (-1, 0, 0))
|
||||||
|
sides = 6
|
||||||
|
for p in pos:
|
||||||
|
if (drop[0] + p[0], drop[1] + p[1], drop[2] + p[2]) in drops:
|
||||||
|
sides -= 1
|
||||||
|
return sides
|
||||||
|
|
||||||
|
|
||||||
|
s = 0
|
||||||
|
for drop in drops:
|
||||||
|
s += check_adjacent(drop, drops)
|
||||||
|
|
||||||
|
print(s)
|
@ -0,0 +1,86 @@
|
|||||||
|
import itertools
|
||||||
|
|
||||||
|
lines = open("input.txt", "r").read().splitlines()
|
||||||
|
drops = set()
|
||||||
|
for line in lines:
|
||||||
|
drop = line.split(",")
|
||||||
|
drop = (int(drop[0]), int(drop[1]), int(drop[2]))
|
||||||
|
drops.add(drop)
|
||||||
|
|
||||||
|
|
||||||
|
def check_adjacent(drop, drops):
|
||||||
|
pos = ((0, 0, 1), (0, 1, 0), (1, 0, 0), (0, 0, -1), (0, -1, 0), (-1, 0, 0))
|
||||||
|
sides = 6
|
||||||
|
for p in pos:
|
||||||
|
if (drop[0] + p[0], drop[1] + p[1], drop[2] + p[2]) in drops:
|
||||||
|
sides -= 1
|
||||||
|
return sides
|
||||||
|
|
||||||
|
|
||||||
|
def get_dims(drops):
|
||||||
|
maxx, maxy, maxz = -1, -1, -1
|
||||||
|
minx, miny, minz = 9999, 9999, 9999
|
||||||
|
for drop in drops:
|
||||||
|
if drop[0] > maxx:
|
||||||
|
maxx = drop[0]
|
||||||
|
if drop[0] < minx:
|
||||||
|
minx = drop[0]
|
||||||
|
if drop[1] > maxy:
|
||||||
|
maxy = drop[1]
|
||||||
|
if drop[1] < miny:
|
||||||
|
miny = drop[1]
|
||||||
|
if drop[2] > maxz:
|
||||||
|
maxz = drop[2]
|
||||||
|
if drop[2] < minz:
|
||||||
|
minz = drop[2]
|
||||||
|
return maxx, maxy, maxz, minx, miny, minz
|
||||||
|
|
||||||
|
|
||||||
|
def generate_full_cube(drops):
|
||||||
|
dims = get_dims(drops)
|
||||||
|
maxdims = [x + 2 for x in dims[:3]]
|
||||||
|
mindims = [x - 2 for x in dims[3:]]
|
||||||
|
ranges = [range(x, y + 1) for x, y in zip(mindims, maxdims)]
|
||||||
|
return set(itertools.product(*ranges))
|
||||||
|
|
||||||
|
|
||||||
|
def steam(drops):
|
||||||
|
dims = get_dims(drops)
|
||||||
|
maxdims = [x + 2 for x in dims[:3]]
|
||||||
|
mindims = [x - 2 for x in dims[3:]]
|
||||||
|
start = tuple((x - 1 for x in maxdims))
|
||||||
|
visited = set()
|
||||||
|
rim = set()
|
||||||
|
pos = ((0, 0, 1), (0, 1, 0), (1, 0, 0), (0, 0, -1), (0, -1, 0), (-1, 0, 0))
|
||||||
|
free = {start}
|
||||||
|
while len(free) > 0:
|
||||||
|
current = free.pop()
|
||||||
|
visited.add(current)
|
||||||
|
for p in pos:
|
||||||
|
n = (current[0] + p[0], current[1] + p[1], current[2] + p[2])
|
||||||
|
if n in drops:
|
||||||
|
rim.add(n)
|
||||||
|
elif (
|
||||||
|
maxdims[0] >= n[0] >= mindims[0]
|
||||||
|
and maxdims[1] >= n[1] >= mindims[1]
|
||||||
|
and maxdims[2] >= n[2] >= mindims[2]
|
||||||
|
and n not in visited
|
||||||
|
):
|
||||||
|
free.add(n)
|
||||||
|
return visited
|
||||||
|
|
||||||
|
|
||||||
|
steam = steam(drops)
|
||||||
|
|
||||||
|
cube = generate_full_cube(drops)
|
||||||
|
|
||||||
|
air = cube.symmetric_difference(steam.union(drops))
|
||||||
|
|
||||||
|
b = 0
|
||||||
|
for c in air:
|
||||||
|
b += 6 - (check_adjacent(c, drops))
|
||||||
|
s = 0
|
||||||
|
for d in drops:
|
||||||
|
s += check_adjacent(d, drops)
|
||||||
|
|
||||||
|
print(s - b)
|
File diff suppressed because it is too large
Load Diff
@ -1,47 +0,0 @@
|
|||||||
from math import prod
|
|
||||||
lines = open('inputs/day2.txt').readlines()
|
|
||||||
red_max = 12
|
|
||||||
green_max = 13
|
|
||||||
blue_max = 14
|
|
||||||
|
|
||||||
def cubes(lines: list) -> list[int]:
|
|
||||||
max_cubes = []
|
|
||||||
for line in lines:
|
|
||||||
line = line.strip('\n').split(":")
|
|
||||||
rounds = line[1].split(";")
|
|
||||||
reds = [0]
|
|
||||||
greens = [0]
|
|
||||||
blues = [0]
|
|
||||||
for round in rounds:
|
|
||||||
cubes = round.split(",")
|
|
||||||
for cube in cubes:
|
|
||||||
cube = cube.split(" ")
|
|
||||||
_, nr, clr = cube
|
|
||||||
if clr == "red":
|
|
||||||
reds.append(int(nr))
|
|
||||||
elif clr == "green":
|
|
||||||
greens.append(int(nr))
|
|
||||||
else:
|
|
||||||
blues.append(int(nr))
|
|
||||||
max_cubes.append([max(reds), max(greens), max(blues)])
|
|
||||||
return max_cubes
|
|
||||||
|
|
||||||
def possible_games(games: list[int]) -> list[int]:
|
|
||||||
valid_game_nrs = []
|
|
||||||
for idx, game in enumerate(games):
|
|
||||||
possible = True
|
|
||||||
if game[0] > red_max:
|
|
||||||
possible = False
|
|
||||||
if game[1] > green_max:
|
|
||||||
possible = False
|
|
||||||
if game[2] > blue_max:
|
|
||||||
possible = False
|
|
||||||
if possible:
|
|
||||||
valid_game_nrs.append(idx+1)
|
|
||||||
return valid_game_nrs
|
|
||||||
|
|
||||||
def cube_power(games: list[int]) -> list[int]:
|
|
||||||
return [prod(x) for x in games]
|
|
||||||
|
|
||||||
print(f"Solution Part 1: {sum(possible_games(cubes(lines)))}")
|
|
||||||
print(f"Solution Part 2: {sum(cube_power(cubes(lines)))}")
|
|
@ -0,0 +1,40 @@
|
|||||||
|
def score_match(x, y):
|
||||||
|
if x == "A":
|
||||||
|
if y == "X":
|
||||||
|
return 3
|
||||||
|
if y == "Y":
|
||||||
|
return 6
|
||||||
|
else:
|
||||||
|
return 0
|
||||||
|
if x == "B":
|
||||||
|
if y == "X":
|
||||||
|
return 0
|
||||||
|
if y == "Y":
|
||||||
|
return 3
|
||||||
|
else:
|
||||||
|
return 6
|
||||||
|
else:
|
||||||
|
if y == "X":
|
||||||
|
return 6
|
||||||
|
if y == "Y":
|
||||||
|
return 0
|
||||||
|
else:
|
||||||
|
return 3
|
||||||
|
|
||||||
|
|
||||||
|
def score(x):
|
||||||
|
if x == "X":
|
||||||
|
return 1
|
||||||
|
if x == "Y":
|
||||||
|
return 2
|
||||||
|
else:
|
||||||
|
return 3
|
||||||
|
|
||||||
|
|
||||||
|
f = open("input.txt", "r")
|
||||||
|
lines = f.read().splitlines()
|
||||||
|
current = 0
|
||||||
|
for line in lines:
|
||||||
|
x, y = line.split(" ")
|
||||||
|
current = current + score(y) + score_match(x, y)
|
||||||
|
print(current)
|
@ -0,0 +1,40 @@
|
|||||||
|
def score_symbol(x, y):
|
||||||
|
if x == "A":
|
||||||
|
if y == "X":
|
||||||
|
return 3
|
||||||
|
if y == "Y":
|
||||||
|
return 1
|
||||||
|
else:
|
||||||
|
return 2
|
||||||
|
if x == "B":
|
||||||
|
if y == "X":
|
||||||
|
return 1
|
||||||
|
if y == "Y":
|
||||||
|
return 2
|
||||||
|
else:
|
||||||
|
return 3
|
||||||
|
else:
|
||||||
|
if y == "X":
|
||||||
|
return 2
|
||||||
|
if y == "Y":
|
||||||
|
return 3
|
||||||
|
else:
|
||||||
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
def score_match(x):
|
||||||
|
if x == "X":
|
||||||
|
return 0
|
||||||
|
if x == "Y":
|
||||||
|
return 3
|
||||||
|
else:
|
||||||
|
return 6
|
||||||
|
|
||||||
|
|
||||||
|
f = open("input.txt", "r")
|
||||||
|
lines = f.read().splitlines()
|
||||||
|
current = 0
|
||||||
|
for line in lines:
|
||||||
|
x, y = line.split(" ")
|
||||||
|
current = current + score_symbol(x, y) + score_match(y)
|
||||||
|
print(current)
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@
|
|||||||
|
1
|
||||||
|
2
|
||||||
|
-3
|
||||||
|
3
|
||||||
|
-2
|
||||||
|
0
|
||||||
|
4
|
@ -0,0 +1,23 @@
|
|||||||
|
numbers = [int(i) for i in open("input.txt", "r").read().split()]
|
||||||
|
idx = [i for i in range(len(numbers))]
|
||||||
|
|
||||||
|
for i in range(len(idx)):
|
||||||
|
index = idx.index(i)
|
||||||
|
n = numbers[index]
|
||||||
|
if n == 0:
|
||||||
|
continue
|
||||||
|
new_index = index + n
|
||||||
|
if abs(new_index) > len(numbers) - 1:
|
||||||
|
new_index = new_index % (len(numbers) - 1)
|
||||||
|
if new_index == 0:
|
||||||
|
new_index = len(numbers) - 1
|
||||||
|
elif new_index == len(numbers) - 1:
|
||||||
|
new_index = 0
|
||||||
|
numbers.pop(index)
|
||||||
|
idx.pop(index)
|
||||||
|
numbers.insert(new_index, n)
|
||||||
|
idx.insert(new_index, i)
|
||||||
|
|
||||||
|
rotated = numbers[numbers.index(0) :] + numbers[: numbers.index(0)]
|
||||||
|
rest = [x % len(rotated) for x in [1000, 2000, 3000]]
|
||||||
|
print(sum([rotated[r] for r in rest]))
|
@ -0,0 +1,32 @@
|
|||||||
|
key = 811589153
|
||||||
|
numbers = [int(i) * key for i in open("input.txt", "r").read().split()]
|
||||||
|
idx = [i for i in range(len(numbers))]
|
||||||
|
|
||||||
|
|
||||||
|
def mix(numbers, idx):
|
||||||
|
for i in range(len(idx)):
|
||||||
|
index = idx.index(i)
|
||||||
|
n = numbers[index]
|
||||||
|
if n == 0:
|
||||||
|
continue
|
||||||
|
new_index = index + n
|
||||||
|
if abs(new_index) > len(numbers) - 1:
|
||||||
|
new_index = new_index % (len(numbers) - 1)
|
||||||
|
if new_index == 0:
|
||||||
|
new_index = len(numbers) - 1
|
||||||
|
elif new_index == len(numbers) - 1:
|
||||||
|
new_index = 0
|
||||||
|
numbers.pop(index)
|
||||||
|
idx.pop(index)
|
||||||
|
numbers.insert(new_index, n)
|
||||||
|
idx.insert(new_index, i)
|
||||||
|
# idx = idx[numbers.index(0) :] + idx[: numbers.index(0)]
|
||||||
|
return numbers, idx
|
||||||
|
|
||||||
|
|
||||||
|
for i in range(10):
|
||||||
|
numbers, idx = mix(numbers, idx)
|
||||||
|
|
||||||
|
rotated = numbers[numbers.index(0) :] + numbers[: numbers.index(0)]
|
||||||
|
rest = [x % len(rotated) for x in [1000, 2000, 3000]]
|
||||||
|
print(sum([rotated[r] for r in rest]))
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,15 @@
|
|||||||
|
root: pppw + sjmn
|
||||||
|
dbpl: 5
|
||||||
|
cczh: sllz + lgvd
|
||||||
|
zczc: 2
|
||||||
|
ptdq: humn - dvpt
|
||||||
|
dvpt: 3
|
||||||
|
lfqf: 4
|
||||||
|
humn: 5
|
||||||
|
ljgn: 2
|
||||||
|
sjmn: drzm * dbpl
|
||||||
|
sllz: 4
|
||||||
|
pppw: cczh / lfqf
|
||||||
|
lgvd: ljgn * ptdq
|
||||||
|
drzm: hmdt - zczc
|
||||||
|
hmdt: 32
|
@ -0,0 +1,40 @@
|
|||||||
|
lines = open("input.txt", "r").read().splitlines()
|
||||||
|
|
||||||
|
|
||||||
|
class Monkey:
|
||||||
|
def __init__(self, name=None, number=None, childA=None, childB=None, op=None):
|
||||||
|
self.name = name
|
||||||
|
self.number = number
|
||||||
|
self.childA = childA
|
||||||
|
self.childB = childB
|
||||||
|
self.op = op
|
||||||
|
|
||||||
|
def yell(self):
|
||||||
|
if self.number != None:
|
||||||
|
return self.number
|
||||||
|
else:
|
||||||
|
if self.op == "+":
|
||||||
|
return monkeys[self.childA].yell() + monkeys[self.childB].yell()
|
||||||
|
elif self.op == "-":
|
||||||
|
return monkeys[self.childA].yell() - monkeys[self.childB].yell()
|
||||||
|
elif self.op == "*":
|
||||||
|
return monkeys[self.childA].yell() * monkeys[self.childB].yell()
|
||||||
|
elif self.op == "/":
|
||||||
|
return monkeys[self.childA].yell() / monkeys[self.childB].yell()
|
||||||
|
|
||||||
|
|
||||||
|
monkeys = {}
|
||||||
|
|
||||||
|
for line in lines:
|
||||||
|
print(line)
|
||||||
|
name = line.split(" ")[0][:-1]
|
||||||
|
rest = line.split(" ")[1:]
|
||||||
|
if len(rest) == 1:
|
||||||
|
monkeys[name] = Monkey(name=name, number=int(rest[0]))
|
||||||
|
else:
|
||||||
|
childA = rest[0]
|
||||||
|
childB = rest[2]
|
||||||
|
op = rest[1]
|
||||||
|
monkeys[name] = Monkey(name=name, childA=childA, childB=childB, op=op)
|
||||||
|
|
||||||
|
print(int(monkeys["root"].yell()))
|
@ -0,0 +1,39 @@
|
|||||||
|
lines = open("input.txt", "r").read().splitlines()
|
||||||
|
|
||||||
|
|
||||||
|
class Monkey:
|
||||||
|
def __init__(self, name=None, number=None, childA=None, childB=None, op=None):
|
||||||
|
self.name = name
|
||||||
|
self.number = number
|
||||||
|
self.childA = childA
|
||||||
|
self.childB = childB
|
||||||
|
self.op = op
|
||||||
|
|
||||||
|
def yell(self):
|
||||||
|
if self.number != None:
|
||||||
|
return self.number
|
||||||
|
else:
|
||||||
|
if self.name == "root":
|
||||||
|
return monkeys[self.childA].yell() == monkeys[self.childB].yell()
|
||||||
|
if self.op == "+":
|
||||||
|
return monkeys[self.childA].yell() + monkeys[self.childB].yell()
|
||||||
|
elif self.op == "-":
|
||||||
|
return monkeys[self.childA].yell() - monkeys[self.childB].yell()
|
||||||
|
elif self.op == "*":
|
||||||
|
return monkeys[self.childA].yell() * monkeys[self.childB].yell()
|
||||||
|
elif self.op == "/":
|
||||||
|
return monkeys[self.childA].yell() / monkeys[self.childB].yell()
|
||||||
|
|
||||||
|
|
||||||
|
monkeys = {}
|
||||||
|
|
||||||
|
for line in lines:
|
||||||
|
name = line.split(" ")[0][:-1]
|
||||||
|
rest = line.split(" ")[1:]
|
||||||
|
if len(rest) == 1:
|
||||||
|
monkeys[name] = Monkey(name=name, number=int(rest[0]))
|
||||||
|
else:
|
||||||
|
childA = rest[0]
|
||||||
|
childB = rest[2]
|
||||||
|
op = rest[1]
|
||||||
|
monkeys[name] = Monkey(name=name, childA=childA, childB=childB, op=op)
|
File diff suppressed because it is too large
Load Diff
@ -1,98 +0,0 @@
|
|||||||
lines = open('inputs/day3.txt').readlines()
|
|
||||||
xlen = len(lines)
|
|
||||||
ylen = len(lines[0])
|
|
||||||
|
|
||||||
def symbol_positions(lines: list[str]) -> list[tuple]:
|
|
||||||
positions = []
|
|
||||||
symbols = []
|
|
||||||
for idx, line in enumerate(lines):
|
|
||||||
for idy, c in enumerate(line.strip('\n')):
|
|
||||||
if not c.isdigit() and c != ".":
|
|
||||||
positions.append((idx, idy))
|
|
||||||
symbols.append(c)
|
|
||||||
return positions, symbols
|
|
||||||
|
|
||||||
def find_first_digit(lines: list[str], coords: tuple) -> tuple:
|
|
||||||
x, y = coords
|
|
||||||
if y == 0:
|
|
||||||
return coords
|
|
||||||
elif not lines[x][y-1].isdigit():
|
|
||||||
return coords
|
|
||||||
else:
|
|
||||||
return find_first_digit(lines, (x, y-1))
|
|
||||||
|
|
||||||
def full_number(lines: list[str], coords: tuple) -> int:
|
|
||||||
x, y = coords
|
|
||||||
nr = lines[x][y]
|
|
||||||
counter = 1
|
|
||||||
while (y + counter) < (ylen - 1):
|
|
||||||
if lines[x][y + counter].isdigit():
|
|
||||||
nr += lines[x][y + counter]
|
|
||||||
counter += 1
|
|
||||||
else:
|
|
||||||
break
|
|
||||||
return int(nr)
|
|
||||||
|
|
||||||
def adjacent_numbers(lines: list[str], xy: tuple) -> tuple:
|
|
||||||
# returns bool and coords of first digit in number
|
|
||||||
coords = []
|
|
||||||
x, y = xy
|
|
||||||
neighbours_exist = False
|
|
||||||
if x > 0:
|
|
||||||
if lines[x-1][y].isdigit():
|
|
||||||
neighbours_exist = True
|
|
||||||
coords.append(find_first_digit(lines, (x-1, y)))
|
|
||||||
if y > 0:
|
|
||||||
if lines[x-1][y-1].isdigit():
|
|
||||||
neighbours_exist = True
|
|
||||||
coords.append(find_first_digit(lines, (x-1, y-1)))
|
|
||||||
if y < (ylen - 1):
|
|
||||||
if lines[x-1][y+1].isdigit():
|
|
||||||
neighbours_exist = True
|
|
||||||
coords.append(find_first_digit(lines, (x-1, y+1)))
|
|
||||||
if x < (xlen - 1):
|
|
||||||
if lines[x+1][y].isdigit():
|
|
||||||
neighbours_exist = True
|
|
||||||
coords.append(find_first_digit(lines, (x+1, y)))
|
|
||||||
if y > 0:
|
|
||||||
if lines[x+1][y-1].isdigit():
|
|
||||||
neighbours_exist = True
|
|
||||||
coords.append(find_first_digit(lines, (x+1, y-1)))
|
|
||||||
if y < (ylen - 1):
|
|
||||||
if lines[x+1][y+1].isdigit():
|
|
||||||
neighbours_exist = True
|
|
||||||
coords.append(find_first_digit(lines, (x+1, y+1)))
|
|
||||||
if y > 0:
|
|
||||||
if lines[x][y-1].isdigit():
|
|
||||||
neighbours_exist = True
|
|
||||||
coords.append(find_first_digit(lines, (x, y-1)))
|
|
||||||
if y < (ylen - 1):
|
|
||||||
if lines[x][y+1].isdigit():
|
|
||||||
neighbours_exist = True
|
|
||||||
coords.append(find_first_digit(lines, (x, y+1)))
|
|
||||||
return neighbours_exist, set(coords)
|
|
||||||
|
|
||||||
positions, symbols = symbol_positions(lines)
|
|
||||||
numbers_pos = []
|
|
||||||
for s in positions:
|
|
||||||
has_neighbour, coords = adjacent_numbers(lines, s)
|
|
||||||
if has_neighbour:
|
|
||||||
numbers_pos.append(coords)
|
|
||||||
|
|
||||||
number_coords = set([x for y in numbers_pos for x in y])
|
|
||||||
numbers = []
|
|
||||||
for nr in number_coords:
|
|
||||||
numbers.append(full_number(lines, nr))
|
|
||||||
|
|
||||||
print(f'Solution Part 1: {sum(numbers)}')
|
|
||||||
|
|
||||||
gear_ratios = []
|
|
||||||
for p, c in zip(positions, symbols):
|
|
||||||
if c == "*":
|
|
||||||
has_neighbour, coords = adjacent_numbers(lines, p)
|
|
||||||
coords = list(coords)
|
|
||||||
if len(coords) == 2:
|
|
||||||
gear_ratios.append(full_number(lines, coords[0]) * full_number(lines, coords[1]))
|
|
||||||
|
|
||||||
print(f"Solution Part 2: {sum(gear_ratios)}")
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
|||||||
|
vJrwpWtwJgWrhcsFMMfFFhFp
|
||||||
|
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
|
||||||
|
PmmdzqPrVvPwwTWBwg
|
||||||
|
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
|
||||||
|
ttgJtRGJQctTZtZT
|
||||||
|
CrZsJsPPZsGzwwsLwLmpwMDw
|
@ -0,0 +1,19 @@
|
|||||||
|
f = open("input.txt", "r")
|
||||||
|
lines = f.read().splitlines()
|
||||||
|
|
||||||
|
|
||||||
|
def score(char):
|
||||||
|
if char.lower() == char:
|
||||||
|
return ord(char) - 96
|
||||||
|
else:
|
||||||
|
return ord(char) - 38
|
||||||
|
|
||||||
|
|
||||||
|
summed = 0
|
||||||
|
for line in lines:
|
||||||
|
first = line[: len(line) // 2]
|
||||||
|
second = line[len(line) // 2 :]
|
||||||
|
dups = list(set(first).intersection(second))
|
||||||
|
for dup in dups:
|
||||||
|
summed = summed + score(dup)
|
||||||
|
print(summed)
|
@ -0,0 +1,17 @@
|
|||||||
|
f = open("input.txt", "r")
|
||||||
|
lines = f.read().splitlines()
|
||||||
|
|
||||||
|
|
||||||
|
def score(char):
|
||||||
|
if char.lower() == char:
|
||||||
|
return ord(char) - 96
|
||||||
|
else:
|
||||||
|
return ord(char) - 38
|
||||||
|
|
||||||
|
|
||||||
|
summed = 0
|
||||||
|
for i in range(0, len(lines), 3):
|
||||||
|
group = lines[i : i + 3]
|
||||||
|
symbol = list(set(group[0]).intersection(group[1]).intersection(group[2]))
|
||||||
|
summed = summed + score(symbol[0])
|
||||||
|
print(summed)
|
@ -0,0 +1,300 @@
|
|||||||
|
lDDWVvlVVQfDMlWjGJTRjQCgTGLCLj
|
||||||
|
ZLZpwzLBhwZhSLBsjntGCtgJRjbnJgSG
|
||||||
|
qppdZzzsdsmZphrNsNwZhllDHLcVVDWFPvFWcWdFlv
|
||||||
|
ztdhgJDBJghmQtPFQPpmbw
|
||||||
|
lVlLRcnfllcfVcccGnSQVLcsTPFbpwsPFspTSqmbpswpbF
|
||||||
|
cCHRGcGcCRGlGrGcVGnrdWHWBDzBNhhQZWWNBhJz
|
||||||
|
NfnSSQpdnRSSpvWdSsjZDGNDjGDwTGTjHG
|
||||||
|
wlPzPqzPFbMmqPCFCJmbsjbHLDDHDZjDjbGHsT
|
||||||
|
gwMlgmtmPcqVVvhVnvcRnn
|
||||||
|
cBNBBCHhbhNhblBcCCvcBHSwTwDQSqRwDQpDRsjHST
|
||||||
|
dPmzMVWdmmMnnZJtZVdqjTSrjTjrpQrsTTVwQRSj
|
||||||
|
qzmZMmdZPtnGqclblGlbGvgBFc
|
||||||
|
ZfpmNDfRhzbbqDnD
|
||||||
|
SFtFjTTZVTFvVTjHrsVvqGBJqhnSSnbJznLGJwJq
|
||||||
|
TjdPPtdMPPWCcZgW
|
||||||
|
qsbmGCsjHNhmhmhzTDznpnlQZlbWlZ
|
||||||
|
LTSSfSvggVVgBgfLtvvtTSczzpWnZQZnlnzpBcnWpQWc
|
||||||
|
FrLvrrrVPgdPftSHHdNsjTHjmGThhm
|
||||||
|
wGQlMjvMwpvjvZjZTZlWjplWJJTggDTgfCnntPgTJPbtPgSP
|
||||||
|
qNhJmcVmdJqhHnPnDNtnPDCg
|
||||||
|
LrrchqhRdLVzRdmhJcFFQWGGMjpGlvZzlQQv
|
||||||
|
ZqZMbZMfQZptpjlF
|
||||||
|
PJCggvHlwWHvSSvCJNvSPvDBtFDQThFQjtRQhhFTsVThQtsF
|
||||||
|
PwWCnBBCClcMMznMdG
|
||||||
|
rNwwQJrJrnQswrQrRRwCShBSLndZpdnhpGFSdhBp
|
||||||
|
PvzzWVzbclGFhLFGdZll
|
||||||
|
VWjPWvbjcVbVcGVzjcgzgwQQRRRrqwRJQwwstCRR
|
||||||
|
zjBMMzznjbssrBrMBbvHDmrlprlrpwGpwQDV
|
||||||
|
LhRwPPTLLNRZqScPWPWPTSmQvQQDGGdQHVDlmVpQGD
|
||||||
|
NtfhNwhLLNwRwRNcTBgnJMCBzsBFjsJfCz
|
||||||
|
jZjsWNDlPfClfMlM
|
||||||
|
GjqbVSqjhgvgSVSBCPmMmCmfpwTBfh
|
||||||
|
nGbjqtqcGzsLDFcJLs
|
||||||
|
ZQtmZdtdQcLndRncdQQLFjWWDHNPfhpnqhqsHNNDnpHs
|
||||||
|
TrMBGbJTwwlmDPPPWshWHfJq
|
||||||
|
wmVzbrwbwvBlBlVGtSVLSdFjdFtdjLVR
|
||||||
|
LBhZFhRPbbnPddMdPPlD
|
||||||
|
NQszQNczlCSlJSsg
|
||||||
|
mwmrVQwpQVWwTlvBpHHHFhZj
|
||||||
|
pzzDffWpQBzMpHvzMfRnTNhZdrdBcnLrcdrTLZ
|
||||||
|
msgJgtmbgmqJJcdrGcJjGn
|
||||||
|
bSVPgwntmVnngQWvWSSMpMMHWH
|
||||||
|
gmGMDHHdpngdrGmGcwbNCCnNcbbCSLwL
|
||||||
|
zQPPPffQQlVlsPFQFzQchZZbLZNVcbqbNqbZgq
|
||||||
|
PRjQzfRgRfjQBTfJQTlPFRHWmmvmWHGWrWvWWtjrdHpD
|
||||||
|
vfrHfqrLfLwwNHdvnthpnnFFpstn
|
||||||
|
gWcMclgmcRcWgDMWgBgGGFnntqQnGphdQhtbdFnh
|
||||||
|
qRWmRDlcDqWBBPwPNrZHrwSHjTfr
|
||||||
|
HVVbhdCdndhZSShMzRrzSM
|
||||||
|
qBjWqvtWvDJjTjjGJtJtnqBvZMrgSGZlgfSgSRrMQGQRMgMR
|
||||||
|
wmwtJsvjtTJwsNnVsHpdnsHdds
|
||||||
|
FCJNZDMPNCNvzqQJHqzGqv
|
||||||
|
hwjWcSTHwRpSWnQtGgQgGStgQQ
|
||||||
|
WpwhRHTRpcLRjwlwwTWBcWdlFbCrsPrrLCMDrZCFsCDPrZPM
|
||||||
|
DJjjShSGhGDSNdpfrWWcLFzrDWrDlF
|
||||||
|
wtqZgwMBBPVMCBPQggMwqMMzfLlWrWLLzsWcFzTzVTzLss
|
||||||
|
tgtwQqZBQQZbBZtPgbHpNJnJShcmJppSHh
|
||||||
|
tHrWmrdzzdHflmHmHrSmqswlqhqNgssMhGgghssn
|
||||||
|
pJcCBPPQPCcPpRpgwZNZBMnDhMsMBw
|
||||||
|
RJCvRRVcQpjLpCJPWrftWvSnrFffWbrz
|
||||||
|
jzlwwzDzTlQftzlWjfrBGBgVHBgpgBtPGVtP
|
||||||
|
vhsshbMbNhZpgZrrrpHcZr
|
||||||
|
qhdMqqSLSSbSJMqqSwwjzFzmjFQQFfHzLQ
|
||||||
|
gDhHNnphPPPNCprHFhHFdbdczzjNqbzjVcdbQTcc
|
||||||
|
tVJWBtVVZRWtjQbctjqcdj
|
||||||
|
RfvlGLvLLLlLMZBmZBRhHDVPnVHPHCgFCnhlpn
|
||||||
|
RFhZFTZvFdjlqqlRNCPwSSPCNPBSwC
|
||||||
|
spHGswpnWgJLLJCPGg
|
||||||
|
cWpDrVVbWfWbVfbsdQqcQzjjzlhdwqll
|
||||||
|
WWJPpQwWdQQPNpQvqlvvCblbvbvwLL
|
||||||
|
cmRMBMBTbSrTDRMcGBscTGfLZfvfvsCqhLlChZlLhfsC
|
||||||
|
TVbzGSMGVVgdpdPJpQ
|
||||||
|
lwsFfsZWGsGmsnlGQcPdBBdMbcPHfcCN
|
||||||
|
RVvSLtSTrTVrTFPcBdCHRcPHbNNb
|
||||||
|
LrqzLFTLrgSJLLLtTgJjVJvWlDDnjDWnWWlhlGWGhZWZhn
|
||||||
|
GQJCMGbrMbbCGrrGtcwhctGjNSvWpVVVRjNJqVqqBBRRJq
|
||||||
|
ssnglHHsnHzFmHnzHFPVDDSDRgVjvWDNpSSNpB
|
||||||
|
PZfHmndFzzfPZPZfCdwchwGcbwwhCdMW
|
||||||
|
DRGVQGmGQVnnGVmnnFpNbzCNRbRttCbpLztC
|
||||||
|
qdqHBdjTqPlcTchBjJMvvvLtLCcLggLvtmgb
|
||||||
|
fqhlHjdwqjjJTwldDmDmrGrrWFrDGZwD
|
||||||
|
wFscLVLrrVhwWgZPrcswgZWFTnQdtTMnpQtjdpqdqvqQMt
|
||||||
|
JRbHmmbDDSzDmDNpTnBBdpMHQtqtvp
|
||||||
|
JmCCbvRGzbbGJsLgZsVhgLwwGW
|
||||||
|
WDQwsBzWbBlMjdVpzTJVMj
|
||||||
|
fncRngntnPCpJgmdFpFWgm
|
||||||
|
RGZPZtZCfvWSvRZGSLvPccHwsrHbwHLrwHHQQsBDbllB
|
||||||
|
PlNZhwgpppccgrqVvttbBfrlls
|
||||||
|
CznSDDdHDRnRStVsVfDvfrtDZq
|
||||||
|
QCddZFSFLTmccQmw
|
||||||
|
rnwfVnclGPPFfSPSqBWZvvBBWqZvqWFh
|
||||||
|
zLgLQgJssspmQTJmsgjZNmqqzqdHbthDdDDWHbhqBBqb
|
||||||
|
QgmmjpNgCCZpjJLpmTrfrSrVRPfnrClfPwnS
|
||||||
|
zDzPPwvwqvPPBqjnqvDqBffSfcSNJpNVfccLLNffBR
|
||||||
|
MdTMZbgbmmTWGGdmssRCSNsSNVVVcJsNppsC
|
||||||
|
MJghbhHhbtMMdWhbJhHgdmWvnFzHDQPDjQDvHHwvQwvzwF
|
||||||
|
gGbqqRDrqDMdcBpVlpMG
|
||||||
|
WzhPCnWfqMcpBnnNLZ
|
||||||
|
fCqPHHJCfJhStwhWHbrrgvjFgbQbSbmbQs
|
||||||
|
fhcchnSpfsNpjVVqnqjrGHqq
|
||||||
|
zzlFLlPLWdggFqRBjqsrHrBTzz
|
||||||
|
FDwgFLZWlbbchpwshsCNcw
|
||||||
|
CmPlqqRJDHRDDsFv
|
||||||
|
MfSpBQQNNfBfrfVZsmVVdzzrHZmH
|
||||||
|
QSBSLSgmQBmwPCtgClhjPP
|
||||||
|
NPNsHHHNsPsvHwDqgpwlqt
|
||||||
|
rTRWSRrWRzgTzZrRVVLRQzjpbtmmGLlGDDbDwwmtblvDvw
|
||||||
|
nRzSRrjSVRrnjrgZfrfzNdPdMPBfBMhJhhBcPhcJ
|
||||||
|
LLhzQSDHDHNpNzHHJBQBMvMBqBRJBBqw
|
||||||
|
rmbdtmlWCCMnvJrn
|
||||||
|
FTVdmVgtjdtbWsvjjmdLSDcgHpDzShzDLPLSHh
|
||||||
|
VFFJQVWHtQVHHWbJRRRHwqPvpMLpLZZWLwlwMllL
|
||||||
|
jsngsdGssLvlqnZqZw
|
||||||
|
hhmfDjDsmDNjjNRNVqNVJRtQHJ
|
||||||
|
jvTnffrgFTwvqMzqGdMMSW
|
||||||
|
sPbCtCCQQLffZGdWNLWDDzLzGM
|
||||||
|
PQPBBtfZCZsmJPPplwwmTwpcTcmcgj
|
||||||
|
NBmBRCCsBTRNTndGdswnlwvwnw
|
||||||
|
fvbqrbPLqpGwScGGwbbb
|
||||||
|
HJDPJFJLJtpJHCvCFBBBBNNWvF
|
||||||
|
HJHgNQJBSlRRbJDRDb
|
||||||
|
RptsfnshscWMLMZDZp
|
||||||
|
njmrnPznnsTRTtPzFzRTswgQwqvVVwBNwwvjqCHqHq
|
||||||
|
CBMgBJCTNgQcsQspPpWjRrWrsWsn
|
||||||
|
mwLvHLGbdHbGzSHmvmvHzrhjjjPptjWGqZPPZhPRWWGP
|
||||||
|
vbbrLFwLFDJFDfFN
|
||||||
|
TnPvZSnQgQPHnnnQvgMSWppWNfWRpWfMtthMNDhN
|
||||||
|
wLJmLBmGFBFdLBbCBbVCVlsGsWhtHqthRRhqhtHHGqqf
|
||||||
|
LmHLbCjjBLVZzZSgzQgjrc
|
||||||
|
wdSwfpBhtFbStpftjSVhBwFrGrsQnQgnGrQmqCPmDrmmDb
|
||||||
|
zJvzLJLNZNscLzNHHLrGPvGGPrDDqGgDPDgC
|
||||||
|
RWsNNRMsHTHLHTlMczLHZLWtpFwfpthSjFtwFhjSVplwtj
|
||||||
|
QbrBDLGGRJMQJQJDbQbGvNscWNnTdvnvtnLcccvl
|
||||||
|
fqZgpVPZHPmfgPPjBFgcscvNNccdddtdNvdFTs
|
||||||
|
CgPpghfjjPgVmfBMMCRJQQJzJBwM
|
||||||
|
jLWDqLdWdwLfHwJwzSSfwS
|
||||||
|
gCgRRltMrlrCcCMzcBSVfZQfVNZNVSBVNNNh
|
||||||
|
gMrcPntccGgzgTMlMPrtDWFvLqqdLnDsmLLFFqvp
|
||||||
|
ttHJNccRRwmnsnHnHWMSwqfgvgfwSQZfQf
|
||||||
|
ShpLhhzTPBMpQqQgvM
|
||||||
|
zhbFjVdrjFjVljrVbdPddSTPHNssHnHlRNCHtRtsctJtGsRJ
|
||||||
|
zMVTscVhQhGGhClv
|
||||||
|
LfMJmgSBpLRfHmBPgpmJPSBdvQNtlHvrHvNNtNNNClGdGN
|
||||||
|
JFJmmSFFbFFbRJPBgFPmSBPMzzWWTDjjTsTqqwjVWbjjVVsZ
|
||||||
|
HZpCnwnggfFggbgLDcTb
|
||||||
|
SjvWjGzNGGzRjSGmMcLhvhMhFMCcmv
|
||||||
|
rjrVJNjVrzVNPrwtPwPCHBPB
|
||||||
|
SWwFbTzsSjPzpjFbsWPTWTcWLCLgLgLBZjGVDjCVBBgCBGCZ
|
||||||
|
lrJJttQcHqrHrvggHVBgBLffBC
|
||||||
|
lnhhcqNRJWzhTdsWFz
|
||||||
|
vzldvzlclbFjFvmtjZ
|
||||||
|
DDNMNStMsSsGnhSMwQjTQVgVbwMbVTTQ
|
||||||
|
DsDSCNNGpLtsNLpnNsqLppDzCBcdJHBzllcJfzJBPBdBlR
|
||||||
|
qWNfDvffbJBFDpNfmpbwhGhwjLgTrGwhbGGwrj
|
||||||
|
ZctMVCcVVQtTpthlnLtppw
|
||||||
|
QMcRSPMZcpCZqDFNRFHNJFFF
|
||||||
|
RmztpGSssNMzJRpCvqsCrqdHCBlBdw
|
||||||
|
gffPFDcqVbgqWgjlPlwCCrdBdllnBH
|
||||||
|
cFFZcbcqfQhgbcNJZRSMRtmNJptS
|
||||||
|
PZthPBWlPNPSPtmHHggFGgBJJbwg
|
||||||
|
qqzDvLLrfDpvvDLzqvnLzqpzbrCRGJRHwFCmHRwGwgwbbRCj
|
||||||
|
nnpnMfpMLTVqfmthmsMNSScMhS
|
||||||
|
dflvbdvpfffzpnNLNbWqtblqHjmVhVRhHrwrwrswhHnjsmwh
|
||||||
|
gSGMdMcJBgMTGPSPDVZhHhHZmDZhrwwjVm
|
||||||
|
CPJQGBGGPcSTFcTCScFtLLdWvptWLbNpNzvWQL
|
||||||
|
WThqhvvRDJDRhwcrscNDNFgDHNct
|
||||||
|
fnrZVnfVjrSGGLzZbnLzZLjVHstHHHQtgQbPpPcpHsscsFpN
|
||||||
|
SVjZSzZdndVCdSSZmTRvMWBRWvvWlrvmhJ
|
||||||
|
BcllhPPmMMBPcbRwgQtgHHgtmwgzmt
|
||||||
|
rpLqbrbTnNvqjLqLNqrNLvHzDtwpDCzFwggttFFHCQFQ
|
||||||
|
LrrrNLqjZSTsZZsvjbLjPhcBBlBsBcGPPcPlPVGP
|
||||||
|
HHhrggvSHDtCDsfF
|
||||||
|
ZMpLblppNZBDBwLzLLpMssCntfWdCFCnfCCtRNtq
|
||||||
|
lbmJlzzLMPMmlBzhSJVccSJhTvSTDh
|
||||||
|
sdjBBFqHscFnHTzCnRSnzgVTlC
|
||||||
|
LpWWtvZfrpbLpZpWftprLCCNMzCZMmmzTNNTmSSVSM
|
||||||
|
pLVtrtbGvpbpGLfPddHBscBQJJGcwsQq
|
||||||
|
hLcLnVVcfQBLZPVZnThfVVmjqjHNjgvNfdvpNdrrvvfp
|
||||||
|
lbRlWFHJtGNGpqmrqrCN
|
||||||
|
DzRRDFsbDtFtDJtWRztzJZVBQMhTsLhQZMZHVLcLcP
|
||||||
|
WgbdmgMmWDDvcPcpbz
|
||||||
|
jffpllHSpHRptRRGRntSVwvLSCCJDzcCcDLvCzPP
|
||||||
|
tRFrnlGfZrQpBpgQQsgF
|
||||||
|
TpbBZbCCHCGZNHbzGqgFdNlcFSdNlStSqg
|
||||||
|
wvWnWwLCPjJPJhMWtWdMfFSMgcdM
|
||||||
|
hhmvmJrJLJJJPvvhDjswCRGHHrHzBBHGVRQBzRRQ
|
||||||
|
zChCSBbpSsQscDHHQh
|
||||||
|
LNJJRgGltJDvfcrfgHfZ
|
||||||
|
lJNRGlLnNJtTGVMlFTbwSWqjBbzWWHSW
|
||||||
|
NDTJQDVwCTCJhVGDLfbBbBfbGqbfHBfBHb
|
||||||
|
lMgMrggMrmmtzMcgWdlmMlbsRjSRBsTRBWsSHSBTHRBj
|
||||||
|
cMPlgztzrPMznnMPpgddgdzpwDDNNwhNFCTwNZQFLTVTwV
|
||||||
|
ZgshQgzQnnwMtDwBwv
|
||||||
|
SFWFlFZRRcmlWmWRBCDwvwwftBtLmfLf
|
||||||
|
PjRFdTdWGddrGlPjcsJZpJzTqhzQJzNHhz
|
||||||
|
PgHQgddszgdGPWpMjljMcj
|
||||||
|
bSqTqnZLnDJSmnmZmtllGsnVtnWjGGWtjl
|
||||||
|
fqSLDbRSfBdHsRwsFdHd
|
||||||
|
RwHWZpCWhHvwvHCBMBpJMJGPJJnJgc
|
||||||
|
lztljTFljRRBBzBnBMnJMS
|
||||||
|
QbRljFtQfljbbFqNFrdZVrZfdCCwVwvddH
|
||||||
|
sHzztVzLTgnssPggHHsnCtzBmfBMrMccBBmqmrBqBCRqMf
|
||||||
|
ZhDQJhFDqjmSMrRF
|
||||||
|
dZpwDhNhhZpQJdDQpwnsGttGwLtRRTLRts
|
||||||
|
QJNhClVgPTTtPNCJJCtJhlNPZZRVZfvfzZzmvvzvsmZsvmzR
|
||||||
|
blBWBpdbLBDqBpszzffRsvdzjvvd
|
||||||
|
BLWpqBbqnDHqBbGlnWGBPcPJcHTTPrhtgNtCtgPc
|
||||||
|
jWVJqVwgsJcHCVlQVVQNBp
|
||||||
|
vGhGhTPtSSNCddSBCH
|
||||||
|
ZCCDtbDftZsqrrcnWW
|
||||||
|
hJThjThhVzVTZZwnNZRdgmzt
|
||||||
|
lrbSSddsrbPQpsvNtgPRmtHmvtnR
|
||||||
|
GQrspWdSGbDcsFFLBhCGVBjhjj
|
||||||
|
rHdlHdZDlTcflcNfcrCgcTWWpWQFsRWsFjRCsCjWCmhF
|
||||||
|
BnqbvQPLGLBPwqGmsVshsSWShGms
|
||||||
|
PzzPPQJPMJtJbbznPnDdrHlNldDNltrgtfDg
|
||||||
|
SmmMQhPSlmTwPpmnpllMSMPrccFDqFrDFGgqrDcCwfDgwq
|
||||||
|
bVdLLNvdQWVbJbQLVGfGDGfDgrFrqgqJgg
|
||||||
|
vjjWsbQdBsszhsHlhhPPSHsM
|
||||||
|
PqzJqNzsJgsgNqPdLJPPPNVpMMVWGlFWNFGMpWppGF
|
||||||
|
ZnZBjttQZcQZRTQDjQwGFlWMlGdGWVrWWlGn
|
||||||
|
ZRDBRSZDSdSLsqJHfSbzzL
|
||||||
|
rljJqtZlJqlJcvBNJBNQfQ
|
||||||
|
TVMWznvPMTFWznwPFFvwFbbBNBgbcNpQdNcBFQpb
|
||||||
|
mDnLWsPLvLMnnnmTzLzVCtlRRtjSljCZhDlhtqSq
|
||||||
|
fgWMHClGMWfgRWWWGCfmfgCSVQNTDFHTtddVQQDZNLDZtVVL
|
||||||
|
wSqbsvzpwpbpdFTNLQwLNTFN
|
||||||
|
zscjPnPqsJlmPJCJSC
|
||||||
|
GZSwQjGwGrCGwrTjdCTwdTBpqqlmNmVpNrNvplJqNNpl
|
||||||
|
zMfJnDcbRRDRFbzDFRLFBtqNmqqtNBmNBvNm
|
||||||
|
sHcJRRHzzfQTjjCjQjCH
|
||||||
|
wJCVVbJgCLCwGsMbbGTlsRWHsztZPZWtPrPrWrHzrz
|
||||||
|
DBqdvfqDBqFpWZFrtppZJp
|
||||||
|
djqNfQcjDQjMgbbwLjlJGn
|
||||||
|
TSwfZMfpQwcCCCCrbbCZ
|
||||||
|
PLJmGJnjqjrsCjMMVj
|
||||||
|
LnNNLLLnFFWmLFMGNMDgfRpDQSfwSfgQzBHwTS
|
||||||
|
CdjNCMmdCrVmCjJdVjFNMtMzhWwpGbpBhPZZZDbGPpDhpr
|
||||||
|
QSfHzlvgTQffSSHHclgfHnqPbPPPppBhpWDhwWvPhvbwwh
|
||||||
|
cQfQRgQnQsnsQSgHRQJsCFMsCjLzJJFjCdNC
|
||||||
|
ltLlJttmQdfVRhNmhB
|
||||||
|
gWWDrPSvCSWgMMMZBVBdTQPQZNZVPR
|
||||||
|
vCbwQzcQrCrLFHwJpHHGpp
|
||||||
|
VbRVvVHRbJVTzVLBVPtt
|
||||||
|
cSdgSZSZZFhnFcFwdDQcZZhgzpTlzLDzlWTvBWLztBtpLplT
|
||||||
|
hZZvdrcSZQZSSwncdHCqHmGHqJrCJqbNbq
|
||||||
|
lwWmsQlDbCZbVWZq
|
||||||
|
rRShhhhPjTsjTRvHhqfzqfqvBZZvBCZffC
|
||||||
|
scPThhRSjQmmNpplcg
|
||||||
|
FChtDTThDqZtjppjvgNvjl
|
||||||
|
LBwsVdVHLVvvpVGjjgjS
|
||||||
|
BbHLBfRcsHcBdMbdWJQPWFCQCZZhWrJPQp
|
||||||
|
zMtWCstzNrQLpbplFwQwhb
|
||||||
|
gDTDHGvvHVfVdGZVJGDGdnmbwmWFwfhpbnfjwwjpLl
|
||||||
|
GJcHVJdvZJVGZWHSSvTZMCzrzzRNSBtBNPBMqNBB
|
||||||
|
pLzZVVGGZmZVlmDsQglgsllc
|
||||||
|
WSvrjRjrMMFFnFjnrnrdjBRRgdsblQQPbpggsclNDDbPstDs
|
||||||
|
SMWRBrrrvSRBSSvWWWBTMTCqpZzLCCTCwJZwwzGZzqHL
|
||||||
|
TvfGwGZpPnSNgSSnGh
|
||||||
|
srLVHLcjsjVtHqjjrjFjcCqPBggqNQQnMqhgngnznNNB
|
||||||
|
VtdmPHLmtVHFLdmZWRJlWpWWWlmWfp
|
||||||
|
SbSbdTsrVrdhfSdDGJWGmNwWWPwTGP
|
||||||
|
BqlRpBMmllpmnpvvDJPZWPJwZcJgDD
|
||||||
|
FFRMCnRFtCMRlMplqMBRBppVbtzdrdhssrmHzVVSsVhVHz
|
||||||
|
dNrhhLsrshSmmRcPhm
|
||||||
|
WMCngCzCvzvMMpplQvzWlRBPcVStSmTSQbbVSPQmwm
|
||||||
|
MpzvWnllglJfqfMgsNdZHqNjdDsPHqqZ
|
||||||
|
rNvGZRsRcRRBtBCttB
|
||||||
|
DwPPQWnWWnPQnJlPhmTtBFBmqzhpmnFh
|
||||||
|
QwQQQlbPPMWwDdDwlVDJJPPdvdSjrjdrsgssLLsZLNBrNNNr
|
||||||
|
VjMMVzngnjQQfJDchZqGNqFPcg
|
||||||
|
SWBwTtWSFTHwFClHHmwBPcJJDhNGPJNPPhPPGhJt
|
||||||
|
CBvSBBBWHdmRTvRWRQFLQRnjnfLLzVbs
|
||||||
|
flSpvLlmZpCpZmVSBtlvHHjFHTdssZdjHFdTWdNh
|
||||||
|
RmQMQJRQJQmPgrzJrPcRQRJcWdNTGTGGFhGTdFhHThHGMTsF
|
||||||
|
RzJrqqcqPRqqJDDqttCpmtlwBpDflSLt
|
||||||
|
hBjPZbPBbWvTRnLRWntD
|
||||||
|
MNGQNsQwfzsdGfgTGfzQwwffmnCRDVmJLRLCvnvLDvJCDgRL
|
||||||
|
wTTdFldNHzTMljjFqphrBqhrZb
|
||||||
|
wDcMCbZbzPDcZDWQdrJLrQrZBLRBQr
|
||||||
|
FFSHStjtHgllgFdSNmlfFStBqRRssRsRJrLrjrrJBRVhLJ
|
||||||
|
fGggtfHtgWMwbCGdCT
|
||||||
|
RQrQDDbVGrRSfbVbGtmGtwHFWsCCzsJSJJHsJPJvWC
|
||||||
|
hphQnhZQNjlBBcMMpCsHwFjvvHWHWsFvjC
|
||||||
|
ppcnnBZqllTQfmrffbtGTDGt
|
||||||
|
dsDFsBZBhCFhshFrpBFnmLQmHmRgRbLqmmmRQDLm
|
||||||
|
PPBBNNNtGTwJNfTJffNttfLQgqLgHvHbqRwlgmblRvll
|
||||||
|
NSNTGTJTWPjGWMPSJJzrBSpzdFSddCFdncrs
|
||||||
|
bPzRlMPTzTMldJMnhswcjzfQVccQhc
|
||||||
|
HCCqNmNmQQmQssJn
|
||||||
|
pHptprtgRStTtMJt
|
||||||
|
nTmhrsPMsTfmHHGcSgtj
|
||||||
|
bJJwdlrJQLlvwlQDDwSbgffGVNjfgjNtVbcf
|
||||||
|
QlpDQFJdvdFqJdFpLvDFpLLnzZMnBMRRzMTqnrzqTRPznz
|
||||||
|
qRVRqBzgwqRpqRgVqQRPpQJJPrPhPGJnsGrCFdFJrZdG
|
||||||
|
ZvWDmMvmSvCndssrsJ
|
||||||
|
WcZcNWlcMjBQpzNTqVBp
|
||||||
|
DpLPZLDDlcgmDmhVgfgfWWRwhwwt
|
||||||
|
VrVMdbCrrBTjCMQQtMwQNSqMQW
|
||||||
|
VCBHdJHdvrrFsbsdrBJTdTzZcpmZGDGPlmzmlccFDZDn
|
@ -1,36 +0,0 @@
|
|||||||
lines = open('inputs/day4.txt').readlines()
|
|
||||||
|
|
||||||
def ticket_numbers(line: str) -> tuple:
|
|
||||||
line = line.split("|")
|
|
||||||
winning = [int(x) for x in line[0].replace(" ", " ").split(":")[1].strip().split(" ")]
|
|
||||||
ticket = [int(x) for x in line[1].replace(" ", " ").strip().split(" ")]
|
|
||||||
return winning, ticket
|
|
||||||
|
|
||||||
def wins2score(wins: list[int]) -> int:
|
|
||||||
total = 0
|
|
||||||
for win in wins:
|
|
||||||
if win > 0:
|
|
||||||
total += 2 ** (win-1)
|
|
||||||
return total
|
|
||||||
|
|
||||||
def count_wins(lines: list[str]) -> int:
|
|
||||||
scores = []
|
|
||||||
for line in lines:
|
|
||||||
winning, ticket = ticket_numbers(line)
|
|
||||||
wins = 0
|
|
||||||
for nr in winning:
|
|
||||||
if nr in ticket:
|
|
||||||
wins += 1
|
|
||||||
scores.append(wins)
|
|
||||||
return scores
|
|
||||||
|
|
||||||
def count_total_cards(wins: list[int]) -> int:
|
|
||||||
copies = [1 for x in wins]
|
|
||||||
for i in range(len(wins)):
|
|
||||||
win = wins[i]
|
|
||||||
for w in range(win):
|
|
||||||
copies[i+w+1] += copies[i]
|
|
||||||
return copies
|
|
||||||
|
|
||||||
print(f'Solution Part 1: {wins2score(count_wins(lines))}')
|
|
||||||
print(f'Solution Part 2: {sum(count_total_cards(count_wins(lines)))}')
|
|
@ -0,0 +1,6 @@
|
|||||||
|
2-4,6-8
|
||||||
|
2-3,4-5
|
||||||
|
5-7,7-9
|
||||||
|
2-8,3-7
|
||||||
|
6-6,4-6
|
||||||
|
2-6,4-8
|
@ -0,0 +1,9 @@
|
|||||||
|
lines = open("input.txt", "r").read().splitlines()
|
||||||
|
contains = 0
|
||||||
|
for line in lines:
|
||||||
|
lots = [int(i) for i in line.replace(",", "-").split("-")]
|
||||||
|
if (lots[0] >= lots[2]) and (lots[1] <= lots[3]):
|
||||||
|
contains = contains + 1
|
||||||
|
elif lots[0] <= lots[2] and lots[1] >= lots[3]:
|
||||||
|
contains = contains + 1
|
||||||
|
print(contains)
|
@ -0,0 +1,13 @@
|
|||||||
|
lines = open("input.txt", "r").read().splitlines()
|
||||||
|
overlap = 0
|
||||||
|
|
||||||
|
for line in lines:
|
||||||
|
lota, lotb = line.split(",")
|
||||||
|
lota = [int(i) for i in lota.split("-")]
|
||||||
|
lotb = [int(i) for i in lotb.split("-")]
|
||||||
|
intersect = set(range(lota[0], lota[1] + 1)).intersection(
|
||||||
|
set(range(lotb[0], lotb[1] + 1))
|
||||||
|
)
|
||||||
|
if len(intersect) > 0:
|
||||||
|
overlap = overlap + 1
|
||||||
|
print(overlap)
|
File diff suppressed because it is too large
Load Diff
@ -1,161 +0,0 @@
|
|||||||
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]
|
|
||||||
"""
|
|
@ -0,0 +1,9 @@
|
|||||||
|
[D]
|
||||||
|
[N] [C]
|
||||||
|
[Z] [M] [P]
|
||||||
|
1 2 3
|
||||||
|
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 3 from 1 to 3
|
||||||
|
move 2 from 2 to 1
|
||||||
|
move 1 from 1 to 2
|
@ -0,0 +1,44 @@
|
|||||||
|
lines = open("input.txt", "r").read().splitlines()
|
||||||
|
|
||||||
|
|
||||||
|
def get_instr_state(lines):
|
||||||
|
state = []
|
||||||
|
instr = []
|
||||||
|
flag = False
|
||||||
|
for line in lines:
|
||||||
|
if line == "":
|
||||||
|
flag = True
|
||||||
|
continue
|
||||||
|
if not flag:
|
||||||
|
state.append(line)
|
||||||
|
else:
|
||||||
|
instr.append(line)
|
||||||
|
return state, instr
|
||||||
|
|
||||||
|
|
||||||
|
def parse_state(state):
|
||||||
|
new_state = []
|
||||||
|
for old_line in state:
|
||||||
|
new_line = []
|
||||||
|
for i in range(1, len(old_line), 4):
|
||||||
|
new_line.append(old_line[i])
|
||||||
|
new_state.append(new_line)
|
||||||
|
new_state = list(map(list, zip(*new_state)))
|
||||||
|
final_state = []
|
||||||
|
for line in new_state:
|
||||||
|
final_state.append([x for x in line if x != " "])
|
||||||
|
return final_state
|
||||||
|
|
||||||
|
|
||||||
|
raw_state, instr = get_instr_state(lines)
|
||||||
|
state = parse_state(raw_state)
|
||||||
|
|
||||||
|
for i in instr:
|
||||||
|
i = i.split(" ")
|
||||||
|
x, y, z = int(i[1]), int(i[3]), int(i[5])
|
||||||
|
for j in range(x):
|
||||||
|
elem = state[y - 1].pop(0)
|
||||||
|
state[z - 1].insert(0, elem)
|
||||||
|
|
||||||
|
for s in state:
|
||||||
|
print(s[0], end="")
|
@ -0,0 +1,45 @@
|
|||||||
|
lines = open("input.txt", "r").read().splitlines()
|
||||||
|
|
||||||
|
|
||||||
|
def get_instr_state(lines):
|
||||||
|
state = []
|
||||||
|
instr = []
|
||||||
|
flag = False
|
||||||
|
for line in lines:
|
||||||
|
if line == "":
|
||||||
|
flag = True
|
||||||
|
continue
|
||||||
|
if not flag:
|
||||||
|
state.append(line)
|
||||||
|
else:
|
||||||
|
instr.append(line)
|
||||||
|
return state, instr
|
||||||
|
|
||||||
|
|
||||||
|
def parse_state(state):
|
||||||
|
new_state = []
|
||||||
|
for old_line in state:
|
||||||
|
new_line = []
|
||||||
|
for i in range(1, len(old_line), 4):
|
||||||
|
new_line.append(old_line[i])
|
||||||
|
new_state.append(new_line)
|
||||||
|
new_state = list(map(list, zip(*new_state)))
|
||||||
|
final_state = []
|
||||||
|
for line in new_state:
|
||||||
|
final_state.append([x for x in line if x != " "])
|
||||||
|
return final_state
|
||||||
|
|
||||||
|
|
||||||
|
raw_state, instr = get_instr_state(lines)
|
||||||
|
state = parse_state(raw_state)
|
||||||
|
|
||||||
|
for i in instr:
|
||||||
|
i = i.split(" ")
|
||||||
|
x, y, z = int(i[1]), int(i[3]), int(i[5])
|
||||||
|
elem = state[y - 1][:x]
|
||||||
|
state[z - 1] = elem + state[z - 1]
|
||||||
|
for i in range(x):
|
||||||
|
state[y - 1].pop(0)
|
||||||
|
|
||||||
|
for s in state:
|
||||||
|
print(s[0], end="")
|
@ -0,0 +1,513 @@
|
|||||||
|
[B] [L] [S]
|
||||||
|
[Q] [J] [C] [W] [F]
|
||||||
|
[F] [T] [B] [D] [P] [P]
|
||||||
|
[S] [J] [Z] [T] [B] [C] [H]
|
||||||
|
[L] [H] [H] [Z] [G] [Z] [G] [R]
|
||||||
|
[R] [H] [D] [R] [F] [C] [V] [Q] [T]
|
||||||
|
[C] [J] [M] [G] [P] [H] [N] [J] [D]
|
||||||
|
[H] [B] [R] [S] [R] [T] [S] [R] [L]
|
||||||
|
1 2 3 4 5 6 7 8 9
|
||||||
|
|
||||||
|
move 8 from 7 to 1
|
||||||
|
move 9 from 1 to 9
|
||||||
|
move 4 from 5 to 4
|
||||||
|
move 4 from 6 to 1
|
||||||
|
move 3 from 8 to 5
|
||||||
|
move 6 from 5 to 9
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 4 from 4 to 9
|
||||||
|
move 7 from 3 to 7
|
||||||
|
move 6 from 7 to 3
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 2 from 7 to 6
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 4 from 3 to 5
|
||||||
|
move 5 from 1 to 3
|
||||||
|
move 1 from 1 to 8
|
||||||
|
move 2 from 3 to 4
|
||||||
|
move 1 from 4 to 1
|
||||||
|
move 7 from 9 to 2
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 2 from 1 to 9
|
||||||
|
move 20 from 9 to 7
|
||||||
|
move 6 from 4 to 9
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 6 from 9 to 4
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 1 from 8 to 6
|
||||||
|
move 1 from 4 to 7
|
||||||
|
move 5 from 2 to 3
|
||||||
|
move 2 from 6 to 4
|
||||||
|
move 3 from 9 to 5
|
||||||
|
move 5 from 3 to 5
|
||||||
|
move 3 from 3 to 8
|
||||||
|
move 3 from 5 to 6
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 5 from 4 to 5
|
||||||
|
move 3 from 4 to 9
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 2 from 8 to 2
|
||||||
|
move 11 from 5 to 6
|
||||||
|
move 16 from 7 to 1
|
||||||
|
move 2 from 1 to 7
|
||||||
|
move 14 from 6 to 1
|
||||||
|
move 11 from 1 to 6
|
||||||
|
move 2 from 1 to 4
|
||||||
|
move 4 from 3 to 4
|
||||||
|
move 9 from 2 to 4
|
||||||
|
move 2 from 4 to 8
|
||||||
|
move 2 from 5 to 3
|
||||||
|
move 9 from 4 to 7
|
||||||
|
move 2 from 3 to 2
|
||||||
|
move 1 from 2 to 7
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 4 from 1 to 4
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 7 from 4 to 7
|
||||||
|
move 2 from 6 to 5
|
||||||
|
move 1 from 8 to 6
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 10 from 1 to 6
|
||||||
|
move 5 from 7 to 3
|
||||||
|
move 1 from 4 to 7
|
||||||
|
move 2 from 1 to 2
|
||||||
|
move 2 from 2 to 4
|
||||||
|
move 4 from 3 to 4
|
||||||
|
move 18 from 7 to 6
|
||||||
|
move 6 from 6 to 4
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 11 from 4 to 5
|
||||||
|
move 14 from 5 to 9
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 8 from 6 to 2
|
||||||
|
move 2 from 4 to 5
|
||||||
|
move 7 from 9 to 1
|
||||||
|
move 6 from 9 to 7
|
||||||
|
move 5 from 1 to 8
|
||||||
|
move 1 from 3 to 6
|
||||||
|
move 10 from 6 to 3
|
||||||
|
move 1 from 9 to 6
|
||||||
|
move 1 from 5 to 4
|
||||||
|
move 4 from 3 to 8
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 9 from 2 to 3
|
||||||
|
move 1 from 9 to 5
|
||||||
|
move 4 from 8 to 4
|
||||||
|
move 1 from 5 to 3
|
||||||
|
move 5 from 8 to 7
|
||||||
|
move 5 from 7 to 2
|
||||||
|
move 3 from 4 to 1
|
||||||
|
move 8 from 6 to 5
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 4 from 1 to 3
|
||||||
|
move 2 from 4 to 6
|
||||||
|
move 5 from 5 to 2
|
||||||
|
move 4 from 6 to 9
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 1 from 5 to 6
|
||||||
|
move 7 from 2 to 8
|
||||||
|
move 5 from 6 to 8
|
||||||
|
move 4 from 7 to 9
|
||||||
|
move 15 from 3 to 9
|
||||||
|
move 1 from 7 to 3
|
||||||
|
move 1 from 5 to 3
|
||||||
|
move 6 from 2 to 6
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 2 from 3 to 9
|
||||||
|
move 1 from 6 to 8
|
||||||
|
move 5 from 8 to 9
|
||||||
|
move 2 from 3 to 8
|
||||||
|
move 3 from 3 to 6
|
||||||
|
move 11 from 9 to 4
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 2 from 8 to 4
|
||||||
|
move 1 from 1 to 4
|
||||||
|
move 7 from 4 to 7
|
||||||
|
move 9 from 6 to 3
|
||||||
|
move 4 from 7 to 8
|
||||||
|
move 4 from 7 to 6
|
||||||
|
move 19 from 9 to 4
|
||||||
|
move 7 from 8 to 5
|
||||||
|
move 5 from 3 to 6
|
||||||
|
move 6 from 6 to 9
|
||||||
|
move 3 from 3 to 5
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 8 from 4 to 5
|
||||||
|
move 2 from 9 to 6
|
||||||
|
move 3 from 8 to 2
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 1 from 2 to 5
|
||||||
|
move 19 from 4 to 1
|
||||||
|
move 2 from 5 to 7
|
||||||
|
move 2 from 2 to 4
|
||||||
|
move 13 from 5 to 2
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 2 from 6 to 9
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 9 from 9 to 3
|
||||||
|
move 2 from 3 to 8
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 5 from 6 to 7
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 2 from 8 to 7
|
||||||
|
move 7 from 1 to 5
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 10 from 1 to 8
|
||||||
|
move 1 from 1 to 3
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 6 from 5 to 3
|
||||||
|
move 4 from 5 to 3
|
||||||
|
move 5 from 7 to 1
|
||||||
|
move 3 from 1 to 2
|
||||||
|
move 4 from 7 to 5
|
||||||
|
move 8 from 3 to 6
|
||||||
|
move 2 from 1 to 7
|
||||||
|
move 4 from 5 to 8
|
||||||
|
move 7 from 3 to 5
|
||||||
|
move 3 from 7 to 2
|
||||||
|
move 1 from 7 to 3
|
||||||
|
move 12 from 2 to 8
|
||||||
|
move 23 from 8 to 2
|
||||||
|
move 16 from 2 to 6
|
||||||
|
move 1 from 9 to 6
|
||||||
|
move 7 from 5 to 7
|
||||||
|
move 7 from 2 to 4
|
||||||
|
move 2 from 3 to 8
|
||||||
|
move 1 from 1 to 9
|
||||||
|
move 5 from 8 to 1
|
||||||
|
move 2 from 3 to 9
|
||||||
|
move 2 from 7 to 1
|
||||||
|
move 4 from 1 to 3
|
||||||
|
move 4 from 7 to 2
|
||||||
|
move 2 from 1 to 4
|
||||||
|
move 11 from 2 to 9
|
||||||
|
move 3 from 3 to 4
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 2 from 2 to 7
|
||||||
|
move 4 from 4 to 8
|
||||||
|
move 2 from 9 to 5
|
||||||
|
move 2 from 5 to 7
|
||||||
|
move 4 from 4 to 6
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 4 from 4 to 2
|
||||||
|
move 2 from 1 to 3
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 2 from 3 to 5
|
||||||
|
move 3 from 9 to 7
|
||||||
|
move 2 from 8 to 9
|
||||||
|
move 1 from 9 to 6
|
||||||
|
move 2 from 7 to 3
|
||||||
|
move 2 from 8 to 1
|
||||||
|
move 1 from 4 to 9
|
||||||
|
move 18 from 6 to 2
|
||||||
|
move 1 from 6 to 5
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 18 from 2 to 3
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 2 from 5 to 9
|
||||||
|
move 1 from 1 to 4
|
||||||
|
move 3 from 2 to 1
|
||||||
|
move 9 from 9 to 4
|
||||||
|
move 7 from 4 to 6
|
||||||
|
move 2 from 7 to 3
|
||||||
|
move 2 from 4 to 9
|
||||||
|
move 7 from 6 to 7
|
||||||
|
move 3 from 7 to 2
|
||||||
|
move 7 from 6 to 3
|
||||||
|
move 2 from 6 to 9
|
||||||
|
move 24 from 3 to 9
|
||||||
|
move 2 from 6 to 8
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 2 from 8 to 5
|
||||||
|
move 31 from 9 to 3
|
||||||
|
move 6 from 7 to 4
|
||||||
|
move 35 from 3 to 7
|
||||||
|
move 1 from 1 to 8
|
||||||
|
move 1 from 5 to 7
|
||||||
|
move 1 from 5 to 4
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 3 from 1 to 7
|
||||||
|
move 7 from 4 to 5
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 4 from 5 to 6
|
||||||
|
move 2 from 5 to 2
|
||||||
|
move 6 from 2 to 5
|
||||||
|
move 2 from 5 to 7
|
||||||
|
move 2 from 2 to 1
|
||||||
|
move 2 from 5 to 4
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 3 from 4 to 6
|
||||||
|
move 4 from 6 to 7
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 2 from 6 to 9
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 2 from 9 to 6
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 34 from 7 to 9
|
||||||
|
move 6 from 7 to 3
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 1 from 5 to 8
|
||||||
|
move 1 from 8 to 6
|
||||||
|
move 6 from 7 to 4
|
||||||
|
move 1 from 7 to 3
|
||||||
|
move 7 from 3 to 5
|
||||||
|
move 6 from 4 to 6
|
||||||
|
move 31 from 9 to 1
|
||||||
|
move 3 from 5 to 7
|
||||||
|
move 24 from 1 to 3
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 3 from 9 to 1
|
||||||
|
move 14 from 3 to 5
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 8 from 3 to 7
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 7 from 1 to 5
|
||||||
|
move 3 from 6 to 8
|
||||||
|
move 3 from 6 to 1
|
||||||
|
move 1 from 1 to 3
|
||||||
|
move 4 from 3 to 2
|
||||||
|
move 4 from 2 to 3
|
||||||
|
move 2 from 5 to 1
|
||||||
|
move 9 from 7 to 4
|
||||||
|
move 1 from 6 to 5
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 3 from 8 to 9
|
||||||
|
move 5 from 4 to 2
|
||||||
|
move 3 from 2 to 3
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 2 from 4 to 1
|
||||||
|
move 2 from 9 to 4
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 1 from 6 to 1
|
||||||
|
move 1 from 9 to 6
|
||||||
|
move 25 from 5 to 4
|
||||||
|
move 4 from 1 to 9
|
||||||
|
move 2 from 3 to 7
|
||||||
|
move 2 from 6 to 9
|
||||||
|
move 2 from 9 to 5
|
||||||
|
move 6 from 7 to 1
|
||||||
|
move 5 from 3 to 6
|
||||||
|
move 10 from 4 to 3
|
||||||
|
move 10 from 4 to 8
|
||||||
|
move 2 from 4 to 2
|
||||||
|
move 5 from 1 to 9
|
||||||
|
move 2 from 6 to 4
|
||||||
|
move 6 from 9 to 6
|
||||||
|
move 7 from 6 to 4
|
||||||
|
move 3 from 9 to 4
|
||||||
|
move 3 from 2 to 4
|
||||||
|
move 4 from 3 to 8
|
||||||
|
move 2 from 5 to 3
|
||||||
|
move 10 from 4 to 9
|
||||||
|
move 4 from 9 to 7
|
||||||
|
move 5 from 9 to 5
|
||||||
|
move 4 from 5 to 1
|
||||||
|
move 9 from 4 to 6
|
||||||
|
move 10 from 1 to 3
|
||||||
|
move 1 from 5 to 4
|
||||||
|
move 3 from 4 to 5
|
||||||
|
move 2 from 5 to 7
|
||||||
|
move 1 from 7 to 3
|
||||||
|
move 1 from 6 to 9
|
||||||
|
move 11 from 8 to 6
|
||||||
|
move 14 from 6 to 5
|
||||||
|
move 1 from 4 to 7
|
||||||
|
move 7 from 5 to 3
|
||||||
|
move 3 from 5 to 4
|
||||||
|
move 2 from 9 to 5
|
||||||
|
move 2 from 4 to 3
|
||||||
|
move 2 from 7 to 4
|
||||||
|
move 11 from 3 to 9
|
||||||
|
move 2 from 8 to 2
|
||||||
|
move 2 from 2 to 3
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 3 from 4 to 5
|
||||||
|
move 2 from 6 to 9
|
||||||
|
move 1 from 1 to 8
|
||||||
|
move 10 from 9 to 7
|
||||||
|
move 2 from 9 to 3
|
||||||
|
move 23 from 3 to 9
|
||||||
|
move 4 from 6 to 4
|
||||||
|
move 9 from 5 to 6
|
||||||
|
move 1 from 5 to 3
|
||||||
|
move 5 from 6 to 7
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 4 from 6 to 7
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 1 from 7 to 5
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 12 from 7 to 6
|
||||||
|
move 9 from 9 to 3
|
||||||
|
move 6 from 6 to 4
|
||||||
|
move 8 from 7 to 3
|
||||||
|
move 3 from 7 to 4
|
||||||
|
move 6 from 3 to 1
|
||||||
|
move 10 from 4 to 8
|
||||||
|
move 10 from 8 to 7
|
||||||
|
move 2 from 3 to 7
|
||||||
|
move 9 from 3 to 8
|
||||||
|
move 2 from 6 to 3
|
||||||
|
move 10 from 7 to 1
|
||||||
|
move 3 from 4 to 6
|
||||||
|
move 5 from 8 to 5
|
||||||
|
move 3 from 5 to 7
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 6 from 9 to 1
|
||||||
|
move 12 from 1 to 3
|
||||||
|
move 3 from 6 to 9
|
||||||
|
move 3 from 1 to 7
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 7 from 1 to 7
|
||||||
|
move 1 from 2 to 7
|
||||||
|
move 2 from 6 to 4
|
||||||
|
move 1 from 4 to 5
|
||||||
|
move 3 from 8 to 7
|
||||||
|
move 2 from 6 to 3
|
||||||
|
move 2 from 6 to 1
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 5 from 3 to 4
|
||||||
|
move 2 from 8 to 5
|
||||||
|
move 14 from 7 to 4
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 1 from 3 to 7
|
||||||
|
move 7 from 7 to 4
|
||||||
|
move 2 from 5 to 3
|
||||||
|
move 2 from 1 to 4
|
||||||
|
move 9 from 4 to 6
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 4 from 9 to 4
|
||||||
|
move 8 from 9 to 3
|
||||||
|
move 2 from 2 to 7
|
||||||
|
move 13 from 4 to 8
|
||||||
|
move 4 from 4 to 1
|
||||||
|
move 2 from 7 to 6
|
||||||
|
move 12 from 3 to 2
|
||||||
|
move 11 from 2 to 9
|
||||||
|
move 6 from 4 to 9
|
||||||
|
move 18 from 9 to 4
|
||||||
|
move 2 from 1 to 6
|
||||||
|
move 6 from 8 to 1
|
||||||
|
move 13 from 6 to 5
|
||||||
|
move 8 from 4 to 5
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 8 from 1 to 4
|
||||||
|
move 7 from 4 to 8
|
||||||
|
move 4 from 3 to 5
|
||||||
|
move 10 from 8 to 5
|
||||||
|
move 13 from 5 to 8
|
||||||
|
move 12 from 4 to 5
|
||||||
|
move 2 from 9 to 8
|
||||||
|
move 29 from 5 to 9
|
||||||
|
move 24 from 9 to 2
|
||||||
|
move 23 from 2 to 4
|
||||||
|
move 5 from 9 to 2
|
||||||
|
move 7 from 5 to 7
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 7 from 4 to 8
|
||||||
|
move 14 from 8 to 1
|
||||||
|
move 5 from 2 to 6
|
||||||
|
move 16 from 4 to 7
|
||||||
|
move 8 from 1 to 6
|
||||||
|
move 1 from 2 to 8
|
||||||
|
move 20 from 7 to 6
|
||||||
|
move 11 from 6 to 4
|
||||||
|
move 3 from 1 to 5
|
||||||
|
move 3 from 4 to 3
|
||||||
|
move 8 from 4 to 9
|
||||||
|
move 8 from 6 to 1
|
||||||
|
move 2 from 1 to 4
|
||||||
|
move 3 from 5 to 2
|
||||||
|
move 12 from 8 to 2
|
||||||
|
move 1 from 7 to 1
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 1 from 7 to 8
|
||||||
|
move 1 from 7 to 3
|
||||||
|
move 12 from 2 to 8
|
||||||
|
move 13 from 6 to 4
|
||||||
|
move 2 from 1 to 9
|
||||||
|
move 3 from 2 to 6
|
||||||
|
move 3 from 9 to 7
|
||||||
|
move 5 from 9 to 1
|
||||||
|
move 4 from 6 to 4
|
||||||
|
move 2 from 3 to 6
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 9 from 1 to 5
|
||||||
|
move 11 from 8 to 3
|
||||||
|
move 1 from 6 to 8
|
||||||
|
move 3 from 7 to 1
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 2 from 8 to 9
|
||||||
|
move 7 from 1 to 2
|
||||||
|
move 17 from 4 to 7
|
||||||
|
move 1 from 8 to 6
|
||||||
|
move 4 from 7 to 2
|
||||||
|
move 4 from 9 to 7
|
||||||
|
move 4 from 2 to 3
|
||||||
|
move 1 from 1 to 4
|
||||||
|
move 2 from 4 to 3
|
||||||
|
move 9 from 5 to 4
|
||||||
|
move 1 from 6 to 8
|
||||||
|
move 6 from 2 to 1
|
||||||
|
move 5 from 1 to 9
|
||||||
|
move 9 from 4 to 3
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 2 from 9 to 7
|
||||||
|
move 1 from 1 to 5
|
||||||
|
move 1 from 2 to 7
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 1 from 6 to 8
|
||||||
|
move 1 from 5 to 4
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 23 from 3 to 7
|
||||||
|
move 36 from 7 to 6
|
||||||
|
move 33 from 6 to 1
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 7 from 1 to 5
|
||||||
|
move 1 from 8 to 1
|
||||||
|
move 3 from 7 to 2
|
||||||
|
move 24 from 1 to 3
|
||||||
|
move 7 from 7 to 3
|
||||||
|
move 3 from 5 to 1
|
||||||
|
move 4 from 5 to 3
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 2 from 9 to 6
|
||||||
|
move 1 from 8 to 5
|
||||||
|
move 3 from 2 to 5
|
||||||
|
move 30 from 3 to 5
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 6 from 1 to 8
|
||||||
|
move 7 from 3 to 2
|
||||||
|
move 1 from 7 to 5
|
||||||
|
move 2 from 3 to 2
|
||||||
|
move 2 from 6 to 8
|
||||||
|
move 1 from 6 to 1
|
||||||
|
move 7 from 5 to 8
|
||||||
|
move 8 from 8 to 7
|
||||||
|
move 20 from 5 to 8
|
||||||
|
move 2 from 9 to 7
|
||||||
|
move 8 from 2 to 1
|
||||||
|
move 7 from 7 to 3
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 3 from 7 to 9
|
||||||
|
move 4 from 8 to 3
|
||||||
|
move 5 from 5 to 6
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 4 from 9 to 4
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 2 from 3 to 6
|
||||||
|
move 1 from 5 to 8
|
||||||
|
move 7 from 6 to 3
|
||||||
|
move 1 from 4 to 1
|
||||||
|
move 7 from 3 to 2
|
||||||
|
move 3 from 3 to 5
|
||||||
|
move 2 from 4 to 7
|
@ -1,31 +0,0 @@
|
|||||||
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)}")
|
|
@ -0,0 +1 @@
|
|||||||
|
zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw
|
@ -0,0 +1,6 @@
|
|||||||
|
line = open("input.txt", "r").read()
|
||||||
|
|
||||||
|
for i in range(len(line)):
|
||||||
|
if len(set(line[i : i + 4])) == 4:
|
||||||
|
print(i + 4)
|
||||||
|
break
|
@ -0,0 +1,7 @@
|
|||||||
|
line = open("input.txt", "r").read()
|
||||||
|
|
||||||
|
for i in range(len(line)):
|
||||||
|
if len(set(line[i : i + 14])) == 14:
|
||||||
|
print(set(line[i : i + 14]))
|
||||||
|
print(i + 14)
|
||||||
|
break
|
@ -0,0 +1 @@
|
|||||||
|
jfnjjwbbqttplpvllqgllmdllfmllscssqmqzmmwzznqnwqnwnqnjjbdbpbtbdbzzzljljzjjpccrmmppzfpzfpfnfccfbbcqcrcffblfbftbfbtbwwwmgwmgmnngnllnfllhghcghhjppchcfcnfffllmmqbmmpwwwwlqwwqgqcqsqjqpqzqqdzdtztltslsljjfqfcqqgbqqqghqgqvgvrggqwggrgjgmmnrmmzgmzgzpzjjctcmtcmcnndppcvpvrrwvrvhrvhrhjhnjnvjnjrjggccvffnqqvfqvvnmvmqmfmfqqzfzbfzzzgpzpllrwwnpwpnwnwgwhhrrdnrrdjjzjszsjjbddcdbbvmbmqbqnbqbsqbsqqwbwhwggssdnnmttvnnvmnmhmfhhjchcttzdzdqqszzcwwhhwzhwhphqhcqqsggddfmmvzmzwmwfwzwrrbmrrnwnfnwnlwnwrwfwnnmtnnzwnwdnnbhhrphrhlhwllpmmbcbtbffmqffddjnjwwzpzfpptbbqqwbwzbzjbjmjljblbtlblqqhqbqggrngrgllbmbccmhmqmqwwqcqssqzzfjzjrjnnqrqssfnsnvvtgvvmsvsqqljjbsbrrjllvfvzfzmzhzzhthjhshlslfljfjqjpqpvvmpmhpmhmqqmmdwmddppjlplhlsstlssgnggrbblggffcdfdzzwqqtztqtwqtwtzzsjsbszsbsvbvwwjqjnnpdpccwssvdsdzzqbqbtbtqtmtltltvlvddzwzzfpzpjpgphprpgpqqwppdwpdplddvffcdffvpvqqgvqgvvrfvrvqrrcjcpjjpttftqqvjqvqsvqsvqssdpdbbbmcmscsddbhhgttwhhjlltqllnqntqtsscnntwwhswswlwggldltlttsjszsnznsznzccbtbblplnnmfmqmrrvjvhjhzhnzzgnnhrrdrllblpbllfdfjjssvnssvlsllnqqhwqhhhsgstsjstthrrhrghrhhfmhmwhwrwwsrwrfwwdnntqnnsvnvmnnfvnntztqzqhqnqjnnjfflbfllrsllqhqdqccgvgnvvcwcfccmssqnqhhqrrfrtrvvnjnpjnjjpplmlppvmpphjhppvhvdvssjcjrrtrdrrsvvbbjzzrtztgzghzhccwmccshhzbhhdwdwsdswwlcwllpblpphrppfhfnffrbbcgcmggnvnzzmvvcrrftrftrffcscvcsslbljlglzgzbzczszmsmbmnbbhdhvvsqvqhvvfrfddbpwgvztwwqcpzhhwnhphnrwldjmztsptbbgsqbqqccwbdqzvhfjlfldgphzbfprclgpfztbrgvsvfpghmdchscbdqjqgzvmrtdrfzbhgdvgznjcsmglcfwhdtpsljnvvzjcbbrczwtgpdmgpzhctvbbmvsjzthffsjqhfsdrclpqslbhnmpczwvggpzbjcchfjzjhhgtrmlgnzlndfvzrccgggrpmprbmjbfjjhzrhrtwgqdbgdlqghssrnmtmpvttcqwnwdzhgfnddgbqcsdvzvwqdnmmpwrwhfbqtcpqhvwbczrmjqzsntvdrncwjsmvvwcngrtlwtjmnctwrrtvphbjhlqmgzfsfsrblzzvmzlbhzjhwbdfpncdrfchmrqhspdszcjrnvwtmjzmsmzcdphsdzjgqswwrpdvlpvrdnhplnlmswvcrzlcmbtqtscjfwrnrctrvdqcqzwcvgvpdgrndrgsrvzftwpqjjgjhzwhvrjlqntdtcjdrqzhqlqqdffcgvttlhvwgggnwmdlvghfgjpsmntbvbjbbttrwsljwsrvtmznvqdptpwtdcwtcsfdjlmdqthqggjcptrqhbsbjzqqmvvjmgmppqmjmnjdqvspzlbgzjsjshpslmszqnzghsszpsmpzfcrqqjdwvtbnzstvvjzvtzgpptcmvmbvmpvpzvgfnwtlmdzhvhshtwvnbgwmtzqhcptflpqsqvmptchpfcbwhvjzdcnsnqrgdwfcthqfssnbqnvgvvhlzqfqmdlcwnshtvhhhpghjbmhdbfbqcvbnbvwbzcbbmjnrqmsdqnmnbsrvhggzsrlbwtfmgwrnlhrbrrrqdcspnrpnppngrtdqtbmbhcbjrlhpfjpdnfndmqvwvhlgmsntpwrlrwwqhwvzbpzqqggnbqlsjjqtbqjcdpmndgmtdhfbqrpdzzsnmhzmqqnbdqftqmnhfbdzdlfwgjsjhrcsmtfzgwbvbbzdrlbmcgmppqfppmbqrnsmrmhrdsvgcfmzpfnvrbbgfccfcbphszwdbnnwcjjvvlpdtfzgtslvgqwmsvlpzjcbqwqclrjrsgthhtqrqrhvsdfjntgllsvslrvdtnsdmrgtqcmswnqwlrwlfmcfftbjpvdnmczqzldsssszhjtqtqvqtwhjcqchjvqvntvzzzprbmjcctsqfdcvpbtsgnnsqtqnmjhrgqcjnzrdsgrbtdpqjbgcmnfwhnsrfwcdmncjzwcngfbmmrsbvgvvqpvrdjfsqwjdmqjdpzcbjjfmzjjgbnwqgrvpmbzdhsgtldrzvglscfwbmjltcrzrgdslgprwscwbrhtdtglznjdcvfjzjjqzntdqdbcrcbbmvnzdshjzcsfsgpghmgdqdwsnwjtvtbqbqccbcwjpnhdhzcvdssvnvqtvzwprhpgftdwwvgsbnlzzjppcrrwmrsthvjjrvrsdrbdqfgsjsmwfplpstrbnpdhhcblhjfwzngmhlwbvnfcbgwshspsbbgbldrvmcnczszpgnddrfwrtgcqjggrrcbjwrdjlrvtspbftrtjbzjwchpfnjctcjtwtpmtblczcftqlphdjczfrvtzlsglpvhqsqqblttdjrlczhrqsgpggmvnhpqtrfbpgvzftwtsmwhwswtpvtwnsshmlcffpcjshqhqqsjtpbgszscmcbnhjjtjmpgfdhgmljqmmwlfptstjjvqhcbjpjpwzwqflhslclzzjlmcttbsncqmfzhgnzwbdtnvfwbtztwbhtfsqjfzwmfflmbwnqzqhcjwdpbvngsgzlwvwcqhqjsndznbbdcqqhmjjpqjbsnvwztgmqwdcbbjvcndmhsbvbjnzlbscmgnjcrrwrfdljtcsgmwtffgcjflpzzdcnzvmrbnrjbbmhzqqjtgsrwqmmrhpndwlbnrtrhhpqlmdrcrtdmzsslrmffpftdjvfcpvvhzhjhqtrrsclvtbsccgmmqrjbqgbmpnbzlsncssdhmjppjptvddfgbbnjzjjldjlqjzhhttsclrmsgzctwjqqvtjlfzwgtffgrdjzwdcnrprlcswffghngrqcgsbzqhhvbfjtwcjlrrmbtqjdrgpnbftnmzqnndnqwgrqndlwmjnnspbhjlnzrnptnrmcjhpbfcqpvbchvdwthjlcrfpssgtfbsgfrftcrwttrspbsvzpvcczmdqslcdgfljvtjsdpjnwmdvfzfllrdrbgvpltzlqcrlwbncswhfvrdthspmhfhfdlvpbcqlmjfznhnqblffftgzqrtswnmtnvjprqqhhhvrscvbbzgmnlnprghfdjqbgjppjzjrnclfdssbmgspwcscnlcrrqmtlljrmcwgdgcqwvvjzvsjdjvsspszlcthwzrwqtzdgmqvnlvvzrvrpqqwswzcchncrpnjdmflvmhhwvrrstpvnszfrmvpdtpqpbdmwvvbbpjnwmtststtlcvqdnvqqphzlhhzbbbjssgdcnhlmwrzwvwmcmgrcngqzcnffqzfnvldpdjmsspgpbrzhnszfnljfcrgsjvqjjbstvghlcslhqlzhltpglwffrzfgjghssfgrptbnpbhqnhhfbjsnmsvltqpthdmzzrhrhhmzlplvrtdqfrfrppdpqnllblcfjqpdwznsbrhcncdpmztcrjrfnlwtznrmpbzqsbrqrbnthgfpshrdhnwjmrnsmsfqwdjsmsvhfrbdpjrwcvmdvvmdtfqjgmdsrqtctsdmznngbsrfjvhllgwt
|
@ -1,190 +0,0 @@
|
|||||||
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))
|
|
@ -0,0 +1,23 @@
|
|||||||
|
$ cd /
|
||||||
|
$ ls
|
||||||
|
dir a
|
||||||
|
14848514 b.txt
|
||||||
|
8504156 c.dat
|
||||||
|
dir d
|
||||||
|
$ cd a
|
||||||
|
$ ls
|
||||||
|
dir e
|
||||||
|
29116 f
|
||||||
|
2557 g
|
||||||
|
62596 h.lst
|
||||||
|
$ cd e
|
||||||
|
$ ls
|
||||||
|
584 i
|
||||||
|
$ cd ..
|
||||||
|
$ cd ..
|
||||||
|
$ cd d
|
||||||
|
$ ls
|
||||||
|
4060174 j
|
||||||
|
8033020 d.log
|
||||||
|
5626152 d.ext
|
||||||
|
7214296 k
|
@ -0,0 +1,52 @@
|
|||||||
|
lines = open("input.txt", "r").read().splitlines()
|
||||||
|
|
||||||
|
|
||||||
|
class Directory:
|
||||||
|
def __init__(self, path, parent):
|
||||||
|
self.path = path
|
||||||
|
self.parent = parent
|
||||||
|
self.children = []
|
||||||
|
self.files = []
|
||||||
|
|
||||||
|
def mb(self):
|
||||||
|
val_self = sum(self.files)
|
||||||
|
for child in self.children:
|
||||||
|
val_self = val_self + paths[child].mb()
|
||||||
|
return val_self
|
||||||
|
|
||||||
|
|
||||||
|
ls = False
|
||||||
|
root = Directory("/", None)
|
||||||
|
cwd = root
|
||||||
|
paths = {"/": root}
|
||||||
|
|
||||||
|
for line in lines:
|
||||||
|
cmd = line.split(" ")
|
||||||
|
if cmd[0] == "$":
|
||||||
|
ls = False
|
||||||
|
if cmd[1] == "cd":
|
||||||
|
if cmd[2] == "..":
|
||||||
|
path = cwd.parent.path
|
||||||
|
cwd = cwd.parent
|
||||||
|
elif cmd[2] == "/":
|
||||||
|
path = "/"
|
||||||
|
cwd = root
|
||||||
|
else:
|
||||||
|
path = cwd.path + cmd[2] + "/"
|
||||||
|
if path not in paths:
|
||||||
|
paths[path] = Directory(path, cwd)
|
||||||
|
cwd = paths[path]
|
||||||
|
if cmd[1] == "ls":
|
||||||
|
ls = True
|
||||||
|
elif ls:
|
||||||
|
if cmd[0] != "dir":
|
||||||
|
cwd.files.append(int(cmd[0]))
|
||||||
|
else:
|
||||||
|
cwd.children.append(cwd.path + cmd[1] + "/")
|
||||||
|
|
||||||
|
sizes = []
|
||||||
|
for dirs in paths.values():
|
||||||
|
if dirs.mb() <= 100000:
|
||||||
|
sizes.append(dirs.mb())
|
||||||
|
|
||||||
|
print(sum(sizes))
|
@ -0,0 +1,57 @@
|
|||||||
|
lines = open("input.txt", "r").read().splitlines()
|
||||||
|
|
||||||
|
|
||||||
|
class Directory:
|
||||||
|
def __init__(self, path, parent):
|
||||||
|
self.path = path
|
||||||
|
self.parent = parent
|
||||||
|
self.children = []
|
||||||
|
self.files = []
|
||||||
|
|
||||||
|
def mb(self):
|
||||||
|
val_self = sum(self.files)
|
||||||
|
for child in self.children:
|
||||||
|
val_self = val_self + paths[child].mb()
|
||||||
|
return val_self
|
||||||
|
|
||||||
|
|
||||||
|
ls = False
|
||||||
|
root = Directory("/", None)
|
||||||
|
cwd = root
|
||||||
|
paths = {"/": root}
|
||||||
|
|
||||||
|
for line in lines:
|
||||||
|
cmd = line.split(" ")
|
||||||
|
if cmd[0] == "$":
|
||||||
|
ls = False
|
||||||
|
if cmd[1] == "cd":
|
||||||
|
if cmd[2] == "..":
|
||||||
|
path = cwd.parent.path
|
||||||
|
cwd = cwd.parent
|
||||||
|
elif cmd[2] == "/":
|
||||||
|
path = "/"
|
||||||
|
cwd = root
|
||||||
|
else:
|
||||||
|
path = cwd.path + cmd[2] + "/"
|
||||||
|
if path not in paths:
|
||||||
|
paths[path] = Directory(path, cwd)
|
||||||
|
cwd = paths[path]
|
||||||
|
if cmd[1] == "ls":
|
||||||
|
ls = True
|
||||||
|
elif ls:
|
||||||
|
if cmd[0] != "dir":
|
||||||
|
cwd.files.append(int(cmd[0]))
|
||||||
|
else:
|
||||||
|
cwd.children.append(cwd.path + cmd[1] + "/")
|
||||||
|
|
||||||
|
sizes = {}
|
||||||
|
for dirs in paths.values():
|
||||||
|
if (70000000 - paths["/"].mb()) + dirs.mb() >= 30000000:
|
||||||
|
sizes[dirs.path] = dirs.mb()
|
||||||
|
|
||||||
|
smallest = 70000000
|
||||||
|
for i in sizes:
|
||||||
|
if sizes[i] < smallest:
|
||||||
|
smallest = sizes[i]
|
||||||
|
|
||||||
|
print(smallest)
|
File diff suppressed because it is too large
Load Diff
@ -1,90 +0,0 @@
|
|||||||
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}")
|
|
@ -0,0 +1,5 @@
|
|||||||
|
30373
|
||||||
|
25512
|
||||||
|
65332
|
||||||
|
33549
|
||||||
|
35390
|
@ -0,0 +1,32 @@
|
|||||||
|
trees = open("input.txt", "r").read().splitlines()
|
||||||
|
|
||||||
|
outer = 2 * len(trees) + 2 * len(trees[0]) - 4
|
||||||
|
|
||||||
|
visible = [[0 for k in range(len(trees))] for l in range(len(trees[0]))]
|
||||||
|
|
||||||
|
for i in range(1, len(trees) - 1):
|
||||||
|
largest = trees[i][0]
|
||||||
|
for j in range(1, len(trees[0]) - 1):
|
||||||
|
if trees[i][j] > largest:
|
||||||
|
visible[i][j] = 1
|
||||||
|
largest = trees[i][j]
|
||||||
|
largest = trees[i][len(trees[0]) - 1]
|
||||||
|
for j in range(1, len(trees[0]) - 1)[::-1]:
|
||||||
|
if trees[i][j] > largest:
|
||||||
|
visible[i][j] = 1
|
||||||
|
largest = trees[i][j]
|
||||||
|
|
||||||
|
for j in range(1, len(trees[0]) - 1):
|
||||||
|
largest = trees[0][j]
|
||||||
|
for i in range(1, len(trees) - 1):
|
||||||
|
if trees[i][j] > largest:
|
||||||
|
visible[i][j] = 1
|
||||||
|
largest = trees[i][j]
|
||||||
|
largest = trees[len(trees) - 1][j]
|
||||||
|
for i in range(1, len(trees) - 1)[::-1]:
|
||||||
|
print(i)
|
||||||
|
if trees[i][j] > largest:
|
||||||
|
visible[i][j] = 1
|
||||||
|
largest = trees[i][j]
|
||||||
|
|
||||||
|
print(sum(sum(visible, [])) + outer)
|
@ -0,0 +1,34 @@
|
|||||||
|
trees = open("input.txt", "r").read().splitlines()
|
||||||
|
|
||||||
|
score = [[0 for k in range(len(trees))] for l in range(len(trees[0]))]
|
||||||
|
|
||||||
|
for i in range(len(trees)):
|
||||||
|
for j in range(len(trees[0])):
|
||||||
|
n, s, w, o = 0, 0, 0, 0
|
||||||
|
for k in range(i)[::-1]:
|
||||||
|
if trees[i][j] > trees[k][j]:
|
||||||
|
n += 1
|
||||||
|
else:
|
||||||
|
n += 1
|
||||||
|
break
|
||||||
|
for k in range(i + 1, len(trees)):
|
||||||
|
if trees[i][j] > trees[k][j]:
|
||||||
|
s += 1
|
||||||
|
else:
|
||||||
|
s += 1
|
||||||
|
break
|
||||||
|
for k in range(j)[::-1]:
|
||||||
|
if trees[i][j] > trees[i][k]:
|
||||||
|
w += 1
|
||||||
|
else:
|
||||||
|
w += 1
|
||||||
|
break
|
||||||
|
for k in range(j + 1, len(trees[0])):
|
||||||
|
if trees[i][j] > trees[i][k]:
|
||||||
|
o += 1
|
||||||
|
else:
|
||||||
|
o += 1
|
||||||
|
break
|
||||||
|
score[i][j] = n * s * w * o
|
||||||
|
|
||||||
|
print(max([x for y in score for x in y]))
|
@ -0,0 +1,99 @@
|
|||||||
|
200120010031113332213034140102430141241124321111512323442304040044220141342121012210022220211111200
|
||||||
|
111021120230012003124233312003010303204555454332453445353125225214221214442214301113012111020220220
|
||||||
|
010000112330232223210123331341111021455213441355415452453433542411022110033014112420103200010200112
|
||||||
|
210220131023203033023421012411405531115123145115445215311422135252541100222231431331003220231121021
|
||||||
|
020112210133112114444340100410411231114131452544155151415233415312511222041221113442132231003203100
|
||||||
|
121210122332301142321211440441113455552434332511455325315545354524142541534411112013143013120333022
|
||||||
|
002022223332143323320030004111431434153352153321414154453442552321332341355132444030442110103203212
|
||||||
|
212130023213100232130230411132244242133251435525323326611211534441513532233340420321144212221332012
|
||||||
|
112201210213131241203033341411115513233426453426433653356253533133113511115222441140433214102332200
|
||||||
|
212012000101044144022321521321444445566546646625625665232323663631331412343532242340023204432003233
|
||||||
|
101233132121222100241254211542133266356326564552445466322626353633223221135151311240430411433022011
|
||||||
|
200132020222314334333551152431232424524623645555522366665322366466545513112135535223102441334310202
|
||||||
|
023113000020114221524122422222662645435544455234636242322656464245462233555511334411233402112203303
|
||||||
|
323212301014434412315252233452332225554646452654545433445553336343544664455435323243510303023142200
|
||||||
|
310022200424121333144123222262332322343322244646667564465544426245466232342143412141451122001041322
|
||||||
|
212301111322001335441132334525635254352425553354565445643472236236266635446421522132452121404230333
|
||||||
|
222212444300345211222512256444456624535343536756355746664436374344346652444335121144422222340114403
|
||||||
|
133103420101433344253425324366444265345745457464444766674564476573243345254266312555221132304022243
|
||||||
|
104024111323421413115464433455553477333456354575666765646757774776752425462423244113225443242031103
|
||||||
|
102001244212344453145353232652647556546465453563544776667356374453675332254663444121345213131024201
|
||||||
|
224444241243433331136646422564367344447534333336573546336576477746463642222264422255444411444213332
|
||||||
|
111102440221143134255523244546456346745346547453543465664363545634575433436342252431313443241200434
|
||||||
|
134231321331555233423635635366465473563535535586445888474374535544636375425246452265522242444124430
|
||||||
|
234112414314111344422243544643454775656784865866884848444877466476364476356322553554245224411411221
|
||||||
|
034400114351525345222546546744637535635657575787587675474664764764736443646462322222525151425423322
|
||||||
|
200214241324215322354446653764777674587466544685754678446567884767437556756324542252661541311422130
|
||||||
|
343144113253113264625454456777333344687566876677476786864558645875776364454562645333232242321313142
|
||||||
|
343024121143435322432236376444777668467756646886688564457885758774655565674476525265433235351133020
|
||||||
|
403402124545255442342535445764457654765745674556784877787445455686478773563733543423236235255444144
|
||||||
|
103322531152132266562676355566367676848756788886766967585484486646776553753344443262466623351341241
|
||||||
|
310355244513624552353465735465555764667556575665597778969594858667646774744555337236256442514154340
|
||||||
|
023311451112523462333545544537465688645559988688956997665697964748587858337347363225646321434554144
|
||||||
|
320135522136342345436443367666564847488558589757575579796688785767645678467555334323622425311134113
|
||||||
|
302355525243323546577736555686874886486985688686888898966978978668487864787645754566534465541511251
|
||||||
|
334125312126266532347576536548547584696886997768569758698995755875465674754333433642553345425533431
|
||||||
|
341111335132225635365534457665748575977867585959997886979957965558787465664637533766462255534332423
|
||||||
|
332515314534343636736373478687676678865555895657977886779567677978977887466835476754353523355412552
|
||||||
|
223554423243256435734467677444784886576856669787898778968956989875566754875777467667635224535114135
|
||||||
|
155522522343322534364735656868875656687568869667769697877887796866975856457447636733764232364431215
|
||||||
|
242345244424435673345476658556448689589759768689899966877768987857579874745884637474453634352133231
|
||||||
|
415255446645436567674735664645455855996887768879976678686967768687868985856885736776326622253351232
|
||||||
|
345511155426334655353457846578475998667966669787979667866969678557875668566464436456435236255355314
|
||||||
|
142554534636264637437346664558867877978687978689679869967766679569789677485678377367342526223134543
|
||||||
|
445152112563265336347774464854776998568899676687677797996796877777879786686845577654534235322155423
|
||||||
|
333311452256452445537757558677965658888896678979799998788899698785896978877575444547572432544335251
|
||||||
|
153342523322435374455644657476596955598987666997999878876686677879688676464687476363732553363413554
|
||||||
|
144335145664565566437454557675966795686769969779977988878679878778787789465465637576634655354532332
|
||||||
|
152415343652336664567566647557776598677998979889877998977867798897785759685544636646555455665423232
|
||||||
|
233452324356364643433768554555595977968766779897887998898666688775789556775758843355374525244243434
|
||||||
|
415514136342636535455644448567857957878867697988999887897878896698589669784466744746433345345355353
|
||||||
|
232342145445335734443368474877857768999979889789879797978786868766697957448687837436437246435352325
|
||||||
|
423142134652644455355368647749855698998886897798977997799867788779868756865564445675347463653623132
|
||||||
|
221215125542657466763755887857659858677696867997877899797779899996787779754784846775376254442211254
|
||||||
|
154531463524644747547747455647685566769977767978799879788898879798999996758665537564563322242224125
|
||||||
|
114543323332546776763457675777969696978788779877889799879998997975759878686666834757774555334611241
|
||||||
|
353441154256436766664748544445957885788777978878979877989798876799786999466647747557553324526153313
|
||||||
|
433233236244364537664567776764977668967888876787887977898978679686668778764647857553662664333221513
|
||||||
|
112335142543334473565677774456986769698869989679787999966877889796668798648474667745633463364123315
|
||||||
|
113555236654542657737447854474695576987788777767987976776779677896568655666568777374452626625515123
|
||||||
|
335535115334436455537766485588496998559679678997888767666867796988758985466776445675326242423551222
|
||||||
|
113534446446435634464566878474597579966586699697988866966997787776788976778774466655756463456235323
|
||||||
|
432234422656545375357656547448457656589888789768979867898878979959955468888683644466555336562315155
|
||||||
|
313344415452422533675445775845665999956589788887986877769867786689888565577764433373633363624515141
|
||||||
|
222432351346446453465663784584875977688789959977876966969658866777886544775874577535665532224311252
|
||||||
|
225114233145352533344653757488874695566977756698769768695668575699668757584555454357642544414312222
|
||||||
|
033415322244643242337557674678486867575857998965787859688788778777887745544746656765646262354135222
|
||||||
|
244444135424622245536477356767676647596876888859989597677576756885858547856577434533266366252341111
|
||||||
|
043422441154553466473376764757644888596669857975585975898957778585855575867574554436566563342243533
|
||||||
|
331142132342425642446677456357664865566895568659588999997598897847485545576757377726563624233332331
|
||||||
|
023252542543632422666654576368776445864568889675685656595757555564576478356355573264462564525315531
|
||||||
|
401013153355343645357335364463874854866687865999886679877556446867474565563474773455256232432344241
|
||||||
|
021145311524153334266573666344586785645787666877957988698886547444446737764473344255436645355133043
|
||||||
|
343022114235145422524664767447348848745548778464684486768568675765556575337775543626443412212441440
|
||||||
|
111402455441135334663624565477563468586767564584754776865658486876757446535673333342623334312243002
|
||||||
|
300312451335434322222245676775746358685854756547745674447587647487533473336654232544332431554454412
|
||||||
|
433111155454541556355524273356653577688858857767884847858548544877576457444762553325524214215402141
|
||||||
|
131233333423335563265232427676636343767667757678865557657665545337553674363435662333422331253432142
|
||||||
|
424110224332255444554444426563344537343587775787775766858448446366677553432226234426335534235001312
|
||||||
|
333412002215124441543424366273747763767633456777658554454464446357566564765333524264253113145112300
|
||||||
|
101110030515255434456252656567734365435643756543777575374763565634563366532624443621453215143234300
|
||||||
|
303322412424455315323623364345353365376676743654344676735433644466637676342646445331232331222232310
|
||||||
|
323112211415542144152522545435246756534467755554567676637543357465766366552324534423444455001240332
|
||||||
|
104010010231221552145233456226456635564775656444567465773637433733444632663325561451234351230241312
|
||||||
|
121411232340543435321316435636242655564355535365574763633547465475523553325562122152444444042300041
|
||||||
|
131012210332331125512334254246234345354543573744464635755354544666345534262435114123351541032131413
|
||||||
|
320204021134412321515435566234224352423426577577364457356445435455454244243342521425351312003010221
|
||||||
|
323114214132034241313542544555435465334424654666346364554655422236635456436354122354410044244241323
|
||||||
|
013302120424301452153353441245652435266525344656664634425626224355262362255351231351513443132401213
|
||||||
|
320030122021334215313244242334523262333453263233364243362363226452453421344311524253311414201210001
|
||||||
|
232000301112410134252124412414346224626463252363536262245565624425334453135542241232142142113023001
|
||||||
|
023101113421202000305251552134255163452646652324334242436543224522235515444445314014323100240020120
|
||||||
|
320223110031202012323335553432231212252653563665545464422324656333443431535442453303001103202231020
|
||||||
|
102033222010100142203435155413125314311166645446465322244546532441244154143433143443342400201012012
|
||||||
|
103310002120123402241302221241151441435355114335344522434421453552354154135223134443030043002000021
|
||||||
|
112323110033212002113322411233332355223342424233213123445224135331545115152043042400020200022133330
|
||||||
|
022111301200101044211214231433231311322554214331413543414521424255241531111410022413003020200231110
|
||||||
|
012022111212202121003233141343155411314255551134343533133453252153433344441013011221420230021203220
|
||||||
|
221101122202110034040022441212441254112211113355531534335143125434435312222200311411322330203331100
|
||||||
|
210122210200133032213341213111433213432513121525124133544144433541201142230241123430213303001122221
|
@ -0,0 +1,8 @@
|
|||||||
|
R 4
|
||||||
|
U 4
|
||||||
|
L 3
|
||||||
|
D 1
|
||||||
|
R 4
|
||||||
|
D 1
|
||||||
|
L 5
|
||||||
|
R 2
|
@ -0,0 +1,8 @@
|
|||||||
|
R 5
|
||||||
|
U 8
|
||||||
|
L 8
|
||||||
|
D 3
|
||||||
|
R 17
|
||||||
|
D 10
|
||||||
|
L 25
|
||||||
|
U 20
|
@ -0,0 +1,64 @@
|
|||||||
|
lines = open("input.txt", "r").read().splitlines()
|
||||||
|
|
||||||
|
class Knots:
|
||||||
|
def __init__(self):
|
||||||
|
self.x = 0
|
||||||
|
self.y = 0
|
||||||
|
self.pos = []
|
||||||
|
|
||||||
|
def visited(self):
|
||||||
|
return len(set(self.pos))
|
||||||
|
|
||||||
|
t= Knots()
|
||||||
|
h = Knots()
|
||||||
|
|
||||||
|
def move(h, t):
|
||||||
|
if abs(h.x - t.x) <= 1 and abs(h.y - t.y) <= 1:
|
||||||
|
pass
|
||||||
|
elif abs(h.x - t.x) > 1 and abs(h.y - t.y) == 0:
|
||||||
|
if h.x > t.x:
|
||||||
|
t.x += 1
|
||||||
|
else:
|
||||||
|
t.x -= 1
|
||||||
|
elif abs(h.x - t.x) == 0 and abs(h.y - t.y) > 1:
|
||||||
|
if h.y > t.y:
|
||||||
|
t.y += 1
|
||||||
|
else:
|
||||||
|
t.y -= 1
|
||||||
|
else:
|
||||||
|
if h.x > t.x and h.y > t.y :
|
||||||
|
t.x += 1
|
||||||
|
t.y += 1
|
||||||
|
elif h.x > t.x and h.y < t.y:
|
||||||
|
t.x += 1
|
||||||
|
t.y -= 1
|
||||||
|
elif h.x < t.x and h.y < t.y:
|
||||||
|
t.x -= 1
|
||||||
|
t.y -= 1
|
||||||
|
else:
|
||||||
|
t.x -= 1
|
||||||
|
t.y += 1
|
||||||
|
t.pos.append((t.x,t.y))
|
||||||
|
|
||||||
|
|
||||||
|
t.pos.append((0,0))
|
||||||
|
for line in lines:
|
||||||
|
cmd = line.split(" ")
|
||||||
|
if cmd[0] == "R":
|
||||||
|
for i in range(int(cmd[1])):
|
||||||
|
h.x = h.x + 1
|
||||||
|
move(h, t)
|
||||||
|
if cmd[0] == "L":
|
||||||
|
for i in range(int(cmd[1])):
|
||||||
|
h.x = h.x - 1
|
||||||
|
move(h, t)
|
||||||
|
if cmd[0] == "U":
|
||||||
|
for i in range(int(cmd[1])):
|
||||||
|
h.y = h.y + 1
|
||||||
|
move(h, t)
|
||||||
|
if cmd[0] == "D":
|
||||||
|
for i in range(int(cmd[1])):
|
||||||
|
h.y = h.y - 1
|
||||||
|
move(h, t)
|
||||||
|
|
||||||
|
print(t.visited())
|
@ -0,0 +1,69 @@
|
|||||||
|
lines = open("input.txt", "r").read().splitlines()
|
||||||
|
|
||||||
|
class Knots:
|
||||||
|
def __init__(self):
|
||||||
|
self.x = 0
|
||||||
|
self.y = 0
|
||||||
|
self.pos = []
|
||||||
|
|
||||||
|
def visited(self):
|
||||||
|
return len(set(self.pos))
|
||||||
|
|
||||||
|
k = []
|
||||||
|
for i in range(10):
|
||||||
|
k.append(Knots())
|
||||||
|
k[i].pos.append((0,0))
|
||||||
|
|
||||||
|
def move(h, t):
|
||||||
|
if abs(h.x - t.x) <= 1 and abs(h.y - t.y) <= 1:
|
||||||
|
pass
|
||||||
|
elif abs(h.x - t.x) > 1 and abs(h.y - t.y) == 0:
|
||||||
|
if h.x > t.x:
|
||||||
|
t.x += 1
|
||||||
|
else:
|
||||||
|
t.x -= 1
|
||||||
|
elif abs(h.x - t.x) == 0 and abs(h.y - t.y) > 1:
|
||||||
|
if h.y > t.y:
|
||||||
|
t.y += 1
|
||||||
|
else:
|
||||||
|
t.y -= 1
|
||||||
|
else:
|
||||||
|
if h.x > t.x and h.y > t.y :
|
||||||
|
t.x += 1
|
||||||
|
t.y += 1
|
||||||
|
elif h.x > t.x and h.y < t.y:
|
||||||
|
t.x += 1
|
||||||
|
t.y -= 1
|
||||||
|
elif h.x < t.x and h.y < t.y:
|
||||||
|
t.x -= 1
|
||||||
|
t.y -= 1
|
||||||
|
else:
|
||||||
|
t.x -= 1
|
||||||
|
t.y += 1
|
||||||
|
t.pos.append((t.x,t.y))
|
||||||
|
|
||||||
|
|
||||||
|
for line in lines:
|
||||||
|
cmd = line.split(" ")
|
||||||
|
if cmd[0] == "R":
|
||||||
|
for _ in range(int(cmd[1])):
|
||||||
|
k[0].x = k[0].x + 1
|
||||||
|
for i in range(1, 10):
|
||||||
|
move(k[i-1], k[i])
|
||||||
|
if cmd[0] == "L":
|
||||||
|
for _ in range(int(cmd[1])):
|
||||||
|
k[0].x = k[0].x - 1
|
||||||
|
for i in range(1, 10):
|
||||||
|
move(k[i-1], k[i])
|
||||||
|
if cmd[0] == "U":
|
||||||
|
for _ in range(int(cmd[1])):
|
||||||
|
k[0].y = k[0].y + 1
|
||||||
|
for i in range(1, 10):
|
||||||
|
move(k[i-1], k[i])
|
||||||
|
if cmd[0] == "D":
|
||||||
|
for _ in range(int(cmd[1])):
|
||||||
|
k[0].y = k[0].y - 1
|
||||||
|
for i in range(1, 10):
|
||||||
|
move(k[i-1], k[i])
|
||||||
|
|
||||||
|
print(k[-1].visited())
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,4 +0,0 @@
|
|||||||
1abc2
|
|
||||||
pqr3stu8vwx
|
|
||||||
a1b2c3d4e5f
|
|
||||||
treb7uchet
|
|
@ -1,7 +0,0 @@
|
|||||||
two1nine
|
|
||||||
eightwothree
|
|
||||||
abcone2threexyz
|
|
||||||
xtwone3four
|
|
||||||
4nineeightseven2
|
|
||||||
zoneight234
|
|
||||||
7pqrstsixteen
|
|
@ -1,100 +0,0 @@
|
|||||||
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
|
|
||||||
Game 4: 4 blue, 12 red, 4 green; 6 green, 3 blue, 19 red; 3 blue, 2 red, 2 green
|
|
||||||
Game 5: 1 red, 5 blue, 16 green; 1 red, 6 green, 3 blue; 2 red, 12 blue; 17 blue, 3 green; 7 green, 2 red, 6 blue
|
|
||||||
Game 6: 3 green, 1 blue, 5 red; 5 green, 5 red; 2 green, 2 blue, 3 red; 5 green, 2 red; 3 green, 6 red, 3 blue; 5 green, 4 red
|
|
||||||
Game 7: 15 blue, 1 red, 6 green; 4 blue, 7 green, 2 red; 14 blue, 5 green, 2 red
|
|
||||||
Game 8: 6 blue, 3 green, 10 red; 2 blue, 1 green, 5 red; 6 blue, 3 green, 12 red; 11 red, 1 green, 1 blue; 5 blue, 14 red, 3 green; 3 red
|
|
||||||
Game 9: 15 red, 3 blue; 1 blue, 16 red; 1 red, 3 blue; 1 blue, 1 green, 9 red
|
|
||||||
Game 10: 1 red; 1 blue, 7 green; 1 green, 5 blue; 3 blue, 3 green; 1 green
|
|
||||||
Game 11: 19 blue, 13 green; 19 blue, 2 green; 10 blue, 3 red, 12 green; 11 blue, 1 red, 6 green
|
|
||||||
Game 12: 7 green, 5 blue; 6 green, 3 red, 6 blue; 2 red, 5 blue, 15 green; 2 red, 1 blue, 1 green; 4 red, 4 green, 2 blue; 3 blue, 6 green
|
|
||||||
Game 13: 9 red, 2 blue, 2 green; 1 blue, 2 red, 15 green; 9 green, 2 blue, 9 red; 5 blue, 8 green, 5 red; 2 blue, 11 green, 5 red
|
|
||||||
Game 14: 9 blue, 1 red; 10 blue, 4 green, 3 red; 2 red, 6 blue; 4 green, 2 blue, 1 red; 5 green, 2 red, 11 blue; 12 blue, 2 red, 1 green
|
|
||||||
Game 15: 9 blue, 7 green, 12 red; 9 red, 17 green, 8 blue; 6 red, 4 blue, 4 green; 5 red, 17 green
|
|
||||||
Game 16: 5 green, 4 red; 3 blue, 3 red, 14 green; 6 red, 5 blue, 12 green
|
|
||||||
Game 17: 8 blue, 5 green, 2 red; 6 red, 6 blue; 9 red; 5 blue, 2 green, 8 red; 13 red, 4 blue, 4 green; 9 blue, 3 green, 5 red
|
|
||||||
Game 18: 8 green, 1 red, 2 blue; 4 green, 4 red, 1 blue; 6 blue, 2 red
|
|
||||||
Game 19: 3 green, 9 blue; 4 blue, 10 red; 6 red, 3 green, 3 blue; 6 red, 4 green, 9 blue
|
|
||||||
Game 20: 11 green, 3 blue; 6 green; 3 green, 6 blue; 1 red, 5 green; 6 blue, 7 green
|
|
||||||
Game 21: 1 green, 1 blue, 12 red; 6 red, 2 blue; 5 green, 4 red, 2 blue; 11 red, 8 green, 1 blue
|
|
||||||
Game 22: 10 red; 1 red, 13 green, 9 blue; 6 blue, 12 red, 12 green; 10 red, 8 blue, 11 green; 2 green, 1 red, 3 blue; 7 red, 1 blue, 8 green
|
|
||||||
Game 23: 11 red, 15 blue; 10 blue, 16 red, 1 green; 14 blue, 5 red; 1 green, 9 red, 9 blue; 1 red, 7 blue, 3 green; 6 red, 2 green, 3 blue
|
|
||||||
Game 24: 6 blue, 11 red; 16 green, 2 red, 1 blue; 8 red, 7 blue; 14 blue, 9 green, 9 red; 13 green, 4 red, 8 blue; 2 red, 7 blue, 1 green
|
|
||||||
Game 25: 2 green, 12 blue, 1 red; 10 blue, 5 red, 5 green; 2 blue, 9 red, 3 green; 5 blue, 4 red, 2 green
|
|
||||||
Game 26: 7 blue, 6 red, 1 green; 2 blue, 3 green, 12 red; 2 blue, 6 red, 5 green
|
|
||||||
Game 27: 2 green, 3 red; 4 green; 2 red, 1 blue, 1 green; 2 red, 1 green, 2 blue
|
|
||||||
Game 28: 11 blue, 1 red, 5 green; 2 blue, 2 red, 4 green; 10 blue, 4 red, 1 green
|
|
||||||
Game 29: 6 blue, 17 red, 1 green; 8 blue, 4 red; 14 blue, 1 red, 3 green
|
|
||||||
Game 30: 2 blue, 4 green; 7 green, 1 blue, 1 red; 1 blue, 8 green
|
|
||||||
Game 31: 15 blue, 9 green, 2 red; 5 green, 4 blue, 1 red; 1 green, 15 red, 7 blue; 5 red, 2 blue
|
|
||||||
Game 32: 1 blue, 5 red, 3 green; 3 green, 8 red, 1 blue; 5 green, 1 red; 4 green, 3 blue, 15 red; 2 green, 1 blue; 4 blue, 15 red, 4 green
|
|
||||||
Game 33: 3 red, 10 blue; 4 red, 9 blue; 1 green, 10 blue
|
|
||||||
Game 34: 3 blue, 1 green, 9 red; 4 green, 2 red, 9 blue; 7 blue, 3 red; 6 blue, 13 red; 4 green, 13 blue, 9 red
|
|
||||||
Game 35: 14 red, 1 green; 1 red, 2 green, 4 blue; 3 blue, 10 red, 6 green; 5 blue, 6 red, 7 green; 7 blue, 5 red
|
|
||||||
Game 36: 2 blue, 8 red, 9 green; 9 green, 3 red, 10 blue; 6 red, 8 blue, 1 green; 6 green, 8 red, 4 blue
|
|
||||||
Game 37: 10 green, 3 red, 6 blue; 2 blue, 9 red, 5 green; 13 green, 9 red, 10 blue; 2 blue, 4 green, 9 red
|
|
||||||
Game 38: 4 red, 14 blue, 12 green; 6 red, 12 green, 18 blue; 6 green, 1 blue, 1 red
|
|
||||||
Game 39: 5 red, 1 blue, 3 green; 1 blue, 3 green, 8 red; 15 red, 1 blue, 5 green; 3 green, 5 red; 1 blue, 14 red; 3 green, 1 blue, 12 red
|
|
||||||
Game 40: 8 green, 4 blue; 5 blue, 7 red, 8 green; 5 blue, 8 green; 6 green, 3 red, 12 blue; 14 blue, 7 green, 2 red; 1 green, 7 red, 5 blue
|
|
||||||
Game 41: 7 red, 10 green; 10 red, 6 green; 9 red, 7 green, 1 blue; 3 red, 1 blue
|
|
||||||
Game 42: 3 green, 2 blue, 13 red; 1 blue, 3 red; 11 green, 16 red; 3 green, 1 blue, 16 red; 5 red, 8 green
|
|
||||||
Game 43: 12 blue, 9 red; 16 blue, 2 red, 7 green; 4 red, 1 blue, 11 green; 15 blue, 4 red, 9 green
|
|
||||||
Game 44: 17 green, 5 blue, 2 red; 9 green, 11 blue, 1 red; 20 green, 3 blue, 8 red; 2 red, 13 green, 9 blue; 15 green, 12 blue; 4 blue, 7 green, 9 red
|
|
||||||
Game 45: 5 green; 5 green, 1 red; 3 green, 2 blue; 1 green, 1 blue, 1 red
|
|
||||||
Game 46: 10 red, 11 green; 16 green, 8 blue, 12 red; 9 green, 9 blue
|
|
||||||
Game 47: 20 green, 17 red, 1 blue; 16 red, 2 blue, 11 green; 3 blue, 19 red, 1 green; 3 blue, 17 red, 17 green; 12 green, 2 blue, 7 red
|
|
||||||
Game 48: 1 red, 4 blue, 6 green; 19 green, 1 red, 1 blue; 16 green, 3 blue, 1 red; 3 blue, 17 green; 4 blue, 12 green
|
|
||||||
Game 49: 13 green, 2 blue, 1 red; 1 green, 8 red, 2 blue; 11 red, 11 green, 3 blue; 7 red, 8 green, 4 blue
|
|
||||||
Game 50: 11 blue, 1 red, 2 green; 1 green, 10 blue; 1 blue; 6 blue; 1 green, 2 blue
|
|
||||||
Game 51: 3 red, 3 green, 1 blue; 3 green, 3 red; 10 green, 4 red; 3 red, 2 green
|
|
||||||
Game 52: 1 red, 4 blue; 1 green, 11 blue; 1 green, 3 red, 6 blue; 4 red, 1 green, 4 blue; 9 blue, 1 green; 10 blue, 1 green
|
|
||||||
Game 53: 2 blue, 4 green, 1 red; 8 blue, 4 red, 7 green; 9 red, 7 blue, 6 green; 3 red, 7 green, 1 blue; 2 red, 9 blue, 5 green; 1 green, 7 red, 10 blue
|
|
||||||
Game 54: 1 red, 1 blue, 5 green; 2 red, 1 green, 2 blue; 3 green, 3 blue, 2 red; 4 red; 12 red, 5 green, 2 blue
|
|
||||||
Game 55: 2 red, 11 blue; 16 green, 7 red, 16 blue; 4 blue, 11 green, 7 red; 8 green, 18 blue, 8 red
|
|
||||||
Game 56: 2 blue, 2 green, 1 red; 1 red, 1 green; 1 red; 4 green; 1 blue; 1 blue, 7 green
|
|
||||||
Game 57: 4 blue, 3 green; 16 green, 2 red, 5 blue; 1 red, 13 green, 2 blue; 3 blue, 12 green, 2 red; 2 red, 5 blue, 4 green; 10 green, 2 blue
|
|
||||||
Game 58: 3 blue, 8 green; 4 green, 3 blue; 7 green, 5 blue, 5 red; 8 green; 3 red, 6 blue, 9 green; 2 red, 10 green, 4 blue
|
|
||||||
Game 59: 7 blue, 6 green, 5 red; 7 red, 2 blue; 5 red, 11 green, 14 blue; 8 green, 17 red
|
|
||||||
Game 60: 3 green, 8 blue, 2 red; 4 green, 7 blue, 6 red; 13 blue, 8 green, 2 red; 10 red, 6 blue, 5 green; 11 green, 3 blue, 4 red; 9 red, 5 green, 9 blue
|
|
||||||
Game 61: 4 red, 18 blue, 13 green; 9 green, 5 red, 3 blue; 4 green, 3 blue, 4 red; 8 red, 4 green, 7 blue; 8 red, 4 blue, 6 green; 10 green, 5 red, 14 blue
|
|
||||||
Game 62: 12 red, 14 blue, 9 green; 9 blue, 6 red, 4 green; 2 red, 5 blue; 1 red, 12 blue
|
|
||||||
Game 63: 11 blue, 13 red, 11 green; 4 blue, 9 green; 8 blue, 9 red; 7 red, 11 green, 7 blue
|
|
||||||
Game 64: 10 blue, 8 red, 12 green; 10 red, 12 blue, 9 green; 3 green, 17 red; 12 green, 15 blue, 16 red; 6 green, 15 blue, 1 red; 9 red, 6 blue, 10 green
|
|
||||||
Game 65: 7 red, 7 blue; 3 blue, 1 red, 1 green; 3 red, 8 blue
|
|
||||||
Game 66: 1 blue, 3 red; 10 green, 5 blue; 4 green; 3 red, 11 green; 3 blue, 15 green, 3 red
|
|
||||||
Game 67: 1 red; 2 blue, 2 green, 1 red; 6 green, 1 blue
|
|
||||||
Game 68: 7 red, 4 blue; 4 blue, 6 red, 7 green; 2 green, 19 red, 11 blue; 11 green, 9 red
|
|
||||||
Game 69: 4 blue, 3 green, 1 red; 7 blue, 1 red, 3 green; 5 blue, 1 green; 2 blue, 10 green, 2 red; 2 red, 6 green, 5 blue; 1 red, 4 green, 2 blue
|
|
||||||
Game 70: 9 blue, 7 red, 6 green; 19 blue, 4 red, 5 green; 6 blue, 7 red, 4 green; 3 blue, 4 red, 2 green
|
|
||||||
Game 71: 6 green, 12 blue, 4 red; 11 red, 10 green, 11 blue; 3 red, 14 blue, 13 green; 4 blue, 3 green
|
|
||||||
Game 72: 2 green, 1 blue, 9 red; 10 red, 3 green, 1 blue; 11 red, 2 green; 2 green, 1 blue, 5 red; 1 red, 1 blue, 3 green; 13 red, 4 blue, 1 green
|
|
||||||
Game 73: 11 green, 6 blue; 7 green, 6 blue, 7 red; 12 green, 8 blue, 11 red; 4 red, 2 blue, 9 green; 4 green, 7 blue, 2 red
|
|
||||||
Game 74: 3 blue, 7 red; 3 blue, 5 green, 2 red; 5 red, 1 green, 3 blue; 8 green, 2 blue, 11 red; 3 blue, 8 green, 10 red
|
|
||||||
Game 75: 2 green; 5 blue; 1 blue, 1 red; 1 red, 9 blue, 2 green; 2 blue, 2 green
|
|
||||||
Game 76: 12 blue, 13 green; 5 red, 11 blue, 9 green; 12 green, 6 red
|
|
||||||
Game 77: 1 blue, 15 green, 12 red; 15 green, 5 blue; 14 green, 3 blue, 8 red
|
|
||||||
Game 78: 11 green, 8 blue, 1 red; 9 green, 8 blue, 1 red; 13 green, 5 red, 6 blue; 5 red, 7 green, 20 blue; 10 blue, 5 red
|
|
||||||
Game 79: 3 blue; 6 blue, 5 red; 4 red, 1 green, 4 blue; 7 blue, 6 red; 7 red, 1 blue; 1 red, 1 blue, 1 green
|
|
||||||
Game 80: 11 green, 3 red, 8 blue; 2 red, 15 green, 2 blue; 5 green, 8 blue, 2 red; 8 blue, 14 green; 2 blue, 13 green
|
|
||||||
Game 81: 9 red, 4 green; 7 green, 4 red; 2 red, 4 blue, 6 green; 6 red, 4 blue, 9 green; 1 green, 3 red; 6 green, 1 blue, 8 red
|
|
||||||
Game 82: 5 blue, 3 red, 3 green; 5 red; 2 red, 3 green, 8 blue
|
|
||||||
Game 83: 10 green, 1 red, 1 blue; 3 red, 1 green, 1 blue; 4 red, 10 green
|
|
||||||
Game 84: 16 red, 2 green, 6 blue; 6 red, 3 green, 8 blue; 3 green, 10 red, 5 blue; 4 blue, 3 green; 15 red
|
|
||||||
Game 85: 3 green, 2 red; 5 green, 4 blue; 5 green, 8 red, 3 blue
|
|
||||||
Game 86: 7 green, 16 blue, 7 red; 1 green, 12 red, 2 blue; 15 green, 16 blue, 7 red
|
|
||||||
Game 87: 1 red, 6 green, 5 blue; 2 green, 1 blue; 2 green, 1 red, 1 blue; 5 green, 4 blue
|
|
||||||
Game 88: 3 green, 3 red, 4 blue; 1 red, 1 green; 6 blue, 9 red, 1 green; 1 green, 11 red, 3 blue; 7 red, 6 blue
|
|
||||||
Game 89: 2 blue, 3 red, 4 green; 5 red, 7 blue, 14 green; 8 blue, 5 red, 16 green; 2 blue, 5 red, 7 green; 5 green, 9 blue, 1 red
|
|
||||||
Game 90: 1 blue, 3 red, 7 green; 11 green, 4 red, 1 blue; 1 red, 1 blue, 6 green; 2 blue, 2 green; 8 green, 2 blue; 3 red, 2 blue, 4 green
|
|
||||||
Game 91: 6 blue, 4 red, 1 green; 8 red, 3 blue, 3 green; 1 green, 2 blue, 5 red; 1 blue, 3 green
|
|
||||||
Game 92: 8 green, 1 red, 5 blue; 2 green, 7 blue; 11 blue, 5 green, 8 red; 7 blue, 3 red, 4 green
|
|
||||||
Game 93: 3 green, 1 red, 9 blue; 13 red, 5 blue, 8 green; 5 green, 2 red, 7 blue
|
|
||||||
Game 94: 4 green, 10 blue, 8 red; 4 red, 10 blue, 2 green; 2 green, 10 blue, 5 red; 5 green, 2 red, 10 blue
|
|
||||||
Game 95: 5 green, 1 blue; 3 blue, 11 green, 8 red; 8 blue, 2 red, 12 green; 4 green, 4 blue, 4 red
|
|
||||||
Game 96: 1 blue, 13 green; 8 blue, 3 red, 4 green; 1 red, 3 blue, 10 green
|
|
||||||
Game 97: 18 green, 4 red; 1 blue, 2 red, 9 green; 6 red, 3 blue, 10 green; 3 blue, 15 green, 4 red
|
|
||||||
Game 98: 2 blue, 3 green, 6 red; 1 green, 1 blue, 8 red; 8 red, 3 green, 1 blue; 2 blue; 8 red, 2 green, 2 blue
|
|
||||||
Game 99: 1 green, 2 red, 1 blue; 8 green, 4 blue, 1 red; 7 blue, 1 red, 11 green; 9 green, 3 blue; 1 red, 2 blue; 1 red, 6 blue
|
|
||||||
Game 100: 7 blue, 9 green, 2 red; 5 red, 9 green; 1 blue, 8 red, 13 green
|
|
@ -1,5 +0,0 @@
|
|||||||
Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green
|
|
||||||
Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue
|
|
||||||
Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red
|
|
||||||
Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red
|
|
||||||
Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green
|
|
@ -1,140 +0,0 @@
|
|||||||
...317..........214.....................................751.................................630...479..205....41.993............416.........
|
|
||||||
...*....813........%....572........%...629.154......518....*....365..................-.......*.......#.....................422...........661
|
|
||||||
269.......*...58...........=......264.....*..........*......937.-...........235...303.........848..............195.....154*.........144.-...
|
|
||||||
........476..@...162.855................$....288...821..............107.....-...........290......../..301.........=...........135..*........
|
|
||||||
618.............=....*...547...........441....*........................@................*........851....+...................+..*...102.310..
|
|
||||||
...*961....905......534..$...377...............854...341.342....485.......109....89.995..927..............................90..997......*....
|
|
||||||
............*...................*.................../.....*......@...........%....*...*.......................+44.....913.........9.....891.
|
|
||||||
....62......724...592....946.878...854....$.701............480......575.246....119.....54..296.906..684..................*.........*838.....
|
|
||||||
.................+......*...............478....................469.....*..................*...........+..502..156.........821...........983.
|
|
||||||
....................315.764..996..571...............=........................804.......&...892....958.....*......*.............61...........
|
|
||||||
........+...697*.....+.........*...*...........@.448........................*.......322.............*....309..37.602.....775....*...........
|
|
||||||
32.480..665.....557......+...435..449..691..327....................#....921..535..........755...43...597........................322..7......
|
|
||||||
......*.....848.........745.............*.......679/............106.......&........404......+....*...................888..750........*......
|
|
||||||
......93...*....=.............*297......550...........324.597............................................819.....997*......-...734$..588....
|
|
||||||
.........363..112..754...............&..........723....................14..954.............175....773...*.............&.....................
|
|
||||||
..................*.......#..........502......../...............606.........@..778*.......#.........*....844...713...743....-.........&.....
|
|
||||||
............827.895.-539...469...938...../.248.....................*.49............749.............783.........$...+.........33....471......
|
|
||||||
..............*.................../...517...&......368*710......432...*............................................841.=.................194
|
|
||||||
.....*491....395.......&481.................../.#...................83................668..181.....698..155*...........981.200..............
|
|
||||||
...................219.................196.473..224.....=.....733*.......=.........98*.......*.420..........671.....*......*......369.205...
|
|
||||||
........@......696*....669.....50.....................853.593.........168....@.............802..*...388............3......792........*......
|
|
||||||
......641............./....62..*...836#.......*169.........@...............872.................416....*.................-...................
|
|
||||||
..........................#...377..........179.......101........+504.................*554.............947..............447.............830..
|
|
||||||
243........*902.....#................480*...........+.....*258.........*243.......389.......&....................723.........838...991......
|
|
||||||
........182.........33..........840......616.733.......756..........290.....................145..119..........................+......&......
|
|
||||||
..............................................*....807...................777......+..556............@....85#................................
|
|
||||||
.212.664..3......316..579..462..............435.......*............@....*........36...$........572................703..732........@.........
|
|
||||||
...........=....@.....*.....*............*.......-..337......656...411.357.373.....................*21....37.........%./.....918...185.387..
|
|
||||||
...350.................338...161.856..157.906...527...........*............+.........*336.......204............755.............*............
|
|
||||||
....&...........683...................................801......313............831.230......374.......................383.....940.48.........
|
|
||||||
...............*........447......635....335......%.........627........44@..........................895....................@.................
|
|
||||||
....$....958..943.......#...935.%..........*...794......16.*..................+...........100..469........743.*.........529....=.......883..
|
|
||||||
..308.....*........*776.......*.....*....430............*..562.......895......765.................*.........*..776..........246..921&.......
|
|
||||||
.........200...............*..1....572................814...........$......#..........138...&....487..668..58.......485.....................
|
|
||||||
...*845.............935...958.................................667.....%.121.......691.......245.........*..............*........131.........
|
|
||||||
.........*............*.............=............................*.593.............*..................380........189...219.211......@.......
|
|
||||||
.....152..783........634...........521.+.......26.............659...............328...%.............................*........$......397.*...
|
|
||||||
......*.......124..........299..........808.....*........359................424.....%..454..........553.............49..562.....257......723
|
|
||||||
......641.........24.............576.............975........=..............*.......974.............*...........146......*......../...@......
|
|
||||||
940.........&....@....221........*.........149.......&...............689....418...........538...................*.....985............526....
|
|
||||||
.............192.........*816...582...561..+..........915..981%.......*..................*......&8....+.........497..........145............
|
|
||||||
.........144........$....................@......................425.933....846*824.$...370.342*....375...641..=........927.....*.......160..
|
|
||||||
............$.......925...67.655....57.............=905..881....@..................585.........746.............224..........224...864...*...
|
|
||||||
.....872................#..*...$.....*.........#............*...........979....699...................947.........................*.....788..
|
|
||||||
............949......676..42........340.....694...144......712..296..45...*.......*..............191.@.......889-......=786.....417.........
|
|
||||||
...........*.................846....................*..160.......*.......403.....347...914.91...=...........................................
|
|
||||||
.371.=....904.643......816...*...647...$.858.......431..........486..........706......*....-..............961........................698....
|
|
||||||
......398.....*....252*....591..../..224...$..341...........#................*................956............*...27..............57.....*534
|
|
||||||
.............363...............................&.............69........163.233.580....113*367..............44...*..................*406.....
|
|
||||||
...893..457..........91%........................................538.....$......*..............................475....864.......289..........
|
|
||||||
..........-........................549............909..572.....-..............385.............97.....................=.....159..*...........
|
|
||||||
...174...............................*...576.875....*.....=...................................*....506..115...............*....856....408...
|
|
||||||
.....=.......685....58........177.965...-.....*....489......402/..&603.....................357......=..&....84.....451&.810........93...*...
|
|
||||||
.....................*...87.........................................................447........@............*................-......*...117.
|
|
||||||
......205.593........298..................................622....955.......34*325......*....965...................604......729....509.......
|
|
||||||
........=..*.......+...............966.......................$.$...................206......................99....-....424..............$...
|
|
||||||
378..........636..141.543%....34...........437-.................303.........80....*.............915...........*........*...885...........148
|
|
||||||
............*................=......................39......-.......208.560*...906...................320.860.975....532....*.........740....
|
|
||||||
....834...13...................426.395*962...44.......-......552...................*539.+........953.......%............647.........*.......
|
|
||||||
..............589...............*..........................................179...71.....207........#.577......758...247..........958........
|
|
||||||
....930.......*......&139...820.56.....%164....................536.=31......*.............................................89................
|
|
||||||
.....#.........569............*.............882....296......&................465.......21............=.....331........998*..................
|
|
||||||
..........847..............206....$............%.....#.464.318..=.....751*........................501..971...*..............227.......854...
|
|
||||||
.466......*......768..../.......110......................*.......612......551......868.......727.......*......39.850..-.....*.........*.....
|
|
||||||
.........377.561....&.718...94............246..........159...........255............%.........*...........445........472...520.......304.472
|
|
||||||
...............*..........................@.....292.............................476......&.........135......*...223.........................
|
|
||||||
..............288.....................944........*......775*934................+......152.............*55..806............239#..............
|
|
||||||
...181*552...............................*....238...............499...880.476...................................417.#66.........472.........
|
|
||||||
.....................*........%...629.853............*......@9...@......=.....443...673........271...*..........-...........98..............
|
|
||||||
.........567*288...10.257..837......*.........862..14................21......*...................%..714...........963.........%.450....528..
|
|
||||||
....................................862..................889.....604...*424..350...812..34........................*...646...................
|
|
||||||
...............*....*933.....355@..................*528....=......................+.....*...&996..493.....992..840.......*..271.............
|
|
||||||
..............984...............................678.................+571.....648......262............*......*..............*......293..197..
|
|
||||||
..........386..............463..984......129................-588..............*..361...............408..269.652...........406........*..+...
|
|
||||||
.........*............494....*.......847...*..#..942..825.............&......32.........................*........427...........-....339.....
|
|
||||||
.......415.=434..439.....*..23........$..34..410.........+.......746.976.............731..../.1*.........709.......*.........197........#...
|
|
||||||
................*......493.......760.............................................654*....398.........158....../......396.............922....
|
|
||||||
.....845.=....955...................*.....*574....954*........@...........$.......................-....*.....796......-...426...$732........
|
|
||||||
.......*.88.............@.........738..924............213...40....115......315...................299...108...................*.......320....
|
|
||||||
....567...............%..13.................*14...........$.......@.....%.........../...518.......................-.810...514..952..........
|
|
||||||
........892...275....485.......820.......367.......@.....544...........428.........54..-.............*....108..964...*..........*...........
|
|
||||||
.......@...................861......#.........893.116.........836.982......961.............../...615.188.....*.....914.........761....765...
|
|
||||||
...........169.962.........*......81...769...#...............................-..714.424..759.390...@.........855...........562.........*....
|
|
||||||
....../906......../......81..968.......-..............................185..............*.%............=......................*.205.....72...
|
|
||||||
................*............*....110........./.907....241.......708...*...383.701..869...............346..............649.771.#............
|
|
||||||
.............531.976...670...288...........382....*.......*116.........820.-...*............764..556...........@..984....$.......638...165..
|
|
||||||
........................-..........479.............55..........................515.....345...#................533...*.......................
|
|
||||||
.....$....569.936.301.........914..*.......-.....=................453..............209..*..........................551.-.......479..........
|
|
||||||
..233.....*......*.....506.........931..246....221.639....#..................@......*....784........591.................818...%.......523...
|
|
||||||
.......233....%.........................................416...714&........448.......698......387........432............................*....
|
|
||||||
...........718.......@......465....................430........................603.......491..*..........*...22.164...+...............179....
|
|
||||||
...............450.462.549.=....283.185...880......................652.......................142..430.372.....*.......633...................
|
|
||||||
.370....143....*.........*.........*......*.....962...........*.....*....................537........%...........&136........................
|
|
||||||
.....39.......956......213...........476.143.......*.......321.60....708..........966.......#...921......+146............+...665............
|
|
||||||
...........................941...321*.............880.499...........................*.............*.383........668.....212...*....827*428...
|
|
||||||
..236..527...................=..........................*........../..854......................489...-........................234...........
|
|
||||||
.....*.................................622..........289..599....207...*............&953.599=...............885............682.....914.....12
|
|
||||||
793...754.............$497..............*............*................163....................+.........15.....*..*....338*..................
|
|
||||||
...*.......864................348..........758.......439...................1........83....748...............325.535...................=.....
|
|
||||||
...368....*........382*250....*.....317.......*................473*....877.+.........*..................@................%....331..513......
|
|
||||||
.........55..239...........2...377...=......1.792...294*607........831..........*.950...&....-....#....864.....139.......512................
|
|
||||||
....427.......*...*...#....%...........765...............................418.995.........6..492.465...........@....................*218.....
|
|
||||||
......*......939.410.371......#...-......#.................&............*.............................496..........503..........629.........
|
|
||||||
.....410....................215.193.................678.786.....370...71..598......329..........262.................*.......473.............
|
|
||||||
.........979..855..432=................212.....346..*....................*........*............#...................249...=.....+...525.217..
|
|
||||||
.........*....*...............387.....*...........*.228......./....%....245..&.....690.....429............................685.........*.....
|
|
||||||
129....907.423........949.772......666....173..679........992.313...398......427..............*...................244.......................
|
|
||||||
.........................*.....*............................*........................../....998..........510..825*..........................
|
|
||||||
.....132....867........%.....42.780..............776*744...898.......664....196....360..823......899.211..=.................+...............
|
|
||||||
.....*.......%......703................916...%...............................*....*................*....&.....689..$......591.......64*238..
|
|
||||||
...684..160.......................445.....*...164.......602....249...........431.12.............=..758............138..........983..........
|
|
||||||
..........@..766.92..............*......334........671..*...............&646..................797.............950.........935.........469...
|
|
||||||
................*..................510..............*..285..........................................650.......*....807...*............#.....
|
|
||||||
..205.669...768...88........................+59..148............682........#.................3..............376...*.......191...............
|
|
||||||
.........&....*..%........................................183......*......61................/........657..........163............255........
|
|
||||||
..674.......46..............392..251....507.................*.248...74..........+...775.97.....222.........%..........135...950.....*.......
|
|
||||||
....*...........*967..533...*............*......949..245.276...#.........*.....728...................677..137.....*.....*..&........522.....
|
|
||||||
...367.......196.......$..239..........510.748..*............/...481..722....................800........*........735..268...................
|
|
||||||
.........442...................111...............752........567...*.........*..........696..%............790................................
|
|
||||||
.............182....677..613............................/..........814...372.86........*......915*..............799.................*....253
|
|
||||||
....&....739*........../....*206.........284...........584...427................727..485..........781.992.........-...............619.......
|
|
||||||
.....603.........................907........*....607......../.............................617............*...=.......986-.............918...
|
|
||||||
.........819..667..341...........*....#..397................................#........$..................822...20...........359.....43.......
|
|
||||||
.......&....*...#....*.......*....88.691.........................700.675....910...227........350...&591............301.......$.......*......
|
|
||||||
..404$..259.......557....876.218...........216.=211.7...=569........*........................=.................320..*....462...480....747...
|
|
||||||
..........................+.............#..*........*.................=518........................274............@...276........../.........
|
|
||||||
.......#...904......622..............923....543....969../..................571..778......#888.253..................+.....163.........-679...
|
|
||||||
295.207.........708......................................942...496....#...*.......*.373@.......*..645...............580.......177...........
|
|
||||||
................................982*317............304........*.......28.823....994.......370..96........@.=...*675............*.....604....
|
|
||||||
644.138.522......%......901.................374*..*.........458.....................#135....=..........730.355........955...=.47.277*.......
|
|
||||||
...*....*.........288..*.............+.433.........240.................317/........................609............#90.*...623...............
|
|
||||||
.....%..675....87.......110...126.408..*......355.............................@131......110....778...*..519.834.......537.....19........502.
|
|
||||||
..831............*460........*..........824.....*..751...467.829..........850..........*............365....*................................
|
|
||||||
..........398..............473....-..........751.....*......*................@.446*....780...........................732....................
|
|
||||||
.......................#.........333..................170........596...............943......66..186......@...........@.....=................
|
|
||||||
......124....780.....58.....933........926.../.............693...*..........*828...............*........666.............=..337..............
|
|
||||||
.......*.........197..........$.......*......67............-...335...........................122...582................197..........328......
|
|
||||||
.....151...............................763......180....@............890../....835...578..871..........*295..#....%...........-541.$.........
|
|
||||||
........................153.........-........@.....*...661..*833......*.775.....-...........................40....665...............701.....
|
|
||||||
..890....252......................544........809..425..............925......................................................................
|
|
@ -1,10 +0,0 @@
|
|||||||
467..114..
|
|
||||||
...*......
|
|
||||||
..35..633.
|
|
||||||
......#...
|
|
||||||
617*......
|
|
||||||
.....+.58.
|
|
||||||
..592.....
|
|
||||||
......755.
|
|
||||||
...$.*....
|
|
||||||
.664.598..
|
|
@ -1,219 +0,0 @@
|
|||||||
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
|
|
@ -1,6 +0,0 @@
|
|||||||
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
|
|
@ -1,244 +0,0 @@
|
|||||||
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
|
|
@ -1,33 +0,0 @@
|
|||||||
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
|
|
@ -1,2 +0,0 @@
|
|||||||
Time: 48 87 69 81
|
|
||||||
Distance: 255 1288 1117 1623
|
|
@ -1,2 +0,0 @@
|
|||||||
Time: 7 15 30
|
|
||||||
Distance: 9 40 200
|
|
File diff suppressed because it is too large
Load Diff
@ -1,5 +0,0 @@
|
|||||||
32T3K 765
|
|
||||||
T55J5 684
|
|
||||||
KK677 28
|
|
||||||
KTJJT 220
|
|
||||||
QQQJA 483
|
|
@ -1,788 +0,0 @@
|
|||||||
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)
|
|
@ -1,5 +0,0 @@
|
|||||||
LLR
|
|
||||||
|
|
||||||
AAA = (BBB, BBB)
|
|
||||||
BBB = (AAA, ZZZ)
|
|
||||||
ZZZ = (ZZZ, ZZZ)
|
|
@ -1,10 +0,0 @@
|
|||||||
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)
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue