Я пытаюсь разрешить алгоритм мгновенного голосования . Подсчитайте первое место, голосуйте за каждого избирателя, и, если вариант имеет большинство избирает победителя, если нет, то проверьте связь на последнее место; Устранение опции «Последнее место», «Перераспределение голосования» - если это первый раунд, случайным образом исключите один вариант или используйте предыдущий раунд, чтобы исключить вариант с наименьшими голосами первого места.
from collections import Counter
def runoff(irv):
fs = [] # first choices
# adding first elements of sbublists to variable fs
for sublist in irv:
fs.append(sublist[0])
# sorting most frequent values
most_freq = [item for items, c in Counter(fs).most_common() for item in [items] * c]
# sorting least frequent values
least_freq = [item for items, c in Counter(fs).most_common() for item in [items] * c][-1]
# remove duplicates
check_freq = set(fs)
# checking tie
if len(check_freq) == len(fs):
return None
# eliminate last candidate
sec_choice = most_freq[:-1]
# choosing the winner with more than half votes
winner = [item for items, c in Counter(sec_choice).most_common() for item in [items] * c]
# initializing empty list for next stage
sec_stage = []
# eliminate last candidate
for i in winner:
if winner[-1] != winner[-2]:
del winner[-1]
# removing duplicates
check_same = set(winner)
# checking length of set and choosing winner from rest candidates
if len(check_same) == 1:
return ''.join(check_same)
else:
if winner[-1] != winner[-2]:
del winner[-1]
return winner[-1]
Я пытаюсь разрешить алгоритм мгновенного голосования . Подсчитайте первое место, голосуйте за каждого избирателя, и, если вариант имеет большинство избирает победителя, если нет, то проверьте связь на последнее место; Устранение опции «Последнее место», «Перераспределение голосования» - если это первый раунд, случайным образом исключите один вариант или используйте предыдущий раунд, чтобы исключить вариант с наименьшими голосами первого места.[code]from collections import Counter
def runoff(irv): fs = [] # first choices # adding first elements of sbublists to variable fs for sublist in irv: fs.append(sublist[0]) # sorting most frequent values most_freq = [item for items, c in Counter(fs).most_common() for item in [items] * c] # sorting least frequent values least_freq = [item for items, c in Counter(fs).most_common() for item in [items] * c][-1] # remove duplicates check_freq = set(fs) # checking tie if len(check_freq) == len(fs): return None # eliminate last candidate sec_choice = most_freq[:-1] # choosing the winner with more than half votes winner = [item for items, c in Counter(sec_choice).most_common() for item in [items] * c] # initializing empty list for next stage sec_stage = [] # eliminate last candidate for i in winner: if winner[-1] != winner[-2]: del winner[-1] # removing duplicates check_same = set(winner) # checking length of set and choosing winner from rest candidates if len(check_same) == 1: return ''.join(check_same) else: if winner[-1] != winner[-2]: del winner[-1]
return winner[-1] [/code] Пример данных: case #1 [code]irv = [["dem", "ind", "rep"], ["rep", "ind", "dem"], ["ind", "dem", "rep"], ["ind", "rep", "dem"]] [/code] [b] result = "ind" [/b] case #2 [code]irv = [['dem', 'ind', 'rep', 'lib', 'mus'], ['dem', 'mus', 'ind', 'rep', 'lib'], ['lib', 'mus', 'dem', 'rep', 'ind'], ['dem', 'ind', 'mus', 'lib', 'rep'], ['rep', 'lib', 'mus', 'dem', 'ind'], ['dem', 'lib', 'ind', 'mus', 'rep'], ['rep', 'mus', 'dem', 'ind', 'lib'], ['mus', 'lib', 'ind', 'dem', 'rep']] [/code] [b] он должен работать и для случайных входов: «Rep» должен равняться «Dem». [/b]
Я пытаюсь разрешить алгоритм мгновенного голосования . Если вы не слышали об этом, это алгоритм, который выбирает кандидата, у которого большинство самых высоких предпочтений, важные, активные бюллетени, если не устраняют кандидата с наименьшим...
Я пытаюсь разрешить алгоритм мгновенного голосования . Если вы не слышали об этом, это алгоритм, который выбирает кандидата, у которого большинство самых высоких предпочтений, важных, активных бюллетеней, если не исключает кандидата с наименьшим...
привет.
Я пытаюсь разрешить алгоритм мгновенного голосования на сток
Если вы не слышали об этом, это алгоритм, который выбирает кандидат, который имеет большинство высоких предпочтений существует. # initializing empty list
fs = []
# adding first...
Я пытаюсь разрешить алгоритм мгновенного голосования . Подсчитайте первое место, голосуйте за каждого избирателя, и, если вариант имеет большинство избирает победителя, если нет, то проверьте связь на последнее место; Устранение опции «Последнее...
Я пытаюсь разрешить алгоритм мгновенного голосования . Подсчитайте первое место, голосуйте за каждого избирателя, и, если вариант имеет большинство избирает победителя, если нет, то проверьте связь на последнее место; Устранение опции «Последнее...