Kekuatan keempat (Juzuk)

8

Pada tahun 1939 Juzuk menggambarkan cara untuk menghasilkan kekuatan keempat bilangan alami. Kelompokkan bilangan asli seperti ini:

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

Gores setiap kelompok kedua:

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

Jumlah dari n grup yang tersisa adalah n ** 4.

  • Masukan : tidak ada
  • Tugas : cetak kekuatan keempat hingga 100 ** 4, menggunakan metode Juzuk.
  • Keluaran :

    0 (opsional) 1 16 81 ... 100000000

steenslag
sumber
6
Meskipun saya merasa dapat diterima untuk melarang kekhususan bahasa yang membuatnya terlalu mudah untuk menyelesaikan masalah, saya tidak menyukai aturan "gunakan metode Juzuk". Apakah diizinkan untuk mengambil n-1hasil dalam akun saat menghitung untuk n? Apakah diizinkan untuk menyederhanakan jumlah integer menggunakan n(n+1)/2rumus? Kapan itu bukan metode Juzuk lagi?
sam hocevar
Pertanyaan retoris?
steenslag

Jawaban:

3

J, 40 38 ( tidak menjumlahkan yang tidak dibutuhkan)

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

J, 30 (menjumlahkan yang tidak dibutuhkan)

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

J, 33

~.+/\(#~i.200)(+/*2|#)/.1+i.2!200
Eelvex
sumber
Menjumlahkan grup yang akan Anda gores nanti adalah optimasi kodeisasi yang bagus, tetapi dalam konteks "implementasikan dengan cara ini", saya merasa dirampok;)
JB
@JB: baik ... Saya sedang menggunakan metode Juzuk, saya hanya jumlah angka nol :)
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,...

Semoga format output yang sedikit berbeda ok. Mungkin ada cara yang jauh lebih baik untuk menulis ini di Haskell, tapi saya merasa ingin menyelesaikan ini dalam bahasa yang tidak sering saya gunakan.

Michael Kohl
sumber
3

Python 2, 68

Solusi Python yang cepat dan kotor:

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