Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Open Labyrinth by jacekgrycza
def prz(i,tak,nie):
tak.append(i)
nie.remove(i)
def checkio(map):
nie=[]
tak=[]
poprz=['a' for i in range(0,150)]
for i in range(0,12):
for j in range(0,12):
if(map[i][j]==0):
nie.append([i,j])
x=10
y=10
t=''
s=[]
prz([1,1],tak,nie)
u=check(tak, nie,poprz)
while(x!=1 or y!=1):
s.append(poprz[11*x+y])
if poprz[11*x+y]=='N':
x=x+1
elif poprz[11*x+y]=='S':
x=x-1
elif poprz[11*x+y]=='E':
y=y-1
elif poprz[11*x+y]=='W':
y=y+1
# for i in range(len(s)-1, -1, -1):
t=''.join(s)
return (t[::-1])
def check(tak, nie,poprz):
for i in nie:
l=len(nie)
for j in tak:
if(i[0]==j[0] and i[1]==j[1]-1):
poprz[11*i[0]+i[1]]='W'
prz(i,tak,nie)
break
elif(i[0]==j[0] and i[1]==j[1]+1):
poprz[11*i[0]+i[1]]='E'
prz(i,tak,nie)
break
elif(i[0]==j[0]+1 and i[1]==j[1]):
poprz[11*i[0]+i[1]]='S'
prz(i,tak,nie)
break
elif(i[0]==j[0]-1 and i[1]==j[1]):
poprz[11*i[0]+i[1]]='N'
prz(i,tak,nie)
break
if(l!=len(nie)):
break
if([10,10] in tak):
return poprz
return check(tak, nie,poprz)
Oct. 19, 2016