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

116
Visualizações
Tener errores en la función digPow incluso lo he probado mucho de codewars

Hola, quiero preguntar qué le pasa a mi solución. Cuando voy a probar la solución, parece que esperaba -1 para igualar 12933. Todas las instrucciones son de Codewors.

La pregunta: algunos números tienen propiedades divertidas. Por ejemplo:

89 --> 8¹ + 9² = 89 * 1

695 --> 6² + 9³ + 5⁴= 1390 = 695 * 2

46288 --> 4³ + 6⁴+ 2⁵ + 8⁶ + 8⁷ = 2360688 = 46288 * 51

Dado un entero positivo n escrito como abcd... (a, b, c, d... siendo dígitos) y un entero positivo p

queremos encontrar un entero positivo k, si existe, tal que la suma de las cifras de n elevadas a las sucesivas potencias de p sea igual a k * n. En otras palabras:

¿Existe un número entero k como: (a ^ p + b ^ (p+1) + c ^(p+2) + d ^ (p+3) + ...) = n * k

Si es el caso devolveremos k, si no devolveremos -1.

Nota: n y p siempre se darán como números enteros estrictamente positivos.

 digPow(89, 1) should return 1 since 8¹ + 9² = 89 = 89 * 1 digPow(92, 1) should return -1 since there is no k such as 9¹ + 2² equals 92 * k digPow(695, 2) should return 2 since 6² + 9³ + 5⁴= 1390 = 695 * 2 digPow(46288, 3) should return 51 since 4³ + 6⁴+ 2⁵ + 8⁶ + 8⁷ = 2360688 = 46288 * 51

Mi solución:

 function digPow(p, n) { let arrayP = [...String(p)].map((e) => Number(e)); let arrayPLength = arrayP.length; let nums = []; let firstResult = []; for (let i = n; i < 5000; i++) { nums.push(i); } for (let i = n; i < nums.length; i++) { let currentPow = []; let j = i; let k = i + arrayPLength; while (j < k) { currentPow.push(j); j++; if (j == k) break; } let result = 0; for (let h = 0; h < arrayP.length; h++) { result = arrayP[h] ** currentPow[h] + result; } firstResult.push(result); } for (let i = 0; i < firstResult.length; i++) { for (let j = 0; j < 100; j++) { if (firstResult[i] == p * j) return j; } } return -1; }
about 4 years ago · Juan Pablo Isaza
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