Scripting Games: Advanced PowerShell — Event 7

Продолжаю публикации ужасного (я очень скромный🙂 ) кода со Scripting Games. Седьмая задачка была достаточно простой, но видимо лень не дала мне найти более красивое и короткое решение (отмазался типа🙂 ) Рекомендую посмотреть на то как её решили другие участники (ссылки внизу).

SG7-PlayBall.ps1
# Создаем массив с именами команд. Да, можно было просто сделать # $Teams = [string[]][char[]]"ABCDEF" или еще проще, но мы простых путей не ищем😉 $Teams = [string[]][char[]]([char]"A"..[char]"F") # Создаем [arrayList] для хранения матчей. Отличие от обычного Array в том что # можно удалять элементы. [collections.arraylist]$Games = @() # Просто перебираем все комбинации команд... foreach ($first in $Teams) { foreach ($second in $Teams) { # ... и если такого сочетания нет в списке, и первая команда не равна # второй... if (($Games -notcontains "$first vs. $second") ` -and ($Games -notcontains "$second vs. $first") ` -and ($first -ne $second)) { # ...то добавляем матч в список. $Games += "$first vs. $second" } } } # Создаем новый объект для генерации произвольных чисел. $r = New-Object random # Для каждого числа от (кол-во матчей) до 1... ($Games.count)..1| # ...генерируем произвольное число от 0 до (кол-во матчей) и передаем его по # конвейеру... foreach {$r.next(0,$Games.count)} | # выводим игру под номером $_ (произвольное число полученное по конвейеру) # дальше по конвейеру, и удаляем её из списка (чтоб не вывести второй раз) foreach {$games[$_]; $games.removeat($_)} | # Создаем объект со свойством Game, и соответствующим значением полученным по # конвейеру Select @{name="Game";expression={$_}} | # Выводим на Grid View Out-GridView

Варианты: Mow, Per Østergaard, Scripting Guys, Scott Hanselman. По поводу рандомизации элементов массива еще стоит посмотреть вот эти два моих поста: 1, 2 и комментарии к ним.

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