Sha256: 82cc23bd5cfff6c1523699d600fddb5f5572c3016b5c58cd48c7a057d4df6014
Contents?: true
Size: 690 Bytes
Versions: 19
Compression:
Stored size: 690 Bytes
Contents
class TriangleError < RuntimeError end class Triangle attr_reader :a, :b, :c def initialize(a, b, c) @a = a @b = b @c = c end def kind fail TriangleError if illegal? if equilateral? :equilateral elsif isosceles? :isosceles else :scalene end end private def sides @sides ||= [a, b, c] end def equilateral? sides.uniq.size == 1 end def isosceles? sides.uniq.size == 2 end def illegal? impossible_length_side? || violates_inequality? end def violates_inequality? a + b <= c || a + c <= b || b + c <= a end def impossible_length_side? sides.any? { |side| side <= 0 } end end
Version data entries
19 entries across 19 versions & 1 rubygems