# Copyright (C) 2024-2025 LibreWeddingPlanner contributors # frozen_string_literal: true module Tables class WheelSwap private attr_reader :initial_solution def initialize(initial_solution) @initial_solution = initial_solution end def call new_solution = @initial_solution.deep_dup selected_guests = new_solution.tables.map(&:pop).cycle.tap(&:next) new_solution.tables.each { |table| table << selected_guests.next } new_solution end end end