Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - miguel96

#11
Java / Re:
28 Noviembre 2016, 01:08 AM
Me autorespondo, había que copiar la matriz posición por posición y ahora si funciona.
Podéis cerrar el post!

Enviado desde mi Aquaris_M4.5 mediante Tapatalk
#12
Java / problema crear sucesores
25 Noviembre 2016, 14:03 PM
Buenas tardes, tengo un problema con una práctica. El problema está en que una de las clases que tengo implementadas, llamada espacio de estado, tiene un metodo sucesores que que toma como parámetro una matriz de enteros, y esta, a partir de la posición '0'(la matriz estará desordenada en principio), debe crear hijos con los posibles movimientos que pueda realizar.
Por ejemplo, supongamos que tenemos una matriz de 3x3 y tenemos el '0' en la posición
[1][2], pues podrá realizar movimientos hacia arriba, hacia abajo y hacia la izquierda.
La cosa es que si llamo al metodo sucesores en la clase main y le meto una matriz de enteros desordenada por parámetros, me crea el primer sucesor bien, pero a partir de ese me los crea a partir de la matriz modificada, y no a partir de la matriz que metí por parámetro.
No sé si me estoy explicando bien. Es decir, que la matriz 'estado' en este caso se modifica, cuando no se tendrá que modificar.
Adjunto código de la clase a ver si me podeis resolver la duda.


package Puzzle;

import java.util.ArrayList;

import java.util.Arrays;

public class Estado {


//public Estado(){
//}

public boolean esObjetivo(int [][] estadoactual){
int cont1=0;
int [][] objetivo = new int[estadoactual.length][estadoactual[0].length];
for(int i = 0; i < estadoactual.length; i++){//Creamos la matriz de la solucion: 0,1,2,3,4,5,6...etc
for(int j=0; j < estadoactual[0].length; j++){
estadoactual[i][j]=cont1;
cont1++;
}
}
return Arrays.equals(estadoactual, objetivo);//Si son iguales true, si no false
}

public int[] obtenerNegra(int [][] actual){
int[] posiciones=new int[2];
for(int i=0; i<actual.length;i++){
for(int j=0; j<actual[0].length; j++){
if(actual[i][j]==0){
posiciones[0]=i;
posiciones[1]=j;
}
}
}
return posiciones;
}

public ArrayList<int [][]> Sucesores(int [][] estado){
ArrayList<int [][]> sucesores = new ArrayList<int [][]>();
int [][] estfinal = new int[estado.length][estado[0].length];
int [] posicionesNegra= obtenerNegra(estfinal);
ArrayList<Integer> lmv = mvmValidos(estfinal, posicionesNegra[1], posicionesNegra[0]);
    for(int i =0; i < lmv.size(); i++){
    estfinal=estado;
    int [][] nuevaMatriz = mover(estfinal, lmv.get(i),posicionesNegra[1] , posicionesNegra[0]); // Matriz actualizada con el movimiento realizado
    //ArrayList<int [][]> nuevaLista = new ArrayList<int [][]>();
    prinstate(nuevaMatriz);
    sucesores.add(nuevaMatriz);
    }
    return sucesores;
}

public int [][] mover(int [][] estadoact,int movimientos, int ynegra, int xnegra){
int [][] nm = new int[estadoact.length][estadoact[0].length];//Nueva matriz para aplicar el movimiento
nm=estadoact;
int aux=0;
    if(movimientos==3){ // Mueve hacia la izquierda (Left)
            aux=nm[xnegra][ynegra];
            nm[xnegra][ynegra]= nm[xnegra][ynegra-1];
            nm[xnegra][ynegra-1]= aux;
    }
            if(movimientos==2){ // Mueve hacia la derecha (Right)
            aux=nm[xnegra][ynegra];
            nm[xnegra][ynegra]= nm[xnegra][ynegra+1];
            nm[xnegra][ynegra+1]= aux;
            }
            if(movimientos==1){ // Mueve hacia abajo (Down)
            aux=nm[xnegra][ynegra];
            nm[xnegra][ynegra]= nm[xnegra+1][ynegra];
            nm[xnegra+1][ynegra]= aux;
            }
            if(movimientos==0){ // Mueve hacia arriba (Up)
            aux=nm[xnegra][ynegra];
            nm[xnegra][ynegra]= nm[xnegra-1][ynegra];
            nm[xnegra-1][ynegra]= aux;
            }
           

    return nm;
}

public void prinstate(int [][] estadoactual){
String estado="";
for(int i=0;i<estadoactual.length;i++){
for(int j=0; j < estadoactual.length; j++){
estado = estado + Integer.toString(estadoactual[i][j])+" ";
}
}
System.out.println(estado);
}

public ArrayList<Integer> mvmValidos(int [][] estadoactual, int ynegra, int xnegra){ // Este metodo devuelve una lista con los movimientos validos del cuadro "Vacio(negro)".
        ArrayList<Integer> movimientos=new ArrayList<Integer>();
       movimientos.add(0);//up
       movimientos.add(1);//down
       movimientos.add(2); //right
       movimientos.add(3);//left
       
if(ynegra==0){ // Segun en que parte del puzzle se encuentre se eliminaran los posibles movimientos para que en la lista solo queden los validos.
movimientos.remove(3); //Left
}
if(ynegra==estadoactual[0].length-1){
movimientos.remove(2); //Rigth
}
        if(xnegra==0){
             movimientos.remove(0);//Up
        }
        if(xnegra==estadoactual.length-1){
            movimientos.remove(1); //Down
        }     
        return movimientos;
}




}


Gracias!!
#13
Cita de: rbtrece en  7 Noviembre 2016, 21:53 PMLo de borrar el fichero ya esta arreglado, era poner un segundo argumento en FileWriter("fichero.txt",true); y ya no se borra,
Lo que pasa que no se como escribir en la mitad del fichero.
Imagino que tendrás que recorrer el fichero hasta la posición que quieres y simplemente escribir sobre él.
#14
GNU/Linux / Re: Re: Clonar SSD con 2 SSOO
6 Noviembre 2016, 01:20 AM
Cita de: engel lex en  5 Noviembre 2016, 16:11 PM
Si, eso te digo gparted tienes opciones para eso y sería lo ideal porque clonar una partición corriendo en el sistema operativo de ella puede llevar a errores
Ok, buscaré y os comentaré! Muchas gracias :)
#15
GNU/Linux / Re:
5 Noviembre 2016, 15:05 PM
Pero desde el live podría clonar la partición de Ubuntu y la fe Windows de una sola vez?
#16
GNU/Linux / Re: Clonar SSD con 2 SSOO
4 Noviembre 2016, 00:17 AM
Ok!
Muchísimas gracias engel lex!
#17
GNU/Linux / Clonar SSD con 2 SSOO
3 Noviembre 2016, 21:48 PM
Buenas noches,

Os traigo una duda que probablemente sea una tontería, pero no estoy seguro de la respuesta.
Tengo un SSD de 120 gb con w10 y ubuntu 16.04, en dos particiones distintas y quiero comprar otro ssd de 240 gb porque este se me ha quedado pequeño ya. Mi pregunta es, puedo clonar un ssd con los dos SSOO y que quede todo intacto?
En su día cuando pase de HDD a SSD y lo cloné sin problema, pero sólo tenia instalado W10 porque el pc estaba nuevo.
De poder clonarlo, que software conoceis para hacerlo?

Saludos
#18
Windows / Error arranque clonado
10 Octubre 2015, 18:09 PM
Buenas tardes.
Os voy a contar mi problemilla, compre un disco duro ssd, un kingston para clonar todo lo que tenia en un portatil con w7. Bueno hasta ahi todo bien y siguiendo un tutorial de internet realice el clonado del disco, con el programa AOMEI exactamente.
El problema llega cuando cambio el disco duro oficial por el ssd y al arrancar me salta un error.
winload.exe missing or corrupt 0xc000000e

Me da unas instrucciones de que meta el cd del sistema operativo y lo repare. Bien, descargue mi version de w7 y arranque desde la usb y le di a reparar pero nada, no hacia nada.
Mi pregunta es, he clonado mal el disco?
o cual puede ser el problema?
El ordenador al poner el antiguo disco duro funciona perfectamente.
Un saludo y espero que podais ayudarme
#19
No tengas miedo y estudia informática.
Yo tengo 19 años y este año empiezo 2º de Ingeniería Informática, con 15 años estaba como tu muy dudoso, aunque lo mio no era porque se me diera mejor o peor una materia, aún así te digo que el instituto no tiene nada que ver con esto, si te sirve como referencia yo en bachiller no era un estudiante brillante, mi media en bachiller fue un 6,9, sin embargo el primer curso de carrera lo he sacado limpio sin tener que hacer una sola recuperación, mientras que amigos míos con notas brillantes en carreras mas sencillas o similares han aprobado la mitad de las asignaturas con esfuerzo.
Ya sabes, si te gusta, no te quedes con las ganas y pensando todo la vida en lo que podría haber sido y no es.
Un saludo
#20
Hardware / Re: Novato cambio ventilador
10 Febrero 2015, 00:21 AM
Me autorespondo, esto me pasa por no leer mas antes de preguntar. El socket estaba puesto en otra ventana del programa, es un 775 LGA.
Gracias y perdon las molestias