¡Es la elección! El área en la que estamos implementa el sistema de votación llamado escorrentía instantánea (a veces llamada votación alternativa o votación preferencial ). Cada votante ordena a cada candidato del más preferido al menos preferido, marcando un "1" para su candidato más preferido, un "2" para su segundo candidato, y así sucesivamente hasta que cada candidato esté numerado. Dejaré que este amigable koala explique el resto:
(Imagen modificada del original por Patrick Alexander , utilizada bajo la licencia CC BY-NC-SA 3.0 AU ).
Si prefiere su explicación de escorrentía instantánea en forma de texto, también está el artículo de Wikipedia .
(Nota: también es posible, aunque poco probable, que haya dos o más candidatos con la menor cantidad de votos. En estas situaciones, elija uno de ellos al azar con las mismas probabilidades y elimínelos).
En este desafío, la primera línea de entrada es una lista de cadenas, que son los nombres de los candidatos para la elección. En estos ejemplos, he usado valores delimitados por tuberías, aunque puede ajustar el formato de entrada para adaptarlo a su idioma.
The Omitted Anti-neutrino|Placazoa|Alexander the Awesome|Tau Not Two|Semolina Sorcerer
A continuación hay n
líneas de entrada que también son listas de cadenas, cada una de las cuales representa un solo voto. La primera entrada representa esa preferencia de votos n. ° 1, la siguiente la preferencia n. ° 2, etc. Por ejemplo:
Alexander the Awesome|Semolina Sorcerer|Tau Not Two|Placazoa|The Omitted Anti-neutrino
significaría que ese voto en particular tiene a Alexander como su primera preferencia, Semolina Sorcerer como su segundo, Tau Not Two como su tercero, etc. Puede suponer que cada voto contendrá a cada candidato y que no habrá votos en blanco o incompletos.
Dados los votos como aportes, su programa o función debería generar el ganador de la elección. Puede encontrar una implementación de referencia no protegida en Python 3 aquí .
Ejemplo de entradas y salidas
Entrada
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
Salida
Alexander the Awesome
Entrada
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
Salida
Sighted Citrus
o Frosty Fox
(al azar)
Entrada
Puede obtener la última entrada establecida aquí . Es una de las áreas de votación de una elección australiana reciente, y consta de 63 428 votos.
Salida
Ross HART