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 x
como entrada, calcule el número más bajo n
que 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.
n
s divisores? Probablemente querrá declarar eso explícitamente.n
yf(n)
, pero no lo dice en ninguna parte de la especificación.f(1000) = 48
? La suma del divisor48
es124
Respuestas:
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
N
se 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
1
es necesario y cómo¥
actúa?1
le dice#
que comience a contar desde 1 y¥
toma los dos enlaces anteriores (Æs
y>
) 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.
(
Select
Devuelve 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,@ }a
es 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
), losx
suma y ese resultado se asigna a la variableV
.<
comprueba siU
es 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
reduce
puede reemplazarse porapply
, también la funcióne
podrí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=!++n
lugar de++n,i=s=0
MATL , 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),
call
conx
la pila, las hojasn
yf(n)
la pila.Como una palabra:
fuente
Python 3, 163 bytes
fuente
noob
en 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=range
y reemplazandorange
conq
en 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