module DoubleRoundRobinSchedule
Constants
- VERSION
Public Class Methods
schedule(all_teams)
click to toggle source
# File lib/double_round_robin_schedule.rb, line 6 def self.schedule(all_teams) numweeks = (all_teams.length - 1) * 2 halfsize = all_teams.length / 2 teams = all_teams.dup temp = all_teams.dup teams.shift team_size = teams.length week = 0 games = [] while( week < numweeks) do week_matches = [] if (week % 2 == 0) teamIdx = week % team_size week_matches << [teams[teamIdx], temp[0] ] idx = 0 while( idx < halfsize) do firstTeam = (week + idx) % team_size secondTeam = ((week + team_size) - idx) % team_size week_matches << [teams[firstTeam], teams[secondTeam] ] if (firstTeam != secondTeam) idx = idx + 1 end end if (week % 2 != 0) teamIdx = week % team_size week_matches << [temp[0] , teams[teamIdx]] idx = 0 while( idx < halfsize) do firstTeam = (week + idx) % team_size secondTeam = ((week + team_size) - idx) % team_size week_matches << [teams[secondTeam], teams[firstTeam]] if (firstTeam != secondTeam) idx = idx + 1 end end games[week] ||= [] games[week] += week_matches week = week + 1 end games end