Advertisement
LaCaraDeLaVerga

Parte A , jere

Apr 18th, 2016
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.04 KB | None | 0 0
  1. package puntoUno;
  2. //public class Mapa {
  3. //
  4. //}
  5. import java.util.ArrayList;
  6. import java.util.Arrays;
  7.  
  8. public class Mapa {
  9. private Barco [] barcos;
  10. private int [][] distancias;  // distancia de i a j
  11. private int [] distanciaEspejo; // distancia al espejo
  12.  
  13. private int n;
  14.  
  15. public Mapa(int tamano){
  16.     n= tamano;
  17.     barcos = new Barco [n];
  18.     distancias = new int [n][n];
  19.     distanciaEspejo = new int [n];
  20.    
  21.     for (int i=0; i<n; i++){
  22.         barcos [i] = new Barco(i,"Barco" + i);
  23.         distanciaEspejo[i] = 0;
  24.         for (int j=0; j<n; j++){
  25.             distancias[i][j] = 0;   //distancias default en 0
  26.    
  27.         }
  28.     }
  29.    
  30. }
  31.  
  32.  
  33. public int tamano(){
  34.     return n;
  35. }
  36.  
  37.  
  38. public void asignarNombre(Integer ciudadID, String nombre){
  39.     barcos[ciudadID].Nombre = nombre;
  40. }
  41.  
  42. public void setDistIJ(int i, int j, int dist, boolean simetrico){
  43.     distancias[i][j] = dist;
  44.    
  45.     if (simetrico){
  46.         distancias[j][i] = dist;
  47.     }
  48. }
  49.  
  50. public void setDistEsp(int i, int dist){
  51.     distanciaEspejo[i] = dist;
  52.  
  53. }
  54. //este lo agregué yo estaba en la primer version del tp y en la segunda no se porque
  55. public int getDistEsp(int i) {
  56.     return distanciaEspejo[i];
  57. }
  58.  
  59. // distancias nominales
  60. public int getDistIJ(int i, int j){ // si es adyacente tomamos ady[i][j]
  61. return distancias[i][j];
  62. }
  63.  
  64.  
  65. //########################################################################################################################################
  66. ArrayList<Barco> caminoMinimoProbable(){
  67.    
  68. //Variables----------------------------------------------------------------------------------------
  69.     ArrayList<Barco> listaBarcos = new ArrayList<Barco>();
  70.     listaBarcos = (ArrayList<Barco>) Arrays.asList(barcos);//paso los elementos de barcos a listaBarcos
  71. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  72. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  73. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  74.    
  75. //   GONZA POR EL AMOR A LA PACHAMAMA , TENES QUE PASAR LOS ELEMENTOS DEL ARRAY BARCO QUE NOS BRINDA EL MAPA A EL ARRAYLIST LISTABARCOS
  76.    
  77.    
  78.    
  79.    
  80.    
  81.     Barco ret = null ;
  82.     int distancia = getDistIJ(0,0);                         //uso la distancia del primer elemento
  83.     int distEspejo = distanciaEspejo[listaBarcos.get(0).id];
  84.     Barco puntero = null;  
  85.     ArrayList<Barco> caminoMinimo = new ArrayList<Barco>(listaBarcos.size());//creo un array con el tamaño de listaBarcos vacio
  86. //-------------------------------------------------------------------------------------------------------------------------------
  87.    
  88. //si caminoMinimo esta vacia , entonces busco el barco mas cercano al espejo para ponerlo primero en la lista  
  89. if (caminoMinimo.isEmpty()) {                   //
  90.         for (Barco b : listaBarcos) {
  91.               if (getDistEsp(b.id) <= distancia) {
  92.                     distancia = getDistEsp(b.id);
  93.                    puntero = b;
  94.                 }
  95.         }
  96. }
  97.  
  98. //una vez tengo un elemento en caminoMinimo puedo desde
  99. else {
  100.    
  101.     for (Barco elemento : listaBarcos) {
  102.         if ((getDistIJ(elemento.id, elemento.id) <= distancia)) {//si  distancia de elemento
  103.                  distancia = getDistIJ(elemento.id, elemento.id);//es menor la distanciaactual , entonces  
  104.                  puntero = elemento ;                           //cambiamos distancia por la menor     
  105.         }
  106.  
  107.     }
  108. }
  109.     caminoMinimo.add(puntero);      //agrego a el camino minimo probable
  110.     listaBarcos.remove(puntero);    //saco de la lista  que uso para comparar
  111.  
  112.    
  113. return caminoMinimo ;  
  114.    
  115.     }
  116. //############################################################################################################################
  117.    
  118. Integer  distancia(ArrayList<Barco> camino){
  119.  
  120.     Integer _distancia = 0;
  121.  
  122.     if (camino.size() > 0){
  123.         _distancia = distanciaEspejo[camino.get(0).id];
  124.     }
  125.    
  126.            
  127.     for (int i=0;i< camino.size()-1;i++){
  128.         _distancia = _distancia + distancias[camino.get(i).id][camino.get(i+1).id];
  129.     }
  130.  
  131.     return _distancia;
  132.    
  133. }
  134.  
  135.  
  136. } //----------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement