Прикреплённый файл «ray_lab.py»
Загрузка 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()
Прикреплённые файлы
Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.- [получить | показать] (2011-12-03 16:29:54, 0.6 KB) [[attachment:labpur.py]]
- [получить | показать] (2011-12-07 00:55:42, 1.2 KB) [[attachment:ray_lab.py]]
Вам нельзя прикреплять файлы к этой странице.