entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Hola amigos, tengo mi tarea de JAVA de la cual se me pidio hacer un codigo simple para un patron numerico.

Sin embargo me dicen que es posible simplificarlo más. ¿Me podrian ayudar?

No importa el lenguaje, lo que quiero es ver la logica que podria seguir para cuando haya proyectos demasiado pesados. Gracias.

    /**
 * SECUENCIA A GENERAR
 * 
 * x   y   resultado
 * 0 + 0 = 0
 * 0 + 1 = 1
 * 1 + 2 = 3
 * 3 + 3 = 6
 * 6 + 4 = 10
 * 10 + 5 = 15
 */

public static void main(String args[]) throws java.lang.Exception{
    List numbers = new ArrayList();

    int x = 0, resultado = 0;
    for(int i = 0; i < 20; i++){
        x = resultado;
        resultado = x + i;
        numbers.add(resultado);
    }
    System.out.println(numbers);
}

}

2 Respuestas

1voto

Leonardo-Tadei Puntos227320

Hola Porfirio,

habría que ver la naturaleza de la simplificación a la que te hacen referencia... a veces no es simplificación, sino usar alguna característica del lenguaje que hace más cortas las cosas o alguna sintaxis más concisa (pero menos legible)

Si es solo el algoritmo, la variable X no hace falta:

int resultado = 0;
    for(int i = 0; i < 20; i++){
        resultado = resultado + i;
        numbers.add(resultado);
    }

Pero tampoco es un cambio taaaan importante.

Ya nos contarás de qué iba la cosa...

0voto

kaiba78987 comentado

Incluso se podría simplificar un poco más usando:

resultado += i;

Que suma el valor de i a resultado y lo asigna. Pero tampoco es una gran simplificación, sólo el uso de una posibilidad del lenguaje.

0voto

humberto_garcia_caba comentado

Se podría simplificar, incluso, un poco más, dejándolo en una sola línea:

numbers.add((resultado +=i));

0voto

Leonardo-Tadei comentado

Tal cual, el código se puede abreviar así... por eso me preguntaba a qué se referían con "simplificar", ya que para algunos (como yo!) escribir el código tan resumido lo hace menos simple, porque es más difícil de leer... de todas formas el compilador de Java creará el mismo bytecode para la versión más larga que para la corta, aunque sí se reflejará el uso de menos cantidad de variables, ya que se reserva memoria para cada una declarada.

2votos

Tomando el código de Leonardo, te propongo lo siguiente: en vez de usar un ArrayList, usar un simple array de enteros

int[] numbers = {};

y en tu ciclo for puedes añadir tu resultado a dicho array indicando la posición donde lo vas a añadir. Esto hace tu código ligeramente mas rápido que usando el método Add

int resultado = 0;
    for(int i = 0; i < 20; i++){
        resultado = resultado + i;
        numbers[i] = resultado;
    }

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta