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