Это выборы! Область, в которой мы находимся, реализует систему голосования, называемую мгновенным голосованием (иногда называемое альтернативным голосованием или льготным голосованием ). Каждый избиратель упорядочивает каждого кандидата от наиболее предпочтительного до наименее предпочтительного, отмечая «1» для своего наиболее предпочтительного кандидата, «2» для своего второго кандидата и так далее, пока каждый кандидат не будет пронумерован. Я позволю этой дружелюбной коале объяснить все остальное:
(Изображение редактировался оригинал от Патрика Александра , используется под CC BY-NC-SA 3.0 лицензии AU ).
Если вы предпочитаете свое мгновенное объяснение в текстовом виде, есть также статья в Википедии .
(Примечание: также возможно, хотя и маловероятно, чтобы было два или более кандидата с наименьшим количеством голосов. В этих ситуациях выберите одного из них случайным образом с равными вероятностями и исключите их.)
В этой задаче первая строка ввода представляет собой список строк, которые являются именами кандидатов на выборах. В этих примерах я использовал значения с разделителями в виде трубы, хотя не стесняйтесь настраивать формат ввода в соответствии с вашим языком.
The Omitted Anti-neutrino|Placazoa|Alexander the Awesome|Tau Not Two|Semolina Sorcerer
Далее следуют nстроки ввода, которые также являются списками строк, каждая из которых представляет один голос. Первая запись показывает, что голосует за предпочтение № 1, затем за предпочтение № 2 и т. Д. Например:
Alexander the Awesome|Semolina Sorcerer|Tau Not Two|Placazoa|The Omitted Anti-neutrino
Это будет означать, что именно этот голос будет отдан Александру в качестве первого предпочтения, Колдунья Семолины - второму, Тау, а не Два - третьему и т. д. Можно предположить, что каждый голос будет содержать каждого кандидата и что не будет ни пустых, ни неполных голосов.
Учитывая голоса в качестве входных данных, ваша программа или функция должны затем вывести победителя выборов. Вы можете найти справочную реализацию в Python 3 здесь .
Пример входов и выходов
вход
Dionysius|Portal Butter|Alexander the Awesome|Red Trainmen
Portal Butter|Alexander the Awesome|Dionysius|Red Trainmen
Dionysius|Portal Butter|Alexander the Awesome|Red Trainmen
Portal Butter|Red Trainmen|Alexander the Awesome|Dionysius
Dionysius|Portal Butter|Alexander the Awesome|Red Trainmen
Alexander the Awesome|Red Trainmen|Portal Butter|Dionysius
Red Trainmen|Alexander the Awesome|Dionysius|Portal Butter
Dionysius|Portal Butter|Alexander the Awesome|Red Trainmen
Red Trainmen|Dionysius|Portal Butter|Alexander the Awesome
Alexander the Awesome|Dionysius|Red Trainmen|Portal Butter
Dionysius|Portal Butter|Alexander the Awesome|Red Trainmen
Alexander the Awesome|Red Trainmen|Dionysius|Portal Butter
Выход
Alexander the Awesome
вход
Depressed Billy|Sighted Citrus|Frosty Fox|Electronic Accident
Frosty Fox|Sighted Citrus|Electronic Accident|Depressed Billy
Frosty Fox|Depressed Billy|Sighted Citrus|Electronic Accident
Depressed Billy|Electronic Accident|Sighted Citrus|Frosty Fox
Depressed Billy|Sighted Citrus|Electronic Accident|Frosty Fox
Depressed Billy|Electronic Accident|Sighted Citrus|Frosty Fox
Electronic Accident|Frosty Fox|Depressed Billy|Sighted Citrus
Sighted Citrus|Frosty Fox|Electronic Accident|Depressed Billy
Frosty Fox|Depressed Billy|Sighted Citrus|Electronic Accident
Sighted Citrus|Electronic Accident|Frosty Fox|Depressed Billy
Frosty Fox|Electronic Accident|Depressed Billy|Sighted Citrus
Sighted Citrus|Frosty Fox|Depressed Billy|Electronic Accident
Выход
Sighted Citrusили Frosty Fox(случайно)
вход
Вы можете получить последний набор входных данных здесь . Это одна из областей для голосования на недавних австралийских выборах, и состоит из 63 428 голосов.
Выход
Ross HART
