Merge branch 'main' of https://git.trwnh.com/a/aoc2020 into main
This commit is contained in:
commit
9cb41474df
6
2019/00/00.py
Normal file
6
2019/00/00.py
Normal file
|
@ -0,0 +1,6 @@
|
|||
with open("input.txt","r") as f:
|
||||
input = f.read().split('\n')
|
||||
|
||||
part1 = 0
|
||||
part2 = 0
|
||||
print(part1, part2)
|
15
2019/01/01.py
Normal file
15
2019/01/01.py
Normal file
|
@ -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)
|
100
2019/01/input.txt
Normal file
100
2019/01/input.txt
Normal file
|
@ -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
|
31
2019/02/02.py
Normal file
31
2019/02/02.py
Normal file
|
@ -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)
|
1
2019/02/input.txt
Normal file
1
2019/02/input.txt
Normal file
|
@ -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
|
1
2019/02/input_sample.txt
Normal file
1
2019/02/input_sample.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1,9,10,3,2,3,11,0,99,30,40,50
|
1
2019/02/input_sample2.txt
Normal file
1
2019/02/input_sample2.txt
Normal file
|
@ -0,0 +1 @@
|
|||
1,0,0,0,99
|
27
2019/04/04.py
Normal file
27
2019/04/04.py
Normal file
|
@ -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))
|
1
2019/04/input.txt
Normal file
1
2019/04/input.txt
Normal file
|
@ -0,0 +1 @@
|
|||
172851-675869
|
33
2019/06/06.py
Normal file
33
2019/06/06.py
Normal file
|
@ -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)
|
1799
2019/06/input.txt
Normal file
1799
2019/06/input.txt
Normal file
File diff suppressed because it is too large
Load diff
11
2019/06/input_sample.txt
Normal file
11
2019/06/input_sample.txt
Normal file
|
@ -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
|
13
2019/06/input_sample2.txt
Normal file
13
2019/06/input_sample2.txt
Normal file
|
@ -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
|
32
2019/08/08.py
Normal file
32
2019/08/08.py
Normal file
|
@ -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)
|
1
2019/08/input.txt
Normal file
1
2019/08/input.txt
Normal file
File diff suppressed because one or more lines are too long
0
2020/00/input.txt
Normal file
0
2020/00/input.txt
Normal file
59
2020/10/10.py
Normal file
59
2020/10/10.py
Normal file
|
@ -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()
|
98
2020/10/input.txt
Normal file
98
2020/10/input.txt
Normal file
|
@ -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
|
11
2020/10/input_sample.txt
Normal file
11
2020/10/input_sample.txt
Normal file
|
@ -0,0 +1,11 @@
|
|||
16
|
||||
10
|
||||
15
|
||||
5
|
||||
1
|
||||
11
|
||||
7
|
||||
19
|
||||
6
|
||||
12
|
||||
4
|
151
2020/11/11.py
Normal file
151
2020/11/11.py
Normal file
|
@ -0,0 +1,151 @@
|
|||
def read_file():
|
||||
with open("input.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()
|
93
2020/11/input.txt
Normal file
93
2020/11/input.txt
Normal file
|
@ -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
|
10
2020/11/input_sample.txt
Normal file
10
2020/11/input_sample.txt
Normal 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
|
Loading…
Reference in a new issue