Tujuan : Diberikan bilangan bulat positif n
:
- Jika
n
ganjil, keluarkan daftarn
angka yang paling dekat0
dalam urutan meningkat - Jika
n
genap, hasilkan nilai Falsey.
Kasus uji :
5 -> [-2,-1,0,1,2]
4 -> false (or any Falsey value)
1 -> [0]
Implementasi referensi
function update(){
var num = +document.getElementById("yield").value;
if(num){
var out = document.getElementById("output");
if(num % 2 == 1){
// base is balanced
var baseArr = [];
for(var i=0;i<num;i++){
baseArr.push(i-Math.floor(num/2));
}
out.innerHTML = baseArr.join(" ");
} else {
out.innerHTML = "false";
}
} else {
out.innerHTML = "<i>enter input</i>";
}
}
setInterval(update,1);
* {
font-family: "Constantia", "Consolas", monospace;
}
[type="number"] {
width: 10px;
width: 2em;
}
#output {
font-family: "Consolas", monospace;
}
Input: <input type="number" id="yield" value="3"> is <span id="output"><i>enter input</i></span>
code-golf
math
number
number-theory
Conor O'Brien
sumber
sumber
Jawaban:
Pyth, 10 byte
Cobalah online.
Bagaimana itu bekerja
sumber
APL,
161513 byteBerkat @Dennis untuk -2 byte!
Ini adalah kereta monadik yang memberikan array kosong untuk input genap. Di bawah ini adalah diagram:
Pertama,
⊢×2|⊢
beri waktu input mod 2; yaitu, peluang akan memberikan diri mereka sendiri, dan bahkan memberi 0. Kita menggunakan⍳
untuk membuat daftar angka dari 1 hingga yang (⍳0
memberikan array kosong), dan kemudian kita kurangi setengah input dan lantai.sumber
Mathematica,
323024 byteTrik kode-golf: Argumen terakhir untuk
And
tidak harus menjadi boolean.sumber
Floor
.Range[-a,a=...]
tampaknya berfungsi, menghemat byte lain.OddQ@#&&Range@#-(#+1)/2&
PowerShell,
5052 BytesOof. Jawabannya cukup verbose. Mengambil input
$a
, lalu menetapkan variabel baru$b
sebagai "lantai" dari$a/2
. Menghasilkan rentang angka baru dari(0-$b)
hingga$b
, kemudianjoin
rentang dengan spasi, dan menjadikannya sebagai elemen kedua dari array dua elemen (elemen pertama adalah0
). Kemudian gunakan$a%2
untuk mengindeks ke dalam array untuk output.Versi alternatif menggunakan lebih banyak "tradisional" jika / aliran lain, pada 54 byte:
Sunting - Diperlukan untuk menambahkan beberapa logika untuk menghasilkan nilai falsey jika inputnya genap
sumber
(0-$b)
menjadi adil-$b
. Juga, hanya mengalikan dengan*0
akan menghasilkan string nol (mengevaluasi ke false di PowerShell). (lihat: codegolf.stackexchange.com/a/63005/45925 )Haskell,
373631 byteKetidakseimbangan ditunjukkan oleh daftar kosong. Contoh penggunaan:
g 7
->[-3,-2,-1,0,1,2,3]
.@ xnor ditemukan 5 byte. Terima kasih!
sumber
g n=[x|x<-[-div n 2..(n+1)/2],odd n]
sama panjang.g n=[1|odd n]>>[-div n 2..div n 2]
g n=[1|odd n]>>take n[-div n 2..]
juga menyimpan char.JavaScript (ES6),
44434241 bytedicoret 44 masih teratur 44; (
Untuk input ganjil, mengembalikan panjang array bilangan bulat
x
, berpusat di0
; bahkan, pengembalian 0. Saya pikir ini sesingkat yang bisa didapat. (Menyimpan beberapa byte berkat @ edc65 dan @ ן nɟuɐɯɹɐ ן oɯ!)Alternatif ES6: (42 byte, terima kasih kepada @intrepidcoder)
Saran diterima!
sumber
x%2&&[for(y of...]
menghemat satu byte.n=>Array(n&1&&n--).fill().map((x,i)=>i-n/2)
jika mengembalikan array kosong diizinkanx=>x%2&&[for(y of Array(x--).keys())y-x/2]
adalah 42.Minkolang 0,10 , 18 byte
Penjelasan
sumber
J, 12 byte
Ini adalah kata kerja monadik yang mengembalikan
0
(falsy) untuk bilangan genap. Cobalah online dengan J.js .Uji coba
Bagaimana itu bekerja
sumber
DUP , 31 byte
Try it here.
Lambda anonim Pemakaian:
Penjelasan
sumber
Python 2,
3432 BytesSaat ini saya tidak yakin apakah saya dapat menampilkan apa pun yang saya inginkan jika tidak seimbang, jadi saat ini ini hanya mengembalikan daftar kosong dalam kasus basis yang tidak seimbang. Ini adalah fungsi lambda anonim, jadi beri nama untuk menggunakannya.
sumber
k%2*
, Anda dapat menghindari parens.CJam,
1312 byteIni adalah fungsi anonim yang mengeluarkan bilangan bulat dari tumpukan dan mendorong array digit (basis ganjil) atau array kosong (basis datar) sebagai imbalannya. Cobalah online di penerjemah CJam .
Bagaimana itu bekerja
sumber
O, 18
Demo langsung.
sumber
Vitsy,
2725 BytesAku akan main golf ini besok, tapi aku benar-benar harus pergi tidur sekarang.
sumber
TeaScript , 16 byte
18Cukup mudah. Karakter khusus sebenarnya hanya "singkatan" untuk urutan kode yang lebih panjang.
Saya masih belum membuat permalink sehingga Anda harus menyalin paste ke juru bahasa
Penjelasan
Jawaban ini tidak bersaing
sumber
F #, 38 byte
Hasil falsey adalah daftar kosong.
sumber
𝔼𝕊𝕄𝕚𝕟, 21 karakter / 37 byte
Try it here (Firefox only).
Inilah jawaban 20-char / 35-byte (tidak bersaing, karena jawaban tersebut menggunakan perubahan yang diterapkan setelah pertanyaan diajukan):
Try it here (Firefox only).
sumber
Japt,
2119 byteJapt adalah versi singkat dari Ja vaScri pt .
Untuk input ganjil, mengembalikan panjang array bilangan bulat
x
, berpusat di0
; bahkan, menghasilkan 0. Terjemahan JS kasar:di mana
x.range(y)
membuat daftar bilangan bulat darix
key
. Uji secara online!Di Japt modern, ini hanya 11 byte:
Cobalah online!
sumber
R, 30 byte
Kira-kira,
x:-x
mengembalikan bilangan bulat darix
ke-x
, di mana saya setx
ke(1-n)/2
. Saya juga menggunakan faktor modulo-2n%%2
dalam definisix
untuk memaksax
ke nol ketikan
genap, dalam hal ini,0:0
pengembalian0
(falsey).sumber
Perl, 36 byte
Saya merasa ini bisa disingkat:
Range memperlakukan float sebagai bilangan bulat, jadi, misal 5/2 = 2.5 dikonversi secara diam-diam menjadi 2.
(Jika pemformatan tidak masalah, maka hapus
$,=$";
total 30 byte).sumber
Powershell, 49 byte
Bahkan angka dievaluasi
$false
karena mereka memberikan output garis kosong.Angka ganjil menghasilkan string referensi yang tepat. Anda dapat menyimpan 4 byte lagi (sekarang
45
) dengan menghapus[]
dari string output.Powershell, 36 Bytes
Ini memiliki hasil falsey yang sama tetapi menampilkan daftar angka yang dipisahkan oleh baris baru:
sumber
Perl 6, 25 byte
Ekspresi lambda terpendek yang bisa saya buat dengan yang menampilkan daftar daripada rentang adalah:
Pengujian:
Ini mengambil keuntungan dari fakta bahwa Perl 6 memperlakukan angka tersebut
0
sebagai nilai palsu. Jika output harus persisFalse
Anda dapat menggantinya$_%2
dengan$_!%%2
.sumber
05AB1E , 8 byte (tidak bersaing)
Bahasa ini mengungguli tantangan dan karenanya tidak bersaing. Kode:
Cobalah online!
Penjelasan:
Menggunakan pengodean CP-1252 .
sumber
PHP, 50 byte
program, mengambil input dari STDIN, mencetak
_
daftar terbatas atau0
.atau
fungsi mengambil argumen, mengembalikan array atau
0
.sumber
Java, 145 byte
Penjelasan: Maaf, saya tahu ini sangat panjang. Saya tidak melihat jawaban untuk java jadi saya memutuskan untuk memasukkannya. Beri tahu saya jika saya perlu menulis fungsi utama (Saya tidak yakin apakah itu kebijakannya atau tidak). Pada dasarnya ini membagi angka dengan dua dan mengalikannya dengan -1 untuk batas bawah dan untuk batas atas hanya menggunakan angka dibagi dua. Saya agak baru di halaman ini, jadi jika saya tidak memformat apa pun, beri tahu saya. Juga, saya tahu bahwa jawaban dapat disingkat dengan fungsi lambda tetapi saya tidak tahu bagaimana menggunakannya dan saya tidak yakin apakah Java mendukungnya.
Ini adalah versi yang lebih mudah dibaca yang tidak terlalu golf:
sumber
return
- nilai pengembalian adalah bentuk yang sah dari keluaran - daripada perlu untuk digunakanSystem.out
, meskipun dalam hal ini untukreturn
bekerja Anda harus menyimpan sebagian daftar yang dibangun dalam sebuah string). Java terbaru mendukung lambda, dan biasanya keluar lebih pendek dari definisi fungsi "biasa". (Juga, mengapa spasi putih terkemuka?)Ruby, 25 byte
sumber
Ruby, 27 byte
Membuat fungsi lambda anonim yang akan mengembalikan array
n
angka yang paling dekat dengan 0 jika n ganjil, dan mengembalikan nil (nilai falsey dalam ruby) jika tidak.Ruby mengitari divisi integernya menuju -infinity, tetapi
0-n/2
lebih pendek dari-n/2+1
(karena tanda minusnya ada di sana), dan karena n sekarang dianggap positif, pembulatan bekerja sesuai keinginan saya.Versi Lama (28 byte)
sumber