La suma de los cuadrados de los primeros diez números naturales es,
El cuadrado de la suma de los primeros diez números naturales es,
Por lo tanto, la diferencia entre la suma de los cuadrados de los primeros diez números naturales y el cuadrado de la suma es
Para una entrada dada n, encuentre la diferencia entre la suma de los cuadrados de los primeros n números naturales y el cuadrado de la suma.
Casos de prueba
1 => 0
2 => 4
3 => 22
10 => 2640
24 => 85100
100 => 25164150
Este desafío se anunció por primera vez en el Proyecto Euler # 6 .
Criterios ganadores
No hay reglas sobre cuál debería ser el comportamiento con entrada negativa o cero.
La respuesta más corta gana.
n
?Respuestas:
Jalea ,
54 bytesPruébalo en línea!
¿Cómo?
Implementa∑ni=2(i2(i−1)) ...
fuente
Python 3 ,
2827 bytes-1 gracias a xnor
Pruébalo en línea!
Implementan(n−1)(n+1)(3n+2)/12
Python 2,
2928 bytes:lambda n:(n**3-n)*(3*n+2)/12
fuente
n*~-n**2*
o(n**3-n)*
.APL (Dyalog Unicode) , 10 bytes
Pruébalo en línea!
Cómo funciona
Utiliza el hecho de que "cuadrado de suma" es igual a "suma de cubos".
fuente
(1⊥⍳×⍳×1-⍨⍳)10
.TI-Basic (serie TI-83),
1211 bytesImplementos( n22) (12+ 13 n) . Toma entrada
Ans
: por ejemplo, ejecutar10:prgmX
para calcular el resultado para la entrada10
.fuente
nCr
!Brain-Flak ,
74726864 bytesPruébalo en línea!
Una forma bastante simple de hacerlo con un par de turnos difíciles. Esperemos que alguien encuentre más trucos para hacerlo aún más corto.
fuente
Carbón ,
1210 bytesPruébalo en línea! El enlace es a la versión detallada del código. Explicación:( ∑norte1x )2= ∑norte1X3 so ( ∑norte1x )2- ∑norte1X2= ∑norte1( x3- x2) = ∑norte1( x - 1 ) x2= ∑n - 10 0x ( x + 1 )2 .
fuente
Perl 6 , 22 bytes
Pruébalo en línea!
Utiliza la construcción∑ni = 1(i2( i - 1 ) )
fuente
Japt
-x
,9854 bytesIntentalo
Explicación
fuente
JavaScript, 20 bytes
Pruébalo en línea
fuente
APL (Dyalog), 17 bytes
(Mucho más tiempo) Puerto de Jonathan Allan's Jelly respuesta.
Pruébalo en línea!
fuente
+/¯1↓⍳×1⌽⍳×⍳
APL (Dyalog) , 16 bytes
Pruébalo en línea!
fuente
(+/×⍨)
→1⊥×⍨
según la propina .⍳
interior(×⍨1⊥⍳)-⍳+.×⍳
Mathematica,
2117 bytes-4 bytes gracias a alephalpha .
Pura función. Toma un entero como entrada y devuelve un entero como salida. Simplemente implementa el polinomio, ya que
Sum
s,Range
s,Tr
s, etc. ocupan muchos bytes.fuente
(3#+2)(#^3-#)/12&
#.(#^2-#)&@*Range
implementa otra solución común. (Pero también es 17 bytes.) Y podemos aplicar el algoritmo ingenuo de 18 bytes:Tr@#^2-#.#&@*Range
.Java (JDK) , 23 bytes
Pruébalo en línea!
fuente
dc , 16 bytes
Pruébalo en línea!
fuente
05AB1E , 8 bytes
Explicación:
Pruébalo en línea!
fuente
LDnOsOn-
Fue mi primer intento también.C, C ++,
464037 bytes (#definir),504746 bytes (función)-1 byte gracias a Zacharý
-11 bytes gracias a ceilingcat
Versión macro:
Versión de la función:
Estas líneas se basan en esas 2 fórmulas:
Suma de números entre 1 yn =
n*(n+1)/2
Suma de cuadrados entre 1 y n =
n*(n+1)*(2n+1)/6
Entonces la fórmula para obtener la respuesta es simplemente
(n*(n+1)/2) * (n*(n+1)/2) - n*(n+1)*(2n+1)/6
Y ahora para "optimizar" el recuento de bytes, separamos los paréntesis y movemos las cosas, mientras que las pruebas siempre dan el mismo resultado
(n*(n+1)/2) * (n*(n+1)/2) - n*(n+1)*(2n+1)/6
=>n*(n+1)/2*n*(n+1)/2 - n*(n+1)*(2n+1)/6
=>n*(n+1)*n*(n+1)/4 - n*(n+1)*(2n+1)/6
Observe el patrón
p = n*n+1 = n*n+n
, por lo que en la función, declaramos otra variableint p = n*n+n
y da:p*p/4 - p*(2n+1)/6
Por
p*(p/4-(2*n+1)/6)
lo tanton*(n+1)*(n*(n+1)/4 - (2n+1)/6)
, funciona solo la mitad del tiempo, y sospecho que la división entera es la causa (f(3)
dando 24 en lugar de 22,f(24)
dando 85200 en lugar de 85100, por lo que no podemos factorizar la fórmula de la macro de esa manera, incluso si matemáticamente es lo mismo.Tanto la versión macro como la función están aquí debido a la sustitución macro:
F (3) da
3*3*(3+1)*(3+1)/4-3*(3+1)*(2*3+1)/6 = 22
F (5-2) da
5-2*5-2*(5-2+1)*(5-2+1)/4-5-2*(5-2+1)*(2*5-2+1)/6 = -30
y estropear la precedencia del operador la versión de la función no tiene este problema
fuente
n
con(n)
. Además,F(n) n
=>F(n)n
independientemente.return p*p/4-p*(n-~n)/6
areturn(p/4-(n-~n)/6)*p
.JavaScript (ES6), 22 bytes
Pruébalo en línea!
fuente
Pyth, 7 bytes
Pruébelo en línea aquí .
Utiliza la fórmula en la respuesta de Neil .
fuente
SNOBOL4 (CSNOBOL4) ,
7069 bytesPruébalo en línea!
fuente
Pari / GP , 21 bytes
Pruébalo en línea!
fuente
05AB1E , 6 bytes
Pruébalo en línea!
Explicación
Algunas otras versiones con el mismo número de bytes:
L<ān*O
Ln.āPO
L¦nā*O
fuente
R , 28 bytes
Pruébalo en línea!
fuente
sum(x<-1:scan())^2-sum(x^2)
para 1MathGolf , 6 bytes
Pruébalo en línea!
Calcula∑nortek = 1( k2( k - 1 ) )
Explicación:
fuente
Clojure , 58 bytesPruébalo en línea!
Editar: no entendí la pregunta
Clojure ,
55, 35 bytesPruébalo en línea!
fuente
(apply +
es más corto que(reduce +
.cQuents ,
1715 bytesPruébalo en línea!
Explicación
fuente
APL (NARS), 13 caracteres, 26 bytes
use la fórmula Sum'w = 1..n '(w w (w-1)) posible escribí lo mismo que otros escribieron + o - como "1⊥⍳ × ⍳ × ⍳-1"; prueba:
fuente
Stax , 4 bytes
Ejecutar y depurarlo
Para todos los
k
enteros positivos hasta la entrada, agreguek^2 * (k-1)
.fuente
QBASIC,
4544 bytes¡Ir a las matemáticas puras ahorra 1 byte!
Prueba ESO en línea!
Respuesta previa basada en bucle
Pruébalo en línea!
Tenga en cuenta que REPL está un poco más expandido porque el intérprete falla de lo contrario.
fuente
JAEL ,
1310 bytesPruébalo en línea!
Explicación (generada automáticamente):
fuente
05AB1E , 6 bytes
Pruébalo en línea!
Explicación:
Æ
no es útil a menudo, pero este es el momento de brillar. Esto supera a los ingenuosLOnILnO-
en dos bytes completos.fuente