Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

81
Visualizações
La mejor manera de crear una matriz que va 1-50 y luego 49-1 con solo 1 bucle

Sé que la mejor manera de crear una matriz que vaya de 1 a 50 y luego de 49 a 1 serían 2 bucles, pero este ejercicio requiere que usemos solo 1 bucle.

 let myArr = []; let reachedFifty = false; let x = 1; for(i=0;i<100;i++){ if(x == 50){ reachedFifty = true; } myArr[i] = x; if(reachedFifty){ x--; } else{ x++; } }

Esto logró la tarea, pero el instructor dijo que estoy usando demasiados condicionales y que hay mejores soluciones.

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Podemos usar las propiedades de la lista para hacer esto más eficiente:

Después de llenar la lista con valores, se vería así:

 [1,2,3,4,.....,4,3,2,1]

¡Podemos ver aquí que la lista es simétrica! Al usar esta propiedad, cada vez que agregamos un valor en el lado "izquierdo", podemos reflejarlo en el lado derecho:

 let myArr = []; for (let i = 0; i < 50; i++) { myArr[i] = i + 1; myArr[98 - i] = i + 1; } console.log(myArr)
 .as-console-wrapper { max-height: 100% !important; }

Observe cómo estamos usando el índice en 98 - i para reflejar los cambios. Esto se debe a que, dado que habrá 99 valores totales, el valor en el índice 0 debería reflejarse en el índice 98, 1 a 97, etc.

¡Espero que esto haya ayudado a responder a tu pregunta! Por favor, hágamelo saber si necesita más detalles o aclaraciones :)

about 4 years ago · Juan Pablo Isaza Relatório

0

¿Por qué usar bucles en absoluto?

 const max = 50 const t1 = performance.now() const arr = Array.from({ length: max * 2 - 1 }, (_, i) => max - Math.abs(i - (max - 1))) console.log(`Took ${performance.now() - t1}ms`) console.info(arr)
 .as-console-wrapper { max-height: 100% !important; }

Esto funciona llenando una matriz de longitud 99 con la evaluación de la expresión

 50 - |index - 49|

Por ejemplo

  • i = 0 -> 50 - |-49| = 50 - 49 = 1
  • i = 1 -> 50 - |-48| = 50 - 48 = 2
  • ...
  • i = 49 -> 50 - |0| = 50 - 0 = 50
  • i = 50 -> 50 - |1| = 50 - 1 = 49
  • ...
  • i = 98 -> 50 - |49| = 50 - 49 = 1
about 4 years ago · Juan Pablo Isaza Relatório

0

Otra solución es que podría verificar i en lugar de x , de esa manera solo tendrá un si y no necesitará una variable booleana.

 let myArr = []; let x = 1; for(i=0;i<100;i++){ myArr[i] = x; if(i >= 49){ x--; } else{ x++; } }

Pero creo que el enfoque de lista simétrica es mejor.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda