From de21254159d7651dc489b867d71964491cb48e25 Mon Sep 17 00:00:00 2001
From: a
Date: Thu, 10 Dec 2020 00:39:18 -0600
Subject: [PATCH 1/5] wow that was taking forever
---
10/10.py | 59 +++++++++++++++++++++++++++
10/input.txt | 98 +++++++++++++++++++++++++++++++++++++++++++++
10/input_sample.txt | 11 +++++
3 files changed, 168 insertions(+)
create mode 100644 10/10.py
create mode 100644 10/input.txt
create mode 100644 10/input_sample.txt
diff --git a/10/10.py b/10/10.py
new file mode 100644
index 0000000..8433ab5
--- /dev/null
+++ b/10/10.py
@@ -0,0 +1,59 @@
+def read_file():
+ with open("input.txt","r") as f:
+ return [int(x) for x in f.read().split('\n')]
+
+def part1(adapters):
+ jolts = [0] + sorted(adapters) # j(port) = 0
+ d1 = 0
+ d3 = 1 # j(device) = max + 3
+ i = 0
+ while i <= len(adapters):
+ difference = jolts[i] - jolts[i-1]
+ if difference == 1:
+ d1 += 1
+ elif difference == 2:
+ d2 += 1
+ elif difference == 3:
+ d3 += 1
+ i += 1
+ return d1 * d3
+
+"""
+def find_all_paths(graph, start, end, path=[]):
+ path = path + [start]
+ if start == end:
+ return [path]
+ if start not in graph:
+ return []
+ paths = []
+ for node in graph[start]:
+ if node not in path:
+ newpaths = find_all_paths(graph, node, end, path)
+ for newpath in newpaths:
+ paths.append(newpath)
+ return paths
+"""
+
+def part2(adapters):
+ jolts = [0] + sorted(adapters)
+ from collections import Counter
+ dp = Counter()
+ dp[0] = 1
+ jolts = sorted(adapters)
+ jolts.append(jolts[-1] + 3)
+ for j in jolts:
+ dp[j] = dp[j-1] + dp[j-2] + dp[j-3]
+ return dp[jolts[-1]]
+ """
+ graph = {}
+ for i, joltage in enumerate(jolts):
+ graph[joltage] = [x for x in jolts[i+1:i+4] if 0 < x - joltage <= 3] # scan next 3, assuming diff of +1 +1 +1 at most
+ return len( find_all_paths( graph, 0, max(jolts) ) )
+ """
+
+def main():
+ adapters = read_file()
+ print(part1(adapters), part2(adapters))
+
+if __name__ == "__main__":
+ main()
\ No newline at end of file
diff --git a/10/input.txt b/10/input.txt
new file mode 100644
index 0000000..03d17ee
--- /dev/null
+++ b/10/input.txt
@@ -0,0 +1,98 @@
+35
+111
+135
+32
+150
+5
+106
+154
+41
+7
+27
+117
+109
+63
+64
+21
+138
+98
+40
+71
+144
+13
+66
+48
+12
+55
+119
+103
+54
+78
+65
+112
+39
+128
+53
+140
+77
+34
+28
+81
+151
+125
+85
+124
+2
+99
+131
+59
+60
+6
+94
+33
+42
+93
+14
+141
+92
+38
+104
+9
+29
+100
+52
+19
+147
+49
+74
+70
+84
+113
+120
+91
+97
+17
+45
+139
+90
+116
+149
+129
+87
+69
+20
+24
+148
+18
+58
+123
+76
+118
+130
+132
+75
+110
+105
+1
+8
+86
\ No newline at end of file
diff --git a/10/input_sample.txt b/10/input_sample.txt
new file mode 100644
index 0000000..cd1b40b
--- /dev/null
+++ b/10/input_sample.txt
@@ -0,0 +1,11 @@
+16
+10
+15
+5
+1
+11
+7
+19
+6
+12
+4
\ No newline at end of file
From 225a9d7b24f4a6fa0f2500c117a9985a4daf8aef Mon Sep 17 00:00:00 2001
From: a
Date: Thu, 10 Dec 2020 17:11:17 -0600
Subject: [PATCH 2/5] move all into 2020
---
{00 => 2020/00}/00.py | 0
{00 => 2020/00}/input.txt | 0
{01 => 2020/01}/01.exs | 0
{01 => 2020/01}/01.py | 0
{01 => 2020/01}/01.rb | 0
{01 => 2020/01}/input.txt | 0
{02 => 2020/02}/02.exs | 0
{02 => 2020/02}/02.py | 0
{02 => 2020/02}/02.rb | 0
{02 => 2020/02}/02_re.py | 0
{02 => 2020/02}/input.txt | 0
{03 => 2020/03}/03.py | 0
{03 => 2020/03}/03_refactored.py | 0
{03 => 2020/03}/03_refactored2.py | 0
{03 => 2020/03}/input.txt | 0
{04 => 2020/04}/04.py | 0
{04 => 2020/04}/04_refactored.py | 0
{04 => 2020/04}/input.txt | 0
{05 => 2020/05}/05.py | 0
{05 => 2020/05}/05_oneliner.py | 0
{05 => 2020/05}/05_refactored.py | 0
{05 => 2020/05}/05_translate.py | 0
{05 => 2020/05}/input.txt | 0
{06 => 2020/06}/06.exs | 0
{06 => 2020/06}/06.py | 0
{06 => 2020/06}/06.rb | 0
{06 => 2020/06}/06_minimal.py | 0
{06 => 2020/06}/06_refactored.py | 0
{06 => 2020/06}/06_refactored.rb | 0
{06 => 2020/06}/input.txt | 0
{07 => 2020/07}/07.py | 0
{07 => 2020/07}/input.txt | 0
{07 => 2020/07}/input_sample.txt | 0
{07 => 2020/07}/input_sample2.txt | 0
{08 => 2020/08}/08.py | 0
{08 => 2020/08}/input.txt | 0
{08 => 2020/08}/input_sample.txt | 0
{09 => 2020/09}/09.py | 0
{09 => 2020/09}/input.txt | 0
{10 => 2020/10}/10.py | 0
{10 => 2020/10}/input.txt | 0
{10 => 2020/10}/input_sample.txt | 0
42 files changed, 0 insertions(+), 0 deletions(-)
rename {00 => 2020/00}/00.py (100%)
rename {00 => 2020/00}/input.txt (100%)
rename {01 => 2020/01}/01.exs (100%)
rename {01 => 2020/01}/01.py (100%)
rename {01 => 2020/01}/01.rb (100%)
rename {01 => 2020/01}/input.txt (100%)
rename {02 => 2020/02}/02.exs (100%)
rename {02 => 2020/02}/02.py (100%)
rename {02 => 2020/02}/02.rb (100%)
rename {02 => 2020/02}/02_re.py (100%)
rename {02 => 2020/02}/input.txt (100%)
rename {03 => 2020/03}/03.py (100%)
rename {03 => 2020/03}/03_refactored.py (100%)
rename {03 => 2020/03}/03_refactored2.py (100%)
rename {03 => 2020/03}/input.txt (100%)
rename {04 => 2020/04}/04.py (100%)
rename {04 => 2020/04}/04_refactored.py (100%)
rename {04 => 2020/04}/input.txt (100%)
rename {05 => 2020/05}/05.py (100%)
rename {05 => 2020/05}/05_oneliner.py (100%)
rename {05 => 2020/05}/05_refactored.py (100%)
rename {05 => 2020/05}/05_translate.py (100%)
rename {05 => 2020/05}/input.txt (100%)
rename {06 => 2020/06}/06.exs (100%)
rename {06 => 2020/06}/06.py (100%)
rename {06 => 2020/06}/06.rb (100%)
rename {06 => 2020/06}/06_minimal.py (100%)
rename {06 => 2020/06}/06_refactored.py (100%)
rename {06 => 2020/06}/06_refactored.rb (100%)
rename {06 => 2020/06}/input.txt (100%)
rename {07 => 2020/07}/07.py (100%)
rename {07 => 2020/07}/input.txt (100%)
rename {07 => 2020/07}/input_sample.txt (100%)
rename {07 => 2020/07}/input_sample2.txt (100%)
rename {08 => 2020/08}/08.py (100%)
rename {08 => 2020/08}/input.txt (100%)
rename {08 => 2020/08}/input_sample.txt (100%)
rename {09 => 2020/09}/09.py (100%)
rename {09 => 2020/09}/input.txt (100%)
rename {10 => 2020/10}/10.py (100%)
rename {10 => 2020/10}/input.txt (100%)
rename {10 => 2020/10}/input_sample.txt (100%)
diff --git a/00/00.py b/2020/00/00.py
similarity index 100%
rename from 00/00.py
rename to 2020/00/00.py
diff --git a/00/input.txt b/2020/00/input.txt
similarity index 100%
rename from 00/input.txt
rename to 2020/00/input.txt
diff --git a/01/01.exs b/2020/01/01.exs
similarity index 100%
rename from 01/01.exs
rename to 2020/01/01.exs
diff --git a/01/01.py b/2020/01/01.py
similarity index 100%
rename from 01/01.py
rename to 2020/01/01.py
diff --git a/01/01.rb b/2020/01/01.rb
similarity index 100%
rename from 01/01.rb
rename to 2020/01/01.rb
diff --git a/01/input.txt b/2020/01/input.txt
similarity index 100%
rename from 01/input.txt
rename to 2020/01/input.txt
diff --git a/02/02.exs b/2020/02/02.exs
similarity index 100%
rename from 02/02.exs
rename to 2020/02/02.exs
diff --git a/02/02.py b/2020/02/02.py
similarity index 100%
rename from 02/02.py
rename to 2020/02/02.py
diff --git a/02/02.rb b/2020/02/02.rb
similarity index 100%
rename from 02/02.rb
rename to 2020/02/02.rb
diff --git a/02/02_re.py b/2020/02/02_re.py
similarity index 100%
rename from 02/02_re.py
rename to 2020/02/02_re.py
diff --git a/02/input.txt b/2020/02/input.txt
similarity index 100%
rename from 02/input.txt
rename to 2020/02/input.txt
diff --git a/03/03.py b/2020/03/03.py
similarity index 100%
rename from 03/03.py
rename to 2020/03/03.py
diff --git a/03/03_refactored.py b/2020/03/03_refactored.py
similarity index 100%
rename from 03/03_refactored.py
rename to 2020/03/03_refactored.py
diff --git a/03/03_refactored2.py b/2020/03/03_refactored2.py
similarity index 100%
rename from 03/03_refactored2.py
rename to 2020/03/03_refactored2.py
diff --git a/03/input.txt b/2020/03/input.txt
similarity index 100%
rename from 03/input.txt
rename to 2020/03/input.txt
diff --git a/04/04.py b/2020/04/04.py
similarity index 100%
rename from 04/04.py
rename to 2020/04/04.py
diff --git a/04/04_refactored.py b/2020/04/04_refactored.py
similarity index 100%
rename from 04/04_refactored.py
rename to 2020/04/04_refactored.py
diff --git a/04/input.txt b/2020/04/input.txt
similarity index 100%
rename from 04/input.txt
rename to 2020/04/input.txt
diff --git a/05/05.py b/2020/05/05.py
similarity index 100%
rename from 05/05.py
rename to 2020/05/05.py
diff --git a/05/05_oneliner.py b/2020/05/05_oneliner.py
similarity index 100%
rename from 05/05_oneliner.py
rename to 2020/05/05_oneliner.py
diff --git a/05/05_refactored.py b/2020/05/05_refactored.py
similarity index 100%
rename from 05/05_refactored.py
rename to 2020/05/05_refactored.py
diff --git a/05/05_translate.py b/2020/05/05_translate.py
similarity index 100%
rename from 05/05_translate.py
rename to 2020/05/05_translate.py
diff --git a/05/input.txt b/2020/05/input.txt
similarity index 100%
rename from 05/input.txt
rename to 2020/05/input.txt
diff --git a/06/06.exs b/2020/06/06.exs
similarity index 100%
rename from 06/06.exs
rename to 2020/06/06.exs
diff --git a/06/06.py b/2020/06/06.py
similarity index 100%
rename from 06/06.py
rename to 2020/06/06.py
diff --git a/06/06.rb b/2020/06/06.rb
similarity index 100%
rename from 06/06.rb
rename to 2020/06/06.rb
diff --git a/06/06_minimal.py b/2020/06/06_minimal.py
similarity index 100%
rename from 06/06_minimal.py
rename to 2020/06/06_minimal.py
diff --git a/06/06_refactored.py b/2020/06/06_refactored.py
similarity index 100%
rename from 06/06_refactored.py
rename to 2020/06/06_refactored.py
diff --git a/06/06_refactored.rb b/2020/06/06_refactored.rb
similarity index 100%
rename from 06/06_refactored.rb
rename to 2020/06/06_refactored.rb
diff --git a/06/input.txt b/2020/06/input.txt
similarity index 100%
rename from 06/input.txt
rename to 2020/06/input.txt
diff --git a/07/07.py b/2020/07/07.py
similarity index 100%
rename from 07/07.py
rename to 2020/07/07.py
diff --git a/07/input.txt b/2020/07/input.txt
similarity index 100%
rename from 07/input.txt
rename to 2020/07/input.txt
diff --git a/07/input_sample.txt b/2020/07/input_sample.txt
similarity index 100%
rename from 07/input_sample.txt
rename to 2020/07/input_sample.txt
diff --git a/07/input_sample2.txt b/2020/07/input_sample2.txt
similarity index 100%
rename from 07/input_sample2.txt
rename to 2020/07/input_sample2.txt
diff --git a/08/08.py b/2020/08/08.py
similarity index 100%
rename from 08/08.py
rename to 2020/08/08.py
diff --git a/08/input.txt b/2020/08/input.txt
similarity index 100%
rename from 08/input.txt
rename to 2020/08/input.txt
diff --git a/08/input_sample.txt b/2020/08/input_sample.txt
similarity index 100%
rename from 08/input_sample.txt
rename to 2020/08/input_sample.txt
diff --git a/09/09.py b/2020/09/09.py
similarity index 100%
rename from 09/09.py
rename to 2020/09/09.py
diff --git a/09/input.txt b/2020/09/input.txt
similarity index 100%
rename from 09/input.txt
rename to 2020/09/input.txt
diff --git a/10/10.py b/2020/10/10.py
similarity index 100%
rename from 10/10.py
rename to 2020/10/10.py
diff --git a/10/input.txt b/2020/10/input.txt
similarity index 100%
rename from 10/input.txt
rename to 2020/10/input.txt
diff --git a/10/input_sample.txt b/2020/10/input_sample.txt
similarity index 100%
rename from 10/input_sample.txt
rename to 2020/10/input_sample.txt
From 856852f4ce821042b5c4f99101699bde9c149d65 Mon Sep 17 00:00:00 2001
From: a
Date: Fri, 11 Dec 2020 14:55:35 -0600
Subject: [PATCH 3/5] day 11
---
2020/11/11.py | 151 +++++++++++++++++++++++++++++++++++++++
2020/11/input.txt | 93 ++++++++++++++++++++++++
2020/11/input_sample.txt | 10 +++
3 files changed, 254 insertions(+)
create mode 100644 2020/11/11.py
create mode 100644 2020/11/input.txt
create mode 100644 2020/11/input_sample.txt
diff --git a/2020/11/11.py b/2020/11/11.py
new file mode 100644
index 0000000..9b972f9
--- /dev/null
+++ b/2020/11/11.py
@@ -0,0 +1,151 @@
+def read_file():
+ with open("input_sample.txt","r") as f:
+ seed = f.read().split('\n')
+ # pad with floor to prevent out-of-bounds checks
+ seats = []
+ seats.append(list('.' * (len(seed[0])+2)))
+ for row in seed:
+ seats.append(list('.' + row + '.'))
+ seats.append(list('.' * (len(seed[0])+2)))
+ return seats
+
+def check_neighbors(state,i,j):
+ a = state[i-1][j-1]
+ b = state[i-1][j]
+ c = state[i-1][j+1]
+ d = state[i][j-1]
+ e = state[i][j+1]
+ f = state[i+1][j-1]
+ g = state[i+1][j]
+ h = state[i+1][j+1]
+ return a+b+c+d+e+f+g+h
+
+from copy import deepcopy
+def find_steady_state(seats):
+ height = len(seats)
+ width = len(seats[0])
+ state = deepcopy(seats)
+ prev_state = deepcopy(seats)
+ while True:
+ for i in range(height):
+ for j in range(width):
+ cell = prev_state[i][j]
+ if cell == ".":
+ pass
+ elif cell == "L":
+ # check for no occupied seats
+ neighbors = check_neighbors(prev_state,i,j)
+ if "#" not in neighbors:
+ state[i][j] = "#"
+ else:
+ state[i][j] = "L"
+ elif cell == "#":
+ # check for 4+ occupied seats
+ neighbors = check_neighbors(prev_state,i,j)
+ if neighbors.count("#") > 3:
+ state[i][j] = "L"
+ else:
+ state[i][j] = "#"
+ if state == prev_state:
+ break
+ prev_state = deepcopy(state)
+ return state
+
+def part1(seats):
+ final_state = find_steady_state(seats)
+ output = ''
+ for row in final_state:
+ for character in row:
+ output += character
+ return output.count("#")
+
+def check_line_of_sight(state,i,j):
+ height = len(state)
+ width = len(state[0])
+ a = "."
+ n = 1
+ while a == "." and i-n >= 0 and j-n >= 0:
+ a = state[i-n][j-n]
+ n += 1
+ b = "."
+ n = 1
+ while b == "." and i-n >= 0:
+ b = state[i-n][j]
+ n += 1
+ c = "."
+ n = 1
+ while c == "." and i-n >= 0 and j+n < width:
+ c = state[i-n][j+n]
+ n += 1
+ d = "."
+ n = 1
+ while d == "." and j-n >= 0:
+ d = state[i][j-n]
+ n += 1
+ e = "."
+ n = 1
+ while e == "." and j+n < width:
+ e = state[i][j+n]
+ n += 1
+ f = "."
+ n = 1
+ while f == "." and i+n < height and j-n >= 0:
+ f = state[i+n][j-n]
+ n += 1
+ g = "."
+ n = 1
+ while g == "." and i+n < height:
+ g = state[i+n][j]
+ n += 1
+ h = "."
+ n = 1
+ while h == "." and i+n < height and j+n < width:
+ h = state[i+n][j+n]
+ n += 1
+ return a+b+c+d+e+f+g+h
+
+def find_steady_state_2(seats):
+ height = len(seats)
+ width = len(seats[0])
+ state = deepcopy(seats)
+ prev_state = deepcopy(seats)
+ while True:
+ for i in range(height):
+ for j in range(width):
+ cell = prev_state[i][j]
+ if cell == ".":
+ pass
+ elif cell == "L":
+ # check for no occupied seats
+ neighbors = check_line_of_sight(prev_state,i,j)
+ if "#" not in neighbors:
+ state[i][j] = "#"
+ else:
+ state[i][j] = "L"
+ elif cell == "#":
+ # check for 4+ occupied seats
+ neighbors = check_line_of_sight(prev_state,i,j)
+ if neighbors.count("#") > 4:
+ state[i][j] = "L"
+ else:
+ state[i][j] = "#"
+ if state == prev_state:
+ break
+ prev_state = deepcopy(state)
+ return state
+
+def part2(seats):
+ pass
+ final_state = find_steady_state_2(seats)
+ output = ''
+ for row in final_state:
+ for character in row:
+ output += character
+ return output.count("#")
+
+def main():
+ seats = read_file()
+ print(part1(seats), part2(seats))
+
+if __name__ == "__main__":
+ main()
\ No newline at end of file
diff --git a/2020/11/input.txt b/2020/11/input.txt
new file mode 100644
index 0000000..47015de
--- /dev/null
+++ b/2020/11/input.txt
@@ -0,0 +1,93 @@
+L.LLLLLLLLLL.LLLLLLLLL.LLLLLLLLL.LLL.LL.LLLLLLLLL.LLLLLL.LLLL.LL..LLLL.LLLL.LLL.LL.LLLLLLL
+.LLLL.L.LLLLLLL.LLLLLLLLLLLLLLL..LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLL.LLLLLLLLLLLLLL
+LLLLLLLL.LLL.LLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLL.LLL.LLLL.LLLLLLLLLLLLLL
+LLLLL..LL.LL.LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLL.LLLLLLL
+LLLLL.L.LLLLLLLL.LLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLL
+LLLLL..L..L.L........L....L.L..LLL...L....L.....L...L..L.....LLL.L..L..LLL...L.LLL...L..L.
+LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLL.LL.LLLLLL.LLLLLLL.LLLLL.LLLL.LLLLLLLLLLLLLL
+LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLL..LLLLLL.L.LLL.LLLLLLLLLLLLLLLLLL..LLLL.LLLL.LLLLLL.LLLLLLL
+LLLLL.LLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLL.LL.LLLLLLLLLLLLLL
+LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLL..LLLLLL.LLLLLLLLLL.LLLLL.LLLLLLLLLLLLL.LLLL.LLLLLL.L.LLLLL
+LLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL.LLL..LL.LL.LLLLLLLLLLLLL.LLLLL.LLLL.LLLLLL.LLLLLLL
+LLLLL.LLLLL..LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL..LLLLLL.LLLLL.LLLL.LLLLLLLLLLLLLL
+LLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLL.LL.LLLLLL.LL.LLLLLLLLLLLLLLL.LLLLLL.LLLLLLL
+.L.LL..LL.LLL...L....L..L....LLL...LL.L.L......L.....................LLLL.....L..LLL.L..L.
+LLLLLL.LLLLL.LLLLL.LLL.LLLLLLLLL.LLLLLL.LLLLLL.LL.LLL.LL.LLLL.LLLLLLLL.LLLLLLLLLLL.LLLLLLL
+LLLLLLLLLLLL..L.LLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLL
+LLLLLLLLLLLL.LLL.LLLLL.LLLLLLLLL.L.LLL..LLLLLLLLL.LLL.LL.LLLLLLL.LLLL..LLLL..LLLLLLLLLL.LL
+LLLLL.LLLLLL.LL.LLL.LL.LLLLLL.LL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLL..LLLLL.LLLL.LLLLLLLLLLLLLL
+..L...LLL..L.......L..LL.LLL........L..L..LLL..L.L.LLL..LL....LL.L.L...LLL...LLL..LL.L...L
+LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.L.LLLLLLLLLLL.LLLL.LLLLLLLLLLLLLL
+LLLLLLLLLLL..LLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLL..LLLLLL.LLLLLLL.LLLLL.LLLL.L.LLLLLLLLLLLL
+LLLLL.LLL.LLLLLLLLLLLL.LLLLLL.L..LLLLL..LLLLLLLLL.LLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLL.LLLLLLL
+LLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLL.LLL.LLL.LLLLL.LLLL.LLL.LL.LL.LLLL
+LLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL.L.LLLL.LLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLL
+LLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLL.LLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLL.LLLL
+LLLLL.LLLLLL.LLLLLLLL..LLL.LLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLL.LLLLLLL
+LLLLL.LLLLLL..LLLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL
+..L..L......L.L...L.....L....L..L.L..L.LL.LLLLL....LL...L.L.LL....L..L..L..............LL.
+LLLLLLLLLLL..LLLLLLLLL.LL.LLLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.
+LLLLLL.LLLLL.LLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLL.LLLL.LL
+LLLLL.LLLLLLLLLLLLLLL..LLLLLLL.L.LLLLLL.LLLLLLLLLLLLLLLLLL.LLLLLL.LLLL..LLL.LLL.LL.LLLLLLL
+LLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLL.LLLLLLL
+LLLLL.LL.LLL.LLLLLLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLL.L.LLLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL
+L.......L...........L..L.....L.L.L.....L...L.....LL...........L..L.....L.....LL......L....
+LLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLL.LLLLLLL
+LLLLL.LLLLLL.LLLLLLLLL.LLL.LLLLLLLLLLLL.LL.L.L.LLLLLLLLLL.L.LLLL.LLL.LLLLLLLLLLLLL.LLLLLLL
+LLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL.LLLLL.LLLL.LLLLLL.LLLLLLL
+LLLL..LLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLL.LLLLLLL.LLLLLLL.LLLLL.LLLL.LLLLLLLLLLLLLL
+LLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLL.LLLLLLL.LLLLLLLLLL.LLLLLL.LLLLLLL
+.L..L...L.......L....L.....L...........LLLLLL.L...L..L.L....L.LLL...LL......LL.L..L.LL..L.
+LLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLL.LLL.LLLLLLLLLLLLL.LLLL.LLLLLL.LLLLLLL
+LLLLL.LLLL.L.LLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LL.LLLLLL..LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLL
+LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.L.LLL.LLLLLLL.LLLLL
+LLLL.LL.LLLL.LLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLL.LL.LLLLLLL.LLLLLLLLLL.LLLLLLL.LLLLLL
+LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLL.LLL..L.LLLLLL.LLLLLLL
+LLLLLLLLLLLLLLLLLLLL.L.LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLL..LLLLLLLLLLLLL.LLLL.LLLLLL.LLLLLLL
+L.LLL.LLLLLL.LLLLLLLLL.L.LLLLLLL..LLLLL..LLLLLLLLLLLLLLL.LLLL.LL.LLLLL.LLLL.LLLLLL.LLLLLLL
+LLLLL.L.LLLL.LLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLL..LLLLLLLLLLLLL.LLLLL.LL.L.LLLLLL.LL.LLLL
+LLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLL.LLLL.LLLLLL.LL.LLLL
+L..L.L.LL.LLL..LLL.L.L.......L...L.LL...L..L.L......L....L.....L..L....L....LL.L..........
+LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLLLLLLL.LLLLLL.LLLLLLL
+LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLL.LLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLL.L.LLLLLLL
+LLLLLLLLLLLL.LL.LLLLLL.LLLLL.LLL.LLLLLLLLLL.LLLLLLLLLLLL.LLLL.LL.LLLLL.LLLL.LLLLLL.LLL.LLL
+LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLL.LLL.LLLLLLLLLLLLLLL..LLLL.LLLLLLLLLLLLLL
+LLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLL.LLLL.LLLLLL..LLLLLL
+LLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLL.L.LLLL.LLLLLL..LLLLL.LLLL.LLLLLLLLL.LLLL
+.......L....L....L.L....L.LLLL......L.L............L....L..L..L..L.LLL..L.LLLL.LL..L....L.
+LLLLL.LLLLLL.L.LLLLLLL.LLLLLLLLL.LLLLLL..LLLLLLLL.LLLLLL.LL.L.LLLLLLLL.LLLL.LLLLLL.LLLLLLL
+LLLLL.LLLLLL..LLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLL.LLL..LLLLLLLLLLLLLL
+LLLLL.LLL.LL.LLLLLLLL.LLLLLLLLLL.LLL.LLLLLLLLLLLL.LLLLLLLLLLLLLL..LLLLLLLLLLLLLLLLLLLLLLLL
+L.LLL.LLLLLL.LLLLLLLLL.LLLLLL.LL.LLLL.L.LLLLLLLLL.LLL.LLLLLLLLLL.LLLLL.LLL.LLLLLLLLLLLLLL.
+LLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLL.LL.LLL.LLLLLLL.LLLL.LLLLLLLLLLLL.LLLLLLL
+LLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLL.LLL.LLLL.LLLLL.LLLL
+LL...L..LL........L...LL....L.LL..L.........LL..L...L..L.L...L.L.LL..L.L....LL....LL.....L
+LLLLL.LLLLLL.LLLLLLLL..LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.L.LLLLLLLLLLLL
+LLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLL.LLLL.LL
+LLLLL.LLLLLL.LLLLLLLLL.LLLLL.LLL.LLLL.L.LLLLLLLLLLL.LLLL.LLLLLLL.L.LLL.LLLLLLLLLLL.LLLLLLL
+LL.LL.LLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LL.LLLLLL.LLLLLL.LLLLLLLLLLLLLLL.LL.LLLLLL.LLL.LLL
+LLLLLLLLLLLL.LLLLLLLLL.LL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLL.LLLLLL.LLLLLLL
+LLL.L.L.LLLL.LLLLLLLLLLLLLLLLLLL.L.LLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLL..LLL.LLLLLL.LLL.LLL
+L.LL..L.L.L...L......L...L.......L.L.LL.....L.........L....L.......L.LL....L..L.L...L....L
+LLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLL..LLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLLLLL
+LLLLL..LLLLL.LLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLL.LLL.LLL.LLLLLLLLLL.LLLLLL.LLLLLLL
+LLLLLLLLLLLL.LLLLLLLLL.LLLL.LLLL.LLLLLL.LLLLLLLLL.LLLL.L.LLLLLLL.L.LLL.LLLL.LLLLLL.LLL.LLL
+LLLLLLLLLLLL.LLLL.LLLLLLLLLLLLL..LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL.LLLLL.LLLL.LLLLLL.LLLLLLL
+LLLLL.LLLLL..LLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLL.L.LLLLLLLLLLLLLLLL.LLLLLL.LLLLLLL
+LLLLL.LLLLLL.LLLLLL.LL.LLLLLLLLLLLLLLLL..LLLLLLLL.LLLLLLL.LL.LLLLLLLLL.LLLL.LLL.LLLLLLLLLL
+LLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLL.LLL.LLLLLL.LLLLLL..LLLLL.LLLL.L.LLLL.LLLLLL.
+LLLLL.LLLLLLLLLLLLL..L.LLLLLLLLL.LLLLLL.LLL.LLLLL.LLLLLL.LLLLLLL..LLLL.LLLLLLLLLLL.LLLLLLL
+LLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLL.LLL.LLLLLLLLLL.LLLLLLLLLLLLLL
+.LL...L...........LL...LLL.L.L.L.L...L.L.....LLLLLL..........L.L.L.L.L...L.L.L.L........L.
+LLLLLLLLLLLL.LLLLLLLLL..LLLLLLLL.L.LLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLL.LLLLL..LLLLLLL
+L.LLL.LLLLLL.LLLLLLLLL.LLL.LLLLL.LLLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLL.LLLLLL.
+LLL.LLLLLLLL.LL.LLLLLL.L.LLLLLLL.LLLLLLLLLL.LLLLLLLLLLLL.LLLLLLL.LLLLL.LLLL.LLLLLLLLLLLLLL
+LLLLLLLLL.L.LLLLLLLLLL.L.LLLLLLL.LLLL.L.LLLLLLLLLLLLLLLLLLLLL.LL.LLLLLLLLLL.LLLL.LLLLLLLLL
+LLLLL.LLLLLLL.LLLLLLL..LLLL.LLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.LLLLL.LLLL.L.LLLLLLLLLLL.
+LLLLL.LLLLLLLLLLLLL.LLL.LLLLLLLLLLLLLLLLLLLLLLLLL.LLL.LL.LLLLLLL.LLLLLLLLLL.LLLLLL.LLLLLLL
+.LLLL.LLLLLL.LLLLLLLLLLLLLLL.LLL.LLLLLL.LLLLLLL.L.LLLLLLLLLLLLLL.LLLL..L.L..LLLLLL.LLLLLLL
+LLLLL.LLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLL.L.LLLLLL.LLLLLLLLLLLLL.LLLL.LLLLLL.LLLLLLL
+LLLLL.LLLLLL..LLLLLLLL.LLLL.LLL.LLLLLLL.LLLLLLLLL.LL.LLL.LLLLLLLLLLLLL.LLLLLLLLLLL.LLLLLL.
+LLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLL.LLLL.LLLLLL..LLLLLL
+LLLLL.LLLLLL.LLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLL..LLLLL.LLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLL
+L.LLL.LLLLLL.LLLLLLLLL.LLLLLLLLL.L.LLLLLLLLLLLLLLLLLL.LL.LLLLLLLLLLLLLL.LL..LLLLLL.LLLLLLL
\ No newline at end of file
diff --git a/2020/11/input_sample.txt b/2020/11/input_sample.txt
new file mode 100644
index 0000000..ff5431a
--- /dev/null
+++ b/2020/11/input_sample.txt
@@ -0,0 +1,10 @@
+L.LL.LL.LL
+LLLLLLL.LL
+L.L.L..L..
+LLLL.LL.LL
+L.LL.LL.LL
+L.LLLLL.LL
+..L.L.....
+LLLLLLLLLL
+L.LLLLLL.L
+L.LLLLL.LL
\ No newline at end of file
From fc8320bdd00a112a8e9af642bf156c7873fb4e98 Mon Sep 17 00:00:00 2001
From: a
Date: Fri, 11 Dec 2020 15:16:01 -0600
Subject: [PATCH 4/5] add 2019
---
2019/00/00.py | 6 +
2019/00/input.txt | 0
2019/01/01.py | 15 +
2019/01/input.txt | 100 +++
2019/02/02.py | 31 +
2019/02/input.txt | 1 +
2019/02/input_sample.txt | 1 +
2019/02/input_sample2.txt | 1 +
2019/04/04.py | 27 +
2019/04/input.txt | 1 +
2019/06/06.py | 33 +
2019/06/input.txt | 1799 +++++++++++++++++++++++++++++++++++++
2019/06/input_sample.txt | 11 +
2019/06/input_sample2.txt | 13 +
2019/08/08.py | 32 +
2019/08/input.txt | 1 +
16 files changed, 2072 insertions(+)
create mode 100644 2019/00/00.py
create mode 100644 2019/00/input.txt
create mode 100644 2019/01/01.py
create mode 100644 2019/01/input.txt
create mode 100644 2019/02/02.py
create mode 100644 2019/02/input.txt
create mode 100644 2019/02/input_sample.txt
create mode 100644 2019/02/input_sample2.txt
create mode 100644 2019/04/04.py
create mode 100644 2019/04/input.txt
create mode 100644 2019/06/06.py
create mode 100644 2019/06/input.txt
create mode 100644 2019/06/input_sample.txt
create mode 100644 2019/06/input_sample2.txt
create mode 100644 2019/08/08.py
create mode 100644 2019/08/input.txt
diff --git a/2019/00/00.py b/2019/00/00.py
new file mode 100644
index 0000000..dc8d2c1
--- /dev/null
+++ b/2019/00/00.py
@@ -0,0 +1,6 @@
+with open("input.txt","r") as f:
+ input = f.read().split('\n')
+
+part1 = 0
+part2 = 0
+print(part1, part2)
\ No newline at end of file
diff --git a/2019/00/input.txt b/2019/00/input.txt
new file mode 100644
index 0000000..e69de29
diff --git a/2019/01/01.py b/2019/01/01.py
new file mode 100644
index 0000000..6986ed2
--- /dev/null
+++ b/2019/01/01.py
@@ -0,0 +1,15 @@
+with open("input.txt","r") as f:
+ masses = [int(x) for x in f.read().split('\n')]
+
+def fuel_required(mass):
+ return mass // 3 - 2
+
+def fuel_required_recursive(mass):
+ fuel = mass // 3 - 2
+ if fuel <= 0:
+ return 0
+ return fuel + fuel_required_recursive(fuel)
+
+part1 = sum([fuel_required(mass) for mass in masses])
+part2 = sum([fuel_required_recursive(mass) for mass in masses])
+print(part1, part2)
\ No newline at end of file
diff --git a/2019/01/input.txt b/2019/01/input.txt
new file mode 100644
index 0000000..9040b87
--- /dev/null
+++ b/2019/01/input.txt
@@ -0,0 +1,100 @@
+147077
+148686
+71851
+98056
+65024
+87254
+146003
+128542
+136657
+91885
+91904
+78806
+58210
+67520
+118393
+68344
+69593
+135370
+111892
+84153
+105683
+76166
+112780
+145179
+83811
+61481
+118277
+59732
+72222
+64606
+55645
+82168
+97590
+122479
+120365
+103057
+76225
+148099
+100610
+75592
+148678
+132756
+55335
+77094
+73992
+95097
+92382
+78885
+93657
+121709
+114261
+90565
+110043
+145497
+92066
+109833
+76107
+143941
+67084
+139407
+56730
+131457
+110026
+85632
+74239
+116964
+129806
+75030
+76317
+99523
+78069
+75685
+81279
+58287
+148135
+89313
+139141
+136066
+94046
+50430
+55242
+123494
+68410
+83716
+122608
+79343
+88826
+95968
+98603
+104895
+128814
+120473
+97504
+60990
+98132
+58895
+92987
+136301
+131747
+137498
\ No newline at end of file
diff --git a/2019/02/02.py b/2019/02/02.py
new file mode 100644
index 0000000..a7deeeb
--- /dev/null
+++ b/2019/02/02.py
@@ -0,0 +1,31 @@
+def process(program):
+ i = 0
+ while True:
+ opcode = program[i]
+ if opcode == 99:
+ break
+ elif opcode == 1:
+ program[program[i+3]] = program[program[i+1]] + program[program[i+2]]
+ elif opcode == 2:
+ program[program[i+3]] = program[program[i+1]] * program[program[i+2]]
+ else:
+ break
+ i += 4
+ return program[0]
+
+def alarm(noun, verb):
+ with open("input.txt","r") as f:
+ program = [int(x) for x in f.read().split(',')]
+ program[1] = noun
+ program[2] = verb
+ return process(program)
+
+def part2():
+ for noun in range(100):
+ for verb in range(1,100):
+ if alarm(noun, verb) == 19690720:
+ return 100 * noun + verb
+
+part1 = alarm(12,2)
+part2 = part2()
+print(part1, part2)
\ No newline at end of file
diff --git a/2019/02/input.txt b/2019/02/input.txt
new file mode 100644
index 0000000..7d56ddc
--- /dev/null
+++ b/2019/02/input.txt
@@ -0,0 +1 @@
+1,0,0,3,1,1,2,3,1,3,4,3,1,5,0,3,2,10,1,19,1,6,19,23,1,23,13,27,2,6,27,31,1,5,31,35,2,10,35,39,1,6,39,43,1,13,43,47,2,47,6,51,1,51,5,55,1,55,6,59,2,59,10,63,1,63,6,67,2,67,10,71,1,71,9,75,2,75,10,79,1,79,5,83,2,10,83,87,1,87,6,91,2,9,91,95,1,95,5,99,1,5,99,103,1,103,10,107,1,9,107,111,1,6,111,115,1,115,5,119,1,10,119,123,2,6,123,127,2,127,6,131,1,131,2,135,1,10,135,0,99,2,0,14,0
\ No newline at end of file
diff --git a/2019/02/input_sample.txt b/2019/02/input_sample.txt
new file mode 100644
index 0000000..d3e6587
--- /dev/null
+++ b/2019/02/input_sample.txt
@@ -0,0 +1 @@
+1,9,10,3,2,3,11,0,99,30,40,50
\ No newline at end of file
diff --git a/2019/02/input_sample2.txt b/2019/02/input_sample2.txt
new file mode 100644
index 0000000..b689629
--- /dev/null
+++ b/2019/02/input_sample2.txt
@@ -0,0 +1 @@
+1,0,0,0,99
\ No newline at end of file
diff --git a/2019/04/04.py b/2019/04/04.py
new file mode 100644
index 0000000..5f457e8
--- /dev/null
+++ b/2019/04/04.py
@@ -0,0 +1,27 @@
+passwords = [str(p) for p in range(172851,675869+1)]
+
+def monotonic(password):
+ digits = list(password)
+ if digits == sorted(digits):
+ return True
+ return False
+
+def at_least_two_adjacent(password):
+ digits = list(password)
+ for i, digit in enumerate(digits):
+ if i+1 == len(digits):
+ return False
+ if digits[i+1] == digit:
+ return True
+
+def exactly_two_adjacent(password):
+ if not at_least_two_adjacent(password):
+ return False
+ digits = list(password)
+ for digit in digits:
+ if password.count(digit) == 2:
+ return True
+
+part1 = [p for p in passwords if monotonic(p) and at_least_two_adjacent(p)]
+part2 = [p for p in passwords if monotonic(p) and exactly_two_adjacent(p)]
+print(len(part1), len(part2))
\ No newline at end of file
diff --git a/2019/04/input.txt b/2019/04/input.txt
new file mode 100644
index 0000000..b3f8da5
--- /dev/null
+++ b/2019/04/input.txt
@@ -0,0 +1 @@
+172851-675869
\ No newline at end of file
diff --git a/2019/06/06.py b/2019/06/06.py
new file mode 100644
index 0000000..3c4b4b6
--- /dev/null
+++ b/2019/06/06.py
@@ -0,0 +1,33 @@
+with open("input.txt","r") as f:
+ lines = f.read().split('\n')
+ orbits = {}
+ for line in lines:
+ parent, child = line.split(')')
+ orbits[child] = parent
+
+def depth(node, graph):
+ depth = 1
+ parent = graph[node]
+ while parent != "COM":
+ depth += 1
+ parent = graph[parent]
+ return depth
+
+def parents(node, graph):
+ path = []
+ parent = graph[node]
+ while parent != "COM":
+ path.append(parent)
+ parent = graph[parent]
+ return path
+
+def orbital_transfers(start, end, graph):
+ path1 = parents(start, graph)
+ path2 = parents(end, graph)
+ set1 = set(path1)
+ set2 = set(path2)
+ return len((set1 - set2) | (set2 - set1)) # union of differences
+
+part1 = sum([depth(x, orbits) for x in orbits.keys()])
+part2 = orbital_transfers("YOU", "SAN", orbits)
+print(part1, part2)
\ No newline at end of file
diff --git a/2019/06/input.txt b/2019/06/input.txt
new file mode 100644
index 0000000..1a725c0
--- /dev/null
+++ b/2019/06/input.txt
@@ -0,0 +1,1799 @@
+797)67Y
+W32)48L
+J31)N9K
+QQ3)NVL
+MP6)JBY
+8T3)H27
+DRK)THF
+BSN)7MD
+Z2G)VRX
+CVV)XDC
+WVW)SV6
+D3H)QMG
+9BM)NTH
+4T7)FQS
+F58)D1Q
+CR7)B7L
+4W8)T9Z
+5SB)5JB
+DRJ)YQD
+76X)X1Z
+WC9)LNG
+52C)W7J
+9ZS)KM7
+3RW)C8R
+7RQ)TJW
+HVN)ZNQ
+SQK)CBT
+GWC)N76
+KBQ)W44
+QD5)RVQ
+SQF)N3K
+RZ1)B2R
+TB5)34W
+J56)CQD
+34Y)HLX
+DTM)TD4
+2RF)SQV
+GJT)TFD
+CNK)88B
+PJD)GD8
+4V8)FQN
+HKH)6RS
+7T4)2JT
+DBM)DMQ
+59X)137
+HK7)B62
+D34)K7Z
+RR2)M74
+Q13)FC5
+1F1)8XJ
+K1L)QZ9
+T73)4VT
+Z7S)59X
+1MQ)GB6
+BJT)4BZ
+WW8)DT2
+JYL)6SH
+R2K)WC9
+21H)4ZD
+Z7Z)QWZ
+F8N)LRZ
+QZ9)9TD
+3DP)VDT
+GZK)ZGF
+G3P)KLZ
+7ZM)G3P
+3VX)P4H
+7T4)LNV
+VVV)Q99
+BYX)87K
+4C1)9XS
+SB3)4SV
+FYV)JQ4
+HQ4)ZMR
+K7Z)LKT
+TQM)BBH
+9V5)PJD
+7VB)H6L
+66X)FDY
+NT9)17R
+K9Z)T26
+1BX)VRN
+TJD)5ST
+QWZ)5CT
+MD6)GJT
+TT1)W3Y
+B2R)444
+MB8)NFN
+FB1)4T3
+V3Y)DJ7
+2GQ)265
+SLV)G3B
+THF)DC1
+HRR)LV1
+QZ7)ZR5
+VGS)ZCG
+CRY)3L3
+3N2)CZ4
+Y1B)3WF
+YK2)W5C
+X15)8ZW
+92C)3PV
+7Z8)Y4B
+PWF)NX2
+GPR)QVR
+TDL)TRM
+W4X)8TH
+23H)6KK
+4X2)TXV
+HQ9)52C
+LRG)RWM
+38N)YVB
+W7F)BSM
+3VC)FQC
+PS7)Z7Z
+2YX)QSG
+9PB)4KF
+VRX)K9Z
+TRM)R2K
+WYB)NRD
+HJ2)5LM
+ZRJ)WWL
+7TW)WZR
+CBX)7S2
+V4N)FSN
+17B)88D
+F91)LWV
+L54)9G4
+592)YC1
+J24)9KW
+GNP)Y7T
+KDP)22T
+ZNQ)QFZ
+8NW)MKC
+VSJ)NTD
+137)VQS
+YB3)MP6
+38W)DLK
+CJJ)683
+59N)GHZ
+W3Y)P9Y
+733)V2Q
+WX6)4GM
+RRP)HG8
+L6L)YZZ
+QRW)YZX
+1FD)RMT
+HSJ)5V9
+RVQ)1KY
+9K7)72H
+V6S)75V
+NB1)SDT
+J5N)4R6
+QD7)1SR
+J6W)3FL
+2GQ)FQM
+J5N)2K9
+2B4)R23
+4L5)QXX
+7J4)42R
+6X7)H2X
+8D1)LH7
+592)J4Y
+6CM)4GW
+R6V)KSD
+FDL)NKS
+P4H)8RZ
+46M)L1N
+M64)M4K
+6K3)KZ9
+FH8)1SS
+DJ7)BMS
+MG1)RQ9
+ZRH)5G1
+TMT)VQG
+11V)W7N
+ZM5)QHZ
+DSL)8GB
+YK5)38P
+C1Y)YYJ
+H61)8N2
+T7W)VVJ
+THR)M7F
+XXH)3H3
+TVX)595
+B2B)KBF
+76Z)DGL
+9PR)X23
+ST7)G8Q
+1FP)FH8
+Q5F)7V2
+XKP)2VC
+47G)1ZG
+QXX)8XD
+MNG)KNF
+RF3)XD8
+K4F)PLX
+66D)LXG
+TQW)5SP
+SBR)ZFT
+NMH)8W7
+N79)YBM
+BK8)JY9
+NKS)H8K
+LQ5)SNS
+TVR)N6T
+QXP)M92
+YMD)HM8
+T84)25S
+Q6K)M3K
+R23)MZM
+CTB)B9Z
+DT2)718
+9ZD)GXG
+KKV)N5K
+GBK)TKG
+TRG)GMW
+KFY)PLY
+LSP)RG9
+Z31)MBP
+LXF)LFF
+3JC)MS6
+CRY)6ZK
+67H)Z6Y
+B9Z)674
+TWJ)DW2
+1PR)4WW
+X1J)QZR
+128)FLG
+GTT)75S
+67Y)HNK
+H2L)ZRX
+9V6)RF3
+GRX)TDC
+WJR)68N
+129)QJ4
+FY1)PWF
+F5D)RQM
+S7K)PVL
+88B)C23
+YV9)136
+5C8)X6V
+LDQ)1FD
+N55)WYB
+WZB)ZT8
+SYH)QVB
+FWZ)SFX
+ZVJ)VXP
+L5V)J31
+8ZW)4HG
+49B)J24
+6LC)Z98
+G83)4V8
+BGX)J9B
+6XF)MQJ
+54P)BTC
+83Z)KZP
+BZZ)J9P
+RL5)QXQ
+YMQ)HH4
+3XQ)64P
+3BG)SBJ
+X7P)N8Y
+3HN)L4S
+T1P)H61
+ZJR)ZZR
+1SH)JY7
+KTB)LYF
+ZLF)BXG
+G3B)BRS
+8JV)46M
+KDX)TP4
+DPC)T8P
+VRQ)G56
+2JZ)M64
+YY2)1J2
+VSJ)G7W
+SJ3)L68
+19W)SMN
+KJX)GNP
+7S3)RP1
+VCS)MKK
+8C6)7TR
+NY3)2LY
+9N2)GVQ
+9Y1)K9W
+PLX)V6S
+38P)QNP
+V2D)J4Q
+TGL)NMG
+2N2)NXX
+ZBW)G5C
+88Y)QTV
+NPD)B9Y
+NFR)HHP
+9Z9)Y49
+NTH)LG9
+RG9)HHS
+Y3P)D7W
+D38)4JL
+MF5)XGZ
+4BB)DJJ
+1XF)BZ4
+F4Q)MHQ
+7QN)FPZ
+98T)DXP
+MLJ)DMR
+ZZC)7P2
+5G1)7T4
+J9B)VR4
+W7K)1LP
+8Z2)4K2
+N1N)DS1
+T73)TQW
+RQV)HCS
+T8P)6XS
+CNK)9WG
+3RP)43B
+S2K)Z2G
+Z3H)P8G
+BZ4)QVP
+W7J)BN5
+ZNJ)91T
+6V7)CLD
+6SH)6L9
+XLQ)YBC
+BWN)6RL
+DRK)NBG
+5ST)LR7
+BPM)DNV
+3H7)WYV
+WNF)BS9
+FY1)6K9
+3T2)3P4
+B45)S1Q
+BKX)9ZD
+Y7T)9PR
+BRS)92N
+QLQ)75L
+XMQ)XTF
+N8Y)LSJ
+4Q1)2MG
+NT9)NRL
+7NT)F18
+NRD)CFJ
+MDW)QXC
+QMG)LCN
+LSJ)L24
+44J)V5Y
+186)18R
+91T)RM1
+P4B)XVT
+JN4)128
+JXZ)6PZ
+Q36)3RP
+6K1)T2C
+3S8)3VX
+42R)QSD
+3WF)66X
+LB2)XXH
+G3Y)SB3
+44G)J99
+HPK)2X5
+7NH)HGJ
+2W6)HTC
+HM8)FS4
+XFD)9FK
+643)L1R
+3SQ)VB6
+8BQ)N5L
+2X5)J3R
+1ZS)8LF
+21Z)SLK
+YL7)FQH
+RKK)DMZ
+TNY)F96
+Y2F)FRV
+MN7)BZZ
+38X)KWN
+75F)8WP
+ZR5)N7W
+F65)2VB
+5PT)84N
+F9Y)HRR
+SVL)RXH
+RB6)NFR
+QTV)8CV
+58Z)BWN
+FQN)BK8
+WXC)MLY
+683)HF6
+T5X)6X6
+BC5)WZB
+J2H)SQF
+DBM)LJQ
+FQS)SWH
+BFC)SLV
+45B)7F8
+Z12)6DS
+DP1)3T2
+SLK)BBN
+34Q)6V7
+X66)DCJ
+V1V)X6C
+MR9)Z9T
+PMF)VP9
+VCL)GNN
+B7L)KQ2
+95C)F58
+2RF)YJJ
+KNF)5X4
+GJT)YZJ
+N9K)XTN
+T84)HZW
+TJN)6QJ
+TB5)Z7W
+YKV)YMQ
+W6T)1CV
+1G3)5ZB
+LXG)3MK
+YJN)TTD
+2Z7)KJN
+HHS)KKV
+KQ2)D3W
+M32)3SK
+528)49L
+CVH)LB6
+QSY)C6J
+VQS)KFY
+VPJ)95Q
+2MG)GCK
+B2N)9QV
+6N5)5FX
+F25)QJB
+92Z)7QN
+7XN)G62
+WQ8)61N
+X8F)HG1
+6Z4)3YQ
+MHQ)SAN
+XR9)5XJ
+891)H43
+VTD)1BJ
+48L)MV7
+W7W)BQT
+S9W)42J
+7P2)ZV9
+TW7)DXK
+CBG)2JK
+7H8)KRG
+GDW)W4X
+G8X)2NW
+J99)Y5T
+VP9)83G
+D17)DKJ
+1YF)W9J
+RSH)T43
+4SV)6V6
+M7D)QRQ
+3WC)CJJ
+45R)45B
+WFN)21H
+4HG)8C6
+NFN)BC5
+XWF)BWG
+NHR)ST7
+H83)NXB
+3SK)7GB
+ZKW)D34
+VDT)1SH
+33V)N7F
+M8Z)4W8
+XPD)WXC
+FRY)Z2V
+JB4)WR2
+YPF)8T3
+C8R)LRK
+V8L)WQ1
+28R)Q7Y
+C52)Z18
+CBY)GLF
+PXR)1F1
+4XM)CFG
+J8G)V11
+RVN)9V6
+FZQ)B4V
+775)3HN
+1B2)X42
+VD7)6GY
+5WS)91M
+JJ2)3RW
+3RG)8PX
+H4W)KHD
+B4Z)J56
+8XP)ZHJ
+FZ4)6DZ
+3QM)1XJ
+KQD)WDC
+BNV)87P
+GHZ)B2J
+J4Y)PXR
+BMM)LVJ
+4JK)WZN
+TTD)KNL
+TW2)9JZ
+6KK)DPC
+RZV)FK8
+3DR)VSR
+PDP)76Z
+N7H)X7P
+J4L)7VB
+2HT)DSL
+MV7)ZL3
+Q7Y)FHP
+7BM)2HT
+4KF)FX7
+B62)DHN
+FJ4)775
+Z1V)XFQ
+N6T)7MV
+136)F4M
+FBW)FGV
+W5G)Q7R
+2G5)21B
+F76)LLY
+VCX)WJB
+BN5)B2N
+ZVF)9HQ
+BMJ)D17
+1Q1)Y6J
+6TV)MR9
+9FQ)1MQ
+FC4)VCT
+V2C)YDS
+8N2)T7W
+N5K)RY7
+YPH)WGN
+RPY)TVY
+6BQ)JJF
+1SZ)KDP
+1WL)DQW
+ZXR)BT3
+MS6)JN4
+4ZD)DBM
+3RL)BM4
+4DK)SVL
+YZ4)XR1
+5R1)FMZ
+8W7)JS1
+KWN)GZK
+SR5)L9J
+JX6)X5V
+YBC)3S8
+H48)BTY
+FL4)6WC
+GB6)285
+64P)B4Z
+HCS)LK1
+Q5F)R6V
+JDC)HKH
+PWR)916
+RDW)TRJ
+V11)9L8
+HXY)9VS
+RP1)CZD
+B9Y)891
+P1G)FRZ
+QTV)B92
+VB6)LYJ
+3FL)7PW
+QLM)L54
+LYQ)6LC
+Y5Q)MD6
+KQ2)KJX
+GQG)1K8
+SY7)WK9
+77W)K1H
+65Z)RFV
+H54)4P4
+95Q)KTB
+VMB)DZS
+F3C)1N5
+T26)7WW
+MSL)CWB
+QF5)6LN
+TWH)MGK
+73Z)7KR
+VPP)LR8
+129)CBX
+G8Q)L5V
+9V7)RLB
+B2X)YPR
+T2D)M3M
+TT1)4QD
+89C)JCX
+T7S)7QJ
+6WC)SXQ
+Z3H)YPM
+MBP)7Z8
+D3W)G83
+QXX)74K
+SSB)V2D
+QVM)ZBL
+WZ1)Z6G
+D8J)GQG
+9CF)F1C
+YDP)TWH
+FZ9)T3M
+ZTQ)V9X
+RX7)7F1
+L3H)6NF
+BSM)TBV
+Z2V)D6G
+YS7)W32
+LWV)7ZB
+PSP)YJR
+49C)DWM
+88D)3SZ
+LX9)G2Z
+46D)GKR
+Z7W)1PR
+PWK)NY3
+WDC)Z1V
+ZGF)PBN
+W28)HX3
+5WQ)49B
+DYK)B5C
+4R6)HK3
+HZ2)N7H
+MN8)G4Y
+SJW)B2X
+4M5)6QW
+YVC)PDW
+D1Q)C97
+3SZ)7FW
+N6M)MF5
+P53)XWC
+G46)RDW
+F6H)G9N
+XTF)BNV
+6LC)K8B
+2XV)813
+7TR)J26
+HC4)K38
+9QV)VG8
+F7Y)58Z
+N7W)V4N
+YZX)35W
+VCJ)1SN
+R85)1FP
+WHT)681
+QCJ)RHP
+2T5)ZTX
+VXP)XKP
+DVZ)2VX
+RDF)6FN
+DLR)RXK
+M66)F8N
+BQD)TW1
+9L8)2BL
+4T5)M36
+8FJ)3PK
+MLF)7TW
+LR8)VZJ
+TMH)P2Z
+8TH)LFP
+FB6)66D
+3P2)4T5
+BGZ)K4F
+75V)F4Q
+TP4)8K6
+4JL)KGH
+N5L)LFC
+F5D)WN4
+RMT)T5C
+1JB)XSJ
+MDB)WDX
+Y4B)765
+1BY)MDW
+KYQ)48R
+KDD)6K3
+YZ2)517
+DC1)V5V
+JS1)6C9
+FVR)3L7
+CCQ)HQ9
+LB6)JPM
+SWH)W28
+WVM)K8N
+L7T)GPF
+4X5)98T
+J1V)97M
+XHZ)FZQ
+J2L)CQ1
+Z9T)W7F
+3XQ)F25
+XYS)M66
+PFM)92C
+144)F91
+7ZB)PFM
+GPK)HXY
+BBN)MLJ
+1KY)3QM
+7FW)8BQ
+NP8)N2C
+CLY)QLQ
+HN5)VD7
+1CV)H7D
+QCJ)TDZ
+G9N)HLN
+WYK)8H7
+NRL)QXS
+XMF)WHQ
+SQV)2G5
+YQM)VZX
+NMX)SR5
+T4P)6VG
+3SQ)S47
+1BJ)Q36
+QXS)51X
+HX3)KGJ
+28V)GGC
+2VC)6BL
+4Q8)RVX
+CKW)GTT
+JX4)XCB
+NDH)Z8W
+HJ2)S2K
+S6Z)NMX
+N76)6TV
+RLD)Q8V
+R1Q)K7V
+FRV)RQK
+FJF)RLS
+KBF)SWF
+VJP)Y2F
+LW6)PMF
+7MD)67H
+456)S3D
+DW4)23D
+KVT)CVH
+NGC)1YF
+FX7)JX4
+674)HBV
+77G)7H8
+MZ6)528
+NX2)WGD
+TZR)CLZ
+YY7)4TQ
+K8B)GR9
+S1Z)WF2
+H5F)CKS
+W3R)J1V
+DTH)28R
+9SK)7NH
+Q8V)X9B
+WJB)4FK
+5SP)VJP
+3ZL)8Z2
+C6J)H85
+YR7)4JK
+YS7)RVN
+BPM)H83
+Q1Y)ZWH
+4JM)561
+MVM)6X7
+T6Q)TW2
+TPT)47G
+QVB)144
+VSR)H48
+GPS)FJF
+RFB)T4B
+VP7)3C9
+2D8)FZ4
+DWM)Y61
+YJN)C52
+1JB)ZG5
+2K9)J7F
+3MK)4XM
+YB3)PS7
+COM)WV2
+PDW)T1P
+4YP)Q13
+BTC)ZBW
+9FS)37V
+87P)XP2
+7F1)RTN
+HKR)ZKW
+NHL)2XV
+PP4)CBG
+SDT)9CF
+HLN)GBK
+Y21)GPS
+H42)FJ4
+FFZ)DDD
+SF7)YZ2
+LP4)VSK
+FK8)W5G
+RFF)2FM
+517)FDL
+9FK)TW7
+83H)S1M
+S4T)D8G
+9TZ)89C
+G7W)VMB
+4TQ)V7H
+JGP)Z95
+V9X)VCS
+8P7)DN2
+WKZ)95C
+L9J)Z8M
+M36)FHD
+BBH)T3G
+XHZ)DP1
+VZJ)39J
+FVR)YV9
+Z95)XK9
+D5Y)HTZ
+8JH)ZXS
+B9D)VHJ
+YQD)XPD
+9Z8)ZRT
+285)X66
+F94)D5Y
+C23)G3T
+7SR)PWR
+LK1)K79
+X42)8JV
+3K2)LSP
+DHH)QF5
+B92)H2L
+7QJ)MPR
+FYH)BYX
+QCT)PFC
+VQG)PQ8
+KNL)4SC
+QJB)YOU
+YKH)YY2
+S1M)T92
+6PW)11V
+HMT)CQY
+FHD)MTV
+Z6G)PVR
+4Q1)6N5
+N3M)38W
+VCT)CCQ
+9KW)BMF
+QSG)4C1
+J7T)GST
+FVN)TY8
+X6C)4YN
+KRG)Q1Y
+CDD)7FS
+KDM)K1L
+NXB)QR4
+XFQ)FZN
+1T4)KYQ
+QVR)34Q
+W6S)TSK
+XLD)YKH
+75R)TH8
+T9Z)5NG
+C97)YJF
+PSZ)33Z
+GNN)R49
+36J)N3H
+MYL)N1Z
+WPP)RHG
+2VX)T6Q
+XP2)DG9
+S21)Z1Q
+NMG)YDV
+SLV)BGZ
+931)KQD
+1DB)XGB
+SXQ)WCX
+K59)XBB
+TXV)ZVF
+DG9)Y3N
+H27)3ZZ
+XY8)ZZC
+Q7R)V8L
+W9J)WFN
+8H7)J1X
+QJ4)DXJ
+GST)Q6K
+YDS)JXP
+GMW)83M
+TFD)P3N
+XTN)PKR
+9HQ)5H6
+BTB)685
+3PN)D3H
+6NT)F3C
+JXP)77W
+D8G)XHY
+QZ9)L2J
+75L)SQK
+XWC)8YX
+L1N)GS2
+JQ8)31Y
+TZQ)FVK
+DN2)YPH
+DW2)8NW
+RRQ)2T5
+S81)DT5
+S3X)V3Y
+XBB)FVR
+BFV)9DQ
+9PR)Z3Z
+92N)PLM
+B5C)NZR
+3C9)LJ5
+CQ1)HPK
+LR7)BGX
+37V)D61
+LRK)SP9
+JY1)HQ4
+RQM)WKZ
+8X9)TJQ
+DS4)KWB
+LG9)JXZ
+HG8)MN8
+KGJ)BYK
+2JK)FMR
+WB1)GB9
+WGD)TT1
+Z3Z)RTL
+CDQ)6PW
+8V8)2HD
+CCC)W7K
+YMQ)1WL
+GRY)WB1
+4QK)DS4
+FQH)SSB
+Z8W)648
+GPD)Q5F
+ZBL)LCK
+6RL)ZTM
+7MV)6Z4
+QSY)B9D
+N55)SVN
+G62)1B2
+91R)Q1L
+G3P)GX2
+PVL)1YW
+J9B)JJ2
+TNS)PHY
+MGK)XZG
+RFV)3XQ
+1XJ)23H
+G3T)Z5H
+3RK)T1W
+T92)MXC
+XDC)HG6
+WJQ)PRY
+XCB)D8Z
+K4R)K32
+XYS)46D
+RK4)931
+7FS)442
+RQ9)YV4
+KFV)RDF
+YC1)2B4
+CBT)WHT
+JGZ)RTB
+C19)HYY
+RM1)PDP
+SFX)RK4
+V5V)JYL
+RXK)T57
+17R)3DR
+CQL)JK6
+SP9)WVM
+ZG5)T7N
+QD7)YL7
+ZFT)3RG
+PLM)SH8
+RP6)VPP
+12T)K4R
+G9F)KFV
+MGG)72P
+85L)DPB
+GWP)L6L
+NHD)WYK
+XK8)9ND
+T5X)ZXY
+6QJ)8X9
+4MY)RP6
+WN4)W9L
+7CW)JH8
+1JN)R7V
+7KR)Q1G
+YHT)5WR
+GLP)FHT
+59X)TLM
+8LS)RKB
+4MY)LKV
+NQW)VPJ
+J7F)R1Q
+WWL)77G
+LH7)YVC
+LR2)SVZ
+826)2Z7
+C8R)HJ2
+8WP)GFJ
+X23)FB6
+RM1)76X
+1Z6)BMJ
+1FR)51P
+LCK)VFT
+ZL3)75R
+KWB)L7T
+6ZW)826
+NZR)3K2
+FQC)VHL
+YPM)YPJ
+2FM)CNL
+4TQ)HTP
+WGD)36J
+PBN)9FQ
+YVC)C2P
+S49)YJN
+QLX)SZC
+Z8W)BFC
+3ZZ)8D1
+WJV)JDP
+Z7W)QPK
+VZL)9VZ
+KLZ)K5Q
+SWS)TPT
+R68)VFM
+SXM)J4L
+L71)BTB
+8GB)6D5
+9WG)P6P
+J52)SYH
+D6G)T25
+TBV)F9Y
+R3Y)NHL
+5XF)S84
+VTZ)Z31
+HZW)XMT
+DGL)W6S
+7TN)QJN
+2JT)WJQ
+XSJ)9XN
+YG4)X15
+JY7)DTM
+B9Z)MGG
+YJJ)Y8G
+B4V)R6F
+TFF)TDL
+TNS)FYH
+FDY)CCM
+HG6)H2H
+N5L)Z2N
+FWZ)V1Z
+CFG)GYM
+23D)BJT
+BGD)CLY
+GXG)9FS
+ZWH)T73
+J24)D4X
+88N)BGJ
+LH7)K5Y
+3MC)7S3
+TJW)Z7S
+ZK7)695
+1DM)19W
+51P)DVX
+N1Z)1SZ
+JPM)3N2
+6D5)M32
+VVJ)KDM
+FHP)19S
+WCX)VZL
+4FK)5XF
+DZQ)SWS
+QRQ)J52
+RHP)ZHT
+5RR)92Z
+3P4)D5N
+1XJ)38N
+YFB)C19
+1MT)S6T
+8K5)QD8
+W86)NGC
+ZV9)8FJ
+GYM)GDP
+7LS)HMT
+LCN)S7K
+K32)7RQ
+NFR)S6Z
+Q6K)CNK
+LYF)RRP
+8XJ)R6G
+N1Y)DZQ
+PQ8)H78
+HYY)J2H
+8MB)5R1
+YDV)4GG
+8YX)V62
+84V)46L
+LNV)KVC
+6X6)TMH
+BPL)33V
+6V6)YMM
+JZJ)QWP
+4T3)VSJ
+DNH)JX6
+ZFT)VCX
+KSD)YMD
+HYR)F64
+GLF)7Q6
+FPT)84V
+R6G)YK5
+NNT)H4W
+TJD)WKD
+RWZ)VMM
+NLW)85L
+4YN)SQR
+8N2)9ZS
+N3K)YHT
+2S1)SYL
+CCM)5MS
+GVQ)HC4
+VM5)W3Q
+WQ1)FWZ
+RQK)GZM
+HNK)8DX
+D6J)GRY
+TZQ)RZV
+WHQ)SVY
+WVM)3DP
+Z7Z)PKM
+C2K)N1Y
+Z2N)9HB
+CRZ)4YM
+H78)MB8
+8RH)8LW
+NBG)2BG
+XSW)TMT
+561)LRG
+1N5)4M5
+FLW)YBZ
+6RP)3QH
+M92)R58
+CZ7)RDL
+FGV)ZPV
+RXF)CDQ
+9XS)W7W
+9VZ)4X2
+VRX)WPP
+LYJ)VXH
+681)YSC
+PFC)5CQ
+7G7)X8F
+T57)FY1
+Z8Z)BKX
+Z5P)YDP
+CQD)T1D
+8HF)BSN
+YZJ)HVJ
+KRL)N55
+4KR)4DK
+P2D)KVT
+RLC)YPF
+GX2)4JM
+V2Q)7F5
+FQM)L2G
+SGD)WC5
+HTC)SJG
+F1C)GDW
+WDX)G21
+HBV)CVV
+7F5)1Z6
+LNK)HFD
+JB4)DFP
+7S2)85B
+S1Z)HKR
+2LY)LX9
+T2C)DGK
+HLX)Z6L
+4FM)NDH
+TRJ)TQM
+49L)JY1
+MPR)3T6
+CWM)9SK
+52C)9BX
+JBY)DVW
+V9C)DLR
+ZHT)86L
+MBH)NG2
+7SR)G4D
+35M)MYL
+NTD)QCT
+2TX)1P3
+8RZ)8VK
+WYP)N2S
+7Z8)2RF
+SJG)29X
+7WW)GDT
+VRN)QZ7
+7LG)YK2
+765)XLD
+P3N)TRG
+GCK)RSH
+TLM)GPK
+M79)4FX
+XGB)RL5
+RXH)PKH
+YHB)LR2
+265)1G3
+MCG)NHR
+3PV)BPM
+LM3)TFF
+Y49)1BX
+GB9)W1Q
+GKR)45R
+2LF)CHQ
+595)X41
+W2G)7CW
+YB6)83Z
+8LF)2W6
+GJG)H42
+PKR)3Z6
+FLL)G7S
+WZS)ZFJ
+GB4)88N
+8BK)CQM
+9VS)W2G
+5CT)YYD
+G4Y)N79
+KJN)Y1T
+RY7)LBS
+K16)FLL
+YPF)LW6
+SBJ)CRY
+4DZ)186
+4GG)5WQ
+KDV)4DZ
+Q1L)H54
+R9Z)733
+YPJ)GLT
+LNP)WVW
+XPD)21Z
+9V2)HK7
+4WW)37W
+8K6)FBW
+R3Y)LM3
+5M2)VM5
+ZNJ)DVZ
+DVH)1NW
+GLT)HM1
+SLK)PWK
+84N)6K1
+GS2)88Y
+K1H)GWP
+4GW)ZRJ
+DVX)PZG
+VSF)5GL
+WBS)4DV
+8XD)S49
+V6J)4T7
+75S)YKR
+GZM)BGD
+NKS)LKD
+29X)LYQ
+JY9)2YX
+HBY)73Z
+BMF)LP4
+T4B)KC2
+87K)5M2
+QZR)FLW
+GR9)KRL
+TXB)6NT
+4FK)4MY
+B31)2LX
+TG1)4YP
+BQT)LNK
+TW1)RB6
+3L7)T4P
+Z8Z)N3M
+6TF)CR7
+LFC)R33
+37W)1FL
+CQY)J5N
+S4G)VTD
+ZT8)RZ1
+5CQ)1FR
+BXG)FB1
+9G4)BPL
+ZCG)F65
+ZZR)2NC
+WZR)59N
+6C9)V2C
+ZFJ)P1G
+CWB)KYN
+SY4)R85
+DLK)9V2
+2LX)VGN
+5JB)GPR
+QHZ)9K7
+D8Z)2LF
+395)NB1
+1FL)FBF
+5MS)4XD
+HF6)49C
+JL7)YDQ
+33Z)TG1
+CXL)X8Y
+KYM)8XP
+RTB)54P
+LZ3)WJR
+6DZ)969
+FC5)XH7
+DKJ)MCG
+QCR)VCJ
+W32)QXP
+2XS)7LG
+Z6G)KDX
+H43)1SJ
+R7V)G7M
+YV4)8V8
+D4X)1Q1
+QSD)3KQ
+SFX)M6F
+DZ2)4DY
+6K9)1DB
+CZD)2TX
+3Z6)RRQ
+72H)3H7
+7BM)QRW
+P1G)NPF
+85B)71W
+FRV)MMC
+21B)5RR
+CSL)VCL
+XGZ)CDD
+2B4)V9C
+QD5)T2M
+VMM)456
+G56)S1Z
+NR6)C1N
+NXX)HMR
+H2H)XSW
+D7W)GPD
+JBY)ZNJ
+WKD)KDV
+7PN)MD2
+GDT)G6Q
+LV1)7XN
+3KQ)RHW
+SWF)XLQ
+YDS)FL4
+45R)Z8Z
+K4F)K59
+HLJ)QD5
+11H)MX8
+MKC)VH3
+G21)NT9
+QXQ)L6Q
+VJ2)GFS
+HWJ)P4B
+B33)3P2
+W28)2QR
+C1N)8LS
+9KW)PSZ
+74K)6ZT
+B23)WZ6
+PPG)GJG
+PKM)4QK
+BS9)T7S
+F96)39P
+444)RM5
+T6Q)BWD
+S7K)M7D
+YYD)M79
+D1P)116
+4DV)J6W
+J7F)FRY
+SVY)TZQ
+8PX)1ZS
+QFZ)NKW
+FD8)YB6
+CLY)X6W
+1YW)RFB
+648)3MC
+7D7)8TJ
+DT5)B33
+T3M)5C8
+31Y)FYV
+T43)75F
+H46)RFF
+3BR)J8G
+7S7)WBS
+G9F)C39
+2QR)12T
+MKK)7LS
+D1P)RX1
+X8Y)CS3
+7PN)CRZ
+QMG)XNK
+YMD)3JC
+YSC)S21
+DKZ)VWQ
+C1Y)G9Y
+DS1)Z4P
+T2M)9BM
+38X)XMF
+MZM)DZ2
+DXK)YQQ
+HGJ)YZ4
+VCL)7BM
+ZPV)SN4
+7J9)6XF
+QWP)RKK
+TSK)CQL
+BMS)TVX
+NPF)VJ2
+KC2)NP8
+MX8)YQM
+TH8)RLD
+KM7)F76
+ZRT)XJR
+VWQ)V6J
+MKC)SY7
+WGN)HLJ
+CXL)4Q8
+1LP)8RH
+MQJ)KD7
+7R8)R9Z
+3H3)JL7
+Y8G)LNP
+4VT)P51
+2NC)MLF
+12H)HVN
+HVJ)MN7
+SZC)7J4
+5X4)D1P
+29N)NMH
+8LW)L71
+YYJ)G46
+LDL)CQ3
+KHG)6MS
+RR2)83H
+35D)38X
+SV6)XMQ
+KHD)MSL
+FGB)XFD
+ZS2)LXF
+DMQ)FZ9
+MMC)FGB
+JW7)34Y
+WGN)VRQ
+LRZ)TB5
+6NF)4FV
+DMR)9N2
+916)SY4
+83G)WJV
+65M)12H
+9HB)WSL
+L1R)5SB
+G9Y)1BT
+J26)91R
+WR2)H46
+2RC)K16
+QJN)VVV
+4QD)G3Y
+XBV)35M
+QPK)RR2
+S72)T84
+Q2B)5PT
+39J)MBH
+VFM)QSY
+G2Z)KDD
+Y94)ZS2
+MTV)NPB
+R49)B31
+RVX)TZR
+MD2)V1V
+9TD)MDB
+WYV)YFB
+FRZ)C2K
+DPB)CTJ
+5JB)M8Z
+4DY)WQ8
+KGH)WZS
+35W)3RK
+1SN)PSP
+VGN)5WS
+BR8)8JH
+N2Z)ZXR
+TJY)29N
+8JN)S81
+4FV)3Y3
+QFZ)F7Y
+H7D)FFZ
+TVY)BMM
+8VK)395
+N3H)X1J
+6RS)HQH
+42J)FCX
+6TF)R3Y
+4K2)7R8
+BGJ)2JZ
+7F8)G92
+BMS)6CM
+HTZ)ZM5
+HQH)8P7
+MXC)7LR
+M3K)YKV
+54P)TJD
+FS4)28V
+7PW)WNF
+HMR)SGC
+V5V)HBY
+RM5)Z12
+KZP)KCV
+4P4)VWV
+WZR)XYS
+RNC)9Z8
+QR4)JQ8
+WSL)7S7
+S81)DHH
+NGC)7SR
+6L9)8MB
+DNH)44J
+PVR)124
+XZG)4X5
+M6F)CB8
+QJB)CZ7
+DQW)XBV
+PKH)RX7
+GFS)7J9
+W7N)DVH
+96G)DQC
+BWG)W6T
+2BG)129
+HHP)SJW
+FGB)SBR
+X6W)XHZ
+5SB)MZ6
+L5G)65M
+WC5)1MT
+3T6)CTB
+YJF)JGZ
+124)LB2
+JDP)592
+WV2)4D6
+T7N)Y94
+1SJ)ZTQ
+CKS)KHG
+1SR)4L5
+6N5)3BR
+22T)BQD
+NBG)CSL
+1ZG)DYK
+P8G)DRK
+LKD)RPY
+7S3)9PB
+ZTM)RNC
+3QH)Y21
+VXH)LDQ
+NVL)QD7
+TDC)TM4
+W5C)YHB
+19S)MS9
+MNM)SJ3
+8MT)XY8
+6J1)GWC
+T5C)KBQ
+DC1)MVM
+QXD)N8B
+LKT)F5D
+HM1)TNY
+DQC)S9W
+RTL)QGK
+J1T)FPT
+CZ7)2N2
+674)FC4
+FMR)NLW
+TKG)1JN
+1P3)GLP
+HK3)VTZ
+RHW)PG9
+LJQ)7B2
+5ZB)7ZM
+LFP)PQW
+TY8)YS7
+4BZ)QLX
+9BX)TNS
+S84)3PN
+GGC)S4T
+L5G)WX6
+25S)JZJ
+WK9)L5G
+LBS)9V5
+K7V)8MT
+7Q6)G8X
+4GN)HXM
+VH3)XK8
+N8B)882
+83M)YG4
+P51)YR7
+CS3)YY7
+SVZ)N1N
+X5V)G9F
+G7M)GRX
+39P)16T
+YBM)JDC
+WDC)8K5
+HLN)W9F
+QVP)XR9
+442)VSF
+YJR)LZ3
+86L)6TF
+P2Z)LDL
+PQW)PPG
+CB8)1JB
+W9F)CHH
+VSK)RG1
+SXM)QCR
+969)WYR
+6VG)F69
+MLY)3VC
+RDL)ZRH
+X1Z)TWJ
+1BT)RXF
+4FX)T2D
+L2J)LB5
+VHJ)MNM
+Y3N)3BG
+GD8)4KR
+8TJ)C79
+CFJ)QVM
+4YM)SXM
+71W)2S1
+16T)NR6
+D5N)PC7
+S47)2RW
+2Q3)QQ3
+6FN)9Y1
+PZG)6B3
+XD8)2D8
+C39)TJN
+WYR)HWJ
+HG1)RLC
+CQM)7G7
+WF2)NPD
+VWV)643
+JLZ)B2B
+Z5H)BFV
+LX9)1T4
+CBG)3ZL
+9HQ)8JN
+F18)Q7J
+F4M)W86
+Q7J)YHM
+6BQ)4FM
+8CV)ZN4
+YPR)NW2
+VFT)FDW
+DFP)JT7
+Y6J)ZK7
+C2P)CBY
+3Y3)TVR
+97M)JLZ
+RG1)YB3
+1J2)DLX
+V7H)D6J
+6B3)8BK
+NW2)F94
+PLY)D38
+J3R)WYP
+4GM)9TZ
+D34)44G
+QXC)B23
+L68)797
+HH4)1XF
+N2S)ZJR
+JJF)CXL
+L24)Z5P
+YHM)JB4
+5FX)DW4
+5WR)KYM
+1SS)QCJ
+9V5)RWZ
+ZXY)FD8
+VHL)6JG
+RTN)Y5Q
+JGP)H5F
+2T5)7NT
+LLY)TWZ
+SYL)HSJ
+BK8)3NR
+VG8)D8J
+Z18)T5X
+G7S)N6M
+9JZ)BR8
+BM4)8HF
+DXP)7D7
+PG9)3SQ
+P9Y)J7T
+47G)TGL
+9BX)JGP
+HXM)7TN
+JQ4)LQ5
+6MS)VP7
+2BL)3WC
+T1W)WW8
+YDQ)NQW
+1FL)Z3H
+JCX)WHG
+6ZK)L3H
+DZS)TXB
+Z4P)6BQ
+Y5T)9V7
+5WQ)HN5
+DGK)C1Y
+FSN)ZLF
+72P)DNH
+19S)K14
+QPK)FRL
+6QW)VGS
+5V9)2C7
+BYK)RQV
+1JN)XWF
+34W)6RP
+QFS)SF7
+Y61)CKW
+R33)NNT
+MS9)4Q1
+M74)FVN
+RX1)S4G
+116)4BB
+YQQ)MC2
+ZN4)1BY
+RLS)BBC
+B2J)11H
+P6P)F6H
+KD7)R9K
+FCV)ZVJ
+ZTX)HZ2
+VMM)SGD
+5H6)Q2B
+L1R)9Z9
+H83)FCV
+F91)B45
+L4S)PP4
+2VB)R69
+YB6)4GN
+5ST)1DM
+3L3)J2L
+ZRX)2RC
+5GL)S3X
+7LR)N2Z
+3RL)P2D
+ZHJ)TJY
+DCJ)2XS
+PHY)96G
+MDB)QFS
+SH8)LZ7
+VSF)CCC
+XMT)35D
+YKR)GB4
+X41)Y3P
+MN8)2Q3
+LNG)NHD
+K8N)DTH
+H2X)J1T
+5LM)Y1B
+JT7)6J1
+VR4)P53
+813)JW7
+CNL)QXD
+PRY)MG1
+S3D)R68
+JGZ)PXX
+1NW)S72
+FYH)3RL
+48R)CWM
+2RW)6ZW
+6DS)MNG
+FD8)238
+FZN)HYR
+NHL)THR
+Z98)65Z
+TRM)QLM
+K38)W3R
+4D6)WZ1
+BWD)2GQ
+FRL)DKZ
+WZ6)HC9
+BBN)7PN
+DJJ)DRJ
+3YQ)17B
+KCV)YTH
\ No newline at end of file
diff --git a/2019/06/input_sample.txt b/2019/06/input_sample.txt
new file mode 100644
index 0000000..d6db9b9
--- /dev/null
+++ b/2019/06/input_sample.txt
@@ -0,0 +1,11 @@
+COM)B
+B)C
+C)D
+D)E
+E)F
+B)G
+G)H
+D)I
+E)J
+J)K
+K)L
\ No newline at end of file
diff --git a/2019/06/input_sample2.txt b/2019/06/input_sample2.txt
new file mode 100644
index 0000000..77456ed
--- /dev/null
+++ b/2019/06/input_sample2.txt
@@ -0,0 +1,13 @@
+COM)B
+B)C
+C)D
+D)E
+E)F
+B)G
+G)H
+D)I
+E)J
+J)K
+K)L
+K)YOU
+I)SAN
\ No newline at end of file
diff --git a/2019/08/08.py b/2019/08/08.py
new file mode 100644
index 0000000..3064615
--- /dev/null
+++ b/2019/08/08.py
@@ -0,0 +1,32 @@
+from textwrap import wrap
+with open("input.txt","r") as f:
+ width = 25
+ height = 6
+ layersize = width * height
+ data = f.read()
+
+ layers = wrap(data, layersize)
+ zeros = [layer.count("0") for layer in layers]
+ i = zeros.index(min(zeros))
+ part1 = layers[i].count("1") * layers[i].count("2")
+ print(part1)
+
+ top = []
+ for i, pixel in enumerate(layers[0]):
+ n = 0
+ while pixel == "2":
+ pixel = layers[n][i]
+ n += 1
+ top.append(pixel)
+
+ def print_image(layer, width, height):
+ output = ''
+ for x in layer:
+ output += x
+ output = output.replace("0","⠀")
+ output = output.replace("1","█")
+ output = wrap(output, width)
+ for line in output:
+ print(line)
+
+ print_image(top, width, height)
\ No newline at end of file
diff --git a/2019/08/input.txt b/2019/08/input.txt
new file mode 100644
index 0000000..02497eb
--- /dev/null
+++ b/2019/08/input.txt
@@ -0,0 +1 @@
+222222222222222222222021022222222202002222222202222222220222222222222221222222202211220222102122202220212222222221222222202122210222222022222222222212222222222222222222222120022222222222122222222222222222220222222222222221222222202211220222102222222220202222222221222222212222220222222222222222222202222222222222222222222221122222222212202222222222222222221220222221222220222222212222220222222022212222212202222221222222200122220222222122222222222212222222222222222222222021122222222202212222222212222222220220222220222222222222202200220022012122222220222202222220222222202222222222222122222222222220222222222222222222222120122222222222122222222212222222220221222220222222222222212211220222122022212222202202222220222222220222221222222122222222222220222222222222222222222122022222222222022222222202222222221222222221222212222222222201221022012222202222212222222220222222211222221222222122222222222222222222222222222222222220222222222212212222222202222222222220222220222222222222222200221122012222222222222202222220222222200022201222222122222222222221222222222222222222222222122222222202122222222202222222221222222222222210222122212212220222102121202222202222222220222222222022112222222222222222222211222222222222222222222221222222222212112222222212222222220221222220222220222022202201222222102220222221222212222221212222211222121222222222222222222202222222222222222222222021022222222222022222222212222222220222222220222210220022212200222122002220212222202202222220002222211122011222222022222222222200222222222222222222222221222222222222212222222212222222222220222220222211220022222221222022012222212222202202222220022222222222202222222122222222222221222222222222222222222020122222222212012022222202222222220221222221022200222122212202220022102120212222202202222221002222211122211222222222222222222210222222222222222222222021222222222212012112222222222022221222222221122201222122222220220122012022222220202222222222212222202122100222222122222222222202222222222222222222222021122222222222112022222212222122222221222221022212222022202211220222112122202221222202222220022222211222201222222122222222222211222222222222222222222221122222222202122022222222222122220221222222222202220122202222220022112021202221202202222221012222200222201221222022222222222201222222222222222222222121122222222212102222222112222222221221222222222220221222212220220122112122222220222202222222102222222222102222222022222222222212222222222222222222222121222222222212212112222022222021220221222220022221222122212202220122022022212222202212222221202222210222201222222222222222222201222222222222222222222222022222222222022012222112222120220220222221022211220022202221222222122020222220202202222222202222202122201220222222222222222210222222222222222222222121122222222202102212222202222021221222222220022221221222202212221022012021222221202202222220102222220022221222222022222222222202222222222222222222222022122222222212222122222002222020222222222220022202220022222201220122222222202220202222222221222222222222211220222222222222222222222222222222222222222020122222202202202002222002122022220221222222022201221222202202221022212122202220212222222222022222210122102202222022222222222222222222222222222222222221122222222222112022222212222022222221222220022212220122202220220022212221212221212222222220012222212022102221222022222222222221222222222222222222222020022222222222112222012002022021220220222222222220221122212201221222212220212021212212222221122222220122022211222022222222222222222222222222222222222021222222212212002112002122122122222222222222222201221122202200220122102220202222222222222220212222212022221222222122222212222211222222222222222222222221222222222222002112022122222120220221222222222211222022222201220222012220202122202212222221222222202022122201222022222212222210222222222222222222222022222222222212202222202212222021221221222220122202220122202201221222102220202020212202222220102222212122001201222222222222222222222202222222222222222220122222202202112202212002022121221222222221122221220022212200221222102021202220202202222221012222201222210210222122222212222202222222222222222222222220222222202212022122212222122120220220222220122222221222212212221122102020212221002202222222102222220122020212222122222222222222222222220222222222222121022222212222022102222202122120222221222220122200221122222220220022202121222020002212222222212222222022011221222222222212222200222212221222222222222121122222222202022212122022222021221220222221122212222022212220221122012021202020102202222222022222210122022210222122222212222221222202221222222222222021120222222222212122012212222022221222222220222202220122222211221122022221202221102212222221002222201022220221222122222222222210222212221222222222122021221222212222212022222122122122222220222222122222221222212200220122122120212220022202222221022222201122212210222222222202222221222202220222222222122021121222212212202212202122222221220222222222122211121022212220222022202020202221022222222222102222202022011202222222222202222222222222221222222222122020220222212222022122002112222120220221222221022201021222202201220022202121212120022212222222012222210222021200222022222222222210222202222222222222222221121212212202002002002022222220220220222221122221020122222210220222002020202220002202222220122222222220120210222222222222222220222222221222222222222021022222212212102212012222222021222201222221122201120122202202221022002221202221002202222221012222211121011210222022222222222202222202221222222222122022021222202222022012022202022020221200222221122221221222212212220022202122212220122202222220212222210220012221222022222222222210222212220222222222122220222222212212222212102102022022220210222222222210120022202221220222202220202222112222222221112222200221221202222122222212222202222212221222222222122021122202222202012102212022122221221200222222122221022222222222221222202122202220022202222221122222221220220222222122222212222221222222220222222222022122220202212212112222122112122222220211222222022222021122202221220122202121212121002112222022212222221121110200222122222222222211222202220222222222122221022212212202122112222222222220222202222222122202222022212202220122022020222021012012222221002222211022012222222122222222222202222222222222222222222102122212212222112212022112022122222200222220222211220222202211021122122221222222012022122121102222201122110212222022222222222201222222220222222222122100120002202222202102202120122221221202222220022220120022212202111220022120212222102112122022102222220022122211222222222222222212222202221222222222121110221202202202002102022110022222220222222020022221020022202211110021112222212022222002222022122222220021121220222022222222222201222202221222222222120102120202212222102112002220222021220200222122222202121022222212112120102221212122122102122220012222201120110212222222222202222220222222222222222222220220020202222212102202112022222020222211222121022210220022212201222221022121222021022102022020122222200120001202222222222212222212222222222222222222021010021012202212212212022110022022220221222020122210221222202202020121022121222122122222022222122222200020111212222022222202222222222212222222222222121000121222212212112212212222022121220212222220022202222222222201020022002221222221212202222220112222210221210220222022222222222220222202221222220222221212222022212212002202222210022120222210202220122221222122202222210221102122202222002212122122212222200022212212222022222212222211222202220222221222120201020122212222102212022121022020222222202020222201022122202210102221102120202220222212022222222222221120220211222022222212222210222212220222220222222020021202212222202112002122122020221211212220122222022122212210102022112221202222102212222222222222220222221221222122222202222222222212222222220222120120022222212212002212112122122220220221222122222221020222212222012220002221222222212222222021222222202220122202222222202212222211222212221222221222122221021022202222212212202021222222220221220222122211120122202211221020020122212220202202122022102222221221212212222122222202222200222212222222222222021122221002212222222212212202122221220221212120222201122022222211100020221222202221222022222121022222212201200200212222212222222202222212222222221222121000121022212222212002002022122121220201211120022222220122212212010021001021202121012222222122022222201102212211212122202212222212222212221222222222020111022102202212212212202200222221222222201021022220222120212201111020212120202021022112102121222222200102022212212222222212222220222202222222220222120010022122222202122022102112222122220202201020222202221222211210011120200121212222112222102221002222202212022221222022212212222211222202220222222222120122222122212202102022102111122220221220210220022211221122212200010222012021222021022202202021012222200022201210212022212222222200222202221222220222221220020022202222122102102212122222220222221022222221021022212211010221112221222022002022222020202222202102212200212022212222222221222222222222222222021221020122202202212102102200022120220202201122222201220020212210121221000022202122002012002121122222200110100221222122212202222222222222221222221222121022120222202202201022002120222122220211221221222221121022210221201020211120212022102012002121112222201212022220202222212202222221222222221222221222222111122222222212210002112220222221220202212222222212121120210221112222220221212020022202021120212222220010010211202222202222222201222212222222220222020220021102212202121122122021122122222221212020022221221020202210102020210220222020212222001222122222202112201202222022212202222221222202121222220222220100122120202202112112202100222022220200220021222222221020221220202121222222222022112112210220102222211220200220222222222212222212222222221222220222022101120112202222002202012001222122222202212122222212021221202201211121100120202022212222111122202222212200012211202122212222222201222212120222220222121222021000212222201002222221121221221222200121022221122222201221220121101021222020202022200021212222200011211210202222202222222221222212220222220222021021221002112222122012012210221120222211211122022210221122212202112120110222202020202102220022222222200112010221202112202202222212222222121222220222222111222002002202002202222122220221221020221021222212222020220210011221122221202120212002100120202222212120202212212122202202222221222202220222220222222100121120002222102200102200021221220111221221121210221020212202010222100022202222222122022121000222221102001201212022202202222222222212122222220222121020021222002202122202022110222022220101200222221200020020201201121021102120202020112212111121120222222111111212222122212222022211222202121202202222122002022211222212000102202002120021221212200221222222221121212222010121110020212021112212221120222222211101112210202012222202122212222202122012202222021210021212022202201012002220120220222210200020120212220120210200002220102222222122022122010220212222211122220210222022222212222222222222120002202222221220020010202212220201002100220021220000221221120221022122202210101021212221222020112012201120020222222110220212202222212202022222222222221212202222220102020010002222222120102001220220220100201022122210120221212202200120022120212220102012211020111222222200021200212002222202222201222202221202210222120122122121112212020002102121220121221002200020222220122122212201211220212220212121202012012220210222202122201222202212202202120201222222122012220222020122020212212212120201022012222222211112202001022222021021200221212221001122212120222012210122022222212200222222212122222222121221222202120112201222020111020101112202021001202010020022200002221100121201022220201211211222102121212220222212021120000222100211202212212012202222121221222222021212201222021100220021002222021000102211122022201210221110220201222022200220120120100021212121002012210122110220222122222220202112212222022212222212220022200222221020120211202202010020202102221120201112212221022201120020210202200122112222222122212102002122222221001221021200202212222212222200222222121212210222222120021220022212211101022022221121221010212002121212222121210212101122010002212022112122020120120221210200001201222102202212220001222212222102202222021011120012112222121210212110022021200221222200121201121020211221020022012212202222012112201022102222222101012200202102222212222101222212121022201222220001021120102212112000002102021020220200201021220200121020210202201221111120212120122122201120201222121110100202212202212222120112222222220202221222220110222011002202221021222111222222210202201010221202020222200212012022021200222022102102011222000222222021022202222022222202120002222202120202201202020000120212022212110020222222022121211212200000022210021120210221102222121121202122012022120121210222221112001201212102002212022101222212222012220202121102221220022212101221112212022021200201121000120221222022201210111022101121212220122122011121000220220012220221212012112222222102222212122102211222022011221012012222021011022020020020202200020210020221222121211201002020110022222221022002221021222221211011002210212222002222221121122202020212200222020222022010022222220110002102020020210020211201022202122120212211010120112122212221222012212122002222021220102202212212022202022001022202220212211202020012022112122202012221202221022122201102122022220212220222221212220220210020202022012102000120122222100200000211110112222202021012022222120202222212220001222020022202210010012002221220211020102020200201121121220011121022101022222020212122020120210221101212211200221002212212120102222212221112212222022012121211002202012000202220022022202101212100122201020120222002221221201211212222222112201222202220212010020212222102102202020221222222020002221202222020121201202212110000012202021220201220000102220222022022212212210121121021202122012202101121110222220120201222011022122222121102122112022102212212220201120020202202101212012110121022221002121001220202020022222222222022000020202120212112110020121220120211100211221222202202122220222102220102220212020021210001012222112210012022122222202110121112021210021122211211010220022011202120222122222122111220221200100212122002222212121201022212021212221202122211210211002212210001002222221020222200020020210221021122220200111020001120212220122022202021221222101101022200020222202202022100122222121202211212020200202111102212220222022210122121200201212000100212021121220110120220102111202020102222222122220222011102120222111102220102122201222022021012201222021200220212002212110010212200122021212022220020110222121022212020010221021021212022202122022120220221121020012221211222110022020112002102022202202222021122102011002212002020022112222222220111012101012210120120212220000021022200202222102022212222200211001110020201220212211010121110012000220202202212122220112010202202022000112221020121222000102220201210121122201122001021011121222222102222021220110212220121112200100112202022020122112000021112221112220210022100022212210222022001021122202022012110002220221220222020212222111021222220212200201121212220100210212201200212201222120012100212110111102010100022220012200121100101020112102200021110020021101012112202100222112101021000011111220022100100221021210022212011010011000221211102
\ No newline at end of file
From 061d9cab96294dca903520e705a829678b579d58 Mon Sep 17 00:00:00 2001
From: a
Date: Fri, 11 Dec 2020 20:02:57 -0600
Subject: [PATCH 5/5] use real input
---
2020/11/11.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/2020/11/11.py b/2020/11/11.py
index 9b972f9..34e2237 100644
--- a/2020/11/11.py
+++ b/2020/11/11.py
@@ -1,5 +1,5 @@
def read_file():
- with open("input_sample.txt","r") as f:
+ with open("input.txt","r") as f:
seed = f.read().split('\n')
# pad with floor to prevent out-of-bounds checks
seats = []