pengantar
The tanda nomor adalah baik +
, atau -
untuk setiap non-nol bilangan bulat. Nol itu sendiri tidak bertanda ( +0
sama dengan -0
). Dalam urutan berikut, kita akan bergantian antara tanda positif , nol dan tanda negatif . Urutannya dimulai dengan 1
, jadi kami menulis 1
dengan tanda positif, dengan nol (yang ini aneh, tapi kami hanya mengalikan angka dengan 0) dan tanda negatif:
1, 0, -1
Nomor berikutnya adalah 2
, dan kami melakukan hal yang sama lagi:
2, 0, -2
Urutan akhirnya adalah:
1, 0, -1, 2, 0, -2, 3, 0, -3, 4, 0, -4, 5, 0, -5, 6, 0, -6, 7, 0, -7, ...
Atau bentuk yang lebih mudah dibaca:
a(0) = 1
a(1) = 0
a(2) = -1
a(3) = 2
a(4) = 0
a(5) = -2
a(6) = 3
a(7) = 0
a(8) = -3
a(9) = 4
...
Tugas
Diberikan bilangan bulat n -negatif , menghasilkan istilah ke- n dari urutan di atas. Anda dapat memilih apakah Anda menggunakan versi tanpa indeks atau satu indeks .
Kasus uji:
Diindeks nol:
a(0) = 1
a(11) = -4
a(76) = 0
a(134) = -45
a(296) = -99
Atau jika Anda lebih suka satu-diindeks:
a(1) = 1
a(12) = -4
a(77) = 0
a(135) = -45
a(297) = -99
Ini adalah kode-golf , jadi pengiriman dengan jumlah byte terkecil menang!
[0, 0, 0, -1, 0, 1...
1
.Jawaban:
Jelly, 7 byte
Diindeks nol. Uji kasus di sini.
Penjelasan:
sumber
JavaScript ES6, 18 byte
Ternyata sangat mirip dengan jawaban @ LeakyNun tapi saya tidak melihatnya sampai setelah saya memposting milik saya.
Penjelasan dan Tidak Disatukan
-~
adalah singkatanMath.ceil
, atau pembulatan:Tampilkan cuplikan kode
sumber
Math.ceil
dan-~
berbeda;Math.ceil(1) == 1
sedangkan-~1 == 2
n=>~(n/3)*~-(n%3)
MarioLANG,
9381 bytesatu-diindeks
Cobalah secara Online
Penjelasan:
kita mulai dengan mengambil imput
yang memberi kita
kita kemudian mengurangi byte kiri dan menambah byte kanan dengan
kita berakhir dengan
kami kemudian mengatur loop
loop akan pergi hingga memori terlihat seperti
maka kita hanya perlu menampilkan hasilnya
sumber
;(
dan>:(
. Meski, dua kali[<:
bisa dianggap sedikit bahagia. ; PPython 2, 24 byte
Program lengkap:
sumber
MATL,
1512 byteIni menggunakan pengindeksan berbasis satu.
Cobalah online!atau memverifikasi kasus uji
Penjelasan:
sumber
Q3/Xk-1:1G_)*
mungkin bekerja lebih baik. Ini mungkin dapat dimodifikasi lebih jauh untuk pengindeksan berbasis 1.Haskell, 27 byte
Solusi 28 byte yang sedikit lebih menarik:
(Keduanya
0
-indeks)sumber
MATL , 8 byte
Hasilnya berbasis 1.
Cobalah online!
Penjelasan
Ini membangun array 2D
dan kemudian menggunakan pengindeksan linear untuk mengekstrak istilah yang diinginkan. Linear pengindeksan berarti indeks turun, kemudian di (sehingga dalam array di atas entri pertama dalam rangka linear adalah
1
,0
,-1
,2
,0
, ...)sumber
Perl 5, 22 byte
21 plus satu untuk
-p
:Menggunakan pengindeksan berbasis 1.
Penjelasan:
-p
mengatur variabel$_
sama dengan input. Kode kemudian set sama dengan$_%3
elemen th, dibagi 3, dari daftar berbasis 0(-$_,$_+2)
(di mana%
modulo). Perhatikan bahwa jika$_%3
dua, maka tidak ada elemen tersebut, dan pembagian berikutnya dengan 3 menandakan undefined menjadi 0.-p
lalu mencetak$_
.sumber
Bash,
2825 Bytessumber
Perl 6 ,
2623 byte(Yang lebih pendek diterjemahkan dari jawaban lain)
Penjelasan (dari yang pertama):
Uji:
sumber
J,
1915 byteMungkin perlu bermain golf lebih jauh ...
1-diindeks.
Tidak Terkumpul:
Di mana
>>
berarti input (STDIN) dan<<
berarti output (STDOUT).sumber
Pyke,
87 byte (versi lama)Coba di sini! - Perhatikan bahwa tautan mungkin tidak akan bertahan lama
Versi terbaru
Coba di sini!
sumber
J, 27 byte
Meskipun bukan golf, saya lebih menyukainya, karena menggunakan agenda.
Ini adalah dekomposisi pohonnya:
Ini sangat mirip dengan jawaban J Kenny, karena ia memilih besarnya dan tanda, tetapi berbeda karena saya menggunakan agenda untuk memilih tanda.
sumber
MATL, 8 byte
Solusi ini menggunakan pengindeksan berbasis 1 ke dalam urutan.
Cobalah secara Online
Versi modifikasi menunjukkan semua kasus uji
Penjelasan
sumber
Pyth, 10 byte
Cobalah online!
Penjelasan:
Catatan: Saya telah mengasumsikan urutan tanpa indeks.
sumber
*@(1ZtZ)%Q3h/Q3
(1ZtZ)
=-L1 2
Sebenarnya 10 byte
Cobalah online!
Penjelasan:
sumber
05AB1E, 7 byte
Kode:
Dijelaskan:
sumber
GeoGebra, 44 byte
di mana
n
satu-diindeks.Penjelasan:
Tidak perlu untuk menghasilkan semua kembar tiga melalui
{n, 0, -n}
, tetapi lebih pendek daripada menulisceil(n/3)
atau sesuatu untuk efek itu. Catatan yangn
harus didefinisikan untuk membuat objek ini (jika tidak ditentukan pada saat ini dijalankan, GeoGebra akan meminta Anda untuk membuat slider untukn
).sumber
n
, masukkan sesuatu sepertin=297
(ini akan memberi Anda slider yang dikonfigurasi dengan baik). Kemudian rekatkan rumus ke kotak Input, yang seharusnya sekarang berada di bawahn
. (Pastikan untuk menekan return;) Formula harus mengevaluasi ke urutann
ke-5 dari urutan, dan itu harus berubah ketika Anda memindahkan slider.Labirin ,
171514 byteDisimpan 3 byte menggunakan ide Sok menggunakan
1-(n%3)
bukan~(n%3-2)
.Program berakhir dengan kesalahan (pembagian dengan nol), tetapi pesan kesalahan pergi ke STDERR.
Cobalah online!
Penjelasan
Program ini sepenuhnya linier, meskipun beberapa kode dijalankan terbalik pada akhirnya.
Penunjuk instruksi sekarang menyentuh jalan buntu dan berbalik, sehingga mulai menjalankan kode dari ujung:
sumber
Erlang, 40 byte
Sayangnya Erlang tidak memiliki operator modulo '%' dan 'rem' membutuhkan spasi, bahkan sebelum 3.
sumber
Hexagony , 25 byte
Atau, dalam format yang tidak diperkecil:
Cobalah online!
Perampokan pertama saya ke Hexagony, jadi saya yakin saya belum melakukan ini sedekat seefisien mungkin ...
Hitung
-(n%3 - 1)
pada satu tepi memori,n/3 + 1
pada sisi yang berdekatan, lalu gandakan bersama.sumber
R, 28 byte
Sepertinya ini adalah variasi dari sebagian besar jawaban di sini. Berbasis nol.
Yang menyenangkan tentang ini adalah ia menangani banyak input
Awalnya saya ingin melakukan hal berikut, tetapi tidak bisa memotong byte tambahan.
Menggunakan
rbind
untuk menambahkan 0 dan negatif ke kisaran 1 untukn
kemudian mengembalikan istilahn
'th (berbasis satu).sumber
Batch (Windows), 86 byte
Alternate.bat
Program ini dijalankan di
Alternate.bat n
manan
nomor yang ingin Anda panggil fungsi.sumber
APL, 12 karakter
0 3⊤
adalah APLdivmod 3
.sumber
Java 7,
383736 byteGolf pertamaku, bersikaplah lembut
Coba di sini! (termasuk kasus uji)
Sunting: Saya salah hitung, dan juga bermain satu karakter lagi dengan mengganti
(-i%3+1)
dengan(1-i%3)
.sumber
return
, dan menggunakan lambda Java 8.Retina, 45 byte
Cobalah online!
Suite uji.
Mengambil input / output dalam basis-sepuluh. 1-diindeks.
Input unary, output basis-sepuluh, 1-diindeks: 40 byte
Cobalah online!
Suite uji.
sumber
MATLAB / Oktaf, 27 byte
Ini menciptakan fungsi anonim yang dapat dipanggil menggunakan
ans(n)
. Solusi ini menggunakan pengindeksan berbasis 1.Semua uji kasus
sumber
Mathematica 26 byte
Dengan 4 byte disimpan berkat Martin Ender.
Menggunakan pendekatan yang sama dengan Suever.
sumber
Oktaf, 23 byte
Tanpa mod kontra ...
Menggunakan sihir pengindeksan berbasis 1.
Penjelasan
Menciptakan fungsi anonim yang akan:
Setelah langkah multiplikasi kita akan memiliki matriks 3xn seperti itu (untuk n = 12):
Membuat
n
kolom terlalu banyak, tetapi jumlah yang nyaman yang dijamin cukup besar. Pengindeksan linear menghitung mundur setiap kolom dari kiri ke kanan, sehingga elemen pada indeks linier4
akan2
.Semua uji kasus pada ideone .
sumber
dc, 10
Menggunakan pengindeksan berbasis 1.
sumber