Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package puntoUno;
- //public class Mapa {
- //
- //}
- import java.util.ArrayList;
- import java.util.Arrays;
- public class Mapa {
- private Barco [] barcos;
- private int [][] distancias; // distancia de i a j
- private int [] distanciaEspejo; // distancia al espejo
- private int n;
- public Mapa(int tamano){
- n= tamano;
- barcos = new Barco [n];
- distancias = new int [n][n];
- distanciaEspejo = new int [n];
- for (int i=0; i<n; i++){
- barcos [i] = new Barco(i,"Barco" + i);
- distanciaEspejo[i] = 0;
- for (int j=0; j<n; j++){
- distancias[i][j] = 0; //distancias default en 0
- }
- }
- }
- public int tamano(){
- return n;
- }
- public void asignarNombre(Integer ciudadID, String nombre){
- barcos[ciudadID].Nombre = nombre;
- }
- public void setDistIJ(int i, int j, int dist, boolean simetrico){
- distancias[i][j] = dist;
- if (simetrico){
- distancias[j][i] = dist;
- }
- }
- public void setDistEsp(int i, int dist){
- distanciaEspejo[i] = dist;
- }
- //este lo agregué yo estaba en la primer version del tp y en la segunda no se porque
- public int getDistEsp(int i) {
- return distanciaEspejo[i];
- }
- // distancias nominales
- public int getDistIJ(int i, int j){ // si es adyacente tomamos ady[i][j]
- return distancias[i][j];
- }
- //########################################################################################################################################
- ArrayList<Barco> caminoMinimoProbable(){
- //Variables----------------------------------------------------------------------------------------
- ArrayList<Barco> listaBarcos = new ArrayList<Barco>();
- listaBarcos = (ArrayList<Barco>) Arrays.asList(barcos);//paso los elementos de barcos a listaBarcos
- //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
- //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
- //$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
- // GONZA POR EL AMOR A LA PACHAMAMA , TENES QUE PASAR LOS ELEMENTOS DEL ARRAY BARCO QUE NOS BRINDA EL MAPA A EL ARRAYLIST LISTABARCOS
- Barco ret = null ;
- int distancia = getDistIJ(0,0); //uso la distancia del primer elemento
- int distEspejo = distanciaEspejo[listaBarcos.get(0).id];
- Barco puntero = null;
- ArrayList<Barco> caminoMinimo = new ArrayList<Barco>(listaBarcos.size());//creo un array con el tamaño de listaBarcos vacio
- //-------------------------------------------------------------------------------------------------------------------------------
- //si caminoMinimo esta vacia , entonces busco el barco mas cercano al espejo para ponerlo primero en la lista
- if (caminoMinimo.isEmpty()) { //
- for (Barco b : listaBarcos) {
- if (getDistEsp(b.id) <= distancia) {
- distancia = getDistEsp(b.id);
- puntero = b;
- }
- }
- }
- //una vez tengo un elemento en caminoMinimo puedo desde
- else {
- for (Barco elemento : listaBarcos) {
- if ((getDistIJ(elemento.id, elemento.id) <= distancia)) {//si distancia de elemento
- distancia = getDistIJ(elemento.id, elemento.id);//es menor la distanciaactual , entonces
- puntero = elemento ; //cambiamos distancia por la menor
- }
- }
- }
- caminoMinimo.add(puntero); //agrego a el camino minimo probable
- listaBarcos.remove(puntero); //saco de la lista que uso para comparar
- return caminoMinimo ;
- }
- //############################################################################################################################
- Integer distancia(ArrayList<Barco> camino){
- Integer _distancia = 0;
- if (camino.size() > 0){
- _distancia = distanciaEspejo[camino.get(0).id];
- }
- for (int i=0;i< camino.size()-1;i++){
- _distancia = _distancia + distancias[camino.get(i).id][camino.get(i+1).id];
- }
- return _distancia;
- }
- } //----------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement