Imprimir padrões de número em JavaScript

Nov 05 2020

Quero imprimir números no padrão como abaixo também preciso disso para imprimir usando apenas um loop for, não na condição if dentro do loop for.

Se eu der, s = 7o padrão de saída seria7, 5, 3, 1, 3, 5, 7

Se a s=6saída for6, 4, 2, 4, 6

Foi o que tentei, mas não tive sucesso.

const s = 7, b = 2

for (x = s, d = b; x > 0 && x <= 7; x -= 2) {
  console.log(x)
}

Não quero usar nenhuma biblioteca pré-construída para conseguir isso, como Math.abs()

Respostas

1 maraca Nov 05 2020 at 07:32

Com operador ternário:

const s = 10, b = 2

for (x = s, step = -b; x <= s; step = x + step <= 0 ? -step : step, x += step) {
  console.log(x)
}

1 ShridharRKulkarni Nov 05 2020 at 07:12

var s = 7, b = 2, x, d;
var front = " ", back = " ";

for (x = s, d = b; x - b > 0 ; x -= b) {
    front = front + " " + x; 
    back = x + " " + back;
}
console.log(front + " " + x + " " + back);

TejaGoudKandula Nov 05 2020 at 08:18

Isso funciona para números pares e ímpares:

const s = 8, b = 2

for (x=s,step = b; x <=s ; (x===1 || x===2) ? (step = -b, x = x-step ): x= x-step) {
    console.log(x)
}

O que eu fiz é que no bloco de incremento / decremento quando x é igual a 1 para números ímpares ou quando x é igual a 2 para números pares, o passo está sendo alterado de positivo para negativo.

Para imprimir os números em ordem crescente:

const s = 10

for ( x=0,step=1; x!== -1 ; x===s ? (step = -1, x = x+step): x= x+step) {
    console.log(x)
}