Estoy aprendiendo JavaScript y, después de revisar varios recursos, he decidido utilizar como mi principal fuente de estudio el libro Eloquent JavaScript. La versión en español que estoy usando se puede encontrar aquí..

En esta entrada, comparto mis soluciones a los ejercicios del capítulo 2 del libro. Además, intento explicar mi proceso de pensamiento al resolver cada problema.

1. Ciclo de un triángulo

Escriba un ciclo que haga siete llamadas a console.log para generar el siguiente triángulo:

#
##
###
####
#####
######
#######

Puede ser útil saber que puedes encontrar la longitud de un string escribiendo .length

Solución.

Lo primero que observé fue que el número de # aumenta en 1 en cada fila. Entonces, pensé en almacenar lo que se imprimirá en una variable (inicialmente vacía) y luego ir agregando un # en cada iteración. Para esto, usé un ciclo for que construye cada fila. Aquí está mi solución:

cadena="";
for (let i=0; i<7; i+=1){
  cadena += "#";
  console.log(cadena)
}

En este caso no hice caso de la sugerencia de usar .length porque no me pareció tan natural de emplear.

2. FizzBuzz

Escribe un programa que use console.log para imprimir todos los números de 1 a 100, con dos excepciones. Para números divisibles por 3, imprime "Fizz" en lugar del número, y para los números divisibles por 5 (y no 3), imprime "Buzz" en su lugar.

Cuando tengas eso funcionando, modifica tu programa para imprimir "FizzBuzz", para números que sean divisibles entre 3 y 5 (y aún imprimir "Fizz" o "Buzz" para números divisibles por solo uno de ellos).

Solución.

Primera parte del problema

Primero, creé un ciclo for para imprimir los números del 1 al 100. Luego, utilicé if junto con el operador módulo % para verificar qué números son divisibles por 3. También agregué un else if para manejar los números divisibles por 5 pero no por 3. Finalmente, imprimí los demás números normalmente.

for (let i=1; i<=100; i+=1){
  if (i%3===0){
    console.log("Fizz");
  }
  else if (i%5===0){
    console.log("Buzz")
  }
  else{
    console.log(i)
  }
}

Segunda parte del problema.

Ahora debemos manejar los números divisibles por ambos 3 y 5. Como queremos imprimir "FizzBuzz" en estos casos y excluirlos de las condiciones anteriores, la mejor opción es evaluar esta condición primero. Luego, seguimos con la lógica anterior:

for (let i=1; i<=100; i+=1){
  if(i%3===0 && i%5===0){
    console.log("FizzBuzz")
  }
  else if (i%3===0){
    console.log("Fizz");
  }
  else if (i%5===0){
    console.log("Buzz")
  }
  else{
    console.log(i)
  }
}

Tablero de ajedrez

Escribe un programa que cree un string que represente una cuadrícula de 8 × 8, usando caracteres de nueva línea para separar las líneas. En cada posición de la cuadrícula hay un espacio o un carácter "#". Los caracteres deberían de formar un tablero de ajedrez.

Pasar este string a console.log debería mostrar algo como esto:

 # # # #
# # # #
 # # # #
# # # #
 # # # #
# # # #
 # # # #
# # # #

Cuando tengas un programa que genere este patrón, define una vinculación tamaño = 8 y cambia el programa para que funcione con cualquier tamaño, dando como salida una cuadrícula con el alto y ancho dados.

Solución.

Cuando veo un arreglo cuadrado lo primero que pienso es en una matriz, igual es una idea que no es la mejor, pero por el momento seguiré con esta idea.
Para crear la matriz utilicé dos ciclos for anidados. El primero de ellos establece la fila en la que estamos, y el que esta anidado va recorriendo en esa fila una posición tantas veces como columnas tenga la matriz.

Para construir cada fila, usé una variable cadena que guarda el patrón de esa fila. Al terminar de recorrer una fila, se imprime cadena y se reinicia su valor para la siguiente iteración. Como el patrón cambia según si la fila es par o impar, utilicé condicionales if para alternar los caracteres:

let cadena = "";
let fila_size = 8;
let columna_size = 8;

for (let fila = 1; fila <= fila_size; fila += 1) {
  for (let columna = 1; columna <= columna_size; columna += 1) {
    if (fila % 2 !== 0) {
      if (columna % 2 === 0) {
        cadena += "#";
      } else {
        cadena += " ";
      }
    } else {
      if (columna % 2 !== 0) {
        cadena += "#";
      } else {
        cadena += " ";
      }
    }
  }
  console.log(cadena);
  cadena = ""; 
}

Espero que esto haya sido de utilidad. Saludos!!!

Author Of article : Memo Read full article