A French solution for Challenge 15


#1

[code]//
// main.m
// Lettres
//
// Created by C3PO on 22/02/13.
// Copyright © 2013 EdisonTV. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
@autoreleasepool {

    // Les Prénoms avec AA
    
    // Lire un fichier sous forme d'une longue chaîne de caractères
    // Sans tenir compte des possibles erreurs
    NSString *chaineDesPrenoms = [NSString stringWithContentsOfFile:@"/usr/share/dict/propernames"
                                                        encoding:NSUTF8StringEncoding
                                                           error:NULL];
    // Décomposer la chaine en un tableau de chaines de caractères
    NSArray *prenoms = [chaineDesPrenoms componentsSeparatedByString:@"\n"];
    
    // Parcourir le tableau une chaîne à la fois
    for (NSString *p in prenoms) {
        // Rechercher la séquence 'aa' sans tenir compte de la casse
        NSRange r = [p rangeOfString:@"AA"
                              options:NSCaseInsensitiveSearch];
        // La recherche a-t-elle aboutie ?
        if (r.location != NSNotFound) {
            NSLog(@"%@",p);
        }
    }
    
  
    
    // Les Prénoms qui sont aussi des Mots
    NSUInteger counter = 0;
    NSString *chaineDesNoms = [NSString stringWithContentsOfFile:@"/usr/share/dict/words"
                                                           encoding:NSUTF8StringEncoding
                                                              error:NULL];
    
    // Décomposer la chaine en un tableau de chaines de caractères
    NSArray *mots = [chaineDesNoms componentsSeparatedByString:@"\n"];

    for (NSString *p in prenoms) {
        for (NSString *m in mots) {
            if ( ([p caseInsensitiveCompare:m] == NSOrderedSame)&&!([p isEqualToString:m])){
                // Les chaines sont égales mais pas la casse afin d'éviter les doublons
                // qui eux s'écrvient pareil. Les prénoms commence par une majuscule
                // pas les mots.
                NSLog(@"Prenom %@ = %@ (Nom commun)",p, m);
                counter ++;
                break;
                }
            }
    }
    NSLog(@"Il y a %lu entrées en commun sur un total de %lu éléements dans prénom et %lu éléments dans mots", counter ,[prenoms count], [mots count]);
}
return 0;

}[/code]