sub play_two_seeds { my $seed1 = shift; my $seed2 = shift; my $outcome = rand() * ($seed1 + $seed2); if ($outcome > $seed1){ return $seed1; } else { return $seed2; } } sub fill_next_level { my $region = shift; my @matchups = @_; my @NextLevel; while (scalar(@matchups) > 1){ my $seed1 = shift(@matchups); my $seed2 = shift(@matchups); my $winner = play_two_seeds($seed1, $seed2); print $teams{$region + $winner}."\t"; push(@NextLevel, $winner); } print "\n"; return @NextLevel; } sub fill_bracket { my $region = shift; my @NextLevel = @RegionBracket; while (scalar(@NextLevel) > 1){ @NextLevel = fill_next_level($region, @NextLevel); } return $NextLevel[0]; } # 1xx = Midwest Seed $MIDWEST = 100; # 2xx = West Seed $WEST = 200; # 3xx = East Seed $EAST = 300; # 4xx = South Seed $SOUTH = 400; %teams = ( 101 => "Kansas", 102 => "Ohio St", 103 => "Georgetown", 104 => "Maryland", 105 => "Michigan St", 106 => "Tennessee", 107 => "Oklahoma St", 108 => "UNLV", 109 => "N. Iowa", 110 => "Georgia Tech", 111 => "San Diego St", 112 => "New Mexico St", 113 => "Houston", 114 => "Ohio", 115 => "UC Santa Barbara", 116 => "Lehigh", 201 => "Syracuse", 202 => "Kansas St", 203 => "Pittsburgh", 204 => "Vanderbilt", 205 => "Butler", 206 => "Xavier", 207 => "BYU", 208 => "Gonzaga", 209 => "Florida St", 210 => "Florida", 211 => "Minnesota", 212 => "UTEP", 213 => "Murray St", 214 => "Oakland", 215 => "North Texas", 216 => "Vermont", 301 => "Kentucky", 302 => "West Virginia", 303 => "New Mexico", 304 => "Wisconsin", 305 => "Temple", 306 => "Marquette", 307 => "Clemson", 308 => "Texas", 309 => "Wake Forest", 310 => "Missouri", 311 => "Washington", 312 => "Cornell", 313 => "Wofford", 314 => "Montana", 315 => "Morgan St", 316 => "East Tenn St", 401 => "Duke", 402 => "Villanova", 403 => "Baylor", 404 => "Purdue", 405 => "Texas A&M", 406 => "Notre Dame", 407 => "Richmond", 408 => "California", 409 => "Louisville", 410 => "St Marys", 411 => "Old Dominion", 412 => "Utah St", 413 => "Siena", 414 => "Sam Houston", 415 => "Robert Morris", 416 => "Open Road Winner" ); @RegionBracket = (1, 16, 8, 9, 5, 12, 4, 13, 6, 11, 3, 14, 7, 10, 2, 15); @final_four; print "Midwest region: \n"; $final_four[$MIDWEST/100] = fill_bracket($MIDWEST); print "\nWest region: \n"; $final_four[$WEST/100] = fill_bracket($WEST); print "\nEast region: \n"; $final_four[$EAST/100] = fill_bracket($EAST); print "\nSouth region: \n"; $final_four[$SOUTH/100] = fill_bracket($SOUTH); print "\n The final four is:\n"; print $teams{$MIDWEST + $final_four[$MIDWEST/100]}."\t".$teams{$WEST + $final_four[$WEST/100]}."\t".$teams{$EAST + $final_four[$EAST/100]}."\t".$teams{$SOUTH + $final_four[$SOUTH/100]}."\n\n"; #Funkiness has to happen because in the final four, two teams can have the same seed print "Midwest and West final goes to: "; $outcome = rand() * ($final_four[$MIDWEST/100] + $final_four[$WEST/100]); if ($outcome > $final_four[$MIDWEST/100]){ $finalrank1 = $final_four[$MIDWEST/100]; $finalregion1 = $MIDWEST; } else { $finalrank1 = $final_four[$WEST/100]; $finalregion1 = $WEST; } print $teams{$finalregion1 + $finalrank1}."\n"; print "East and South final goes to: "; $outcome = rand() * ($final_four[$EAST/100] + $final_four[$SOUTH/100]); if ($outcome > $final_four[$EAST/100]){ $finalrank2 = $final_four[$EAST/100]; $finalregion2 = $EAST; } else { $finalrank2 = $final_four[$SOUTH/100]; $finalregion2 = $SOUTH; } print $teams{$finalregion2 + $finalrank2}."\n\n"; print "The overall winner is: "; $outcome = rand() * ($finalrank1 + $finalrank2); if ($outcome > $finalrank1){ $winnerrank = $finalrank1; $winnerregion = $finalregion1; } else { $winnerrank = $finalrank2; $winnerregion = $finalregion2; } print $teams{$winnerregion + $winnerrank}."\n"; ;