Diberi nomor input positif n
, buat spiral angka dari 1
hingga n^2
, dengan 1
di kiri atas, berputar ke dalam searah jarum jam. Ambil jumlah diagonal (jika n
ganjil, angka tengah n^2
dihitung dua kali) dan hasilkan angka itu.
Contoh untuk n = 1
:
1
(1) + (1) = 2
Contoh untuk n = 2
:
1 2
4 3
(1+3) + (4+2) = 4 + 6 = 10
Contoh untuk n = 4
:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
(1+13+15+7) + (10+16+14+4) = 36 + 44 = 80
Contoh dari n = 5
:
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
(1+17+25+21+9) + (13+23+25+19+5) = 73 + 85 = 158
Aturan dan klarifikasi lebih lanjut
- Ini adalah OEIS A059924 dan ada beberapa solusi bentuk tertutup pada halaman itu.
- Input dan output dapat dianggap sesuai dengan tipe integer asli bahasa Anda.
- Input dan output dapat diberikan dalam format apa pun yang nyaman .
- Anda dapat memilih untuk 0-indeks atau 1-indeks, karena saya di sini dalam contoh saya, untuk pengiriman Anda. Silakan sebutkan yang Anda lakukan.
- Program lengkap atau fungsi dapat diterima. Jika suatu fungsi, Anda dapat mengembalikan output daripada mencetaknya.
- Jika memungkinkan, harap sertakan tautan ke lingkungan pengujian online sehingga orang lain dapat mencoba kode Anda!
- Celah standar dilarang.
- Ini adalah kode-golf sehingga semua aturan golf biasa berlaku, dan kode terpendek (dalam byte) menang.
+3-3*(-1)^n
tidak benar-benar sama dengan6
, meskipun perbedaannya hilang dalam pembagian integer.+3-3*(-1^n)
yang sama dengan+6
. Saya akan memperbarui jawaban saya untuk membuatnya lebih jelas.+6
jikan
aneh, tapi+0
ketikan
bahkan3-3*(-1^n)
selalu6
tetapi3-3*(-1)^n
memiliki perilaku bergantian itu. Rumus asli memiliki yang terakhir, yang membuat penggunaan pembagian bilangan bulat tidak perlu, karena selalu dapat dibagi oleh 12Python 2 , 30 byte
Menyimpan beberapa byte dengan porting pendekatan Giuseppe .
Cobalah online!
Python 2 ,
3634 byteDisimpan beberapa byte lagi berkat @LeakyNun .
Cobalah online!
sumber
Mathematica, 19 byte
Anda dapat menjalankannya dengan sintaks berikut:
Di mana
5
bisa diganti dengan input.Anda dapat mencobanya di Wolfram Sandbox (Salin-Tempel + Sel Evaluasi)
sumber
Mathematica, 19 byte
Cobalah online!
Menyimpan beberapa byte dengan porting pendekatan Giuseppe.
Mathematica, 58 byte
Saya selalu menikmati pertanyaan dengan jawaban yang diberikan thanx to oeis (untuk pertanyaan dan jawaban yang bagus)
sumber
Jelly ,
1110 byteTerima kasih 1 byte untuk Jonathan Allan.
Cobalah online!
sumber
8,-3,4,3
->⁽ø\DN2¦
untuk menyimpan satu byteMATL , 21 byte
Cobalah online!
sumber
UQG1YL-tP,wXds]+
Cubix , 33 byte
Cobalah online!
versi kubus:
Implements algoritma yang sama seperti saya jawaban R . Saya menduga ini bisa diturunkan.
sumber
SOGL V0.12 ,
251514 byteCoba Di Sini!
Terjemahan dari jawaban Python Mr.Xcoder yang menggunakan pendekatan Giuseppe . SOGL tidak memenangkan apa pun di sini: p
sumber
Java 8, 24 byte
Pelabuhan @Giuseppe R jawaban 's .
Perhatikan bahwa
/6
lantai secara default saat menghitung dengan bilangan bulat di Jawa.Coba di sini.
sumber
Excel,
3530 byteDisimpan 5 byte menggunakan pendekatan Giuseppe .
Percobaan pertama:
Berevolusi dari implementasi langsung formula dari OEIS (37 byte):
+3-3*(-1)^A1
logika dapat diubah menjadi6*MOD(A1,2)
.Tidak menyimpan byte, tetapi memungkinkan penghapusan faktor umum untuk 2 byte.
sumber
05AB1E ,
1312 byteMenggunakan teknik konversi basis yang sama dengan pengiriman Jelly Leaky Nun
Mungkinada cara yang lebih pendek untuk membuat daftar koefisien?-1 byte berkat Datboi (gunakan spasi dan bungkus untuk mengalahkan kompresi (!))
Cobalah online!
Bagaimana?
13-an saya ...
Semua menggunakan kompresi untuk menemukan daftar koefisien.
sumber
8 3(4 3)¹β6÷
untuk mengamankan 1 byte (meskipun tidak ada kompresi mewah)Pyth , 17 byte
Coba di sini.
sumber
Pyke , 14 byte
Coba di sini!
sumber
05AB1E , 14 byte
Cobalah online!
sumber
MATL , 12 byte
Cobalah di MATL Online!
Penjelasan
Pendekatan yang sama dengan jawaban Giuseppe .
sumber
Gaia , 14 byte
Cobalah online!
sumber