DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Criando uma escadaria!

Continuando a série: Resolvendo problemas no HackerRank , hoje nós trataremos de uma resolução que exige um pouco do cognitivo, você está preparado? Aliás,já existem alguns artigos anteriores que vale a pena dar uma olhada. Vamos iniciar!!!

StairCase -

Neste episódio , nos é pedido para fazer um problema de escada. COMO ASSIM? Com base em espaços e #, nós devemos fazer uma ordem decrescente onde sua base tem um valor específico, e seu início tem a menor razão.

Suponhamos que exista uma escada com valor N, e nesse N se é guardado um valor 4.

Antes de iniciar a resolução desse problema, é prudente fazer uma análise do que precisamos fazer primeiro, antes de começar a escrever para o computador.

Por exemplo:

xxx#
xx##
x###
####    // Os x nesse caso representam a área vazia.
Enter fullscreen mode Exit fullscreen mode

(Conseguimos ver as 4 posições de # e como elas devem ser executadas).

O que fazer então?

Vejamos a resolução que fiz:

function staircase(n) {
    // Write your code here, N agora valerá 6
    let result = '';
    const space = ' ';
    const hashtag = '#';

    for (let i = 1; i <= n; i++) {
    result += `${space.repeat(n - i)}${hashtag.repeat(i)}\n`;
  }
    console.log(result);
}
Enter fullscreen mode Exit fullscreen mode

Nesse caso, separamos o que seria necessário pra executar esse código, declarando as variáveis result,space, e hashtag. Com base nisso, utilizamos o laço for e declaramos um index 'i', que começara com o valor 1 e que caso seja inferior ou igual ao valor de N( que sabemos que agora valerá 6), ele adicionará +1 ao index.

Logo após isso, chamamos a let result adicionando(+= e ++ tem diferença, enquanto o += adiciona a alguma coisa que virá posteriormente, ++ acrescenta +1), variável space.repeat pegando N,que vale 6 - i que é 1. Isso se repetirá e a cada repetição, o index i irá aumentar +1, enquanto ele não for igual a 6. E também utilizamos a var hashtag que irá repetir 1x a cada chamada.

Com isso, nosso resultado se dá como:

     #
    ##
   ###
  ####
 #####
######
Enter fullscreen mode Exit fullscreen mode

Existem claro, soluções alternas a essa,encontrei uma que se assimila bastante a superior . Veja:

function staircase(n) {
    let s = '';
    for(let i=1; i<=n;i++){
        let blank = ' '.repeat(n-i);
        let star = '#'.repeat(i);
        s += blank + star + '\n'
    }
    console.log(s)
}
Enter fullscreen mode Exit fullscreen mode

Assim finalizamos mais um desafio deste HackerRank. Até a próxima!!!

Top comments (0)