def try_sit( chairs, cus ) n=cus[0] pos = 8.times.find{ |x| (x...(x+n)).all?{ |y| chairs[y%8]==0 } } if pos (pos...(pos+n)).each{ |x| chairs[x%8]=1 } cus.shift end end def progress( chairs ) chairs.size.times do |ix| chairs[ix] = (chairs[ix]+1) % 4 if chairs[ix]!=0 end end def solve_impl( chairs, cus ) loop do try_sit( chairs, cus ) return chairs if cus.empty? progress(chairs) end end def solve(s)