Dados dos números N yx, encuentre el número de números de x dígitos cuyo producto de dígitos es N
limits: N(<10^6) and x(<12)
Sample Input:
8 3
Sample Output:
10
code-golf
number-theory
fR0DDY
fuente
fuente

Respuestas:
Python 208 caracteres
fuente
Golfscript
4231Entrada: Espera los números
Nyxcomo argumentos de línea de comando (separados por espacio).El programa se puede probar aquí .
fuente
Code took longer than 5 seconds to run, so it was aborted.con los parámetros invertidos. :)xva por encima de 4. Por ejemplo, si lo ejecuto en mi máquina con los parámetros3 5obtengo el resultado después de más de 30 segundos. Así3 8que supongo que podrían ser horas ...Brachylog (2), 13 bytes, desafío de fechas posteriores al idioma
Pruébalo en línea!
Explicación
Un buen truco de golf utilizado aquí es que, a diferencia de casi todos los metapredicados,
ᶜno le importa en absoluto el valor real de.(que normalmente se usa para construir una salida para los metapredicados); como tal,.se puede usar como cualquier otra variable (guardar un byte porque aparece implícitamente antes}). No hay labelisations implícitos en cualquier lugar aquí, así que he tenido que añadir un labelisation explícita usando≜para darᶜalgo para contar.fuente
Scala 107:
Versión no depurada y amigable:
Invocación con salida de depuración:
fuente
Python (todavía trabajando en ello) 164
fuente
C # 128
Este método C # devuelve el número de
xnúmeros de dígitos cuyo producto de dígitos esn. Requiere que los espacios de nombresSystemySystem.Linqse importen en el contexto actual.Versión en línea: http://ideone.com/0krup
fuente
Haskell 117 caracteres
fuente
K, 49
.
fuente
J, 40 bytes
Genera todos los
xnúmeros de dígitos, convierte cada uno en base 10, luego encuentra el producto de cada número y prueba si cada número es igual al lado izquierdo, y luego encuentra la suma de cada booleano.fuente
Jelly , 12 bytes, desafío de fechas posteriores al idioma
Pruébalo en línea!
Toma x como argumento de línea de comando y N en la entrada estándar.
Explicación
La parte difícil es generar la lista de números con x dígitos; el número más bajo es 10 x −1 , el más alto es 10 x −1. El rango aquí se genera al generar primero el par ( x , x −1), luego tomar 10 a la potencia de ambos y luego generar el rango entre ellos. El rango incluye ambos puntos finales por defecto; solo en caso de que N sea 0, necesitamos eliminar el extremo superior del rango (que viene primero porque es un rango "hacia atrás") usando
Ḋ.fuente