This commit is contained in:
Juan José Gutiérrez de Quevedo Pérez 2020-12-11 14:40:17 +01:00
parent f896e7c753
commit 3ace709714
4 changed files with 278 additions and 0 deletions

51
11/1.py Normal file
View file

@ -0,0 +1,51 @@
def count_adjacent(grid, line, seat):
adj = 0
if line > 0:
adj += grid[line-1][max(0, seat-1):seat+2].count("#")
# print(grid[line-1][max(0, seat-1):seat+2], adj)
if seat > 0:
adj += grid[line][seat-1:seat].count("#")
# print(grid[line][seat-1:seat], adj)
if seat < len(grid[line]):
adj += grid[line][seat+1:seat+2].count("#")
# print(grid[line][seat+1:seat+2], adj)
if line < len(grid) - 1:
adj += grid[line+1][max(0, seat-1):seat+2].count("#")
# print(grid[line+1][max(0, seat-1):seat+2], adj)
return adj
with open("input") as f:
content = [[y for y in x.strip()] for x in f]
new = last = content
changes = 1
for line in content:
print("".join(line))
while changes > 0:
last = []
for line in new:
last.append(line.copy())
changes = 0
for line in range(len(last)):
adjs = []
for seat in range(len(last[line])):
status = last[line][seat]
adj = count_adjacent(last, line, seat)
adjs.append(str(adj))
if status == "L" and adj == 0:
new[line][seat] = "#"
changes += 1
elif status == "#" and adj >= 4:
new[line][seat] = "L"
changes += 1
# print("".join(adjs))
# for line in new:
# print("".join(line))
count = 0
for line in last:
count += line.count("#")
print(count)

120
11/2.py Normal file
View file

@ -0,0 +1,120 @@
def first_of(haystack, needles):
element = len(haystack) - 1
for needle in needles:
if needle in haystack:
element = min(haystack.index(needle), element)
return haystack[element] if haystack else ""
def count_adjacent(grid, line, seat):
adjs = []
h = len(grid) - 1
w = len(grid[0]) - 1
# generate lists
#
# D1 V1 D2
# H1 XX H2
# D3 V2 D4
#
# vertical lists
v1 = []
if line > 0:
for x in range(line - 1, -1, -1):
v1.append(grid[x][seat])
v2 = []
if line < w:
for x in range(line + 1, len(grid)):
v2.append(grid[x][seat])
# horizontal lists
h1 = []
if seat > 0:
h1 = grid[line][seat - 1::-1]
h2 = grid[line][seat+1:]
# diagonal lists
d1 = []
s = seat - 1
l = line - 1
for __ in range(min(line, seat)):
d1.append(grid[l][s])
l -=1
s -=1
d2 = []
s = seat + 1
l = line - 1
for __ in range(min(line, w - seat)):
d2.append(grid[l][s])
l -=1
s +=1
d3 = []
s = seat - 1
l = line + 1
for __ in range(min(h - line, seat)):
d3.append(grid[l][s])
l +=1
s -=1
d4 = []
s = seat + 1
l = line + 1
for __ in range(min(h - line, w - seat)):
d4.append(grid[l][s])
l +=1
s +=1
adjs.append(first_of(v1, ["#", "L"]))
adjs.append(first_of(v2, ["#", "L"]))
adjs.append(first_of(h1, ["#", "L"]))
adjs.append(first_of(h2, ["#", "L"]))
adjs.append(first_of(d1, ["#", "L"]))
adjs.append(first_of(d2, ["#", "L"]))
adjs.append(first_of(d3, ["#", "L"]))
adjs.append(first_of(d4, ["#", "L"]))
return adjs.count("#")
with open("input") as f:
content = [[y for y in x.strip()] for x in f]
new = last = content
changes = 1
#for line in content:
# print("".join(line))
iterations = 0
while changes > 0:
iterations += 1
# print(".", end="", flush=True)
last = []
for line in new:
last.append(line.copy())
changes = 0
for line in range(len(last)):
adjs = []
for seat in range(len(last[line])):
status = last[line][seat]
adj = count_adjacent(last, line, seat)
adjs.append(str(adj))
if status == "L" and adj == 0:
new[line][seat] = "#"
changes += 1
elif status == "#" and adj >= 5:
new[line][seat] = "L"
changes += 1
# print("".join(adjs), "".join(new[line]))
# for line in new:
# print("".join(line))
#for line in new:
# print("".join(line))
count = 0
for line in last:
count += line.count("#")
print(count)

10
11/einput Normal file
View file

@ -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

97
11/input Normal file
View file

@ -0,0 +1,97 @@
LLLLLLLLLLLLLL...LLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLL
LLLLLL.LLLLLLLL.L.LL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLL..LLLLLLLLL.LLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLL.LL
LLLLLL.LLLLLLLL.L.LL.LLLLLLLLLLLL.L.L.LL.LLLLLLLLL.LLLLLL.L.LLLL.LLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLL
L.LLLL.LLLLLLLL.LLLL.LLLLLL.LLLLLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLL.LLL.LLLLL.LL.LLLLLLLLLLL
LLL.LL.LLLLLLLLLLLLL..LLLL.LLLLLLLL.L.LLL.LL.LLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLL
L.....LLLLL.LL.L.L..L..L.L..LL...LLLLL.L...L..LLL.L.L..L...LLL.LL.L..LL...L......L.L.L.L.LLLLL....
LLLLLL.LLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLL.LLLL.LLLLLLLLLL.LL..L.LLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLL
LLLLLL.LLLLLL.L.LLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLL.L.L.LLLLLLLLLL
LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLL.LLL
LLLLLL.LLLLLLLLLLLLL.LLLLLLLLL.LLLL.L.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLL
.L.L...L.LL....L.......L...LLL.LL....L.LL.LLL...L........L..L.....L........L.LLL..L..LL.LL........
LLLLLL.LLLLLLLL.LLLL.LLLLLLLL...LLLLL.LLLLLL.LLLLL..LLLLLLLL.LLLLLLLL.L.LLLLL.LLLLL.LLLLLLLLLLLL.L
LLLLLL.LLL.LLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLL.LLLLLLL.LLLLLL
LLLLLL.LLLLLLLLLLLLLLLLL.LLLLL.LLLLLL.LLLLLL.LLLL..LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLL
LLLLLL.LLLLLLLL.L.LLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLL.LLLLLLLLLL.LLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLL.LLL
LL.LLL..LLLLLLLLLL.L.LLLLLLLLL.LLLL.L.LLLLLL.LLLLL..LLLLLLLLLLLLLLLLL.LLLLLLL.L.LLL.LLLLLLLLLLLLLL
LLLLLL.LLLLLLLL.LLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLL.LLLLLLL..LLL.L.LLLLLLLLLLLLL.LLLLLLLLLLLLLL
LLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLL.LLLLL.LLLLLLLLLLLLLL
.L.........LL.LL..L..LLLL...L.........L.LLL..L....L....LLL.....L..L.L..L........LL..LL..L.....L...
L.LLLL.LLLLLLLL.LLL..LLLLLLLLLLL.LLL..LLLLLL.LLLLL.LLLLLLLL.L..LLLLLL.LLLLLLLLL.LLL.LLLLLLLLLLLLLL
LLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.
LLLLLLLLL.LLLLL..LLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLL.LLLL.LLLLLLLLL
LLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLLLLL.LLL.LLLLL.LLLLLLL.LLLLLLLLL.LLLLLLLLLL
LLLLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLL.LLLLLLLLLL.LLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLL
LLL.LL.LLLLLLLL.LLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLL.L.LLLLL.LL.LLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLL
.....L....L.L...LL...LL..L.LL.....L............LL...LL..LL.L.L......LL........L.L..L....L....L..L.
L.LLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLLLL.L.LLLLLLL.LLLLL.LLLLLLLLLLLLLL
LLLLLLLLLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLL.LLLLL.LLLLLLLL..LLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLL
LLLLLL.LLLLLLLL.LLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLL.L.LLLLLLLLLLLL
L.LLLL..LLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLL
LLLLLLL..LLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LL.LLLLLLLL.LLLLLLLL.LLLLLLLLLL.LLL.LLLLLLLLLLLLLL
LLLLLL.LLLLL.LLLLLLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLL.LLLLL
LLLLLLLL.LLLLLL.LLLL.LLLL.LLLL.LLLLL.LLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLL.LLLLL.L.LLLLL.LLLLLLL.LLLLLL
LLLLL..LLLLLLLLLLLLLLLLLLLLL.L.LLLLLL.LLL.LL.LLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLL
L..L.L.L.L........L...L.L..LL....L.....L.L......L..L........LL........L......LL.LLL.L..LL...LL...L
LLLLLL.LLLLLLLL.LLLL.LLLL.LLLL.LLLLLLLLL.LLLLLLLLL.LLLLL.LL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLL
LL.L.LLLLLLLLLL.LLLL.LLL.LLLLLLLLLLLL.LLLLLL.LLLLL..LLLLLLL.LLLLLLLLL.LLL.LLL.LLLLLLLLLLLLLLLLLLL.
LLLLLL.LLLLLLLL.LLLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLL.LLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLL
LLLLLL.LLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLL.LL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL
LLLLLL.LLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLL.LL.LL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLL
LLLLLLLLLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLL
LLLLLL.LLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLLLLLL.LLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLL
...LL.LL.L..LL..L.LLL........L...L.......L...L..L.LL.L.......L....L...L.....LLL.L..L.L..L.L..L....
LLLLLL.LLLLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLL.LLLLL.LLLLLL.L.LLLLLLLL..LLLLLLL.LLLLL.LLLLL.LLLLLLLL
LLLLLL.LLLLLLLLLLLLL.LLLLLLLLL.L.LLLL.LLLLLL.L.LLLLLLLLLLLLLLLLLLLL.L.LLLLL.L.LLLLLLLLL.LLLLLLLLLL
L..LLL.LLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLLLLL.LLL.LLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLL
LLLLLL.LLLLLLLLLLLLL.LLLLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLL
LLLLLL.LLLLLLLL.LLLL.LLLLLLLLL.LLLLLL..LLLLL.LLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLL
.LLLLL.LLLLLLLL.LLLL.LLLLLLLLLLLLLLLLL.LLLLL.LLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLL
L.LLLL.LLLLLLLL.LLLL.LLLLLLL.L.LLLLL..LLLLLL.LLLLL.LLLLLLLLLL.LLLLLLL.LL.LL.L.LLLLL.LLLLLLLLLLLLLL
LL.L...L.........L..L...LLL......L......L...L..L.L..LL..L.LLL.LL..L.LL..L.L.LL.L.L..LL..........L.
LLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLL.LLLLLLLLLL.LLLLL.LLLLLLLLLLLLLL
LL.LLL..LLLLLLLLLLLL..LLLLLLLL.LLLLLL.L.LLLL.LLLLLLLLLLLLLL.L.LLLLLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLL
LLLLLL.LLLLLLLL.LLLL.LLLLLLLLL.LL.LLL.LLLLLL.LLLLL.L.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLL
LLLLL...LLLLLLLLLLLLLLLLLLLLLL.LL.LLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LL.LLLLL.LLLLLLLL
LLLLLLLLLLLLLLL..LLL.LLLLLLLLL.LLLLLL.LLLLLLLLLLL..LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLL
LLLLLLLLLLLLLL.LL.LLLLLLLLLLLL.LLLLLL.LLLLL..LLLLL.LLLLLLLL.L.LLLLL.L.LLLLLLL.LLLL..LLLLLLLLLLLLLL
LLLLLL.LL.LL.LL.LLLL.LLLLLLLLL.LLL.LL.LLL.LL.LLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLL
L.LLLL.L.LLLLLL.LLLLLLLLLLLLLL.L.LLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLLL.LLL.LL..LLLLL.LLLLLLLLLLLL.L
..L.....LLLL..L..L......LL.L.......L..LLL..L..L..LL.LLL....L..L.L..L...L.LL..L...L.L.......L......
LLLLLL.LLLLLLLL..L.LLLLLLLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLLL.LL.LLLLLL.LLLLLLL.LL.LL.LLLLLLLLLLLLLL
LLLLLL.LLLLLLLLLLLLL.LLL.LLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLL
LLLLLL.LLLLLLLL.LLLL.LLLLLLL.L.LLLL.LL.LLLLL.LLLL..LLLLLLLL.LLLLLLLLL.LLLLLLL.L.LLL.LLLLLLLLLLLLLL
LLLLLLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLLL.LLLLLL..LLLLL.LLL.LLLLLL.L.L
LLL.LLLLLLLLLLL.LLLLLLLLLLLLLL.LLLLLL.LLLLLLL.LLLL.LLLLLLLL.LLL.LL.LL.LLLLLLL.LLLLL.LLLLLLLLLLLLLL
LLLLL..LLLLLLLL.LL.LLLLLLLLLLL.LLLLLL.LLLLLL.L.LLL.LLLLLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLL
L..L...L.L.L....L....L.LLLL.L.....L..LL...L...L..LLL.L......LL...L..LLL..L.L..L....L.L.L...L..LL.L
LLLLLLLLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLL..LLLL.LL.LLLLL.LLLLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLL.LL
LLLLLLLLLLLLLLL.LLLL.LLL.LLL.LLLLLLLLLLLLLLL.LLLLL.LLL.LLLL.LLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLL.L.L
LLLLLL.LLL.LLLLL.LLL.L.LLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLLLLLLL.LL.LLL..LLLLLLL.LLLLL.LLLLL.LLLLLLLL
LLLLLL.LLLLLLLLLLLLL.LLLL.L.L..LLLLLLLLLLLLL.LLLLL.LLLLLLLLL.LLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLL
LLLLLLLLLLLLLLL.LLLL.LLLLLLLLL.LLLLLL.LLL.LLLLLL.LLLLLLLLLL.LL.LLLLLL.LL.LLLL.LLLLL.LLLLLLLL.LLL.L
.LLL.LLLLLLLL.L.LLLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
LLLLLL.LLLLLLLLLLLLL.LLLLLLLLL.LLLLLLLLLLLLL.LLLLL.LLLLLLLLLL.LLLLLLL..LLLLLL.LLLL.LLLLLLLLLLLLLLL
LL.LLL.L.LL.LLLL.....L...LL..L....LL.LLL.....L..L..L..L.............L.L.....L......LLL.L.....L.LL.
LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLLLLLLLLLL.LLLLL
LLLLLL.L.LLLLLL.LLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLL.LLLLLLLLLLLLLLL
LLLLLL.L.LLLLLL.LLLL.L.LLLLLLL.LLLLLLLLLLLLL.LLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LL.LLLLLLLLLLLLLLLLL
LLL.LLLLLLLL.LL.LLLL.LLLLLLLLL.LLLLLLLL..LLL.LLLLL.LLL.LLLL.LLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLL
LLLLLLLLLLLLLLL.LLLLLLL.LLLLLL..LLLLLLLLLLLL.LLLLLLLLLLLLLL.LLL..LLLL.LLLLLLL.LLLLLLLLLLLLLLLLLLLL
.L....L...L.....LL.L..LL.L.L..LLL..L...L......LL..L..L.LL..L..LLLL..L...LLL.L.LLL.L.L...LL..L.L...
LLLLLL..LLLLLLLL.L.LLLLLLL.LLL..LLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLL.LLLLLLLLLL.LLL
LLLLLL.LLLLLLLL.LLLL.LLLLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLLLLL.LLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLL
LLLLLL.LLLLLLLL.LLLL.LLLLLLLLLLLLLLLL.LL.L.LLLLLLL.LLLLLLLLLLLLLLLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLL
LLLLLL.LLLLLLLL.LLLLLLLLLLLLLL.LLLLLL.LLLLLL.LL...LLL.LLLLL.LLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLL.
LLLL.L.LLLLLLLLLLL.L.LLLLL..LL.LLL.LL.LL.LLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLL
LLLLLL.LLLLLLLL.LLLL.LLLLLLLLL.LLLLLLLLLL.LL.LLLLL.LLLLLLLL.LLLLLLLLLLLL..LLL.LLLLL.LLLLLLLLLLL.LL
L.L.L.L.LL...L....L.L.L...L.L.....L....LL..L.L....LL..LL..L.......................L.L...L..L..L...
LLLLLL.LLLLLLLL.LLLLLLLLLLLL.L.LLLLLLLLLLLLL.L.LLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLL
LLLLLL.LL.LLLLL.LLL.LLL.LLLLL..LLL.LL.LLLLLL.LLLL..LLLLLL.L.LLLLLLLLLLLLLLLLL.LLLLL.LLLLLLLLLLLLLL
.LLLLL.LLLLLLLL.L.LL.LLLLL.LL.LLLLLLL.LLLLLLLLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLL
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLL
LLLLLLLLLLLLLLLLLLLL..LLLLL.LL.LLLLLL..LLLLL.LLLL.LLLLLLL.L.LLLLLLLLL.LLLLLLLLLLLLL..LLLLLLLLLLLLL
LLLLLLLLLLLLL.LLLLLL..LLLLLLLL.LLLLLL.LLLLLL.LLLLL.LLLLLLLLLLLLLLLLL.LLLLLLL.LLLLLL.LL.LLLLLL.LLLL
LLLLLL.LLLLLLLL.LLLLLLLLLLLLLLLLLLLLL.LLLLLL.LLLLLLLLLLLLLLLLLLLLLLLL.LLLLLLL.LLLLL.LLLLLLLLLLLLLL
LLLLLL.LLLLLLLL.LLLL.LLLLLLLLLLLLLLLL.LLLLLLLLLLLL..LLLLLLL.LLLLLLLLL.LLLLLLLLLLLLL.LLLLLLLLLLLLLL
LLLLLL.LLLLLLLL.LLLLLLLLL.LLLL.LLLLLLLLLLLLL.LLLLLLLLLLL..L.LLLLLLLLL.LLLL.LL.L..LL.LLLLLLLLLLLLLL