Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
10
respostas

escada de array com for - javascript

Bom dia, estou precisando de ajuda com um desafio que preciso fazer. Preciso criar uma função em javascript que receba um número e crie um array com variaveis com esse número de caracteres, sendo na primeira variavel um '#', na segunda dois '#' e assim por diante . Exemplos:

  • Ex1: funcao(5):

Resultado: [" #", " ##", " ###", " ####", "#####"]

  • Ex2: funcao(3):

Resultado: [" #"" ##","###"]

Alguém poderia me ajudar? Muito obrigado

10 respostas

Olá, Gabriel.

Você já tem algum código que está tentando pra eu conseguir ver qual o caminho lógico que você está seguinte?

É importante você tentar alguma coisa e postar pra você ter um bom aprendizado e com isso. Eu vendo um código que você está fazendo também consigo ver seus pontos de dificuldade e posso te passar quais cursos você pode fazer na plataforma que poderá te ajudar a crescer na sua carreira de forma mais efetiva ;-)

Eu sei o código que resolve esse desafio, mas só postar ele aqui não fará você aprender.

Ah! Gostei do desafio, interessante. Posta seu código e bora resolver juntos

Legal!! Prefiro assim também! hehehe Eu comecei, mas dei uma travada! Vou passar o que eu fiz aqui, mas está incompleto ainda.

function escada(altura){
  let lista = [];
  for(let linha = 0; linha < altura; linha++){
    for(let coluna = 0; coluna < lista.length; coluna++){
      lista.push(" ".repeat(altura - linha) + "#".repeat());
    }
  }
}

Muito bom, Gabriel.

Por que você fez dois for, um dentro do outro?

Pelo que entendi do se exemplo no primeiro post o que você quer é ter um função que receba um parâmetro, esse parâmetro será um número. Dentro da função você quer ver qual foi o valor que veio no parâmetro e criar um array exatamente com a quantidade de posições que você recebe no parâmetro e cada posição será preenchida com "#", mas essa "#" vai crescendo a cada nova posição. É isso?

Ah! Se for isso mesmo, eu faria algo asssim:

function escada(altura){
  let lista = [];
  for(let index = 1; index <= altura; index++){
    lista.push("#".repeat(index))
  }

  lista.forEach(function(item) {
    console.log(item)
  })
}

escada(10)

É isso sim, a única coisa a mais é que tem espaços em branco em cada valor também (que vai diminuindo a cada posição). Tinha pensado em uma ideia que já nem lembro mais pra colocar outro for... hahahahh Refiz... Acho que só preciso montar a regra de repetição agora, né?

function escada(altura){
  let lista = [];
  for(let i = 0; linha < altura; i++){
    lista.push(" ".repeat() + "#".repeat());
  }
  return lista;
}

Ixi, não entendi o lance dos espaços :-(

Da uma olhada no código que fiz acima pra ver se ajuda :-)

Se não ajudar você pode me tentar me explicar de outra forma o lance dos espaços?

Pensei algo novo, mas deu errado.

function escada(altura){
  let lista = [];
  for(let i = 1; linha <= altura; i++){
    lista.push(" ".repeat(altura - i) + "#".repeat(i));
  }
  return lista;
}

É como se fosse uma escada: No primeiro item do array (de altura 5) seriam 4 espaços(em branco) e 1 '#', no segundo item seriam 3 espaços e 2 '#', no terceiro seriam 2 espaços e 3 '#' e assim por diante.

solução!

CONSEGUI!!! Obrigado!! =)

function escada(altura){
  let lista = [];
  for(let i = 1; i <= altura; i++){
    let espaco = altura - i;
    lista.push(" ".repeat(espaco) + "#".repeat(i));
  }
  return lista;
}

Show de bola.

Parabéns Gabriel :-)

Gostei de parear com você por texto....kkkkk