Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

110
Vistas
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 la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda