Report abuse

participants = ['pashira', 'martishka', 'life_is_mistery', 'avinamor', 'megvaer']
weights = { 'pashira' => 1.0, 'martishka' => 1.0, 'life_is_mistery' =>
1.0, 'avinamor' => 1.0, 'megvaer' =>1.0}

votes = {}
votes['pashira']         = ['life_is_mistery', 'megvaer']
votes['martishka']       = ['life_is_mistery']
votes['life_is_mistery'] = ['avinamor']
votes['avinamor']        = ['megvaer']
votes['megvaer']         = ['avinamor']

def fact(n)
        if n>0
                n*fact(n-1)
        else
                1
        end
end

quantity = participants.size
number = fact(quantity)

number.times do |iterator|
swap = iterator%quantity
participants[participants.size] = participants[ swap ]
participants = participants[0..swap-1].to_a + participants[swap+1..quantity].to_a
        participants.each do |who|
                whom = votes[who]
                weight_delta = weights[who]/(whom.size+1)
                whom.each do |person|
                        weights[person] += weight_delta
                end
        end
end

puts weights.sort_by { |key, value| value }.reverse