Sha256: be7b2dbecaaadf783b7070aef3810899158448367b526233ecafa4c085740d70

Contents?: true

Size: 1.08 KB

Versions: 188

Compression:

Stored size: 1.08 KB

Contents

#if os(Linux)
    import Glibc
#elseif os(OSX)
    import Darwin
#endif

struct Triplet {

    var a: Int, b: Int, c: Int = 0

    init(_ a: Int, _ b: Int, _ c: Int) {
        self.a = a
        self.b = b
        self.c = c
    }

    var sum: Int { return a + b + c }

    var product: Int { return a * b * c }

    var isPythagorean: Bool { return pow(Double(a), 2) + pow(Double(b), 2) == pow(Double(c), 2) }

    static func fromWhere(_ minFactor: Int = 1, maxFactor: Int, sum: Int = 0) -> [Triplet] {

        func shouldIncludeTriplet(_ sum: Int, triplet: Triplet) -> Bool {
            return triplet.isPythagorean && (sum == 0 || triplet.sum == sum)
        }

        var triplets = [Triplet]()
        for i in minFactor ..< maxFactor - 1 {
            for j in i + 1 ..< maxFactor {
                for k in j + 1 ... maxFactor {
                    let triplet = Triplet(i, j, k)
                    if shouldIncludeTriplet(sum, triplet: triplet) {
                        triplets.append(triplet)
                    }
                }
            }
        }
        return triplets
    }

}

Version data entries

188 entries across 188 versions & 1 rubygems

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