Sha256: c9ec89c9529fe0de2619b68c6f8bd35dc4b7e7c0cc026d6451c7b64f1abd58a8
Contents?: true
Size: 1.17 KB
Versions: 30
Compression:
Stored size: 1.17 KB
Contents
let triangleKind = (Equilateral:"Equilateral", Isosceles:"Isosceles", Scalene:"Scalene", ErrorKind:"ErrorKind") struct Triangle { var a: Double = 0 var b: Double = 0 var c: Double = 0 var kind: String { get { return self.Kind() }} init(_ a: Double, _ b: Double, _ c: Double) { (self.a, self.b, self.c) = (a, b, c) } func uniqueSides() -> Int { var tempSet = Set<Double>() for each in [a, b, c] { tempSet.insert(each) } return tempSet.count } func allSidesAreZero() -> Bool { return a == 0 && b == 0 && c == 0 } func hasImpossibleSides() -> Bool { return a < 0 || b < 0 || c < 0 } func violatesTriangleInequality() -> Bool { return a + b < c || a + c < b || b + c < a } func Kind() -> String { if allSidesAreZero() || hasImpossibleSides() || violatesTriangleInequality() { return triangleKind.ErrorKind } let unique = uniqueSides() if unique == 1 { return triangleKind.Equilateral} if unique == 2 { return triangleKind.Isosceles} return triangleKind.Scalene } }
Version data entries
30 entries across 30 versions & 1 rubygems