Sha256: cc3cd1a54c57aa11d65a0ad3134e2dd4ff3f59528ff987598bec092e6c9ce863

Contents?: true

Size: 1.21 KB

Versions: 188

Compression:

Stored size: 1.21 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 {
        return self.kindOfTriangle()
    }

    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 kindOfTriangle() -> 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

188 entries across 188 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.2.1.179 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.2.1.178 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.2.1.177 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.2.1.176 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.2.1.175 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.2.1.174 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.2.1.173 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.2.1.172 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.2.1.171 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.2.1.170 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.2.1.169 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.2.1.167 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.2.1.166 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.2.1.165 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.2.1.164 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.2.1.163 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.2.1.162 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.2.1.161 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.2.1.160 tracks/swift/exercises/triangle/Sources/TriangleExample.swift