about summary refs log tree commit diff
path: root/app/controllers/pages_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/pages_controller.rb')
-rw-r--r--app/controllers/pages_controller.rb35
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