Initial release
This commit is contained in:
78
Le circuit de la Batmobile.py
Normal file
78
Le circuit de la Batmobile.py
Normal file
@@ -0,0 +1,78 @@
|
||||
input = open("QuadrilleVille.txt").read()
|
||||
depl = 1000
|
||||
|
||||
# input = """ESESS
|
||||
# NOEON
|
||||
# NOEEO
|
||||
# NONEN
|
||||
# EONON"""
|
||||
# depl = 7
|
||||
|
||||
input = input.replace('N', '0').replace('E', '1').replace('S', '2').replace('O', '3').splitlines()
|
||||
for i in range(len(input)):
|
||||
input[i] = [int(x) for x in input[i]]
|
||||
|
||||
|
||||
#position de départ
|
||||
x = len(input)//2
|
||||
y = x
|
||||
|
||||
min_x = x
|
||||
min_y = y
|
||||
max_x = x
|
||||
max_y = y
|
||||
|
||||
histo = [(x,y), ]
|
||||
|
||||
def print_table(table):
|
||||
for i in table:
|
||||
print("".join([str(x) for x in i]))
|
||||
print()
|
||||
|
||||
def update_trace(x, y):
|
||||
global trace
|
||||
global trace_id
|
||||
trace[y][x] = trace_id
|
||||
trace_id = (trace_id+1)%10
|
||||
|
||||
def change_dir(c,x,y,dim):
|
||||
c = (c + 1)%4
|
||||
for i in range(2):
|
||||
if x==0 and c==3:
|
||||
c = 0
|
||||
if x==dim-1 and c==1:
|
||||
c = 2
|
||||
if y==0 and c==0:
|
||||
c = 1
|
||||
if y==dim-1 and c==2:
|
||||
c = 3
|
||||
return c
|
||||
|
||||
trace = list()
|
||||
for i in range(len(input)):
|
||||
trace.append([".", ] * len(input))
|
||||
trace_id = 0
|
||||
|
||||
for i in range(depl):
|
||||
update_trace(x,y)
|
||||
# print_table(input)
|
||||
d = input[y][x]
|
||||
input[y][x] = change_dir(d, x, y, len(input))
|
||||
if d == 1:
|
||||
x+=1
|
||||
elif d == 2:
|
||||
y+=1
|
||||
elif d == 3:
|
||||
x-=1
|
||||
elif d == 0:
|
||||
y-=1
|
||||
histo.append((x,y))
|
||||
min_x = min(min_x, x)
|
||||
min_y = min(min_y, y)
|
||||
max_x = max(max_x, x)
|
||||
max_y = max(max_y, y)
|
||||
update_trace(x,y)
|
||||
|
||||
print_table(trace)
|
||||
|
||||
print("{}, {}, {}, {}, {}".format(len(set(histo)), min_x+1, max_x+1, min_y+1, max_y+1))
|
||||
Reference in New Issue
Block a user