diff options
Diffstat (limited to 'app/controllers/pages_controller.rb')
-rw-r--r-- | app/controllers/pages_controller.rb | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb new file mode 100644 index 0000000..91b5ebc --- /dev/null +++ b/app/controllers/pages_controller.rb @@ -0,0 +1,35 @@ +# 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 |