Compare commits

..

1 Commits

Author SHA1 Message Date
Renovate Bot
d511103596 Update dependency ruby to v3.3.4
Some checks failed
Run unit tests / unit_tests (pull_request) Failing after 23s
2024-08-01 19:02:50 +00:00
6 changed files with 10 additions and 38 deletions

View File

@ -99,8 +99,7 @@ GEM
factory_bot_rails (6.4.3) factory_bot_rails (6.4.3)
factory_bot (~> 6.4) factory_bot (~> 6.4)
railties (>= 5.0.0) railties (>= 5.0.0)
faker (3.4.2) faker (3.1.1)
i18n (>= 1.8.11, < 2)
globalid (1.2.1) globalid (1.2.1)
activesupport (>= 6.1) activesupport (>= 6.1)
i18n (1.14.5) i18n (1.14.5)

View File

@ -13,7 +13,7 @@ module Tables
def random_distribution(people) def random_distribution(people)
@tables = [] @tables = []
@tables << Table.new(people.slice!(0..rand(@min_per_table..@max_per_table))) while people.any? @tables << people.slice!(0..rand(@min_per_table..@max_per_table)) while people.any?
end end
def discomfort def discomfort
@ -59,7 +59,7 @@ module Tables
private private
def local_discomfort(table) def local_discomfort(table)
table.discomfort ||= DiscomfortCalculator.new(table).calculate DiscomfortCalculator.new(table).calculate
end end
end end
end end

View File

@ -8,9 +8,6 @@ module Tables
def each def each
@initial_solution.tables.combination(2) do |table_a, table_b| @initial_solution.tables.combination(2) do |table_a, table_b|
table_a.product(table_b).each do |(person_a, person_b)| table_a.product(table_b).each do |(person_a, person_b)|
original_discomfort_a = table_a.reset
original_discomfort_b = table_b.reset
table_a.delete(person_a) table_a.delete(person_a)
table_b.delete(person_b) table_b.delete(person_b)
@ -24,9 +21,6 @@ module Tables
table_a << person_a table_a << person_a
table_b << person_b table_b << person_b
table_a.discomfort = original_discomfort_a
table_b.discomfort = original_discomfort_b
end end
end end
end end

View File

@ -1,15 +0,0 @@
module Tables
class Table < Array
attr_accessor :discomfort
def initialize(*args)
super
reset
end
def reset
original_discomfort = discomfort
@discomfort = nil
original_discomfort
end
end
end

View File

@ -3,9 +3,3 @@ class Numeric
Money.from_amount(self, "EUR").format Money.from_amount(self, "EUR").format
end end
end end
class Array
def to_table
Tables::Table.new(self)
end
end

View File

@ -14,8 +14,8 @@ module Tables
context 'when there are two tables with two people each' do context 'when there are two tables with two people each' do
let(:initial_solution) do let(:initial_solution) do
Distribution.new(min_per_table: 2, max_per_table: 2).tap do |distribution| Distribution.new(min_per_table: 2, max_per_table: 2).tap do |distribution|
distribution.tables << %i[a b].to_table distribution.tables << %i[a b]
distribution.tables << %i[c d].to_table distribution.tables << %i[c d]
end end
end end
@ -32,8 +32,8 @@ module Tables
context 'when there are two tables with three people each' do context 'when there are two tables with three people each' do
let(:initial_solution) do let(:initial_solution) do
Distribution.new(min_per_table: 3, max_per_table: 3).tap do |distribution| Distribution.new(min_per_table: 3, max_per_table: 3).tap do |distribution|
distribution.tables << %i[a b c].to_table distribution.tables << %i[a b c]
distribution.tables << %i[d e f].to_table distribution.tables << %i[d e f]
end end
end end
@ -55,9 +55,9 @@ module Tables
context 'when there are three tables with two people each' do context 'when there are three tables with two people each' do
let(:initial_solution) do let(:initial_solution) do
Distribution.new(min_per_table: 2, max_per_table: 2).tap do |distribution| Distribution.new(min_per_table: 2, max_per_table: 2).tap do |distribution|
distribution.tables << %i[a b].to_table distribution.tables << %i[a b]
distribution.tables << %i[c d].to_table distribution.tables << %i[c d]
distribution.tables << %i[e f].to_table distribution.tables << %i[e f]
end end
end end