Sudah waktunya ... untuk menghitung suara!
Hari ini ada pemilihan lokal di seluruh negara saya. Di sini, jumlah kursi untuk masing-masing pihak diputuskan menggunakan metode D'Hondt . Tujuan Anda adalah untuk mengimplementasikan program atau fungsi yang akan memutuskan berapa banyak kursi yang didapat masing-masing pihak, dalam jumlah byte terpendek.
Untuk metode ini ada jumlah kursi yang tetap untuk dibagikan, dan dilakukan seperti ini:
- Setiap pihak diberi nomor variabel, yang dimulai dari jumlah suara yang didapat.
- Kemudian kursi pertama diberikan kepada partai yang memiliki nilai terbesar dalam variabel mereka dan kemudian nilai untuk partai itu menjadi jumlah total suara dibagi dengan
1+seats
, dibulatkan ke bawah, di manaseats
jumlah kursi yang dimilikinya (jadi setelah mendapatkan pertama, suara mereka dibagi 2, dan 3 setelah mendapatkan kursi kedua). - Setelah itu suara partai dibandingkan lagi. Proses berlanjut sampai semua kursi telah ditetapkan.
Jika angka tertinggi adalah ikatan antara dua pihak atau lebih, itu diselesaikan secara acak (Itu harus acak, itu tidak bisa hanya menjadi yang pertama dari dua pihak dalam daftar).
Memasukkan
Anda akan menerima nomor N
, yang akan menunjukkan jumlah kursi yang tersedia, dan daftar suara yang diterima masing-masing pihak, dalam format apa pun yang Anda inginkan. Contoh:
25
12984,7716,13009,4045,1741,1013
Keluaran
Anda harus menampilkan daftar kursi yang dimiliki masing-masing pihak. Pada contoh di atas akan menjadi sesuatu seperti
8,5,9,2,1,0
Mereka harus berada dalam urutan yang sama dengan para pihak dalam input.
Contohnya
5
3,6,1
outputs: 2,3,0
135
1116259,498124,524707,471681,359705,275007,126435
outputs: 45,20,21,19,14,11,5
Bonus
-20% bonus jika mengambil nama pihak sebagai input dan memberikannya dalam output, seperti misalnya:
25
cio:12984,pcc:7716,irc:13009,icb:4045,cub:1741,bb:1013
outputs
cio:8
pcc:5
irc:9
icb:2
cub:1
bb:0
Jawaban:
CJam,
35.228.828.026.4Program lengkap ini sepanjang 33 byte dan memenuhi syarat untuk bonus.
Cobalah online di Internet penerjemah CJam .
Contoh dijalankan
Bagaimana itu bekerja
sumber
Pyth, 36 byte - 20% = 28,8
Ini memenuhi syarat untuk bonus.
Cobalah online: Demonstrasi atau Uji harness
Penjelasan:
sumber
J
tidak perlu. Anda dapat menyingkirkannya dan menyimpan 2 byte.z
danQ
, dan kemudian menyimpanCvz
keK
, Anda dapat menyimpan byte lain..e
dan mengacaukan penghitungan.UQ
.Javascript, 210 byte
Catatan:
/-~++
operator yang sangat penting :)Contoh penggunaan:
sumber
F=(N,X)=>{for(t=[o={}],[t[o[j]=0,j]=X[j]for(j in X)];N--;t[z=y[new Date%y.length]]=X[z]/-~++o[z])m=0,y=[(m=m<t[j]?t[j]:m,j)for(j in X)],y=y.filter(j=>t[j]==m);return o}
Pyth - 54 byte
Format input (stdin):
Format keluaran (stdout):
Variabel yang digunakan:
sumber
vz
danQ
bukannyaG
danZ
. Dengan cara ini Anda akan menyimpan tugas denganA
.Perl, 110
Ruang input dipisahkan dengan jumlah kursi terakhir.
Coba saya .
sumber