36 lines
734 B
Ruby
36 lines
734 B
Ruby
# frozen_string_literal: true
|
|
|
|
class PagesController < ApplicationController
|
|
def index; end
|
|
|
|
def randomize
|
|
@groups = make_teams
|
|
@machines = Machine.limit(@groups.size).order(Arel.sql('RANDOM()'))
|
|
end
|
|
|
|
private
|
|
|
|
def make_teams
|
|
r = Player.order(Arel.sql('RANDOM()')).to_a
|
|
|
|
teams = []
|
|
until r.empty?
|
|
if (r.size % 4).zero?
|
|
teams << r.shift(4)
|
|
elsif r.size.even? && (r.size > 2)
|
|
teams << r.shift(3)
|
|
teams << r.shift(3)
|
|
elsif (r.size % 3).zero?
|
|
teams << r.shift(3)
|
|
elsif r.size == 5
|
|
teams << r.shift(3)
|
|
teams << r.shift(2)
|
|
else
|
|
teams << r.shift(4)
|
|
end
|
|
end
|
|
|
|
teams.sort { |a, b| b.length <=> a.length }
|
|
end
|
|
end
|