Справедливое замечание, @meave.
Я автор опросов с ранжированным выбором, и это упущение с нашей стороны.
У меня нет прав на редактирование исходного сообщения. Буду рад, если кто-нибудь скопирует это и отформатирует как считает нужным, или, если это будет преобразовано в вики-страницу, готов внести свой вклад:
Сейчас всё работает точно так, как описано здесь: это классическое голосование с мгновенным вторым туром:
(в моём форке плагина для опросов этот пример даже используется как юнит-тест!)
Процесс выглядит следующим образом:
Каждый избиратель подаёт упорядоченный список кандидатов. В каждом раунде мы рассматриваем только кандидата, занявшего первое место (и фокусируемся на потенциальных победителях и худших проигравших).
- Подсчитать голоса за первое место для каждого кандидата.
- Найти кандидата(ов) с наибольшим числом голосов.
- Проверить наличие явного, единственного большинства; если оно найдено, объявить этого кандидата победителем (раунды прекращаются, стоп).
Если нет:
- Найти кандидата(ов) с наименьшим числом голосов.
- Исключить кандидата(ов) с наименьшим числом голосов из всех бюллетеней.
Если теперь все бюллетени пусты:
- Объявить о ничьей среди тех кандидатов, которые были только что исключены (раунды прекращаются, стоп).
Иначе:
- Сдвинуть все бюллетени вверх так, чтобы там, где первое место занимал проигравший (для конкретного избирателя), кандидат, занявший второе место, стал его первым выбором.
Раунды продолжаются до тех пор, пока не будет найдено большинство или ничья.