C'est l'élection! Le domaine dans lequel nous nous trouvons met en œuvre le système de vote appelé ruissellement instantané (parfois appelé vote alternatif ou vote préférentiel ). Chaque électeur classe chaque candidat du plus préféré au moins préféré, marquant un "1" pour son candidat le plus préféré, un "2" pour son deuxième candidat, et ainsi de suite jusqu'à ce que chaque candidat soit numéroté. Je vais laisser ce sympathique koala expliquer le reste:
(Image modifiée de l' original par Patrick Alexander , utilisée sous la licence CC BY-NC-SA 3.0 AU ).
Si vous préférez votre explication du ruissellement instantané sous forme de texte, il y a aussi l'article Wikipedia .
(Remarque: il est également possible, bien que peu probable, qu'il y ait deux candidats ou plus avec le moins de votes. Dans ces situations, choisissez l'un d'eux au hasard à probabilités égales et éliminez-les.)
Dans ce défi, la première ligne d'entrée est une liste de chaînes, qui sont les noms des candidats à l'élection. Dans ces exemples, j'ai utilisé des valeurs délimitées par des tuyaux, mais n'hésitez pas à ajuster le format d'entrée en fonction de votre langue.
The Omitted Anti-neutrino|Placazoa|Alexander the Awesome|Tau Not Two|Semolina Sorcerer
Ensuite, il y a des nlignes d'entrée qui sont également des listes de chaînes, chacune représentant un seul vote. La première entrée représente la préférence n ° 1, la suivante la préférence n ° 2, etc. Par exemple:
Alexander the Awesome|Semolina Sorcerer|Tau Not Two|Placazoa|The Omitted Anti-neutrino
cela signifierait que ce vote particulier a Alexander comme première préférence, Semolina Sorcerer comme deuxième, Tau Not Two comme troisième, etc. Vous pouvez supposer que chaque vote contiendra chaque candidat et qu'il n'y aura pas de votes blancs ou incomplets.
Compte tenu des votes en entrée, votre programme ou votre fonction devrait ensuite générer le vainqueur de l'élection. Vous pouvez trouver une implémentation de référence non golfée dans Python 3 ici .
Exemples d'entrées et de sorties
Contribution
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
Production
Alexander the Awesome
Contribution
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
Production
Sighted Citrusou Frosty Fox(au hasard)
Contribution
Vous pouvez obtenir la dernière entrée définie ici . Il s'agit de l'un des domaines de vote d'une récente élection australienne et compte 63 428 voix.
Production
Ross HART
