Scripting Games: Advanced PowerShell — Event 3

sg3

В этой задачке пришлось расчитывать результаты «Instant runoff» выборов. Решение опять далеко не красивое, хоть и работает🙂

 

sg3-Votes.ps1
# Помещаем содержимое файла в массив $Votes $Votes = Get-Content "c:scriptsvotes.txt" # Начинаем цикл и продолжаем до тех пор пока не определится победитель. # См. while. do { $Results = $Votes | # Каждую строчку из $Votes... foreach { # Разделяем в массив по запятым $_ -split "," | # Выбираем первый элемент этого массива (первый столбец) select -First 1 } | # Группируем... group | # Выбирем из каждой группы столбцы с названием группы (именем кандидата) и # count (количество элементов в группе. select name, count | # Сортируем по количеству элементов, в обратном порядке. sort count -desc # Вычисляем проигравшего ($Looser) взяв последний элемент массива $Results $Looser = $Results[-1].Name # Убираем из переменной $Votes все упоминания о проигравшем - в дальнейших # этапах выборов он уже не участвует. $Votes = $Votes -replace "$Looser," -replace ",$Looser$" # Проверяем набрал ли победитель больше 50% и если не набрал - проводим # очередной этап. } while ($Results[0].count -le ($Results[1..($Results.count-1)] | Measure-Object count -sum).sum) # Присваиваем переменной $Winner имя победителя. $Winner = $Results[0].name # Вычисляем итоговый результат победителя. $Score = $Results[0].Count / (($Results[0].Count + $Results[1].Count) / 100) # Пишем на экран. Write-Host "The winner is $Winner with $Score% of the vote."

И другие варианты: Mow (красота…🙂 ), Per ØstergaardScripting Guys, Don Jones.

PS: А еще сегодня, в 19 по Москве, будет очень интересный вебкаст Using Virtual Machine Manager and Windows PowerShell to Deploy HP Windows Server 2008 Academy Labs (Level 300).

PPS: Сорри за дезу, вебкаст завтра…🙂

Опубликовано в Learn, PowerShell, Scripting, Scripting Games. Комментарии к записи Scripting Games: Advanced PowerShell — Event 3 отключены
%d такие блоггеры, как: