Dalam tantangan ini, Anda akan menentukan seberapa kontroversial suatu pemungutan suara, dengan serangkaian suara lainnya, dengan mencari tahu nomor yang disebut faktor-C. Apa faktor-C, Anda bertanya?
Nah, bayangkan Anda memiliki banyak suara dalam suatu pemilihan. Kami akan menggunakan 1
dan 0
demi tantangan untuk mewakili dua kandidat yang berbeda dalam pemilihan. Inilah sepuluh suara dalam pemilihan sampel kami:
0110111011
Sekarang, katakanlah kami ingin menemukan faktor-C dari setiap suara untuk kandidat 0
. Kita dapat melakukannya dengan fungsi berikut:
Di , adalah suara yang ingin kita tentukan faktor-C, dan merupakan array suara. Jadi, menggunakan fungsi kami, untuk mendapatkan faktor-C dari setiap suara untuk kandidat :o
v
0
Faktor C yang lebih rendah menunjukkan bahwa suara itu kurang kontroversial dibandingkan dengan suara lainnya. Jadi, suara untuk kandidat 0
lebih berbeda dari suara lainnya daripada suara untuk kandidat 1
. Sebagai perbandingan, faktor-C untuk 1
suara kandidat adalah , sehingga kurang kontroversial karena lebih seperti suara lainnya.
Tantangan
Tulis fungsi untuk menentukan faktor-C dari suara yang diberikan hasil suara .o
v
o
harus berupa bilangan bulat, baik0
atau1
.v
harus berupa larik (atau jenis wadah serupa tergantung pada spesifikasi bahasa) dengan panjang sewenang-wenang yang mengandung nol dan satu.Fungsi harus mengembalikan atau mencetak ke konsol C-factor yang dihasilkan dengan parameter fungsi, menggunakan rumus di atas atau metode yang dimodifikasi.
Semoga berhasil! Bytes terkecil menang (pemenang dipilih dalam lima hari).
mean(v)
sama dengan 0,7 dalam contoh Anda?abs(0 - 0.7)
setara0.3
?Jawaban:
Jelly , 3 byte
Cobalah online!
Secara harfiah hanya "perbedaan mutlak berarti".
Jika Anda membalikkan argumen, Anda dapat membalikkan atom.
sumber
R , 23 byte
Cobalah online!
Tantangannya bermuara pada perhitungan proporsi nilai yang
v
berbeda dario
(yaitumean(xor(o,v))
). Karena itu kita dapat menghindari penggunaanabs
.sumber
APL (Dyalog Unicode) ,
9 85 byteCobalah online!
Kereta anonim. Terima kasih kepada @ Adám selama satu byte yang disimpan, dan terima kasih kepada @ngn selama 3 byte!
Bagaimana:
sumber
Sebenarnya , 3 byte
Cobalah online!
Penjelasan:
sumber
05AB1E , 3 byte
Cobalah online!
sumber
α
kemudianÅA
; p0
/1
, pendekatan Anda pertama-tama mendapatkan mean dan kemudian perbedaan absolut benar ketika kita membandingkannya dengan rumus dalam deskripsi tantangan. Dengan hanya 0s / 1s beberapa alternatif 3-byters juga dimungkinkan, sepertiÊÅA
.Oktaf , 16 byte
Cobalah online!
sumber
Attache ,
118 byteCobalah online! Membawa argumen sebagai
f[o, v]
.Tidak ada yang sangat orisinal.
Pendekatan alternatif
11 byte:
Average@`/=
11 byte:
${1-x~y/#y}
Menghitung kejadianx
dalamy
dibagi dengan panjangnyay
, lalu mengurangkannya dari1
.11 byte:
{1-_2~_/#_}
(Argumen dibalik untuk yang ini)15 byte:
${Sum[x/=y]/#y}
Versi yang lebih eksplisit di atas, tanpaAverage
.sumber
JavaScript, 38 byte
Cobalah
sumber
Proton , 26 byte
Cobalah online!
Outputnya adalah sebagian kecil karena Proton menggunakan sympy daripada angka Python biasa untuk presisi yang lebih baik.
(-7 byte; abs-diff berarti lebih pendek dari rata-rata abs-diff; Aku sebenarnya bodoh)
-1 byte terima kasih kepada Rod
sumber
Perl 6 , 20 byte
Cobalah online!
* X!= *
adalah fungsi anonim yang mengambil produk silang tidak-sama dari dua argumennya. Ini menghasilkan urutan Boolean; misalnya,1 X!= (1, 0, 1)
mengevaluasi ke(False, True, False)
.{ @_.sum / @_ }
adalah fungsi anonim lain yang mengembalikan rata-rata argumennya. BooleanTrue
mengevaluasi ke1
angka, danFalse
ke0
.The
o
Operator menyusun dua fungsi menjadi satu.sumber
Mintalah , 3 byte
Cobalah online!
Bahasa ini sangat terinspirasi oleh Jelly sampai-sampai mungkin seperti saya bereksperimen untuk mencoba membuat ulang struktur bagaimana Jelly diurai dengan kode saya sendiri.
-1 byte terima kasih kepada Tn. Xcoder
sumber
n
daripada_...A
menyimpan 1 ( Coba online! ).Retina 0.8.2 , 27 byte
Cobalah online! Menghasilkan sebagian kecil. Penjelasan: Kelompok pertama menangkap
o
dan kelompok kedua menangkap setiap entriv
, sedangkan bersyarat memastikan bahwa kelompok ketiga hanya membuat tangkapan ketika suara berbeda. The$#
konstruksi kemudian mengembalikan hitungan menangkap relevan seperti yang diinginkan.sumber
Perl 5
-MList::Util=sum
, 30 byteCobalah online!
sumber
K (Kona) , 17 byte
Cobalah online!
sumber
Elm 0,19, 48 byte
Demo online di sini .
sumber
C (gcc) , 62 byte
Cobalah online!
Sebut sebagai
f(int o, int *v, int length_of_v)
.sumber
Japt v2.0a0, 6 byte
Cobalah
sumber
JavaScript (Node.js) ,
4742 byte-5 byte dari @arnauld
Cobalah online!
sumber
Java 8, 47 byte
Cobalah online.
atau sebagai alternatif:
Cobalah online.
Untuk kedua input adalah
Supplier<DoubleStream>
untuk daftar suarav
dandouble
suarao
.Penjelasan:
sumber
Ukuran umum 49 byte
Larutan:
Cobalah online
Penjelasan:
sumber
Ruby , 31 byte
Cobalah online!
sumber
Pyth, 4 byte
Penjelasan:
Input dalam format:
dengan deretan suara pertama, dan kandidat kedua.
Cobalah online!
sumber