Sha256: 166cb0e870a72d59ce7902989c8e619270b434bdabd4e15366efa6bd739debb4

Contents?: true

Size: 1.19 KB

Versions: 178

Compression:

Stored size: 1.19 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.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

178 entries across 178 versions & 1 rubygems

Version Path
trackler-2.1.0.53 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.1.0.52 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.1.0.51 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.1.0.50 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.1.0.49 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.1.0.48 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.1.0.47 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.1.0.46 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.1.0.45 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.1.0.44 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.1.0.43 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.1.0.42 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.1.0.41 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.1.0.40 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.1.0.39 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.1.0.38 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.1.0.37 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.1.0.36 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.1.0.34 tracks/swift/exercises/triangle/Sources/TriangleExample.swift
trackler-2.1.0.33 tracks/swift/exercises/triangle/Sources/TriangleExample.swift