Die vierte Potenz (Juzuk)

8

1939 beschrieb Juzuk einen Weg, um die vierte Potenz natürlicher Zahlen zu erzeugen. Gruppieren Sie die natürlichen Zahlen wie folgt:

1   2 3   4 5 6   7 8 9 10   11 12 13 14 15   ...

Kratz jede zweite Gruppe:

1   4 5 6   11 12 13 14 15 ...

Die Summe der n verbleibenden Gruppen ist n ** 4.

  • Eingabe : keine
  • Aufgabe : Drucke die vierten Potenzen bis zu 100 ** 4 nach Juzuks Methode.
  • Ausgabe :

    0 (optional) 1 16 81 ... 100000000

steenslag
quelle
6
Ich finde es zwar akzeptabel, Sprachspezifitäten zu verbieten, die es zu einfach machen, ein Problem zu lösen, aber ich mag diese Regel „Juzuks Methode verwenden“ nicht. Darf das n-1Ergebnis bei der Berechnung berücksichtigt werden n? Darf man mit der n(n+1)/2Formel ganzzahlige Summen vereinfachen ? Wann ist es nicht mehr Juzuks Methode?
Sam Hocevar
Rhetorische Fragen?
Steenslag

Antworten:

3

J, 40 38 ( nicht unnötig summierend)

+/\+/"1(+:i.100){(#~i.201)[/.>:i.20100

J, 30 (Summierung nicht erforderlich)

+/\_2{.\(#~i.201)+//.>:i.20100
JB
quelle
4

J, 33

~.+/\(#~i.200)(+/*2|#)/.1+i.2!200
Eelvex
quelle
Das Zusammenfassen der Gruppen, die Sie später kratzen werden, ist eine nette Optimierung der Codegröße, aber in einem Kontext, in dem Sie es auf diese Weise implementieren, fühle ich mich ausgeraubt;)
JB
@JB: na ja ... ich bin Juzuk Methode verwenden, ich Nullen nur summieren :)
Eelvex
3

Haskell, 78

print[sum$concat$take x[take x$drop(sum[1..x-1])[1..]|x<-[1,3..]]|x<-[0..100]]
[0,1,16,81,256,625,1296,2401,4096,6561,10000,14641,20736,28561,38416,50625,65536,...

Hoffe die etwas andere Ausgabeformatierung ist ok. Es gibt wahrscheinlich einen viel besseren Weg, dies in Haskell zu schreiben, aber ich wollte dies in einer Sprache lösen, die ich nicht oft benutze.

Michael Kohl
quelle
3

Python 2, 68

Schnelle und schmutzige Python-Lösung:

s=0
for n in range(100):s+=sum(range(2*n*n+n+1,2*n*n+3*n+2));print s
Hallvabo
quelle