Estoy tratando de encontrar una forma más corta de imprimir un triángulo rectángulo y un triángulo isósceles sin usar tantos bucles anidados. Por favor, ayuda, aquí está mi código hasta ahora, funciona. Solo tengo problemas para encontrar una forma más corta de escribirlo:
//right-triangle let triangleStr = ""; let num = 5; for (let i = 1; i <= num; i++) { for (let j = 0; j < num - i; j++) { triangleStr += " "; } for (let k = 0; k < i; k++) { triangleStr += "*"; } triangleStr += "\n"; } console.log(triangleStr); //isosceles-triangle triangleString = ""; for (let i = 1; i <= num; i++) { for (let j = 1; j <= num - i; j++) { triangleString += " "; } for (let k = 1; k <= 2 * i - 1; k++) { triangleString += "*"; } triangleString += "\n"; } console.log(triangleString);
Si desea usar solo un bucle , puede usar el método repeat()
en ECMAScript6 o superior.
Para triángulo rectángulo:
const line = 5; let rightTriangle = ""; for (let l = 1; l <= line ; l++) { const indent = line-l; rightTriangle += `${" ".repeat(indent)}${"*".repeat(l)}${"\n"}`; } console.log(rightTriangle);
Para el triángulo isósceles:
const line = 5; let isoscelesTriangle = ""; for (let l = 1; l <= line ; l++) { const indent = line - l; isoscelesTriangle += `${" ".repeat(indent)}${"*".repeat(2*l-1)}${"\n"}`; } console.log(isoscelesTriangle);