# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # frozen_string_literal: true module Tables class Shift private attr_reader :initial_solution def initialize(initial_solution) @initial_solution = initial_solution end def each @initial_solution.tables.permutation(2) do |table_a, table_b| table_a.dup.each do |person| original_discomfort_a = table_a.reset original_discomfort_b = table_b.reset table_a.delete(person) table_b << person yield(@initial_solution) ensure table_b.delete(person) table_a << person table_a.discomfort = original_discomfort_a table_b.discomfort = original_discomfort_b end end end end end