34 lines
664 B
Ruby
34 lines
664 B
Ruby
class ConflictCoefficient
|
|
attr_reader :left, :right
|
|
|
|
def self.all
|
|
Talk.find(:all, from: :halfnarp_friendly).map(&:id).combination(2).map do |talks|
|
|
ConflictCoefficient.new talks.first, talks.last
|
|
end
|
|
end
|
|
|
|
def conflicts
|
|
@conflicts ||= talk_preferences.select do |talk_preference|
|
|
talk_preference.include_all? [@left, @right]
|
|
end.count
|
|
end
|
|
|
|
def total_votes
|
|
talk_preferences.count
|
|
end
|
|
|
|
def initialize(left, right)
|
|
@left, @right = left, right
|
|
end
|
|
|
|
def per_cent
|
|
Rational(100 * conflicts, total_votes).to_f
|
|
end
|
|
|
|
private
|
|
|
|
def talk_preferences
|
|
@talk_preferences ||= TalkPreference.this_years
|
|
end
|
|
end
|