Tantangan:
Hitung jumlah yang 1
dalam representasi biner dari semua angka antara rentang.
Memasukkan :
Dua bilangan bulat positif non-desimal
Keluaran:
Jumlah semua 1
s dalam kisaran antara dua angka.
Contoh:
4 , 7 ---> 8
4 = 100 (adds one) = 1
5 = 101 (adds two) = 3
6 = 110 (adds two) = 5
7 = 111 (adds three) = 8
10 , 20 ---> 27
100 , 200 ---> 419
1 , 3 ---> 4
1 , 2 ---> 2
1000, 2000 ---> 5938
Saya hanya menjelaskan contoh pertama jika tidak akan memakan banyak ruang jika saya mencoba menjelaskan semuanya.
Catatan :
- Angka dapat dipisahkan lebih dari 1000
- Semua input akan valid.
- Output minimum akan menjadi satu.
- Anda dapat menerima angka sebagai array dari dua elemen.
- Anda dapat memilih bagaimana nomor-nomor tersebut disusun.
Kriteria menang:
Ini adalah kode-golf sehingga kode terpendek dalam byte untuk setiap bahasa menang.
IntRange
di Kotlin,Range
di Ruby)?1000 - 2000
menghasilkan 5938, tetapi menurunkan kasus dengan 1000, hasilnya juga tetes dengan 1000:0-1000 = 4938
. BuktiJawaban:
JavaScript (ES6), 38 byte
Mengambil input dalam sintaks currying
(a)(b)
.Cobalah online!
Berkomentar
sumber
Python 2 , 47 byte
Cobalah online!
sumber
>=
Java (JDK 10) , 55 byte
Cobalah online!
sumber
IntStream.range(a,b+1).map(Integer::bitCount).sum()
a->b->java.util.stream.IntStream.range(a,b+1).map(Integer::bitCount).sum()
, untuk keseluruhan 74 byte. Bahkan jika impor itu tidak wajib, parameternya adalah, jadi kita harus menulisa->b->IntStream.range(a,b+1).map(Integer::bitCount).sum()
, yang dihitung sebagai 57 bytea->b->IntStream.range(a,b+1).map(Long::bitCount).sum()
peningkatan 1 byte. Marjinal, tapi masih satu.a->b->java.util.stream.IntStream.range(a,b+1).map(Long::bitCount).sum()
(71 byte).05AB1E , 4 byte
Cobalah online!
sumber
Python 2 , 45 byte
Cobalah online!
sumber
MATL ,
54 byteCobalah online!
Terima kasih kepada Luis Mendo karena telah menghemat satu byte!
sumber
R ,
4134 byteCobalah online!
Sangat terilhami oleh solusi R lainnya oleh ngm . Ini menggunakan pendekatan yang berbeda setelah konversi ke bit. Terima kasih banyak kepada Giuseppe untuk mengisyaratkan kemungkinan solusi 34 byte.
sumber
sum
vektor mable - Saya akan memposting jika Anda / ngm tidak dapat menemukannya.sd
danvar
memaksa apa pun yang mereka bisa gandakan.pryr::f
untuk menyimpan 4 byte: tio.run/##K/qfZvu/…Jelly , 4 byte
Cobalah online!
Penjelasan
sumber
Pyth ,
87 byte1 byte terima kasih kepada Tn. Xcoder.
Cobalah online!
sumber
APL (Dyalog Unicode) , 16 byte
Cobalah online!
-1 terima kasih kepada H.PWiz .
Argumen kiri = min
Argumen kanan = maks
sumber
Python 3 ,
565452 byteIni bisa golf lebih imo.-2 Bytes terima kasih kepada Mr.Xcoder -2 More bytes terima kasih kepada MI WrightCobalah online!
sumber
Stax , 6 byte
Jalankan dan debug itu
sumber
Bash + utilitas umum, 50
Cobalah online!
Mengubah bilangan bulat menjadi string biner selalu sedikit menyakitkan di bash. Pendekatan di sini sedikit berbeda - ubah bilangan bulat menjadi oktal, lalu ganti setiap digit oktal dengan jumlah biner 1s yang dikandungnya. Lalu kita bisa menjumlahkan semua digit yang dikonversi
sumber
APL + WIN,
3326 byteAnjuran untuk vektor bilangan bulat:
Cobalah online! Atas perkenan Dalog Classic
Penjelasan:
sumber
R ,
44 4037 byteCobalah online!
Sebelumnya:
sumber
Oktaf dengan kotak alat Komunikasi, 21 byte
Cobalah online!
Kode harus cukup jelas. Jumlah elemen bukan nol dalam representasi biner dari masing-masing angka dalam kisaran.
Ini akan
@(a,b)nnz(dec2bin(a:b)-48)
tanpa kotak alat komunikasi.sumber
Sekam , 4 byte
Cobalah online!
Penjelasan
sumber
Ruby , 38 byte
Cobalah online!
sumber
PHP, 97 Bytes
(yakin ini bisa dipersingkat, tetapi ingin menggunakan fungsi)
Cobalah online
Kode
Penjelasan
sumber
$argv[0]
adalah nama program atau "-"; Anda harus bekerja dengan$argv[1]
dan$argv[2]
. Dan Anda dapat menggunakanjoin
alih-alihimplode
, mempersingkat ini menjadi 68 byte:<?=substr_count(join(array_map(decbin,range($argv[1],$argv[2]))),1);
PowerShell , 72 byte
Cobalah online!
Lama karena konversi ke biner
[convert]::ToString($_,2)
dan menyingkirkan nol-replace0
. Kalau tidak, kita hanya mengambil angka-angka input, membuat rentang$x..$y
dan untuk setiap angka dalam rentang mengubahnya menjadi biner, menghapus nol, mengambilnya.length
(yaitu, jumlah yang tersisa), dan menambahkannya ke$o
utput kami .sumber
count
sebagai gantinyalength
:)count
akan selalu1
karena kita menghitunglength
string, bukan array.-replace0
itu pintar.Haskell , 42 byte
Cobalah online!
sumber
Pip , 10 byte
Cobalah online!
Penjelasan
sumber
Proton ,
4037 byteCobalah online!
sumber
Arang , 10 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
sumber
Brachylog , 8 byte
Cobalah online!
Penjelasan
sumber
Bash + coreutils,
3832 byteBerkat @Cowsquack untuk bermain golf 6 byte!
Cobalah online!
sumber
seq -f2o%fp $*|dc|tr -cd 1|wc -c
K (ngn / k) ,
1913 byteCobalah online!
{
}
adalah fungsi dengan argumenx
dany
!1+y
adalah daftar 0 1 ... yx_
menjatuhkan elemen x pertama2\
mengkodekan setiap int sebagai daftar digit biner dengan panjang yang sama (ini khusus untuk ngn / k)+/
jumlah+//
jumlah hingga konvergensi; dalam hal ini jumlah dari jumlah semua daftar digit binersumber
Perl 6 ,
3230 byte-1 byte, terima kasih kepada Brad Gillbert
Cobalah online!
Penjelasan:
sumber
[...](@_)
sebagai ganti($^a..$^b)
J ,
16, 1514 byte1 byte disimpan berkat FrownyFrog!
Cobalah online!
Penjelasan:
Kata kerja diad, argumen kiri adalah batas bawah
m
kisaran, yang kanan - atasn
.sumber
}.
tetapi selalu di persimpangan dan tidak di kail. Terima kasih!QBasic,
95938382 byte@ Docosc menyelamatkan saya
beberapabanyak byte!Disimpan byte lain menggunakan teknik ini !
Bahasa Bulan Ini FTW!
Penjelasan
Testcase terakhir dari 1000 hingga 2000 benar-benar berfungsi, di QBasic 4.5 berjalan di Dosbox:
sumber