Summe quadratische Differenz

15

Die Summe der Quadrate der ersten zehn natürlichen Zahlen ist 12+22++102=385

Das Quadrat der Summe der ersten zehn natürlichen Zahlen ist,

(1+2+...+10)2=552=3025

Daher ist die Differenz zwischen der Summe der Quadrate der ersten zehn natürlichen Zahlen und dem Quadrat der Summe

3025385=2640

Finden Sie für eine gegebene Eingabe n die Differenz zwischen der Summe der Quadrate der ersten n natürlichen Zahlen und dem Quadrat der Summe.

Testfälle

1       => 0
2       => 4
3       => 22
10      => 2640
24      => 85100
100     => 25164150

Diese Herausforderung wurde erstmals bei Project Euler # 6 angekündigt .

Gewinnkriterien

  • Es gibt keine Regeln für das Verhalten bei negativer oder Null-Eingabe.

  • Die kürzeste Antwort gewinnt.

Eduardo Hoefel
quelle
4
Diese Herausforderung erfordert ein
Gewinnkriterium
2
Dies ist eine Teilmenge dieser Frage
Caird Coinheringaahing
1
Kann die Sequenz mit 0 indiziert werden? dh die natürlichen Zahlen bis zu n?
Jo King
3
@Enigma Ich glaube wirklich nicht, dass dies ein Duplikat des Ziels ist, da viele Antworten hier nicht einfach als Antworten darauf zu werten sind. Das fügt also etwas hinzu.
Jonathan Allan

Antworten:

10

Gelee ,  5  4 Bytes

Ḋ²ḋṖ

Probieren Sie es online!

Wie?

Implementiert ...i=2n(i2(i1))

Ḋ²ḋṖ - Link: non-negative integer, n
Ḋ    - dequeue (implicit range)       [2,3,4,5,...,n]
 ²   - square (vectorises)            [4,9,16,25,...,n*n]
   Ṗ - pop (implicit range)           [1,2,3,4,...,n-1]
  ḋ  - dot product                    4*1+9*2+16*3+25*4+...+n*n*(n-1)
Jonathan Allan
quelle
8

Python 3 ,  28  27 Bytes

-1 danke an xnor

lambda n:(n**3-n)*(n/4+1/6)

Probieren Sie es online!

Implementiert n(n1)(n+1)(3n+2)/12


Python 2,  29  28 Bytes:lambda n:(n**3-n)*(3*n+2)/12

Jonathan Allan
quelle
1
Sie können ein Byte mit n*~-n**2*oder rasieren (n**3-n)*.
Xnor
8

APL (Dyalog Unicode) , 10 Bytes

1⊥⍳×⍳×1-⍨⍳

Probieren Sie es online!

Wie es funktioniert

1⊥⍳×⍳×1-⍨⍳
  ⍳×⍳×1-⍨⍳  Compute (x^3 - x^2) for 1..n
1          Sum

Verwendet die Tatsache, dass "Quadrat der Summe" gleich "Summe der Würfel" ist.

Bubbler
quelle
Für mich ist 1⊥⍳ × ⍳ × 1-⍨⍳ keine Funktion; Ich habe versucht 1⊥⍳ × ⍳ × 1-⍨⍳10 und für mich nicht kompilieren ...
RosLuP
1
@RosLuP Sie müssen es zuerst einer Variablen zuweisen (wie ich es im TIO-Link getan habe) oder es in ein Paar Klammern einschließen, wie (1⊥⍳×⍳×1-⍨⍳)10.
Bubbler
7

TI-Basic (TI-83-Serie), 12 bis 11 Byte

sum(Ans² nCr 2/{2,3Ans

Anbaugeräte (n22)(12+13n). Nimmt Eingaben aufAns: Zum Beispiel ausführen10:prgmX, um das Ergebnis für die Eingabe zu berechnen10.

Mischa Lawrow
quelle
Gute Verwendung von nCr!
Lynn
6

Brain-Flak , 74 72 68 64 Bytes

((([{}])){({}())}{})([{({}())({})}{}]{(({}())){({})({}())}{}}{})

Probieren Sie es online!

Ganz einfach mit ein paar kniffligen Schichten. Hoffentlich findet jemand weitere Tricks, um dies noch kürzer zu machen.

Weizen-Assistent
quelle
5

Kohle , 12 10 Bytes

IΣEN×ιX⊕ι²

Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erklärung: (1nx)2=1nx3 so (1nx)2-1nx2=1n(x3-x2)=1n(x-1)x2=0n-1x(x+1)2.

   N        Input number
  E         Map over implicit range i.e. 0 .. n - 1
        ι   Current value
       ⊕    Incremented
         ²  Literal 2
      X     Power
     ι      Current value
    ×       Multiply
 Σ          Sum
I           Cast to string
            Implicitly print
Neil
quelle
5

Perl 6 , 22 Bytes

{sum (1..$_)>>²Z*^$_}

Probieren Sie es online!

Verwendet die Konstruktion ich=1n(ich2(ich-1))

Scherzen
quelle
4

Japt -x, 9 8 5 4 Bytes

õ²í*

Versuch es


Erläuterung

õ        :Range [1,input]
 ²       :Square each
  í      :Interleave with 0-based indices
   *     :Reduce each pair by multiplication
         :Implicit output of the sum of the resulting array
Zottelig
quelle
3

APL (Dyalog), 17 Bytes

{+/(¯1↓⍵)×1↓×⍨⍵}⍳

(Viel länger) Port of Jonathan Allans Jelly-Antwort.

Probieren Sie es online!

Quintec
quelle
Gehen Sie stillschweigend und kombinieren Sie die Tropfen:+/¯1↓⍳×1⌽⍳×⍳
Adám
3

APL (Dyalog) , 16 Bytes

((×⍨+/)-(+/×⍨))⍳

Probieren Sie es online!

 (×⍨+/)            The square  self) of the sum (+ fold)
       -           minus
        (+/×⍨)     the sum of the square
(             )⍳   of [1, 2,  input].
Lynn
quelle
(+/×⍨)1⊥×⍨nach tipp .
Adám
1
Ein weiteres Byte könnte eingespart werden, indem das Innere (×⍨1⊥⍳)-⍳+.×⍳
beibehalten wird
3

Mathematica, 21 17 Bytes

-4 Bytes dank Alephalpha .

(3#+2)(#^3-#)/12&

Funktion pur. Nimmt eine Ganzzahl als Eingabe und gibt eine Ganzzahl als Ausgabe zurück. Implementiert nur das Polynom, da Sums, Ranges, Trs usw. viele Bytes beanspruchen.

LegionMammal978
quelle
(3#+2)(#^3-#)/12&
Alephalpha
@alephalpha Danke!
LegionMammal978
Es ist möglich, dorthin zu gelangen, ohne nur das Polynom auszuwerten: #.(#^2-#)&@*RangeImplementiert eine andere gängige Lösung. (Aber es ist auch 17 Bytes.) Und wir können den naiven Algorithmus in 18 Bytes implementieren: Tr@#^2-#.#&@*Range.
Mischa Lawrow
3

05AB1E , 8 Bytes

ÝDOnsnO-

Erläuterung:

ÝDOnsnO-     //Full program
Ý            //Push [0..a] where a is implicit input
 D           //Duplicate top of stack
  On         //Push sum, then square it
    s        //Swap top two elements of stack
     nO      //Square each element, then push sum
       -     //Difference (implicitly printed)

Probieren Sie es online!

Cowabunghole
quelle
LDnOsOn-war auch mein erster versuch.
Magic Octopus Urn
3

C, C ++, 46 40 37 Bytes (#define), 50 47 46 Bytes (function)

-1 Byte dank Zacharý

-11 bytes dank ceilingcat

Makroversion:

#define F(n)n*n*~n*~n/4+n*~n*(n-~n)/6

Funktionsversion:

int f(int n){return~n*n*n*~n/4+n*~n*(n-~n)/6;}

Diese Zeilen basieren auf diesen 2 Formeln:

Summe der Zahlen zwischen 1 und n = n*(n+1)/2
Summe der Quadrate zwischen 1 und n =n*(n+1)*(2n+1)/6

Die Formel für die Antwort lautet also einfach (n*(n+1)/2) * (n*(n+1)/2) - n*(n+1)*(2n+1)/6

Und jetzt, um die Byteanzahl zu "optimieren", brechen wir die Klammern und verschieben die Daten, während das Testen immer das gleiche Ergebnis liefert

(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

Beachten Sie das Muster p = n*n+1 = n*n+n, also deklarieren wir in der Funktion eine andere Variable int p = n*n+nund es gibt:

p*p/4 - p*(2n+1)/6

Für p*(p/4-(2*n+1)/6)und so n*(n+1)*(n*(n+1)/4 - (2n+1)/6)funktioniert es nur die Hälfte der Zeit, und ich vermute, dass die Ganzzahldivision die Ursache ist ( f(3)24 statt 22, f(24)85200 statt 85100, also können wir die Formel des Makros nicht so faktorisieren, auch wenn es mathematisch so ist das Gleiche.

Sowohl die Makro- als auch die Funktionsversion sind hier aufgrund der Makrosubstitution:

F (3) ergibt 3*3*(3+1)*(3+1)/4-3*(3+1)*(2*3+1)/6 = 22
F (5-2) ergibt5-2*5-2*(5-2+1)*(5-2+1)/4-5-2*(5-2+1)*(2*5-2+1)/6 = -30

und versauen mit dem Operator Vorrang. Die Funktionsversion hat dieses Problem nicht

HatsuPointerKun
quelle
1
Sie könnten das Problem mit den Makros auf Kosten von vielen Bytes durch Ersetzen alle reparieren nmit (n). Auch F(n) n=> F(n)nunabhängig.
Zacharý
Es ist möglich, neu return p*p/4-p*(n-~n)/6zu ordnen return(p/4-(n-~n)/6)*p.
Zacharý
@ Zacharý Nein, es gibt mir manchmal schlechte Ergebnisse wie 24 anstelle von 22 für die Eingabe "3" oder 85200 anstelle von 85100 für die Eingabe "24". Ich vermute, dass Integer Division die Ursache dafür ist
HatsuPointerKun
Puh, vergiss das immer.
Zacharý
2

Pyth, 7 Bytes

sm**hdh

Probieren Sie es hier online aus .

Verwendet die Formel in Neils Antwort .

sm**hdhddQ   Implicit: Q=eval(input())
             Trailing ddQ inferred
 m       Q   Map [0-Q) as d, using:
    hd         Increment d
   *  hd       Multiply the above with another copy
  *     d      Multiply the above by d
s            Sum, implicit print 
Sok
quelle
2

05AB1E , 6 Bytes

LnDƶαO

Probieren Sie es online!

Erläuterung

L         # push range [1 ... input]
 n        # square each
  D       # duplicate
   ƶ      # lift, multiply each by its 1-based index
    α     # element-wise absolute difference
     O    # sum

Einige andere Versionen mit derselben Byteanzahl:

L<ān*O
Ln.āPO
L¦nā*O

Emigna
quelle
2

R , 28 Bytes

x=1:scan();sum(x)^2-sum(x^2)

Probieren Sie es online!

Sumner18
quelle
3
sum(x<-1:scan())^2-sum(x^2)für -1
J.Doe
2

MathGolf , 6 Bytes

{î²ï*+

Probieren Sie es online!

k=1n(k2(k-1))

Erläuterung:

{       Loop (implicit) input times
 î²     1-index of loop squared
    *   Multiplied by
   ï    The 0-index of the loop
     +  And add to the running total
Scherzen
quelle
2

Clojure , 58 Bytes

(fn[s](-(Math/pow(reduce + s)2)(reduce +(map #(* % %)s))))

Probieren Sie es online!


Edit: Ich habe die Frage falsch verstanden

Clojure , 55 , 35 Bytes

#(* %(+ 1 %)(- % 1)(+(* 3 %)2)1/12)

Probieren Sie es online!

TheGreatGeek
quelle
1
Danke, dass du das behoben hast. Und nur ein Köpfchen nach deinem letzten Eintrag (apply +ist kürzer als (reduce +.
Carcigenicate
@Carcigenicate Danke!
TheGreatGeek
1
Könnten Sie Ihren Permalink bearbeiten, um einen der Testfälle auszuführen? So wie es ist, helfe ich Menschen, die Clojure nicht kennen, nicht.
Dennis
2

cQuents , 17 15 Bytes

b$)^2-c$
;$
;$$

Probieren Sie es online!

Erläuterung

 b$)^2-c$     First line
:             Implicit (output nth term in sequence)
 b$)          Each term in the sequence equals the second line at the current index
    ^2        squared
      -c$     minus the third line at the current index

;$            Second line - sum of integers up to n
;$$           Third line - sum of squares up to n
Stephen
quelle
1

APL (NARS), 13 Zeichen, 26 Byte

{+/⍵×⍵×⍵-1}∘⍳

benutze die Formel Sum'w = 1..n '(w w (w-1)) möglich ich habe dasselbe geschrieben wie einige andere geschrieben + oder - als "1⊥⍳ × ⍳ × ⍳-1"; Prüfung:

  g←{+/⍵×⍵×⍵-1}∘⍳
  g 0
0
  g 1
0
  g 2
4
  g 3
22
  g 10
2640
RosLuP
quelle
1

QBASIC, 45 44 Bytes

Rein rechnen spart 1 Byte!

INPUT n
?n^2*(n+1)*(n+1)/4-n*(n+1)*(2*n+1)/6

Versuchen Sie das online!


Vorherige, schleifenbasierte Antwort

INPUT n
FOR q=1TO n
a=a+q^2
b=b+q
NEXT
?b^2-a

Probieren Sie es online!

Beachten Sie, dass die REPL etwas erweitert ist, da der Interpreter sonst ausfällt.

steenbergh
quelle
1

JAEL , 13 10 Bytes

#&àĝ&oȦ

Probieren Sie es online!

Erklärung (automatisch generiert):

./jael --explain '#&àĝ&oȦ'
ORIGINAL CODE:  #&àĝ&oȦ

EXPANDING EXPLANATION:
à => `a
ĝ => ^g
Ȧ => .a!

EXPANDED CODE:  #&`a^g&o.a!

COMPLETED CODE: #&`a^g&o.a!,

#          ,            repeat (p1) times:
 &                              push number of iterations of this loop
  `                             push 1
   a                            push p1 + p2
    ^                           push 2
     g                          push p2 ^ p1
      &                         push number of iterations of this loop
       o                        push p1 * p2
        .                       push the value under the tape head
         a                      push p1 + p2
          !                     write p1 to the tapehead
            ␄           print machine state
Eduardo Hoefel
quelle
1

05AB1E , 6 Bytes

LDOšnÆ

Probieren Sie es online!

Erläuterung:

           # implicit input (example: 3)
L          # range ([1, 2, 3])
 DOš       # prepend the sum ([6, 1, 2, 3])
    n      # square each ([36, 1, 4, 9])
     Æ     # reduce by subtraction (22)
           # implicit output

Æist nicht oft nützlich, aber dies ist die Zeit zu glänzen. Dies übertrifft die Naivität LOnILnO-um zwei ganze Bytes.

Grimmig
quelle