Estoy buscando resolver este problema para imprimir * patrón de inicio en la línea de comandos de nodejs. Aquí está el código que escribí en nodejs
var readlineSync = require('readline-sync'); const input = readlineSync.question('Enter a number') for (var i = 0; i <= input; i = i+1){ for(var j = 0; j <= i; j++){ console.log('*') } console.log() }La salida que obtengo en repl.it:
* * * * * * * * * * * * * * *Salida esperada:
* ** *** **** *****Console.log agrega una nueva línea, debe crear cadenas y concatenar estrellas para eso.
for (var i = 0; i < 5; i = i + 1) { let star = ""; for (var j = 0; j <= i; j++) { star += "*"; } console.log(star); }También puede usar la función padEnd para resolver esto.
const n = 5; for (var i = 1; i <= n; i = i + 1) { const stars = Array(i + 1).join("*"); stars.padEnd(n); console.log(stars); }console.log siempre coloca los datos en una nueva línea, establece una cadena antes del ciclo j , agrega la cadena en ese ciclo, luego console.log esa cadena después de ese ciclo
var readlineSync = require('readline-sync'); const input = readlineSync.question('Enter a number') for (var i = 0; i <= input; i = i+1){ var tempStr="" for(var j = 0; j <= i; j++){ tempStr+="*" } console.log(tempStr) }aquí hay una solución que funciona con la línea de lectura clásica, un bucle y una matriz:
(async () => { const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin , output: process.stdout }); const input = await new Promise(resolve => { rl.question("Enter a number ", resolve) }) for (var i = 0; i <= input; i++){ console.log(Array(i).fill('*').join('')) } })()Explicación:
Usamos el paquete readline para leer la entrada, usamos un IIFE para usar las capacidades de espera asíncrona y para esperar en la entrada del usuario que se resuelve en la variable de entrada gracias a await.
Luego creamos una matriz con la longitud del bucle que llenamos de estrellas y unimos para crear la cadena a console.log.
Aquí hay otra forma sin crear una matriz en cada iteración:
(async () => { const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin , output: process.stdout }); const input = await new Promise(resolve => { rl.question("Enter a number ", resolve) }) const arrayToFill = [] for (var i = 0; i <= input; i++){ arrayToFill[i] = '*' console.log(arrayToFill.join('')) } })()¡Espero que ayude!