Attachment 'ray_lab.py'

Download

   1 #!/usr/bin/env python
   2 # coding: utf
   3 #Выяснить, можно ли добраться из клетки [0][0] в клетку [N-1][M-1]
   4 #Вывести любой (не обязательно минимальный) маршрут из [0][0] в [N-1][M-1]
   5 
   6 def passable():
   7 	goto=((0,-1),(1,0),(0,1),(-1,0))
   8 	#Первый шаг
   9 	if a[1][0]==0: i,j=1,0; k=3 #Исключаем направление, откуда пришли
  10 	elif a[0][1]==0: i,j=0,1; k=0
  11 	else: print "Fail"
  12 	#
  13 	print [0,0],
  14 	while (0<i or 0<j) and (i<N-1 or j<M-1):
  15 		print [i,j],
  16 		#Исключим вылет из-за границы
  17 		exc=[-1,-1]
  18 		if i==0: exc[0]=3
  19 		if j==0: exc[1]=0
  20 		if i==N-1: exc[0]=1
  21 		if j==M-1: exc[1]=2
  22 		#
  23 		if exc[0]!=(k+1)%4 and exc[1]!=(k+1)%4 and a[i+goto[(k+1)%4][0]][j+goto[(k+1)%4][1]]==0: k=(k+1)%4
  24 		elif exc[0]!=(k+2)%4 and exc[1]!=(k+2)%4 and a[i+goto[(k+2)%4][0]][j+goto[(k+2)%4][1]]==0: k=(k+2)%4
  25 		elif exc[0]!=(k+3)%4 and exc[1]!=(k+3)%4 and a[i+goto[(k+3)%4][0]][j+goto[(k+3)%4][1]]==0: k=(k+3)%4
  26 		i+=goto[k][0]
  27 		j+=goto[k][1]
  28 		k=(k+2)%4
  29 	print [i,j]
  30 	
  31 if __name__ == "__main__":
  32 	import sys,pprint
  33 	a=input()
  34 	M=len(sys.argv)>1 and int(sys.argv[1]) or 17
  35 	N=len(sys.argv)>2 and int(sys.argv[2]) or 11
  36 	pprint.pprint(a)
  37 	passable()

Attached Files

To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.

You are not allowed to attach a file to this page.