To wybory! Obszar, w którym się znajdujemy, wdraża system głosowania zwany natychmiastowym odpływem (czasem nazywany głosowaniem alternatywnym lub głosowaniem preferencyjnym ). Każdy głosujący porządkuje każdego kandydata od najbardziej preferowanego do najmniej preferowanego, oznaczając „1” dla najbardziej preferowanego kandydata, „2” dla drugiego kandydata i tak dalej, aż do momentu, gdy każdy kandydat zostanie numerowany. Pozwolę tej przyjaznej koali wyjaśnić resztę:
(Zdjęcie zmodyfikowane z oryginału przez Patricka Alexandra , użyte na licencji CC BY-NC-SA 3.0 AU ).
Jeśli wolisz wyjaśnienia dotyczące natychmiastowego spływu w formie tekstowej, jest też artykuł w Wikipedii .
(Uwaga: jest również możliwe, choć mało prawdopodobne, aby było dwóch lub więcej kandydatów z najmniejszą liczbą głosów. W takich sytuacjach wybierz jednego z nich losowo z jednakowymi prawdopodobieństwami i wyeliminuj ich.)
W tym wyzwaniu pierwszym wierszem wejściowym jest lista ciągów, które są nazwiskami kandydatów w wyborach. W tych przykładach użyłem wartości rozdzielanych potokami, chociaż możesz dostosować format wejściowy do swojego języka.
The Omitted Anti-neutrino|Placazoa|Alexander the Awesome|Tau Not Two|Semolina Sorcerer
Poniżej znajdują się nwiersze wprowadzania, które są również listami ciągów znaków, z których każdy reprezentuje pojedynczy głos. Pierwszy wpis reprezentuje preferencję głosów nr 1, następny preferencję nr 2 itd. Na przykład:
Alexander the Awesome|Semolina Sorcerer|Tau Not Two|Placazoa|The Omitted Anti-neutrino
oznaczałoby to, że ten konkretny głos ma Aleksandra jako pierwszą preferencję, Semolina Sorcerer jako drugą, Tau Not Two jako trzecią itd. Możesz założyć, że każdy głos będzie zawierał każdego kandydata i że nie będzie żadnych pustych ani niekompletnych głosów.
Biorąc pod uwagę głosy jako dane wejściowe, twój program lub funkcja powinna następnie wyłonić zwycięzcę wyborów. Można znaleźć ungolfed implementację referencyjną w Pythonie 3 tutaj .
Przykładowe wejścia i wyjścia
Wejście
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
Wynik
Alexander the Awesome
Wejście
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
Wynik
Sighted Citruslub Frosty Fox(losowo)
Wejście
Ostatni zestaw danych wejściowych można uzyskać tutaj . Jest to jeden z obszarów głosowania w ostatnich wyborach w Australii i składa się z 63 428 głosów.
Wynik
Ross HART
