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

Version Path
trackler-2.0.3.4 tracks/swift/exercises/triangle/TriangleExample.swift
trackler-2.0.3.3 tracks/swift/exercises/triangle/TriangleExample.swift
trackler-2.0.3.2 tracks/swift/exercises/triangle/TriangleExample.swift
trackler-2.0.3.1 tracks/swift/exercises/triangle/TriangleExample.swift
trackler-2.0.3.0 tracks/swift/exercises/triangle/TriangleExample.swift
trackler-2.0.2.0 tracks/swift/exercises/triangle/TriangleExample.swift
trackler-2.0.1.2 tracks/swift/exercises/triangle/TriangleExample.swift
trackler-2.0.1.1 tracks/swift/exercises/triangle/TriangleExample.swift
trackler-2.0.1.0 tracks/swift/exercises/triangle/TriangleExample.swift
trackler-2.0.0.10 tracks/swift/exercises/triangle/TriangleExample.swift
trackler-2.0.0.9 tracks/swift/exercises/triangle/TriangleExample.swift
trackler-2.0.0.8 tracks/swift/exercises/triangle/TriangleExample.swift
trackler-2.0.0.7 tracks/swift/exercises/triangle/TriangleExample.swift
trackler-2.0.0.6 tracks/swift/exercises/triangle/TriangleExample.swift
trackler-2.0.0.5 tracks/swift/exercises/triangle/TriangleExample.swift
trackler-2.0.0.4 tracks/swift/exercises/triangle/TriangleExample.swift
trackler-2.0.0.3 tracks/swift/exercises/triangle/TriangleExample.swift
trackler-2.0.0.2 tracks/swift/exercises/triangle/TriangleExample.swift
trackler-2.0.0.1 tracks/swift/exercises/triangle/TriangleExample.swift
trackler-2.0.0.0 tracks/swift/exercises/triangle/TriangleExample.swift