Этот алгоритм должен работать:
#!/usr/bin/ruby1.8
addresses = (1..10).to_a # Your list of addresses goes here
servers = (1..2).to_a # Your list of servers goes here
addresses.each.with_index do |address, i|
server = servers[i % servers.length]
puts "Sending address #{address} to server #{server}"
end
# => Sending address 1 to server 1
# => Sending address 2 to server 2
# => Sending address 3 to server 1
# => Sending address 4 to server 2
# => Sending address 5 to server 1
# => Sending address 6 to server 2
# => Sending address 7 to server 1
# => Sending address 8 to server 2
# => Sending address 9 to server 1
# => Sending address 10 to server 2
Отредактировано, чтобы добавить: я не буду создавать больше классов только потому, что "классы хороши, хорошо?" Я бы сделал это потому, что, например, метод принимает объект в качестве аргумента и многократно работает с этим объектом; этот метод, вероятно, следует перенести на этот объект. Тем не менее, адреса могут быть самостоятельными объектами:
class Addresses
def initialize
@addresses = (1..10).to_a # Or read from a file, or whatever
end
def send_to_servers(servers)
@addresses.each.with_index do |address, i|
server = servers[i % servers.length]
puts "Sending address #{address} to server #{server}"
end
end
end
servers = (1..2).to_a # Your list of servers goes here
addresses = Addresses.new
addresses.send_to_servers(servers)