Sha256: 0cbf975bc9afc8a2bdda61e93714c02a4b08e8702fbbfeba1bbd3dfc0f4e6518

Contents?: true

Size: 1.08 KB

Versions: 78

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 Where(_ 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

78 entries across 78 versions & 1 rubygems

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