Created
August 31, 2015 14:01
-
-
Save andrespch/3f048785b01f2321cbb6 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- (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