Sha256: e9767f7f637028eddeea3b367dd249a1bef9a4e2c719b5af92a3eefbf8b399e0

Contents?: true

Size: 1.89 KB

Versions: 32

Compression:

Stored size: 1.89 KB

Contents

#import "LargestSeriesProductExample.h"

@implementation LargestSeriesProduct {
    NSArray<NSNumber *> *_numbers;
}

- (instancetype)initWithNumberString:(NSString *)numberString {
    if (self = [super init]) {
        NSMutableArray<NSNumber *> *numbers = [[NSMutableArray alloc] initWithCapacity:[numberString length]];
        NSCharacterSet *decimalSet = [NSCharacterSet decimalDigitCharacterSet];
        
        for (int i = 0; i < [numberString length]; i++) {
            unichar character = [numberString characterAtIndex:i];
            if (![decimalSet characterIsMember:character]) {
                @throw [NSException exceptionWithName:@"Invalid input" reason:@"Non-decimal character" userInfo:nil];
            }
            
            NSString *digit = [NSString stringWithFormat:@"%c", character];
            
            [numbers addObject:[NSNumber numberWithInt:[digit intValue]]];
        }
        
        _numbers = numbers;
    }
    
    return self;
}

- (long)largestProduct:(int)numberOfDigits {
    if (numberOfDigits < 0) {
        @throw [NSException exceptionWithName:@"Invalid request" reason:@"Negative span" userInfo:nil];
    }
    
    int endIndex = (int)[_numbers count] - numberOfDigits;
    
    if (endIndex < 0) {
        @throw [NSException exceptionWithName:@"Invalid request" reason:@"Span longer than string length" userInfo:nil];
    }
    
    long result = 0;
    
    for (int i = 0; i <= endIndex; i++) {
        NSMutableArray *selectedNumbers = [[NSMutableArray alloc] init];
        
        for (int j = i; j < i + numberOfDigits; j++) {
            [selectedNumbers addObject:_numbers[j]];
        }
        
        long total = 1;
        
        for (NSNumber *selectedNumber in selectedNumbers) {
            total *= [selectedNumber intValue];
        }
        
        if (total > result) {
            result = total;
        }
    }
    
    return result;
}

@end

Version data entries

32 entries across 32 versions & 1 rubygems

Version Path
trackler-2.0.3.7 tracks/objective-c/exercises/largest-series-product/LargestSeriesProductExample.m
trackler-2.0.3.6 tracks/objective-c/exercises/largest-series-product/LargestSeriesProductExample.m
trackler-2.0.3.5 tracks/objective-c/exercises/largest-series-product/LargestSeriesProductExample.m
trackler-2.0.3.4 tracks/objective-c/exercises/largest-series-product/LargestSeriesProductExample.m
trackler-2.0.3.3 tracks/objective-c/exercises/largest-series-product/LargestSeriesProductExample.m
trackler-2.0.3.2 tracks/objective-c/exercises/largest-series-product/LargestSeriesProductExample.m
trackler-2.0.3.1 tracks/objective-c/exercises/largest-series-product/LargestSeriesProductExample.m
trackler-2.0.3.0 tracks/objective-c/exercises/largest-series-product/LargestSeriesProductExample.m
trackler-2.0.2.0 tracks/objective-c/exercises/largest-series-product/LargestSeriesProductExample.m
trackler-2.0.1.2 tracks/objective-c/exercises/largest-series-product/LargestSeriesProductExample.m
trackler-2.0.1.1 tracks/objective-c/exercises/largest-series-product/LargestSeriesProductExample.m
trackler-2.0.1.0 tracks/objective-c/exercises/largest-series-product/LargestSeriesProductExample.m
trackler-2.0.0.10 tracks/objective-c/exercises/largest-series-product/LargestSeriesProductExample.m
trackler-2.0.0.9 tracks/objective-c/exercises/largest-series-product/LargestSeriesProductExample.m
trackler-2.0.0.8 tracks/objective-c/exercises/largest-series-product/LargestSeriesProductExample.m
trackler-2.0.0.7 tracks/objective-c/exercises/largest-series-product/LargestSeriesProductExample.m
trackler-2.0.0.6 tracks/objective-c/exercises/largest-series-product/LargestSeriesProductExample.m
trackler-2.0.0.5 tracks/objective-c/exercises/largest-series-product/LargestSeriesProductExample.m
trackler-2.0.0.4 tracks/objective-c/exercises/largest-series-product/LargestSeriesProductExample.m
trackler-2.0.0.3 tracks/objective-c/exercises/largest-series-product/LargestSeriesProductExample.m