-
Notifications
You must be signed in to change notification settings - Fork 0
/
quick_solve.py
61 lines (51 loc) · 1.82 KB
/
quick_solve.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import parsers
def main():
files = ["inputs/00-example.txt",
"inputs/01-chilling-cat.txt",
"inputs/02-swarming-ant.txt",
"inputs/03-input-anti-greedy.txt",
"inputs/04-input-low-points.txt",
"inputs/05-input-opposite-points-holes.txt",
"inputs/06-input-reply-running-man.txt"
]
for f in files:
R, C, S, snake_lenghts, matrix = parsers.get_data(f)
wormholes=[]
for x in range(R):
for y in range(C):
if matrix[x][y]==-999999:
wormholes.append((x,y))
snake_rows = [-1 for _ in range(S)]
for wormhole in wormholes:
if wormhole[0] in snake_rows:
continue
for i, snake_len in enumerate(snake_lenghts):
if snake_len < wormhole[1] and snake_rows[i] == -1:
snake_rows[i] = wormhole[0]
break
# print(snake_rows)
row = 0
data = ""
for i, snake_len in enumerate(snake_lenghts):
if snake_len >= C:
data += "\n"
continue
if snake_rows[i] != -1:
data += f"{0} {snake_rows[i]} "
for _ in range(snake_len - 2):
data += "R "
data += "R\n"
continue
while row in snake_rows:
row += 1
if row >= R:
data += "\n"
continue
data += f"{0} {row} "
for _ in range(snake_len - 2):
data += "R "
data += "R\n"
row += 1
parsers.save_data(f"outputs/quick_{f.split('/')[1]}", data)
if __name__ == "__main__":
main()