Tantangan Anda hari ini adalah untuk menampilkan istilah tertentu dari urutan yang menyebutkan semua bilangan bulat. Urutannya adalah sebagai berikut: Jika kita memiliki fungsi diindeks 0 menghasilkan urutan f(n)
dan ceil(x)
fungsi langit-langit, maka f(0) = 0
; abs(f(n)) = ceil(n/2)
; sign(f(n))
positif ketika n
dan ceil(n/2)
keduanya genap atau ganjil.
Untuk membantu memahami urutan ini, beberapa istilah pertama adalah sebagai berikut: 0 1 -1 -2 2 3 -3 -4 4 5 -5 -6 6 7 -7...
Tugas Anda adalah menulis sebuah program yang membutuhkan bilangan bulat n
dan menampilkan urutan n
ke-3 dari urutan tersebut. Input mungkin hanya 0 atau 1-diindeks saja.
Kasus uji (0-diindeks):
0 => 0
1 => 1
2 => -1
3 => -2
4 => 2
5 => 3
Ini adalah kode-golf , byte terkecil menang!
Jawaban:
SOGL V0.12 ,
86 byteCoba Di Sini! atau coba nomor pasangan pertama (diubah sedikit agar berfungsi)
0-diindeks.
Penjelasan:
Atau lebih sederhana:
sumber
».»
sedang meneleponI».»⌡±
.Python 2 ,
2624 byteCobalah online!
sumber
-~-(x&2)
untuk penyebut terakhir.JavaScript (ES6), 18 byte
1-diindeks.
Demo
Tampilkan cuplikan kode
sumber
C, 25 byte
sumber
f(n){n=~n/2*~-(n&2);}
gcc -O0
untuk x86-64 memang terjadi untuk mengkompilasi versi @ cleblanc dengan instruksi yang meninggalkan hasil multiplyeax
( godbolt.org/g/dztKPV ), tetapi kemudian itu akan menjadix86-64 gcc -O0
jawaban, bukan jawaban C. Saya tidak memilih-C jawaban yang berhenti dengan optimasi diaktifkan, terutama tidak ekspresi terakhir yang bodoh sebagai omong kosong nilai-kembali. Bahkan jika begitulah cara gcc bekerja, itu bukan cara C bekerja.Haskell , 26 byte
Cobalah online!
Jawaban Haskell lainnya sepertinya adalah hal-hal yang terlalu rumit ... ^^
sumber
Pyke , 6 byte
Coba di sini!
Gunakan pendekatan dzaima ...
BeatsTies Jelly!Penjelasan
Byte hex-encoded setara akan menjadi:
68 65 51 65 56 5F
.sumber
Jelly , 6 byte
Cobalah online!
Menggunakan algoritma dzaima.
-1 terima kasih kepada Jonathan Allan .
sumber
Python 2 , 21 byte
Cobalah online!
sumber
Mathematica, 24 byte
-14 byte dari @Misha Lavrov
sumber
Boole
danOddQ
memiliki efek mengubah angka ganjil menjadi 1 dan bahkan angka menjadi 0, tetapi Anda tidak perlu itu di sini: kekuatan -1 memberikan Anda jawaban yang tepat untuk semua angka ganjil. Jadi Anda bisa mengurangi langkah itu menjadi(-1)^Tr@{#,s}
atau hanya(-1)^(#+s)
.Haskell ,
254342 byteCobalah online! 1-diindeks.
Sunting: Versi sebelumnya memiliki tanda-tanda yang salah, terima kasih kepada @ Potato44 karena menunjukkan. Diperbaiki untuk 18 byte ...
Sunting 2: Terima kasih kepada BMO untuk -1 byte!
sumber
Python 3 , 29 byte
Cobalah online!
sumber
(-1)**(n%4>1)
adalah cara penulisan yang agak berbelit-belit(1-(n&2))
;)Pyth , 9 byte
Coba di sini!
Menggunakan pendekatan dzaima .
sumber
Haskell, 36 byte
Cobalah online!
sumber
05AB1E , 6 byte
Cobalah online!
Menggunakan algoritma dzaima.
sumber
Batch, 29 byte
sumber
JavaScript (ES6), 18 byte
Diindeks 0.
sumber
Javascript, 17 byte
Tampilkan cuplikan kode
Yang ini diindeks 0. Ini sepenuhnya tipuan tipuan.
sumber
Secara kubik , 23 byte
(Diindeks 1)
Cobalah online!
Kesulitan utama saat menulis kode dalam Cubically adalah:
Jadi, solusi ini menghitung
di mana
/
menunjukkan pembagian bilangan bulat. Itu hanya perlu 1 variabel sementara, dan konstanta 1 dan 2.Penjelasan:
sumber
TI-Basic (TI-84 Plus CE), 20 byte
Program lengkap yang disebut seperti
5:prgmNAME
.TI-Basic adalah bahasa tokenized , semua token yang digunakan di sini adalah satu byte, kecuali
remainder(
yang dua.‾
mewakili token resmi, yang diketik dengan (-)kunci.Contoh:
Penjelasan:
Rumus yang sama dengan fungsi Y-var:
sumber
dc , 16 byte
Saya yakin ada cara untuk membuat 0,1 ke -1. 1 di dc lebih pendek, tetapi tidak ada ide untuk saat ini.
Cobalah online!
sumber
Java 8, 15 byte
EDIT: Apakah Jawa benar-benar bahasa terpendek dari non-golf ?! o.Ô
Penjelasan:
Coba di sini.
Saya akan menggunakan tabel di bawah ini sebagai referensi tentang apa yang terjadi.
~n
sama dengan-n-1
.~n/2
akan menghasilkan urutan0,-1,-1,-2,-2,-3,-3,-4,-4,-5,-5,...
n&2
akan menghasilkan salah satu0
atau2
, dalam urutan0,0,2,2,0,0,2,2,0,0,2,...
~-x
sama dengan(x-1)
, jadi~-(n&2)
(((n&2)-1)
) menghasilkan urutan-1,-1,1,1,-1,-1,1,1,-1,-1,1,...
~n/2
dan~-(n&2)
memberi adalah urutan yang benar yang ditanyakan dalam tantangan:0,1,-1,-2,2,3,-3,-4,4,5,-5,...
Tabel ikhtisar:
sumber
Brain-Flak ,
86747270 byteCobalah online!
Penjelasan
Ada dua bagian dari kode ini. Bagian pertama
apakah kekuatan perhitungan. Ini menentukan
ceil(n/2)
dan apakah akan meniadakan output atau tidak.Untuk menjelaskan cara kerjanya, pertama saya akan menjelaskan bagaimana seseorang akan menghitung
ceil(n/2)
. Ini bisa dilakukan dengan kode berikutIni menghitung mundur dari n setiap kali melakukan not (
([{}]())
) pada penghitung dan menambahkan penghitung ke hasil. Karena penghitungnya adalah nol separuh waktu, kami hanya menambah setiap proses lainnya dimulai dengan yang pertama.Sekarang saya ingin juga menghitung tanda hasil kami. Untuk melakukan ini kita mulai penghitung lain. Penghitung ini hanya mengubah status jika penghitung pertama mati. Dengan begitu kita mendapatkan pola yang diinginkan. Kami menempatkan kedua penghitung ini di tumpukan off untuk memudahkan dengan memindahkannya ketika saatnya tiba.
Sekarang setelah kita selesai menghitung tumpukan kita terlihat seperti ini
Jadi kita perlu melakukan beberapa pekerjaan untuk mendapatkan hasil yang diinginkan bagian kedua ini melakukannya.
sumber
Perl 5 , 32 + 1 (
-p
) = 33 byteCobalah online!
sumber
Proton , 23 byte
Cobalah online!
Solusi Port of Halvard .
Proton , 23 byte
Cobalah online!
Solusi Port of Leaky .
Sedikit lebih Protonic, 24 byte:
sumber
QBIC ,
2726 bytePenjelasan
sumber
Clojure 122 byte
Verbose, bahkan saat bermain golf. Saya akan memilih simpati di sini ... :-)
Golf:
Tidak Disatukan:
sumber
Excel VBA 32-Bit,
3937 BytesFungsi jendela langsung VBE anonim yang mengambil input dari sel
A1
dan output ke jendela langsung VBEDibatasi hingga 32-Bit karena
A^B
tidak valid dalam 64-Bit (A ^B
sedekat mungkin dapat dicapai)sumber
(-1)
dan^[Int
dibutuhkan?Julia 0,6 , 16 byte
Itu hanya solusi java kecuali saya perlu
÷
untuk divisi integer.Cobalah online!
sumber