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.0.8.15 tracks/swift/exercises/largest-series-product/Sources/LargestSeriesProductExample.swift
trackler-2.0.8.14 tracks/swift/exercises/largest-series-product/Sources/LargestSeriesProductExample.swift
trackler-2.0.8.13 tracks/swift/exercises/largest-series-product/Sources/LargestSeriesProductExample.swift
trackler-2.0.8.12 tracks/swift/exercises/largest-series-product/Sources/LargestSeriesProductExample.swift
trackler-2.0.8.11 tracks/swift/exercises/largest-series-product/Sources/LargestSeriesProductExample.swift
trackler-2.0.8.10 tracks/swift/exercises/largest-series-product/Sources/LargestSeriesProductExample.swift
trackler-2.0.8.9 tracks/swift/exercises/largest-series-product/Sources/LargestSeriesProductExample.swift
trackler-2.0.8.8 tracks/swift/exercises/largest-series-product/Sources/LargestSeriesProductExample.swift
trackler-2.0.8.7 tracks/swift/exercises/largest-series-product/Sources/LargestSeriesProductExample.swift
trackler-2.0.8.6 tracks/swift/exercises/largest-series-product/Sources/LargestSeriesProductExample.swift
trackler-2.0.8.5 tracks/swift/exercises/largest-series-product/Sources/LargestSeriesProductExample.swift
trackler-2.0.8.4 tracks/swift/exercises/largest-series-product/Sources/LargestSeriesProductExample.swift
trackler-2.0.8.3 tracks/swift/exercises/largest-series-product/Sources/LargestSeriesProductExample.swift
trackler-2.0.8.2 tracks/swift/exercises/largest-series-product/Sources/LargestSeriesProductExample.swift
trackler-2.0.8.1 tracks/swift/exercises/largest-series-product/Sources/LargestSeriesProductExample.swift
trackler-2.0.7.0 tracks/swift/exercises/largest-series-product/Sources/LargestSeriesProductExample.swift
trackler-2.0.6.44 tracks/swift/exercises/largest-series-product/Sources/LargestSeriesProductExample.swift
trackler-2.0.6.43 tracks/swift/exercises/largest-series-product/Sources/LargestSeriesProductExample.swift
trackler-2.0.6.42 tracks/swift/exercises/largest-series-product/Sources/LargestSeriesProductExample.swift
trackler-2.0.6.41 tracks/swift/exercises/largest-series-product/Sources/LargestSeriesProductExample.swift