2008 Winter Scripting Games

Scott Hanselman's Solution to Advanced Windows PowerShell Event 7: Play Ball!

Scott Hanselman

About the Author

Scott Hanselman works out of his home office for Microsoft as a Senior Program Manager, aiming to spread good information about developing software (usually on the Microsoft stack). Scott also maintains the enormously-popular Web site ComputerZen.com.

*

Play Ball!

Here’s the solution Scott Hanselman came up with for Event 7 in the Winter Scripting Games’ Advanced Division:

#this only works with an even number of teams
cls
[array]$global:games = $nul
function rotateArray($a)
{
 $first, $rest = $a
 $a = $rest + $first
 return $a
}
function makeGames($a)
{
 $i = 0;
 while($i -lt $a.Length/2)
 {
  $global:games = $global:games + ($a[$i].ToString() + " vs. " + $a[$a.Length-1-$i].ToString())
  $i++
 }  
}
$a = "A","B","C","D","E","F"
$z = 0
while($z -lt $a.Length-1)
{
 makeGames($a)
 # hold on to the first one
 
 $first, $rest = $a
 #rotate the rest
 $rest = rotateArray($rest)
 $a = [array]$first + $rest
 $z++
}
#randomize games
$a = [collections.arraylist]$global:games
$r = $a.count..1 |% {$R = new-object random}{$R.next(0,$a.count) |%{$a[$_];$a.removeat($_)}}
$r

Top of pageTop of page