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

Version Path
trackler-2.0.0.8 tracks/ruby/exercises/triangle/example.rb
trackler-2.0.0.7 tracks/ruby/exercises/triangle/example.rb
trackler-2.0.0.6 tracks/ruby/exercises/triangle/example.rb
trackler-2.0.0.5 tracks/ruby/exercises/triangle/example.rb
trackler-2.0.0.4 tracks/ruby/exercises/triangle/example.rb
trackler-2.0.0.3 tracks/ruby/exercises/triangle/example.rb
trackler-2.0.0.2 tracks/ruby/exercises/triangle/example.rb
trackler-2.0.0.1 tracks/ruby/exercises/triangle/example.rb
trackler-2.0.0.0 tracks/ruby/exercises/triangle/example.rb
trackler-1.0.4.1 tracks/ruby/exercises/triangle/example.rb
trackler-1.0.4.0 tracks/ruby/exercises/triangle/example.rb
trackler-1.0.3.0 tracks/ruby/exercises/triangle/example.rb
trackler-1.0.2.1 tracks/ruby/exercises/triangle/example.rb
trackler-1.0.2.0 tracks/ruby/exercises/triangle/example.rb
trackler-1.0.1.2 tracks/ruby/exercises/triangle/example.rb
trackler-1.0.1.1 tracks/ruby/exercises/triangle/example.rb
trackler-1.0.1.0 tracks/ruby/exercises/triangle/example.rb
trackler-1.0.0.1 tracks/ruby/exercises/triangle/example.rb
trackler-1.0.0 tracks/ruby/exercises/triangle/example.rb