Backstory
Penafian: Dapat berisi informasi buatan tentang kanguru.
Kanguru melewati beberapa tahap perkembangan. Seiring bertambahnya usia dan semakin kuat, mereka bisa melompat lebih tinggi dan lebih lama, dan mereka bisa melompat lebih banyak sebelum mereka lapar.
Pada tahap 1 , kanguru sangat kecil dan tidak bisa melompat sama sekali. Meskipun demikian, secara konstan membutuhkan makanan. Kita bisa mewakili pola aktivitas kanguru tahap 1 seperti ini.
o
Pada tahap 2 , kanguru dapat membuat lompatan kecil, tetapi tidak lebih dari 2 sebelum lapar. Kita bisa mewakili pola aktivitas kanguru tahap 2 seperti ini.
o o
o o o
Setelah tahap 2 kangguru membaik dengan cepat. Pada setiap tahap selanjutnya, kanguru dapat melompat sedikit lebih tinggi (1 unit dalam representasi grafis) dan dua kali lebih banyak. Misalnya, pola aktivitas kanguru tahap 3 terlihat seperti ini.
o o o o
o o o o o o o o
o o o o o
Semua lompatan itu membutuhkan energi, sehingga kangguru membutuhkan makanan setelah menyelesaikan setiap pola aktivitas. Jumlah persis yang dibutuhkan dapat dihitung sebagai berikut.
Tetapkan setiap o dalam pola aktivitas panggung dan kangguru, tingginya, yaitu angka dari 1 hingga n , di mana 1 bersesuaian dengan tanah dan n ke posisi tertinggi.
Hitung jumlah semua ketinggian dalam pola aktivitas.
Misalnya, pola aktivitas kanguru tahap 3 mencakup ketinggian berikut.
3 3 3 3
2 2 2 2 2 2 2 2
1 1 1 1 1
Kami memiliki lima 1 , delapan 2 , dan empat 3 ; jumlahnya adalah 5 · 1 + 8 · 2 + 4 · 3 = 33 .
Tugas
Tulis program lengkap atau fungsi yang mengambil bilangan bulat positif n sebagai input dan mencetak atau mengembalikan persyaratan nutrisi per aktivitas tahap n kanguru.
Ini adalah kode-golf ; semoga jawaban tersingkat dalam byte menang!
Contohnya
1 -> 1
2 -> 7
3 -> 33
4 -> 121
5 -> 385
6 -> 1121
7 -> 3073
8 -> 8065
9 -> 20481
10 -> 50689
http://www.wolframalpha.com/input/?i=2%5E(n-1)*(n%5E2-1)%2B1
(markup aneh karena URL reguler menjadi kacau)Jawaban:
Jelly , 6 byte
Menggunakan rumus ( n 2 - 1) 2 n - 1 + 1 untuk menghitung setiap nilai. @ Qwerp-Derp cukup berbaik hati untuk memberikan bukti .
Cobalah online! atau Verifikasi semua kasus uji.
Penjelasan
sumber
Coffeescript, 19 byte
Sunting: Terima kasih kepada Dennis karena telah memangkas 6 byte!
Rumus untuk menghasilkan angka Kanguru adalah ini:
Penjelasan rumus:
Jumlah
1
's diK(n)
' s jumlah akhir adalah2^(n - 1) + 1
.Jumlah
n
's diK(n)
' s jumlah akhir adalah2^(n - 1)
, sehingga jumlah semuan
's adalahn * 2^(n - 1)
.Jumlah angka lain (
d
) dalamK(n)
jumlah akhir adalah2^n
, jadi jumlah semuad
akan menjadid * 2^n
.Jadi, jumlah dari semua bilangan lainnya
= (T(n) - (n + 1)) * 2^n
, di manaT(n)
adalah fungsi bilangan segitiga (yang memiliki rumusT(n) = (n^2 + 1) / 2
).Mengganti itu dalam, kita mendapatkan jumlah akhir
Saat kita menjumlahkan semua jumlah, kita dapatkan
K(n)
, yang sama dengan... yang sama dengan rumus di atas.
sumber
n=>(n*n-1<<n-1)+1
Java 7, 35 byte
sumber
Jelly , 4 byte
Cobalah online! atau verifikasi semua kasus uji .
Bagaimana itu bekerja
sumber
Python 2,
2523 byteMenggunakan rumus miles.
Terima kasih kepada Jonathan Allan untuk -2 byte.
sumber
~-x
. Anda dapat menggunakanx-1
juga (tidak lebih pendek), karena pengurangan memiliki prioritas lebih tinggi daripada bergeser.~-x
, jadi saya memutuskan untuk tidak mengubahnya. Yah, sepertinya semua orang lebih sukax-1
, (Dennis juga mengatakan hal itu).-~(x*x-1<<~-x)
untuk catatan, tetapi-1
masih ada, jadi saya tidak suka mencampur kode ...- 1
.Lua, 105 byte
De-golf:
Menghibur masalah!
sumber
Sebenarnya , 8 byte
Cobalah online!
Penjelasan:
Ini hanya menghitung rumus
(n**2 - 1)*(2**(n-1)) + 1
.sumber
GolfScript , 11 byte
Cobalah online!
Terima kasih Martin Ender (8478) karena menghapus 4 byte.
Penjelasan:
sumber
CJam, 11 byte
Cobalah secara Online.
Penjelasan:
sumber
ri
...Mathematica, 15 byte
Tidak ada operator bitshift, jadi kita perlu melakukan eksponensial yang sebenarnya, tetapi kemudian lebih pendek untuk membagi dengan 2 daripada mengurangi eksponen.
sumber
C, 26 byte
Sebagai makro:
Sebagai fungsi (27):
sumber
f(1+2)
.05AB1E , 7 byte
Cobalah online!
Penjelasan
sumber
C #, 18 byte
Fungsi anonim berdasarkan analisis matematis yang sangat baik dari Qwerp-Derp .
Program lengkap dengan uji kasus:
sumber
Batch, 30 byte
Yah, toh itu mengalahkan Java.
sumber
MATL , 7 byte
Menggunakan rumus dari jawaban lain.
Cobalah online!
sumber
Oasis , 9 byte
Saya terkejut tidak ada built-in untuk
2^n
.Cobalah online!
Penjelasan:
sumber
m
sulit, dan kurangnya kreativitas. Juga, banyak operator belum diimplementasikan, karena malas dan penundaan.Racket 33 byte
Menggunakan rumus yang dijelaskan oleh @ Qwerp-Derp
Tidak Disatukan:
Pengujian:
Keluaran:
sumber
Ruby, 21 byte
@ Qwerp-Derp pada dasarnya melakukan pekerjaan berat.
Karena diutamakan dalam ruby, tampaknya kita perlu beberapa parens:
sumber
Scala, 23 byte
Menggunakan bit shift sebagai eksponensial
sumber
Pyth, 8 byte
pyth.herokuapp.com
Penjelasan:
sumber
R, 26 byte
Tanpa malu-malu menerapkan formula
sumber
J , 11 byte
Berdasarkan formula yang sama ditemukan sebelumnya .
Cobalah online!
Penjelasan
sumber
Groovy (22 Bytes)
Tidak diawetkan
n
, tetapi menggunakan formula yang sama dengan yang lainnya dalam kompetisi ini. Disimpan 1 byte dengan pengurangan, karena tanda kurung yang dibutuhkan.Uji
sumber
JS-Forth, 32 byte
Tidak super pendek, tetapi lebih pendek dari Jawa. Fungsi ini mendorong hasilnya ke tumpukan. Ini membutuhkan JS-Forth karena saya gunakan
<<
.Cobalah online
sumber