Advertisement
Guest User

Untitled

a guest
Sep 17th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.43 KB | None | 0 0
  1. from collections import deque
  2.  
  3. q=deque()
  4.  
  5. dists=[]
  6.  
  7. def print_maze(maze):
  8.   for i in maze:
  9.     for j in i:
  10.       print(pconv(j), end='\t')
  11.     print()
  12.  
  13.  
  14.  
  15. def conv(ch):
  16.   if ch=='□':
  17.     return 0
  18.   if ch=='■':
  19.     return 100500
  20.   if ch=='X':
  21.     return -1
  22.  
  23. def pconv(ch):
  24.   if ch==100500:
  25.     return '■'
  26.   if ch==-1:
  27.     return 'X'
  28.   return ch
  29.  
  30. def fill():
  31.   for i in range(12):
  32.     for j in range(12):
  33.       if(maze[i][j]==0):
  34.         maze[i][j]=1
  35.  
  36. def move(dx,dy,ans):
  37.   if dx==1 and dy==0:
  38.     ans+='D'
  39.   if dx==0 and dy==1:
  40.     ans+='R'
  41.   if dx==-1 and dy==0:
  42.     ans+='U'
  43.   if dx==0 and dy ==-1:
  44.     ans+='L'
  45.   nmaze=[[0 for i in range(12)] for j in range(12)]
  46.   for i in range(1,11):
  47.     for j in range(1,11):
  48.       if(maze[i][j]!=100500 and maze[i][j]!=-1 and maze[i+dx][j+dy]!=100500 and maze[i+dx][j+dy]!=-1):
  49.         nmaze[i+dx][j+dy]+=maze[i][j]
  50.         nmaze[i][j]-=maze[i][j]
  51.       if(maze[i][j]!=100500 and maze[i+dx][j+dy]==-1):
  52.         nmaze[i][j]=-maze[i][j]
  53.   for i in range(1,11):
  54.     for j in range(1,11):
  55.       maze[i][j]+=nmaze[i][j]
  56.   return ans;
  57.  
  58.  
  59. s='■■■■■■■■■■■■■□□■■□■□□■■■■□■□□□□■□□□■■□■■□X□□□□□■■□□■□□□□■□□■■□□□□■■■□□□■■□□□□■□□■□□■■□□□□□■□□■□■■□■□□■□■□■□■■□□■■□□■□■□■■■□□□□■■□□□■■■■■■■■■■■■■'
  60. maze=[[conv(s[j]) for j in range(12*i,12*i+12)] for i in range(12)]
  61. ans=''
  62. ox,oy=0,0
  63.  
  64. for i in range(12):
  65.   for j in range(12):
  66.     if maze[i][j]==-1:
  67.       ox,oy=i,j
  68.  
  69.  
  70.  
  71. q.append((ox,oy))
  72. dmaze=[i.copy() for i in maze]
  73. dmaze[ox][oy]=0
  74. while(len(q)!=0):
  75.   tx,ty=q.popleft()
  76.   ds=[(0,1), (0,-1), (1,0), (-1,0)]
  77.   for dx, dy in ds:
  78.     if(dmaze[tx+dx][ty+dy]==0):
  79.       dmaze[tx+dx][ty+dy]=dmaze[tx][ty]+1
  80.       q.append((tx+dx,ty+dy))
  81. dmaze[ox][oy]=0
  82.  
  83. fill()
  84. # ans=move(0,1,ans)
  85. # ans=move(1,0,ans)
  86. print_maze(maze)
  87.  
  88. while(1):
  89.   ch=input()
  90.   if(ch=='w'):
  91.     ans=move(-1,0,ans)
  92.   if(ch=='a'):
  93.     ans=move(0,-1,ans)
  94.   if(ch=='d'):
  95.     ans=move(0,1,ans)
  96.   if(ch=='s'):
  97.     ans=move(1,0,ans)
  98.   print_maze(maze)
  99.   print(ans)
  100.  
  101.  
  102. for i in dmaze:
  103.   for j in i:
  104.     print(j,end='\t')
  105.   print('\n')
  106.  
  107. # move(maze, 1, 0)
  108. # print_maze(maze)
  109. # move(maze, 0, 1)
  110. # print_maze(maze)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement