Прикреплённый файл «lab.py»

Загрузка

   1 #!/usr/bin
   2 # coding: UTF8
   3 '''
   4 Лабиринт задан целочисленной матрицей NxN, 0 означает проходимое место, 1 — стену.
   5 Проверить, можно ли пройти из верхнего левого угла в правый нижний и определить длину кратчайшего пути
   6 '''
   7 import sys
   8 
   9 def out(T,frame=""):
  10     if frame: print frame*(len(T[0])+2)
  11     for l in T:
  12         print frame+"".join([" #"[c] for c in l])+frame
  13     if frame: print frame*(len(T[0])+2)
  14 
  15 def reach(T,st,en):
  16     W,H,Step=len(T[0]),len(T),2
  17     T[st[0]][st[1]],Front=Step,[st]
  18     D=((-1,0),(0,-1),(1,0),(0,1))
  19     while Front:
  20         Look,Front=Front,[]
  21         Step+=1
  22         for x,y in Look:
  23             for dx, dy in D:
  24                 X,Y=x+dx,y+dy
  25                 if X>=0 and X<W and Y>=0 and Y<H and not T[X][Y]:
  26                     Front.append((X,Y))
  27                     T[X][Y]=Step
  28     return T[en[0]][en[1]]
  29 
  30 T=input()
  31 
  32 if len(sys.argv)>1:
  33     out(T,'+')
  34 
  35 print reach(T, (0,0), (len(T)-1,)*2)

Прикреплённые файлы

Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.

Вам нельзя прикреплять файлы к этой странице.