Un número de Munchausen en la base , también conocido como un invariante perfecto de dígito a dígito o PDDI es un tipo peculiar de número entero positivo donde la suma de sus dígitos de base elevados para sí mismos es igual al número mismo. Se llaman así por el ficticio barón Munchausen , que aparentemente se alzó a través de su propia cola de caballo para evitar ahogarse. Un concepto relacionado son los números narcisistas .
Por ejemplo, es trivialmente un número Munchausen en cada base porque . Además, cada entero positivo es un número Munchausen base-1 por definición.
Más interesante aún, es un número Munchausen de base 10 porque , y de hecho es el único otro número Munchausen de base 10 .
Se puede encontrar una lista parcial de números Munchausen en cada base hasta 35 en el OEIS como secuencia A166623 .
Dado un número entero positivo , determine si es un número Munchausen en cualquier base .
Reglas
- Se aplican las reglas predeterminadas de E / S, por lo tanto:
- El programa completo o las funciones son aceptables.
- La entrada puede ser de STDIN, como un argumento de función, y la salida puede ser de STDOUT, como un valor de retorno de función, etc.
- Se aplican las lagunas predeterminadas.
- El resultado debe ser uno de dos resultados distintos y consistentes. Entonces
TRUE
está bien para la verdad yFALSE
está bien para la falsedad, pero puedes revertir eso o regresarNone
por la verdad y1
por la falsedad o lo que sea. Por favor, especifique los resultados seleccionados en su respuesta. - Su respuesta tiene que funcionar al menos teóricamente para cualquier número entero positivo.
- Los números de Munchausen usan la convención , entonces es un número de Munchausen base-2 como . Su código debe seguir esta convención.
- Se recomiendan encarecidamente las explicaciones, aunque las presentaciones probablemente utilizarán el método de búsqueda de fuerza bruta.
- Usar lenguajes esotéricos te da puntos de brownie ya que Munchausen era aparentemente una persona extraña.
Casos de prueba
Truthy
1 (all bases)
2 (base 2)
5 (base 3)
28 (base 9 and base 25)
29 (base 4)
55 (base 4)
3435 (base 10)
923362 (base 9)
260 (base 128)
257 (base 64 and base 253)
Falsy
3
4
591912
3163
17
Este es el código de golf , por lo que gana la respuesta más corta en cada idioma (en bytes).
fuente
determine if it's a Munchausen number in any base b≥2.
Respuestas:
05AB1E , 7 bytes
Pruébalo en línea!
Los casos de prueba más grandes se agotarán en TIO.
Explicación
fuente
1^1
es 1 .Jalea , 8 bytes
Rendimientos
0
para Munchausen y1
otros.Pruébalo en línea!
O vea los primeros quinientos enteros positivos divididos como
[[Munchausen], [non-Munchausen]]
.¿Cómo?
Alternativa para
1
Munchausen y0
otros:fuente
1
era Munchausen.J ,
332827 bytesPruébalo en línea!
e.
es la entrada un elemento de ...1#.
la suma de cada fila de ...i.@>: ... ]
0..input y la entrada en sí, pasados como argumentos izquierdo y derecho a ...^~@(#.inv)"0
Convierta el argumento derecho (entrada) a cada base en el argumento izquierdo y eleve cada resultado en sentido propio^~@
.::1
finalmente esto es necesario porque no puede convertir únicamente a la base 1, por lo que es un error. en este caso, simplemente devolvemos 1, que no coincidirá con ningún número excepto 1, que es lo que queremosfuente
R ,
7269 bytes-1 byte gracias a digEmAll
Pruébalo en línea!
Salidas
TRUE
para números de Munchausen yFALSE
otros.x%/%b^(0:log(x,b))%%b)
se conviertex
en baseb
, y el bucle for hace el resto del trabajo (reasignaciónF
, que esFALSE
por defecto).Necesitamos permitir que la base
b
llegue hasta el final enx+1
lugar dex
manejar el casox=1
.fuente
+
con|
y eliminar!
, entonces me di cuenta de que escribí mi código 71 pero en realidad era 70: DJapt , 13 bytes
Guardado un byte gracias a @Shaggy
Intentalo
fuente
ÃÃøU
con<newline>øN
.N
, ¡nunca lo había usado antes!Perl 6 , 51 bytes
Pruébalo en línea!
Explicación:
fuente
Ruby , 50 bytes.
TIO agotó el tiempo en 591912. De alguna manera supera a Perl por 1 byte ... (al momento de escribir)
Pruébalo en línea!
fuente
JavaScript (ES7), 60 bytes
Devuelve un valor booleano.
Pruébalo en línea!
Comentado
fuente
APL (dzaima / APL) ,
2313 bytesPruébalo en línea!
Gracias a Adám, ngn y dzaima, logramos eliminar 10 bytes de esta respuesta usando dzaima / APL.
Función de prefijo tácito. Los números de Munchausen devuelven 1, de lo contrario 0.
Cómo
fuente
Wolfram Language (Mathematica) , 65 bytes
Pruébalo en línea!
-4 bytes de @attinat
fuente
Carbón , 17 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Mi intento de 16 bytes no funcionó, pero eso podría ser un error en el carbón, así que mira este espacio. Salidas a
-
menos que el número sea un número Munchausen. Explicación:fuente
C # (compilador interactivo de Visual C #) , 99 bytes
Pruébalo en línea!
fuente
Haskell, 61 bytes
Devoluciones
True
para Munchausen y deFalse
otra manera.Pruébalo en línea!
fuente
C (gcc)
-lm
,7975 bytesPruébalo en línea!
Devoluciones
0
para números Munchausen, y de1
otra manera.también 75 bytes
Pruébalo en línea!
fuente
Python 2 ,
8381 bytesPruébalo en línea!
Vuelve
1
por veracidad y0
por falsey. Debido a la recursividad, prácticamente no se puede tratar591912
, pero funciona en abstracto.fuente
Perl 6 ,
6665 bytesPruébalo en línea!
fuente
JavaScript (ES6), 88 bytes
fuente
Ícono , 109 bytes
Pruébalo en línea!
Tiempos de espera para
591912
. Icon trata0^0
como un desbordamiento y es por eso que necesito una verificación adicional para cero.fuente
Stax , 15 bytes
Ejecutar y depurarlo
Toma mucho tiempo para los casos de prueba más grandes.
Explicación:
fuente