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.0.5 tracks/swift/exercises/largest-series-product/LargestSeriesProductExample.swift
trackler-2.0.0.4 tracks/swift/exercises/largest-series-product/LargestSeriesProductExample.swift
trackler-2.0.0.3 tracks/swift/exercises/largest-series-product/LargestSeriesProductExample.swift
trackler-2.0.0.2 tracks/swift/exercises/largest-series-product/LargestSeriesProductExample.swift
trackler-2.0.0.1 tracks/swift/exercises/largest-series-product/LargestSeriesProductExample.swift
trackler-2.0.0.0 tracks/swift/exercises/largest-series-product/LargestSeriesProductExample.swift
trackler-1.0.4.1 tracks/swift/exercises/largest-series-product/LargestSeriesProductExample.swift
trackler-1.0.4.0 tracks/swift/exercises/largest-series-product/LargestSeriesProductExample.swift
trackler-1.0.3.0 tracks/swift/exercises/largest-series-product/LargestSeriesProductExample.swift
trackler-1.0.2.1 tracks/swift/exercises/largest-series-product/LargestSeriesProductExample.swift
trackler-1.0.2.0 tracks/swift/exercises/largest-series-product/LargestSeriesProductExample.swift
trackler-1.0.1.2 tracks/swift/exercises/largest-series-product/LargestSeriesProductExample.swift
trackler-1.0.1.1 tracks/swift/exercises/largest-series-product/LargestSeriesProductExample.swift
trackler-1.0.1.0 tracks/swift/exercises/largest-series-product/LargestSeriesProductExample.swift
trackler-1.0.0.1 tracks/swift/exercises/largest-series-product/LargestSeriesProductExample.swift
trackler-1.0.0 tracks/swift/exercises/largest-series-product/LargestSeriesProductExample.swift