Sha256: 409a1da7d7aadb0ff25b9b707a6c6d0140b937c908989c937c4b98d5fabe9136

Contents?: true

Size: 1.16 KB

Versions: 396

Compression:

Stored size: 1.16 KB

Contents

struct NumberSeries {

    enum NumberSeriesError: Error {
        case invalidCharacter
        case spanLongerThanStringLength
        case negativeSpan
    }

    let numbers: [Int]

    init(_ numberString: String) throws {
        self.numbers = try numberString.characters.map {
            guard let intValue = Int(String($0)) else {
                throw NumberSeriesError.invalidCharacter
            }
            return intValue
        }
    }

    func largestProduct(_ numberOfDigits: Int) throws -> Int {
        guard numberOfDigits >= 0 else {
            throw NumberSeriesError.negativeSpan
        }

        let endIndex = numbers.count - numberOfDigits
        guard endIndex >= 0 else {
            throw NumberSeriesError.spanLongerThanStringLength
        }

        var result = 0

        for startIndex in 0 ... endIndex {
            let selectedNumbers = numbers[startIndex ..< startIndex + numberOfDigits]

            var total = 1

            for selectedNumber in selectedNumbers {
                total *= selectedNumber
            }

            if total > result {
                result = total
            }
        }

        return result
    }

}

Version data entries

396 entries across 396 versions & 1 rubygems

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