From 934b34d0b78e54e372c64548f13d5307e1ea48b5 Mon Sep 17 00:00:00 2001 From: Jacob Cody Wimer Date: Mon, 10 Feb 2025 13:26:25 -0500 Subject: [PATCH] Properly place wrestlers in the correct pool dynamically --- .../weight_services/generate_pool_numbers.rb | 130 ++++-------------- 1 file changed, 27 insertions(+), 103 deletions(-) diff --git a/app/services/weight_services/generate_pool_numbers.rb b/app/services/weight_services/generate_pool_numbers.rb index 0c7518e..dbed187 100644 --- a/app/services/weight_services/generate_pool_numbers.rb +++ b/app/services/weight_services/generate_pool_numbers.rb @@ -5,111 +5,35 @@ class GeneratePoolNumbers def savePoolNumbers @weight.wrestlers.each do |wrestler| - if wrestler.pool and (wrestler.pool) > (@weight.pools) - resetPool - elsif @weight.one_pool_empty - resetPool - end - end - if @weight.pools == 4 - saveFourPoolNumbers(@weight.wrestlers_without_pool_assignment) - elsif @weight.pools == 2 - saveTwoPoolNumbers(@weight.wrestlers_without_pool_assignment) - elsif @weight.pools == 1 - saveOnePoolNumbers(@weight.wrestlers_without_pool_assignment) - elsif @weight.pools == 8 - saveEightPoolNumbers(@weight.wrestlers_without_pool_assignment) - end - saveRandomPool(@weight.reload.wrestlers_without_pool_assignment) - end - - def resetPool - @weight.wrestlers.each do |wrestler| - wrestler.pool = nil - wrestler.save - @weight.reload - end - end - - def saveRandomPool(poolWrestlers) - pool = 1 - poolWrestlers.sort_by{|x| x.bracket_line }.reverse.each do |wrestler| - wrestler.pool = pool - wrestler.save - if pool < @weight.pools - pool = pool + 1 - else - pool = 1 - end - end - end - - def saveOnePoolNumbers(poolWrestlers) - poolWrestlers.sort_by{|x| x.bracket_line }.each do |w| - w.pool = 1 - w.save + wrestler.pool = get_wrestler_pool_number(@weight.pools, wrestler.bracket_line) + wrestler.save end end - - def saveTwoPoolNumbers(poolWrestlers) - poolWrestlers.sort_by{|x| x.bracket_line }.reverse.each do |w| - if w.bracket_line == 1 - w.pool = 1 - elsif w.bracket_line == 2 - w.pool = 2 - elsif w.bracket_line == 3 - w.pool = 2 - elsif w.bracket_line == 4 - w.pool = 1 - end - w.save + def get_wrestler_pool_number(number_of_pools, wrestler_seed) + # Convert seed to zero-based index for easier math + zero_based = wrestler_seed - 1 + + # Determine which "row" we're on (0-based) + # e.g., with 4 pools: + # seeds 1..4 are in row 0, + # seeds 5..8 are in row 1, + # seeds 9..12 in row 2, etc. + row = zero_based / number_of_pools + + # Column within that row (also 0-based) + col = zero_based % number_of_pools + + if row.even? + # Row is even => left-to-right + # col=0 => pool 1, col=1 => pool 2, etc. + pool = col + 1 + else + # Row is odd => right-to-left + # col=0 => pool number_of_pools, col=1 => pool number_of_pools-1, etc. + pool = number_of_pools - col end - end - - def saveFourPoolNumbers(poolWrestlers) - poolWrestlers.sort_by{|x| x.bracket_line }.reverse.each do |w| - if w.bracket_line == 1 - w.pool = 1 - elsif w.bracket_line == 2 - w.pool = 2 - elsif w.bracket_line == 3 - w.pool = 3 - elsif w.bracket_line == 4 - w.pool = 4 - elsif w.bracket_line == 8 - w.pool = 1 - elsif w.bracket_line == 7 - w.pool = 2 - elsif w.bracket_line == 6 - w.pool = 3 - elsif w.bracket_line == 5 - w.pool = 4 - end - w.save - end - end - - def saveEightPoolNumbers(poolWrestlers) - poolWrestlers.sort_by{|x| x.bracket_line }.reverse.each do |w| - if w.bracket_line == 1 - w.pool = 1 - elsif w.bracket_line == 2 - w.pool = 2 - elsif w.bracket_line == 3 - w.pool = 3 - elsif w.bracket_line == 4 - w.pool = 4 - elsif w.bracket_line == 5 - w.pool = 5 - elsif w.bracket_line == 6 - w.pool = 6 - elsif w.bracket_line == 7 - w.pool = 7 - elsif w.bracket_line == 8 - w.pool = 8 - end - w.save - end - end + + pool + end end \ No newline at end of file