Antecedentes
El número 1729 es el número Hardy-Ramanujan. S. Ramanujan (quien es ampliamente considerado como el mejor matemático indio 1 ) descubrió una propiedad sorprendente cuando GH Hardy lo visitó en un hospital. En las propias palabras de Hardy:
Recuerdo que una vez lo vi cuando estaba enfermo en Putney. Había viajado en el taxi número 1729 y comentó que el número me parecía bastante aburrido, y que esperaba que no fuera un presagio desfavorable. "No", respondió, "es un número muy interesante; es el número más pequeño expresable como la suma de dos cubos de dos maneras diferentes".
Además de eso, tiene muchas otras propiedades increíbles. Una de esas propiedades es que es un número Harshad, es decir, la suma de sus dígitos (1 + 7 + 2 + 9 = 19) es un factor de ello. Eso también, uno especial. Como demostró Masahiko Fujiwara, 1729 es un número entero positivo que, cuando se suman sus dígitos, produce una suma que, cuando se multiplica por su inversión, produce el número original:
1 + 7 + 2 + 9 = 19
19 × 91 = 1729
Un número entero positivo que tiene dicha propiedad es lo que defino como Hardy-Ramanujan- ish Número Harshad, para el propósito de este post. (Puede haber un término técnico para ello, pero no podría encontrarlo, a menos que sea miembro de A110921 )
La tarea
Dado un número entero positivo n
como entrada, la salida de un valor Truthy o Falsey en función de si la entrada n
es una de Hardy-Ramanujan- ish Número Harshad. Salida de verdad, si es así. De lo contrario, salida falsey.
Tenga en cuenta que sólo cuatro de Hardy-Ramanujan- ish existen número de harshad ( 1
, 81
, 1458
y 1729
), y se puede escribir código que comprueba la equivalencia con ellos. Pero no creo que sea divertido.
Entrada
Su programa debe tomar un número entero positivo (un número natural, en otras palabras). Puede tomarlo de cualquier manera, excepto suponiendo que esté presente en una variable. Se permite la lectura desde la ventana modal, cuadro de entrada, línea de comando, archivo, etc. Tomar entrada como argumento de función también está permitido.
Salida
Su programa debe generar un valor verdadero o falso. No necesitan ser consistentes. Su programa puede generar cualquier salida, excepto escribir la salida en una variable. Se permite escribir en la pantalla, línea de comando, archivo, etc. La salida con función también return
está permitida.
Reglas Adicionales
No debe utilizar una función integrada para realizar la tarea (me pregunto si algún idioma tendrá esa función, pero luego Mathematica ... )
Se aplican lagunas estándar .
Casos de prueba
Input Output
1 Truthy (because 1 × 1 (reverse of 1) = 1)
2 Falsey
3 Falsey
4 Falsey
5 Falsey
81 Truthy (because 9 (8 + 1) × 9 (reverse of 9) = 81)
1458 Truthy (because 18 (1 + 4 + 5 + 8) × 81 (reverse of 18) = 1458)
1729 Truthy (because 19 (1 + 7 + 2 + 9) × 91 (reverse of 19) = 1729)
1730 Falsey
2017 Falsey
Criterio ganador
Este es el código de golf , por lo que gana el código más corto en bytes.
1 Cada año, el 22 º de diciembre, el cumpleaños de Srinivasa Ramanujan, Día Nacional de Matemáticas se observa en la India. Sus colegas, los de Cambridge, lo compararon con Jacobi, Euler e incluso Newton. Además de ser tan bueno, casi no tenía entrenamiento formal en Matemática Pura , pero aun así, hizo importantes contribuciones al análisis matemático , la teoría de números , las series infinitas y las fracciones continuas . Desafortunadamente, murió a la temprana edad de 32 años con miles de descubrimientos matemáticos en su mente. También se hizo una película sobre él, que se basó en su biografía ,El hombre que conocía el infinito .
Respuestas:
Neim , 5 bytes
Explicación:
¡Intentalo!
fuente
ArnoldC, 888 bytes
Lo sé, solo verifico la igualdad, pero esa no debería ser la parte divertida del programa.
Disfruta leyéndolo. :)
Se agregaron algunas líneas nuevas para facilitar la lectura:
Pruébalo en línea
fuente
Conjunto x86,
55353331 bytes:Asume un ABI donde el valor de retorno está en EAX y los parámetros se insertan en la pila ... así que casi todos ellos.
fuente
Brachylog , 8 bytes
Pruébalo en línea!
fuente
Haskell ,
5655 bytesPruébalo en línea!
Punto libre: (56 bytes)
Pruébalo en línea!
Aburrido: (24 bytes)
Pruébalo en línea!
fuente
JavaScript ES6,
5957 bytesPruébalo en línea!
Básicamente se divide en una matriz de dígitos, y se une
+
y evalúa esa expresión para sumar básicamente los dígitos.string*string
convertirá automáticamente cadenas en int. Toma la entrada como una cadenafuente
Mathematica, 42 bytes
fuente
Rubí, 69 bytes
Primer intento, con un entero como entrada:
Segundo intento, con una cadena como entrada:
fuente
.split('')
se puede hacer.chars
Lote, 164 bytes
Imprime 1 en caso de éxito, sin salida en caso de error.
fuente
JavaScript (ES6), 72 bytes
Esta es una presentación válida de ES6. Agregue
f=
al principio e invoque comof(arg)
.Fragmento de prueba:
fuente
Kotlin,
111108bytesPruébalo en línea!
Como es típico en las soluciones JVM compiladas estáticamente, se pierden muchos bytes solo en la declaración de la función principal y llamando a print (). La carne de la función es de 60 bytes, lo que no está nada mal para un lenguaje de tipo estático de propósito general como Kotlin.
Kotlin, solución aburrida, 69 bytes
Pruébalo en línea!
fuente
05AB1E , 5 bytes
Pruébalo en línea!
fuente
DSODR*Q
Era lo que tenía antes de mirar.D
.Python 2 , 55 bytes
Pruébalo en línea!
Explicación
Una
eval()
solución es unbit2 bytes más larga ...Solución alternativa
(¿no válida?),4229 bytesEsta solución verifica la igualdad contra todos los números.
Pruébalo en línea!
fuente
[1,81,1458,1729].__contains__
Cheddar , 60 bytes
Pruébalo en línea!
fuente
NewStack , 16 bytes
El desglose:
Usando 1729 como ejemplo
No imprime nada si es falso, y la entrada original si es verdadero.
fuente
¹
, la pila consta de[1]
. Y dado que definimosf
of(x)
igualamos su entrada, multiplicamos cada elemento en la pila por la funciónf
esencialmente reemplaza el1
con nuestra entrada. (Porque[1] * f(x)
=[f]
)MATL , 11 bytes
Pruébalo en línea!
t
- tomar entrada y duplicarlaV!U
- dividirlo en dígitos individualess
- suma esos dígitost
- duplicar esa sumaVP
- Conviértalo en una cuerda, gírelo de izquierda a derechaU
- convertir eso de nuevo en un número*
- multiplique los dos últimos valores (la suma de dígitos y su versión invertida de izquierda a derecha)=
- verifique si esto es igual a la entrada original (que es el único otro valor en la pila)fuente
Japt, 8 bytes
Ejecútalo en línea
fuente
Jalea , 8 bytes
Pruébalo en línea!
fuente
DS×Ṛ$Ḍ=
Guarda un byte.Perl 6 , 30 bytes
fuente
PHP , 52 bytes
Pruébalo en línea!
PHP , 36 bytes
Pruébalo en línea!
fuente
APL (Dyalog) , 18 bytes
Pruébalo en línea!
fuente
Pari / GP ,
5652 bytesPruébalo en línea!
fuente
MathGolf , 5 bytes
Pruébalo en línea!
Prácticamente lo mismo que la solución de Neim byte por byte.
fuente