Tema: Ejercicio
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/10/2011, 23:31
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Ejercicio

Código Python:
Ver original
  1. def searchR(grid):
  2.     for i, row in enumerate(grid):
  3.         for j, value in enumerate(row):
  4.             if value == 'R':
  5.                 return (i, j)
  6.  
  7. def searchExit(grid, n, x, y, dx, dy):
  8.     c = 0
  9.     while 0 <= x < n and 0 <= y < n:
  10.         if grid[x][y] == '#':
  11.             return -1
  12.         c += 1
  13.         x += dx
  14.         y += dy
  15.     return c
  16.    
  17.    
  18. n = int(raw_input())
  19.  
  20. grid = []
  21. for i in range(n):
  22.     grid.append(raw_input())
  23.  
  24. x, y = searchR(grid)
  25.  
  26. l = [
  27.     (1, 1),
  28.     (1, 0),
  29.     (0, 1),
  30.     (0, -1),
  31.     (0, -1),
  32.     (-1, 0),
  33.     (-1, 0)
  34.     ]
  35.  
  36. ans = []
  37. for dx, dy in l:
  38.     res = searchExit(grid, n, x, y, dx, dy)
  39.     if res >= 1:
  40.         ans.append(res)
  41. if ans:
  42.     print min(ans) - 1
  43. else:
  44.     print -1

La única cosa que tienes que hacer es checar las 8 posibles lineas rectas, ver si se salen del mapa y de ser así guardarlas.

Este problema es mucho mas fácil cuando el robot puede girar