Skip to content

Instantly share code, notes, and snippets.

@douglashill
Created May 14, 2014 11:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save douglashill/af215c62af117f8560fa to your computer and use it in GitHub Desktop.
Save douglashill/af215c62af117f8560fa to your computer and use it in GitHub Desktop.
#import <Foundation/Foundation.h>
int main(int argc, char *argv[]) {
@autoreleasepool {
NSCountedSet *set = [NSCountedSet set];
NSError *error;
NSString *corpus = [NSString stringWithContentsOfFile:@"some-file.txt" encoding:NSUTF8StringEncoding error:&error];
[corpus enumerateSubstringsInRange:NSMakeRange(0, [corpus length]) options:NSStringEnumerationByWords usingBlock:^(NSString *word, NSRange substringRange, NSRange enclosingRange, BOOL *stop) {
[set addObject:word];
}];
NSSortDescriptor *countDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"self" ascending:NO comparator:^NSComparisonResult(id obj1, id obj2) {
if ([set countForObject:obj1] < [set countForObject:obj2]) {
return NSOrderedAscending;
}
if ([set countForObject:obj1] == [set countForObject:obj2]) {
return NSOrderedSame;
}
return NSOrderedDescending;
}];
NSArray *sorted = [set sortedArrayUsingDescriptors:@[countDescriptor]];
for (NSString *word in sorted) {
NSLog(@"%lu - %@", [set countForObject:word], word);
}
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment