Czas ... policzyć głosy!
Dzisiaj w całym kraju odbywają się wybory lokalne. Tutaj liczba miejsc dla każdej ze stron jest ustalana za pomocą metody D'Hondta . Twoim celem jest wdrożenie programu lub funkcji, która decyduje o tym, ile miejsc dostanie każda ze stron, w jak najkrótszej ilości bajtów.
W przypadku tej metody istnieje stała liczba miejsc do rozdzielenia i odbywa się to w następujący sposób:
- Każda partia ma przypisaną zmienną liczbę, która zaczyna się od liczby głosów, które uzyskała.
- Następnie pierwsze miejsce przyznawane jest partii, która ma największą wartość w swojej zmiennej, a następnie ta wartość dla tej partii staje się ich całkowitą liczbą głosów podzieloną przez
1+seats
, zaokrągloną w dół, gdzieseats
jest liczba miejsc, które już ma (więc po uzyskaniu po pierwsze, ich głosy są dzielone przez 2, a przez 3 po uzyskaniu drugiego miejsca). - Następnie głosy partii są ponownie porównywane. Proces ten trwa do momentu przypisania wszystkich miejsc.
Jeśli najwyższa liczba to remis między dwiema lub więcej drużynami, jest ona rozstrzygana losowo (musi być losowa, nie może to być pierwsza z dwóch na liście).
Wejście
Otrzymasz numer N
, który wskaże liczbę dostępnych miejsc oraz listę głosów otrzymanych przez każdą partię, w dowolnym formacie. Przykład:
25
12984,7716,13009,4045,1741,1013
Wynik
Powinieneś wypisać listę miejsc, które dostała każda ze stron. W powyższym przykładzie byłoby to coś w rodzaju
8,5,9,2,1,0
Powinny być w tej samej kolejności co strony w danych wejściowych.
Przykłady
5
3,6,1
outputs: 2,3,0
135
1116259,498124,524707,471681,359705,275007,126435
outputs: 45,20,21,19,14,11,5
Premia
-20% bonusu, jeśli weźmiesz nazwę partii jako dane wejściowe i podasz je w danych wyjściowych, na przykład:
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
Odpowiedzi:
CJam,
35,228,828,026,4Ten pełny program ma 33 bajty długości i kwalifikuje się do premii.
Wypróbuj online w interpretatorze CJam .
Przykładowy przebieg
Jak to działa
źródło
Pyth, 36 bajtów - 20% = 28,8
To kwalifikuje się do premii.
Wypróbuj online: Demonstracja lub Uprząż testowa
Wyjaśnienie:
źródło
J
jest niepotrzebne. Możesz się go pozbyć i zaoszczędzić 2 bajty.z
iQ
, a następnie ZapiszCvz
, abyK
można zapisać kolejny bajt..e
i zaburza liczenie.UQ
.JavaScript, 210 bajtów
Uwagi:
/-~++
operatora :)Przykładowe użycie:
źródło
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 bajty
Format wejściowy (stdin):
Format wyjściowy (standardowe wyjście):
Zastosowane zmienne:
źródło
vz
iQ
zamiastG
iZ
. W ten sposób zapiszesz zadanie za pomocąA
.Perl, 110
Przestrzeń wejściowa oddzielona ostatnią liczbą miejsc.
Spróbuj mnie .
źródło