Dado que tiene una secuencia infinita de números definidos de la siguiente manera:
1: 1 = 1
2: 1 + 2 = 3
3: 1 + 3 = 4
4: 1 + 2 + 4 = 7
5: 1 + 5 = 6
6: 1 + 2 + 3 + 6 = 12
7: 1 + 7 = 8
...
La secuencia es la suma de los divisores de n, incluidos 1 y n.
Dado un entero positivo xcomo entrada, calcule el número más bajo nque producirá un resultado mayor que x.
Casos de prueba
f(100) = 48, ∑ = 124
f(25000) = 7200, ∑ = 25389
f(5000000) = 1164240, ∑ = 5088960
Rendimiento esperado
Su programa debería devolver ambos n y la suma de sus divisores, así:
$ ./challenge 100
48,124
Reglas
Este es el código de golf, por lo que gana el código más corto en bytes, en cada idioma.

ns divisores? Probablemente querrá declarar eso explícitamente.nyf(n), pero no lo dice en ninguna parte de la especificación.f(1000) = 48? La suma del divisor48es124Respuestas:
Brachylog , 9 bytes
Este programa toma la entrada de la "variable de salida"
.y las salidas a la "variable de entrada"?. Pruébalo en línea!Explicación
La variable implícita
Nse enumera en orden creciente, por lo que se utiliza su valor legal más bajo para la salida.fuente
Jalea ,
18121110 bytesPruébalo en línea!
-1 byte gracias al Sr. Xcoder !
Cómo funciona
fuente
1es necesario y cómo¥actúa?1le dice#que comience a contar desde 1 y¥toma los dos enlaces anteriores (Æsy>) y los aplica como una diada (es decir, con dos argumentos), siendo el argumento izquierdo la iteración y el argumento derecho la entrada.#había sido un poco confuso para mí antes en algunos casos.Wolfram Language (Mathematica) , 53 bytes
Pruébalo en línea!
Intenta todos los valores entre 2 y x + 1, donde x es la entrada.
(
SelectDevuelve una lista de todos los valores que funcionan, pero la función{#,f@#}&toma todos estos como entradas y luego ignora todas sus entradas, excepto la primera).fuente
R , 71 bytes
Pruébalo en línea!
fuente
x.Casco ,
1211 bytes-1 byte, gracias a @Zgarb!
Pruébalo en línea!
fuente
,no funciona (o la inferencia lleva demasiado tiempo?).R , 73 bytes
Pruébalo en línea!
Superado por duckmayr .
fuente
Japt , 15 bytes
Intentalo
Explicación
Entrada implícita de entero
U.[]es nuestro contenedor de matriz. Para el primer elemento,@ }aes una función que se ejecuta continuamente hasta que devuelve un valor verdadero, pasándose un número entero incremental (comenzando en 0) cada vez, y generando el valor final de ese número entero.âobtiene los divisores del entero actual (X), losxsuma y ese resultado se asigna a la variableV.<comprueba siUes menor queV. El segundo elemento en la matriz es entonces justoV.fuente
Clojure , 127 bytes
Pruébalo en línea!
¡Gracias a @steadybox por -4 bytes!
fuente
reducepuede reemplazarse porapply, también la funciónepodría expresarse como una función anónima a través de la#(...)sintaxis, no es necesario nombrarla en Code Golf.#(=(rem n %)0)es más corto que#(zero?(rem n %)). Y recuerde que,es un espacio en blanco, y puede eliminarse en este caso a medida que lo sigue(, por lo que se analizará correctamente.Rubí , 58 bytes
Programa completo porque no estoy seguro si las lambdas están permitidas. /encogimiento de hombros
Pruébalo en línea!
Explicación
fuente
JavaScript (ES6),
6158 bytesEditar: Guardado 3 bytes gracias a @Arnauld.
fuente
05AB1E , 11 bytes
Pruébalo en línea!
Deja el resultado en la pila, según lo permitido por meta consenso . Agregué
)por el bien de la visualización, pero el programa también imprime implícitamente la parte superior de la pila.fuente
APL (Dyalog) , 32 bytes
Pruébalo en línea!
⍵o⍺⍵.
fuente
SOGL V0.12 , 14 bytes
Pruébalo aquí!
Explicación:
fuente
C,
7978 bytesPruébalo en línea!
fuente
i=s=!++nlugar de++n,i=s=0MATL , 12 bytes
Pruébalo en línea!
Explicación
fuente
Gaia , 11 bytes
Pruébalo en línea!
Deja el resultado en la pila, según lo permitido por meta consenso . Agregué
€.por el bien de la visualización, pero el programa también imprime implícitamente la parte superior de la pila.fuente
Haskell , 59 bytes
-1 byte, gracias a @nimi!
Pruébalo en línea!
fuente
Ohm v2 , 11 bytes
Pruébalo en línea!
fuente
Factor , 88
Búsqueda de fuerza bruta. Es una cita (lambda),
callconxla pila, las hojasnyf(n)la pila.Como una palabra:
fuente
Python 3, 163 bytes
fuente
nooben particular;)Python 3 , 100 bytes
Pruébalo en línea!
Gracias a Jonathan Frech comentario de sobre el intento anterior de python 3, acabo de ampliar mi conocimiento de la sintaxis de python. Nunca hubiera pensado en el truco - ~ i para i + 1, que ahorra dos personajes.
Sin embargo, esa respuesta es 1) no mínima y 2) no funciona para x = 1 (debido a un error off-by-one que es fácil de hacer mientras se trata de brevedad; sugiero que todos los demás verifiquen sus respuestas para esta ventaja ¡caso!).
Explicación rápida:
sum(i+1for i in range(y)if y%-~i<1)es equivalentesum(i for i in range(1,y+1)if y%i<1)pero guarda dos caracteres. Gracias de nuevo al Sr. Frech.d=lambda y:sum(i+1for i in range(y)if y%-~i<1)por lo tanto, devuelve los divisores de y.f=lambda x:min((j,d(j))for j in range(x+1)if x<=d(j))es donde realmente trabajé. Como comparar una tupla funciona en el orden del diccionario, podemos comparar j, d (j) tan fácilmente como podemos comparar j, y esto no nos permite encontrar el mínimo j, almacenarlo en una variable y / luego / calcular el tupla en una operación separada. Además, tenemos que tener <=, no <, inx<=d(j), porque d (1) es 1, por lo que si x es 1 no se obtiene nada. Por eso también necesitamosrange(x+1)y norange(x).Anteriormente había devuelto la tupla, pero luego tengo que subíndicela en f, por lo que se necesitan tres caracteres más.
fuente
f=funciones anónimas ya que son perfectamente aceptables aquí!f=en el recuento de bytes, y es una buena forma de jugar golf en Python. ¡Mira esto para más consejos de golf en Python!q=rangey reemplazandorangeconqen ambos casos existentes. Lamentablemente, esto no lo mejora y dado que lambda es una palabra clave que no puedo usar para eso, tendría que hacer trucos exec () desperdiciando demasiados caracteres.Python 2 , 81 bytes
Pruébalo en línea!
fuente
Java (OpenJDK 8) , 91 bytes
Pruébalo en línea! (tiempo de espera en el tercer caso de prueba)
fuente
Perl 5 , 60 + 1 (
-p) = 61 bytesPruébalo en línea!
Formato de salida:
suma - n
fuente
Clojure, 102 bytes
fuente
PHP, 69 bytes
fuente
Perl 6 , 48 bytes
Pruébalo en línea!
fuente