Draw using nested loop and increment

-2

I'm studying JavaScript for a book (from the House Code editor) and have a challenge involving nested loops, in which I have to draw this:

for(var Linha=0;Linha<10;Linha=Linha+1){
  for(var Coluna=0;Coluna<10;Coluna=Coluna+1){
    document.write("*")
  }
  document.write("<br>")
}
    
asked by anonymous 10.11.2018 / 22:35

1 answer

2

Analyzing the drawing:
There are 10 rows and 19 columns. At each new line, the left asterisk advances a house, the right asterisk goes back a house, and where there is no asterisk there is an underscore ("_").

So the script to do this drawing could be written like this:

var posAstEsq = 1;   // Posição inicial do asterisco esquerdo.
var posAstDir = 19;  // Posição inicial do asterisco direito.

for (var linha=1; linha<=10; linha++){
  for (var coluna=1; coluna<=19; coluna++){
    if (coluna==posAstEsq || coluna==posAstDir)
      document.write("*")
    else
      document.write("_");
  }
  document.write("<br>");
  posAstEsq++;  // A cada linha o asterisco esquerdo avança uma coluna.
  posAstDir--;  // A cada linha o asterisco direito retrocede uma coluna.
}

Or, one can think of the distance of the asterisk, rather than the position of the asterisk, and in this case only one variable would be used:

// Distância inicial do asterisco, tanto em relação ao lado
// esquerdo quanto ao lado direito.
// A posição do asterisco esquerdo será sempre 1 + distância.
// A posição do asterisco direito será sempre 19 - distância.
var distAst = 0;

for (var linha=1; linha<=10; linha++){
  for (var coluna=1; coluna<=19; coluna++){
    if (coluna==(1+distAst) || coluna==(19-distAst))
      document.write("*")
    else
      document.write("_");
  }
  document.write("<br>");
  // A cada linha o asterisco se distancia uma coluna do seu ponto de referência.
  distAst++;
}
    
10.11.2018 / 23:59