Advertisement
D14M4NTE

Ruta más corta [2]

Sep 26th, 2012
912
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.50 KB | None | 0 0
  1. #!/usr/bin/python
  2. # -*- coding: utf8 -*-
  3. def camino_matriz(f1,c1,f2,c2,lista): #Creamos la función que nos dará la ruta más corta, incluyendo pasos diagonales y horizontales
  4.     if (f1==f2):    #comparamos f1 y f2, en caso de ser cierta, solo nos desplazamos de forma horizontal
  5.         if(c1==c2):
  6.             lista[f1][c1]="+"
  7.             print "Ruta Encontrada..."
  8.         elif (c1<c2):
  9.             lista[f1][c1]="+"
  10.             camino_matriz(f1,c1+1,f2,c2,lista)      #Recursividad
  11.         else:
  12.             print "Error en la parte de columnas"
  13.     elif (f1+1==f2):     #comparamos la fila siguiente con la final, si son iguales, solo es necesario un  movimiento en las columnas (horizontal o diagonal)
  14.         if (c1==c2):
  15.             lista[f1+1][c1]="+"
  16.             print "Ruta Encontrada..."
  17.         elif (c1+1==c2):
  18.             lista[f1+1][c1+1]="+"
  19.             print "Ruta Encontrada..."
  20.         else :
  21.             lista[f1+1][c1+1]="+"
  22.             camino_matriz(f1+1,c1+1,f2,c2,lista)        #Recursividad
  23.     elif (f1+1<f2):     #Comparamos la fila siguiente con la final, en caso de que la siguiente sea menor que la final, se hace un paso a (f1+1,c1+1)
  24.         if (c1==c2):
  25.             lista[f1+1][c1]="+"
  26.             camino_matriz(f1+1,c1,f2,c2,lista)      #Recursividad
  27.         elif (c1+1==c2):
  28.             lista[f1+1][c1+1]="+"
  29.             camino_matriz(f1+1,c1+1,f2,c2,lista)        #Recursividad
  30.         else:
  31.             lista[f1+1][c1+1]="+"
  32.             camino_matriz(f1+1,c1+1,f2,c2,lista)
  33.     else:
  34.         print "..Error con los datos ingresados.."
  35.     return lista
  36.  
  37. def matriz(M,N):    #Aquí creamos la matriz de un tamaño MxN designado por el usuario
  38.     lista=[]
  39.     for x in range(M):
  40.         columnas=[]
  41.         for y in range(N):
  42.             columnas.append("x")
  43.         lista.append(columnas)
  44.     return lista
  45.    
  46. filas,columnas=input("Ingrese el tamaño de la matriz (filas,columnas), separando por con una coma (,) los valores: ")   #pedimos el tamaño de la matriz
  47. generando_m=matriz(filas,columnas)  #Generamos la matriz
  48.  
  49. print "Generando una matriz de {0}x{1} ...".format(filas,columnas)
  50. for x in range(filas)#Por estetica, imprimimos las matrices por filas.
  51.     print generando_m[x]
  52.  
  53. print ""
  54. f_final,c_final=input("Ingrese las coordenadas del punto final P, separando por una coma (,), los valores: ")       #Pedimos las coordenadas del punto final
  55. solucion=camino_matriz(0,0,f_final-1,c_final-1,generando_m) #Una vez obtenidas las coordenadas y generada la matriz, le pasamos los datos a nuestra función que nos dará la ruta más corta
  56. print ""
  57. print "Generando una Ruta desde el punto O(0,0) hasta el punto P({0},{1})".format(f_final,c_final)
  58.  
  59. for x in range(filas)#Por estetica imprimimos el resultado de la ruta, por filas.
  60.     print solucion[x]
  61. input("")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement