class Algorithmable::Puzzles::JosephusProblem

Public Class Methods

new(prisoners, every) click to toggle source
# File lib/algorithmable/puzzles/josephus_problem.rb, line 6
def initialize(prisoners, every)
  @prisoners = prisoners
  @every = every
end

Public Instance Methods

solve() click to toggle source
# File lib/algorithmable/puzzles/josephus_problem.rb, line 11
def solve
  queue = new_fifo_queue
  @prisoners.times { |item| queue.enqueue(item) }
  positions = []
  until queue.empty?
    (@every - 1).times do
      queue.enqueue queue.dequeue
    end
    positions << queue.dequeue
  end
  positions
end