Advertisement
LaCaraDeLaVerga

jere 19/4

Apr 19th, 2016
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.04 KB | None | 0 0
  1. package TP;
  2.  
  3. import java.util.ArrayList;
  4.  
  5.  
  6. public class Mapa {
  7. private Barco [] barcos;
  8. private int [][] distancias;  // distancia de i a j
  9. private int [] distanciaEspejo; // distancia al espejo
  10.  
  11. private int n;
  12.  
  13. public Mapa(int tamano){
  14.     n= tamano;
  15.     barcos = new Barco [n];
  16.     distancias = new int [n][n];
  17.     distanciaEspejo = new int [n];
  18.    
  19.     for (int i=0; i<n; i++){
  20.         barcos [i] = new Barco(i,"Barco" + i);
  21.         distanciaEspejo[i] = 0;
  22.         for (int j=0; j<n; j++){
  23.             distancias[i][j] = 0;   //distancias default en 0
  24.    
  25.         }
  26.     }
  27.    
  28. }
  29.  
  30.  
  31. public int tamano(){
  32.     return n;
  33. }
  34.  
  35.  
  36. public void asignarNombre(Integer ciudadID, String nombre){
  37.     barcos[ciudadID].Nombre = nombre;
  38. }
  39.  
  40. public void setDistIJ(int i, int j, int dist, boolean simetrico){
  41.     distancias[i][j] = dist;
  42.    
  43.     if (simetrico){
  44.         distancias[j][i] = dist;
  45.     }
  46. }
  47.  
  48. public void setDistEsp(int i, int dist){
  49.     distanciaEspejo[i] = dist;
  50.  
  51. }
  52.  
  53. public int getDistEsp(int i) {
  54.     return distanciaEspejo[i];
  55. }
  56.  
  57. // distancias nominales
  58. public int getDistIJ(int i, int j){ // si es adyacente tomamos ady[i][j]
  59. return distancias[i][j];
  60. }
  61.  
  62. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  63. ArrayList<Barco> destruidos = new ArrayList<Barco>();
  64.  
  65. ArrayList<Barco> caminoMinimoProbable(){
  66.     ArrayList<Barco> ret = new ArrayList<Barco>();
  67.     Barco puntero = null ;  
  68.    
  69.     ret.add(barcoCercanoCosta());  
  70.     puntero = (barcoCercanoCosta()); // consigo el barcoOrigen para funcion barcoMasCercano
  71.  
  72.    
  73. while(ret.size()!=barcos.length)   
  74.  
  75.     ret.add(barcoMasCercano(puntero)); //busco el mas cercano al barco que uso de puntero
  76.      puntero =barcoMasCercano(puntero);
  77.      destruidos.add(puntero);
  78.  
  79.     return ret;
  80. }
  81. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  82. private Barco barcoMasCercano(Barco barcoOrigen){
  83.     Barco barcoOrigen1 = barcoOrigen ;
  84.     Barco puntero = null ;
  85.     Barco aux = null ;
  86.     int dist = 0 ;
  87.  
  88.     for (Barco barco : barcos) {
  89.         dist= getDistIJ(barcoOrigen1.id,barco.id); 
  90. //      System.out.println( dist);
  91.         for (Barco bar : barcos) {
  92.             if (getDistIJ(barcoOrigen1.id, bar.id) <= dist && !destruidos.contains(barco)  ) {
  93.                 puntero = bar;
  94.                 dist = (getDistIJ(barcoOrigen1.id, bar.id )) ;
  95.                 puntero = bar;
  96.                 destruidos.add(puntero);
  97.             }
  98.             else {
  99.                 puntero = barco;
  100.                 dist = (getDistIJ(barcoOrigen1.id, barco.id )) ;
  101.                 puntero = barco;
  102.                 destruidos.add(puntero);
  103.             }
  104.         }
  105.     }
  106. return puntero ;
  107. }
  108.  
  109. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  110. private Barco barcoCercanoCosta() {
  111.     Barco ret = null;  
  112.     int dist = 100 ;  // no es fino ? jajaja
  113.         for (Barco barco : barcos) {
  114.             if (getDistEsp(barco.id)<= dist) { //si el elemento es el de menor distancia al espejo de todo el array
  115.                 dist = getDistEsp(barco.id);    //conservo para comparaciones
  116.                 ret = barco ;                   // conservo el barco
  117.             }
  118.         }  
  119.     return ret;                                 //devuelvo barco cercano
  120. }
  121. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  122. //private Barco barcoMasCercano(Barco barcoOrigen){
  123. //  Barco ret = barcoOrigen ;
  124. //  Barco puntero = null ;
  125. //  int dist  = 10000 ;
  126. // 
  127. //  for (Barco barco : barcos) {
  128. //     
  129. //      if (getDistIJ(ret.id, barco.id) <= dist && !destruidos.contains(barco)  ) {
  130. //          puntero = barco;
  131. //          dist = (getDistIJ(ret.id, barco.id )) ;
  132. //          destruidos.add(puntero);
  133. //      }
  134. //  }
  135. //  return ret;
  136. //}
  137. //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
  138. Integer  distancia(ArrayList<Barco> camino){
  139.     Integer _distancia = 0;
  140.  
  141.     if (camino.size() > 0){
  142.         _distancia = distanciaEspejo[camino.get(0).id];
  143.     }
  144.    
  145.            
  146.     for (int i=0;i< camino.size()-1;i++){
  147.         _distancia = _distancia + distancias[camino.get(i).id][camino.get(i+1).id];
  148.     }
  149.  
  150.     return _distancia;
  151.    
  152. }
  153.  
  154.  
  155.  
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement