Skip to content

Instantly share code, notes, and snippets.

@andrespch
Created August 31, 2015 14:01
Show Gist options
  • Save andrespch/3f048785b01f2321cbb6 to your computer and use it in GitHub Desktop.
Save andrespch/3f048785b01f2321cbb6 to your computer and use it in GitHub Desktop.
- (instancetype)add:(NSString *)num {
int sLength = (int)MIN(num.length, self.num.length);
int length1 = (int)self.num.length;
int length2 = (int)num.length;
int lengthDiff = abs(length1 - length2);
BOOL larger = num.length > self.num.length;
NSNumber *toAdd;
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
NSString *newString = @"";
for (int i = (sLength - 1); i >= 0 ; i--) {
NSInteger c1Index = larger? i:i + lengthDiff;
NSString *c1 = [self.num substringWithRange:NSMakeRange(c1Index, 1)];
NSInteger c2Index = larger? i+lengthDiff : i;
NSString *c2 = [num substringWithRange:NSMakeRange(c2Index, 1)];
NSNumber *n1 = [numberFormatter numberFromString:c1];
NSNumber *n2 = [numberFormatter numberFromString:c2];
int n3 = n1.intValue + n2.intValue + toAdd.intValue;
toAdd = [NSNumber numberWithInt:(int)n3/10];
NSNumber * rest = [NSNumber numberWithInt:fmod(n3, 10)];
newString = [[rest stringValue] stringByAppendingString:newString];
}
if (lengthDiff > 0) {
if (larger) {
self.num = [[num substringWithRange:NSMakeRange(0, lengthDiff)] stringByAppendingString:newString];
} else {
self.num = [[self.num substringWithRange:NSMakeRange(0, lengthDiff)] stringByAppendingString:newString];
}
}
return self;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment