module RoundRobinTournament

Constants

VERSION

Public Class Methods

schedule(array) click to toggle source
# File lib/round_robin_tournament.rb, line 5
def self.schedule(array)
  array.push(nil) if array.size.odd?
  n = array.size
  1.step(n / 2, 1).each do |i|
    array.insert(n - i, array.delete_at(i))
  end
  pivot = array.pop
  games = (n - 1).times.map do
    day = [[array.first, pivot]] + (1...(n / 2)).map { |j| [array[j], array[n - 1 - j]] }
    array.rotate!
    day
  end
  array.push pivot unless pivot.nil?
  games
end