Advertisement
Guest User

Codingame Kirk quest labyrinth - LouJo

a guest
Mar 27th, 2014
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.34 KB | None | 0 0
  1. import sys
  2.  
  3. R,C,A = [int(a) for a in input().split()]
  4.  
  5. dirs = [ [-1,0],[1,0],[0,-1],[0,1]]
  6. dirs_name = ["UP","DOWN","LEFT","RIGHT"]
  7.  
  8. def distance(a,b):
  9.     return abs(a[0]-b[0]) + abs(a[1]-b[1])
  10.  
  11. def find_pos(char,lab,kirk):
  12.     """Trouve char dans le lab en partant de kirk"""
  13.     tab = [[kirk[0],kirk[1]]]
  14.     fixed = [[0 for _ in range(C)] for i in range(R)]
  15.     while len(tab) > 0:
  16.         point = tab.pop(0)
  17.         for d in range(4):
  18.             pos = [point[i]+dirs[d][i] for i in range(2)]
  19.             # on trimballe le 1er déplacement
  20.             if len(point) == 2:
  21.                 pos.append(d)
  22.             else:
  23.                 pos.append(point[2])
  24.  
  25.             if not fixed[pos[0]][pos[1]]:
  26.                 c = lab[pos[0]][pos[1]]
  27.                 if c == char:
  28.                     return pos
  29.                 elif c == "." or c == "T" or c == "C":
  30.                     tab.append(pos)
  31.                     fixed[pos[0]][pos[1]] = 1
  32.  
  33.     return []
  34.  
  35.  
  36.  
  37. statut = 0
  38. #0 : salle non atteinte, 1: salle atteinte
  39. cmd = [] # pos salle des commandes
  40.  
  41. while 1:
  42.     kirk = [int(a) for a in input().split()]
  43.     lab = [input() for _ in range(R)]
  44.  
  45.     if statut == 0 and len(cmd) > 0 and kirk[0] == cmd[0] and kirk[1] == cmd[1]:
  46.             statut = 1
  47.    
  48.     if statut == 0:
  49.         pos = find_pos("C",lab,kirk)
  50.         if len(pos) == 0:
  51.             pos = find_pos("?",lab,kirk)
  52.         elif len(cmd) == 0:
  53.             cmd = [pos[0],pos[1]]
  54.             print("salle trouvée",file=sys.stderr)
  55.     else:
  56.         pos = find_pos("T",lab,kirk)
  57.    
  58.     print(dirs_name[pos[2]])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement