// // ConjugateRegularVerb.m // Espagram // // Created by Abel Fokkinga on 8/29/12. // Copyright (c) 2012 Abel Fokkinga. All rights reserved. // #import "SpanishConjugator.h" #import "NSMutableArray_Shuffling.h" @interface SpanishConjugator() @property (nonatomic, strong) NSArray *simplePresentEtoIEstemChangersArray, *simplePresentOtoUEstemChangersArray, *simplePresentEtoIstemChangersArray, *simplePresentIARtoAccentedIArray, *simplePresentUARtoAccentedUArray; @property (nonatomic,strong) NSDictionary *persons; @property (nonatomic,strong) NSDictionary *reflexivePersons; @end @implementation SpanishConjugator #pragma mark - variables @synthesize simplePresentEtoIEstemChangersArray = _simplePresentEtoIEstemChangersArray; @synthesize simplePresentOtoUEstemChangersArray = _simplePresentOtoUEstemChangersArray; @synthesize simplePresentEtoIstemChangersArray = _simplePresentEtoIstemChangersArray; @synthesize simplePresentIARtoAccentedIArray = _simplePresentIARtoAccentedIArray; @synthesize simplePresentUARtoAccentedUArray = _simplePresentUARtoAccentedUArray; @synthesize persons = _persons; @synthesize reflexivePersons = _reflexivePersons; - (NSString *) description { return @"Spanish"; } - (NSArray *) personsKeys{ return [[NSArray alloc] initWithObjects:@"FIRST_PERSON_SINGULAR",@"SECOND_PERSON_SINGULAR",@"THIRD_PERSON_SINGULAR", @"FIRST_PERSON_PLURAL",@"SECOND_PERSON_PLURAL",@"THIRD_PERSON_PLURAL", nil]; } - (NSDictionary *) persons { if (_persons == nil) { _persons = [[NSDictionary alloc] initWithObjects:[[NSArray alloc] initWithObjects:@"yo",@"tú",@"él",@"nosotros", @"vosotros", @"ellos", nil] forKeys:[[NSArray alloc] initWithArray:self.personsKeys]]; } return [_persons copy]; } - (NSDictionary *) reflexivePersons { if (_reflexivePersons == nil) { _reflexivePersons = [[NSDictionary alloc] initWithObjects:[[NSArray alloc] initWithObjects:@"me",@"te",@"se",@"nos", @"os", @"se", nil] forKeys:[[NSArray alloc] initWithArray:self.personsKeys]]; } return [_reflexivePersons copy]; } - (NSArray *) simplePresentEtoIEstemChangersArray{ if (_simplePresentEtoIEstemChangersArray == nil) _simplePresentEtoIEstemChangersArray = [[NSArray alloc] initWithObjects: @"abstener", @"acertar", @"adherir", @"adquirir", @"advertir", @"apretar", @"arrepentir", @"ascender", @"asentir", @"atender", @"atravesar", @"calentar", @"cerrar", @"circunvenir", @"comenzar", @"conferir", @"confesar", @"consentir", @"consentir", @"convenir", @"convertir", @"defender", @"descender", @"desmembrar", @"desmentir", @"despertar", @"desplegar", @"detener", @"diferir", @"digerir", @"discernir", @"disentir", @"divertir", @"empezar", @"encender", @"encerrar", @"encomendar", @"enmendar", @"ensangrentar", @"entender", @"enterrar", @"entretener", @"entrevenir", @"extender", @"fregar", @"gobernar", @"heder", @"helar", @"herir", @"hervir", @"inferir", @"ingerir", @"intervenir", @"invernar", @"invertir", @"malherir", @"manifestar", @"mantener", @"mentar", @"mentir", @"merendar", @"negar", @"nevar", @"obtener", @"ofender", @"pensar", @"perder", @"pervertir", @"preferir", @"presentir", @"prevenir", @"querer", @"regar", @"remendar", @"renegar", @"replegar", @"requerir", @"restregar", @"retener", @"reventar", @"segar", @"sembrar", @"sentar", @"sentir", @"serrar", @"sosegar", @"sostener", @"soterrar", @"sugerir", @"subarrendar", @"tender", @"temblar", @"tener", @"tentar", @"transferir", @"tropezar", @"venir", @"verter", nil]; return _simplePresentEtoIEstemChangersArray; } - (NSArray *) simplePresentOtoUEstemChangersArray{ if (_simplePresentOtoUEstemChangersArray == nil) _simplePresentOtoUEstemChangersArray = [[NSArray alloc] initWithObjects: @"absolvar", @"acordar", @"acostar", @"almorzar", @"alongar", @"amoblar", @"apostar", @"aprobar", @"asolar", @"avergonzar", @"cocer", @"colar", @"colgar", @"concordar", @"conmover", @"consolar", @"contar", @"costar", @"degollar", @"demoler", @"demostrar", @"desaprobar", @"descolgar", @"descontar", @"desosar", @"destorcer", @"devolver", @"disolver", @"doler", @"dormir", @"encontrar", @"engrosar", @"envolver", @"forzar", @"holgar", @"hollar", @"llover", @"moler", @"morder", @"morir", @"mostrar", @"mover", @"oler", @"poblar", @"poder", @"probar", @"promover", @"recordar", @"reforzar", @"remorder", @"remover", @"repoblar", @"resolver", @"resollar", @"resonar", @"retorcer", @"revolcar", @"revolver", @"rodar", @"rogar", @"solar", @"soldar", @"soler", @"soltar", @"sonar", @"soñar", @"torcer", @"tostar", @"tronar", @"volar", @"volcar", @"volver", @"oler" ,nil]; return _simplePresentOtoUEstemChangersArray; } - (NSArray *) simplePresentEtoIstemChangersArray{ if (_simplePresentEtoIstemChangersArray == nil) _simplePresentEtoIstemChangersArray = [[NSArray alloc] initWithObjects: @"ceñir", @"comedir", @"colegir", @"competir", @"concebir", @"conseguir", @"contradecir", @"corregir", @"decir", @"derretir", @"despedir", @"desteñir", @"desvestir", @"elegir", @"embestir", @"engreir", @"estreñir", @"expedir", @"freír", @"gemir", @"impedir", @"investir", @"maldecir", @"medir", @"pedir", @"perseguir", @"proseguir", @"predecir", @"reelegir", @"reexpedir", @"regir", @"reír", @"rendir", @"reñir", @"repetir", @"revestir", @"seguir", @"servir", @"sonreír", @"subseguir", @"teñir", @"trasgredir", @"vestir" ,nil]; return _simplePresentEtoIstemChangersArray; } - (NSArray *) simplePresentIARtoAccentedIArray{ if (_simplePresentIARtoAccentedIArray == nil) _simplePresentIARtoAccentedIArray = [[NSArray alloc] initWithObjects: @"agraviar", @"agriar", @"aliar", @"amnistiar", @"amplifiar", @"arriar", @"cariar", @"confiar", @"contrariar", @"criar", @"chirriar", @"desafiar", @"descarriar", @"desconfiar", @"desviar", @"enfriar", @"enviar", @"espiar", @"esquiar", @"expatriar", @"fiar", @"fotografiar", @"guiar", @"historiar", @"inventariar", @"liar", @"obviar", @"paliar", @"piar", @"porfiar", @"repatriar", @"resfriar", @"rociar", @"telegrafiar", @"vaciar", @"variar", @"zurriar", nil]; return _simplePresentIARtoAccentedIArray; } - (NSArray *) simplePresentUARtoAccentedUArray{ if (_simplePresentUARtoAccentedUArray == nil) _simplePresentUARtoAccentedUArray = [[NSArray alloc] initWithObjects: @"acentuar", // to emphasize, accentuate @"actuar", // to act @"atenuar", // to attenuate @"conceptuar", // to deem @"continuar", // to continue @"desvirtuar", // to spoil @"efectuar", // to carry out, effect @"evaluar", // to assess, evaluate @"exeptuar", // to except @"extenuar", // to emaciate @"fluctuar", // to fluctuate @"graduar", // to grade @"habituar", // to habituate @"individuar", // to individualize @"infatuar", // to infatuate @"insinuar", // to hint, insinuate @"menstruar", // to menstruate @"perpetuar", // to perpetuate @"preceptuar", // to establish, lay down @"puntuar", // to punctuate, to assess @"redituar", // to yield (a profit) @"situar", // to situate @"tatuar", // to tattoo @"valuar", // to value nil]; return _simplePresentUARtoAccentedUArray; } - (NSString *) getExit:(NSString *) verb { NSLog(@"getExit start"); if ( verb.length > 2 ) return [verb substringFromIndex:[verb length] - 2]; else return @""; } - (NSString *) getStem:(NSString *) verb { NSLog(@"getStem start"); // if ( [[self getExit:verb] isEqualToString:@"ír"] ) // return [[verb substringToIndex:[verb length] -2] stringByAppendingString:@"i"]; NSLog(@"getStem end"); return [verb substringToIndex:[verb length] -2]; } # pragma mark - Simple Present - (NSString *) getSimplePresentStemVerb:(NSString *) verb inPerson:(NSString *) person { NSString * verbStem = [self getStem:verb]; NSString * verbExit = [self getExit:verb]; NSLog(@"getSimplePresentStemVerb start.irregular"); // Bit irregular if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"] ) { if ( [verb rangeOfString:@"coger"].location != NSNotFound) return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"cog"] withString:@"coj"]; if ( [verb rangeOfString:@"poner"].location != NSNotFound) return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"pon"] withString:@"pong"]; if ( [verb isEqualToString:@"oír"] ) return @"oig"; if ( [verb isEqualToString:@"oír"] ) return @"oí"; // appearance of g in the first person if ( [verb isEqualToString:@"caer"] ) return @"caig"; if ( [verb isEqualToString:@"traer"] ) return @"traig"; if ( [verb rangeOfString:@"decir"].location != NSNotFound) return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"dec"] withString:@"dig"]; if ( [verb rangeOfString:@"hacer"].location != NSNotFound) return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"hac"] withString:@"hag"]; if ( [verb rangeOfString:@"poner"].location != NSNotFound) return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"pon"] withString:@"pong"]; if ( [verb isEqualToString:@"salir"] ) return @"salg"; if ( [verb rangeOfString:@"tener"].location != NSNotFound) return [verbStem stringByReplacingCharactersInRange:[verb rangeOfString:@"ten"] withString:@"teng"]; if ( [verb isEqualToString:@"valer"] ) return @"valg"; if ( [verb rangeOfString:@"venir"].location != NSNotFound) return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"ven"] withString:@"veng"]; // conducir, conocer etc. if ( verb.length > 3 && ([[verb substringFromIndex:[verb length] - 3] isEqualToString:@"cer"] || [[verb substringFromIndex:[verb length] - 3] isEqualToString:@"cir"]) ) verbStem = [[verbStem substringToIndex:[verbStem length] - 1] stringByAppendingString:@"zc"]; // other if ( [verb isEqualToString:@"ver"] ) return @"ve"; // g -> j if ( [verb isEqualToString:@"elegir"] ) return @"elij"; // g -> j if ( verb.length > 3 && [[verb substringFromIndex:[verb length] - 3] isEqualToString:@"gir"] ) verbStem = [[verb substringToIndex:[verb length] - 3] stringByAppendingString:@"j"]; // gu -> g if ( verb.length > 4 && [[verb substringFromIndex:[verb length] - 4] isEqualToString:@"guir"] ) verbStem = [[verb substringToIndex:[verb length] - 4] stringByAppendingString:@"g"]; } if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"] || [person isEqualToString:@"SECOND_PERSON_SINGULAR"] || [person isEqualToString:@"THIRD_PERSON_SINGULAR"] || [person isEqualToString:@"THIRD_PERSON_PLURAL"] ) { if ( [verb rangeOfString:@"decir"].location != NSNotFound) return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"dec"] withString:@"dic"]; if ( [verb isEqualToString:@"oír"] ) return @"oy"; if ( [verb rangeOfString:@"tener"].location != NSNotFound) return [verbStem stringByReplacingCharactersInRange:[verb rangeOfString:@"ten"] withString:@"tien"]; // Verbs adding an accent // uar to í if ( [[self simplePresentUARtoAccentedUArray] containsObject:verb] ){ verbStem = [[verb substringToIndex:verb.length - 3] stringByAppendingString:@"ú"]; } // iar to í if ( [[self simplePresentIARtoAccentedIArray] containsObject:verb] ){ verbStem = [[verb substringToIndex:verb.length - 3] stringByAppendingString:@"í"]; } } if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"]) { if ( [verb isEqualToString:@"oír"] ) return @"oí"; } if ( [verb isEqualToString:@"elegir"] ) return @"elig"; // Regular if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"] || [person isEqualToString:@"SECOND_PERSON_SINGULAR"] || [person isEqualToString:@"THIRD_PERSON_SINGULAR"] || [person isEqualToString:@"THIRD_PERSON_PLURAL"] ) { if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] ) { // Verb changes stem from e to ie return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"]; } if ( [[self simplePresentOtoUEstemChangersArray] containsObject:verb] ) { // Verb changes stem from o to ue if ( [verbStem rangeOfString:@"gon"].location != NSNotFound ) return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"gon" options:NSBackwardsSearch] withString:@"güen"]; else return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"]; } if ( [[self simplePresentEtoIstemChangersArray] containsObject:verb] ) { // Verb changes stem from e to i if ( [[verbExit substringToIndex:verbExit.length-1] isEqualToString:@"í"] ) return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"í"]; else return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"]; } // u -> ue if ( [verb isEqualToString:@"jugar"]) return @"jueg"; // huir, construir if ( verb.length > 3 && [[verb substringFromIndex:[verb length] - 3] isEqualToString:@"uir"] && ![[verb substringFromIndex:[verb length] - 3] isEqualToString:@"guir"]) return [[verb substringToIndex:[verb length] - 3] stringByAppendingString:@"uy"]; } return verbStem; } - (NSString *) conjugateSimplePresentVerb:(NSString *) verb inPerson:(NSString *) person { NSString * verbStem = [self getSimplePresentStemVerb:verb inPerson:person]; NSString * verbExit = [self getExit:verb]; // other types of first person changes if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"]) { if ( [verb isEqualToString:@"caber"] ) return @"quepo"; if ( [verb isEqualToString:@"dar"] ) return @"doy"; if ( [verb isEqualToString:@"saber"] ) return @"sé"; } // regular if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"]) { if ( [verb isEqualToString:@"estar"] ) return @"estoy"; if ( [verb isEqualToString:@"ser"] ) return @"soy"; if ( [verb isEqualToString:@"ir"] ) return @"voy"; if ( [verb isEqualToString:@"oler"] ) return @"huelo"; if ( [verb isEqualToString:@"haber"] ) return @"he"; return [verbStem stringByAppendingString:@"o"]; } if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"]) { if ( [verb isEqualToString:@"estar"] ) return @"estás"; if ( [verb isEqualToString:@"ser"] ) return @"eres"; if ( [verb isEqualToString:@"ir"] ) return @"vas"; if ( [verb isEqualToString:@"oler"] ) return @"hueles"; if ( [verb isEqualToString:@"haber"] ) return @"has"; if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"as"]; else return [verbStem stringByAppendingString:@"es"]; } if ( [person isEqualToString:@"THIRD_PERSON_SINGULAR"]) { if ( [verb isEqualToString:@"estar"] ) return @"está"; if ( [verb isEqualToString:@"ser"] ) return @"es"; if ( [verb isEqualToString:@"ir"] ) return @"va"; if ( [verb isEqualToString:@"oler"] ) return @"huele"; if ( [verb isEqualToString:@"haber"] ) return @"ha"; if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"a"]; else return [verbStem stringByAppendingString:@"e"]; } if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) { if ( [verb isEqualToString:@"estar"] ) return @"estamos"; if ( [verb isEqualToString:@"ser"] ) return @"somos"; if ( [verb isEqualToString:@"ir"] ) return @"vamos"; if ( [verb isEqualToString:@"haber"] ) return @"hemos"; if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"amos"]; if ( [@"er" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"emos"]; if ( [@"ír" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"ímos"]; if ( [@"ir" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"imos"]; } if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"]) { if ( [verb isEqualToString:@"estar"] ) return @"estáis"; if ( [verb isEqualToString:@"ser"] ) return @"sois"; if ( [verb isEqualToString:@"ir"] ) return @"vais"; if ( [verb isEqualToString:@"haber"] ) return @"habéis"; if ( [verb isEqualToString:@"dar"] ) return @"dais"; if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"áis"]; if ( [@"er" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"éis"]; if ( [@"ír" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"ís"]; if ( [@"ir" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"ís"]; } if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"]) { if ( [verb isEqualToString:@"estar"] ) return @"están"; if ( [verb isEqualToString:@"ser"] ) return @"son"; if ( [verb isEqualToString:@"ir"] ) return @"van"; if ( [verb isEqualToString:@"oler"] ) return @"huelen"; if ( [verb isEqualToString:@"haber"] ) return @"han"; if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"an"]; else return [verbStem stringByAppendingString:@"en"]; } return verb; } # pragma mark - Present subjuntivo - (NSString *) conjugatePresentSubjunctiveVerb:(NSString *) verb inPerson:(NSString *) person { NSString * verbStem = [self getStem:verb]; NSString * verbExit = [self getExit:verb]; NSString * simplePresentYo = [self conjugateSimplePresentVerb:verb inPerson:@"FIRST_PERSON_SINGULAR"]; NSString * simplePresentYoStem = [simplePresentYo substringToIndex:simplePresentYo.length -1]; NSLog(@"person %@", person); if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"] || [person isEqualToString:@"THIRD_PERSON_SINGULAR"] ) { // 1. If the first person singular does not end in an -o, the verb is irregular in the present subjunctive if ( [verb isEqualToString:@"ser"]) return @"sea"; if ( [verb isEqualToString:@"estar"]) return @"esté"; if ( [verb isEqualToString:@"ir"]) return @"vaya"; if ( [verb isEqualToString:@"dar"]) return @"dé"; if ( [verb isEqualToString:@"saber"]) return @"sepa"; if ( [verb isEqualToString:@"haber"]) return @"haya"; // 2. If the stem of the yo form is exactly the same as the stem of the infinitive, the verb is regular // Orthographic changes if ( simplePresentYoStem.length > 2 && [[simplePresentYoStem substringFromIndex:simplePresentYoStem.length - 2] isEqualToString:@"go"] ) return [[simplePresentYoStem substringToIndex:simplePresentYoStem.length - 1] stringByAppendingString:@"a"]; if ( verb.length > 3 && [[verb substringFromIndex:verb.length - 3] isEqualToString:@"car"] ) return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"c" options:NSBackwardsSearch] withString:@"que"]; if ( verb.length > 3 && [[verb substringFromIndex:verb.length - 3] isEqualToString:@"gar"] ) return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"gue"]; if ( verb.length > 3 && [[verb substringFromIndex:verb.length - 3] isEqualToString:@"zar"] ) return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"z" options:NSBackwardsSearch] withString:@"ce"]; if ( verb.length > 4 && [[verb substringFromIndex:verb.length - 4] isEqualToString:@"guir"] ) { if ([[simplePresentYoStem substringFromIndex:simplePresentYoStem.length -1] isEqualToString:@"g"] ) { return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"ga"]; } else { return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"gu" options:NSBackwardsSearch] withString:@"ga"]; } } if ( verb.length > 3 && [[verb substringFromIndex:verb.length - 3] isEqualToString:@"gir"] ) { if ([[simplePresentYoStem substringFromIndex:simplePresentYoStem.length -1] isEqualToString:@"j"] ) { return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"j" options:NSBackwardsSearch] withString:@"ja"]; } else { return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"ja"]; } } if ( [verbStem isEqualToString:simplePresentYoStem]) { if ( [verbExit isEqualToString:@"ar"] ) return [verbStem stringByAppendingString:@"e"]; else return [verbStem stringByAppendingString:@"a"]; } // 3. If the stem of the yo form shows a stem change when compared to the stem of the infinitive, // and it's an -ar or -er verb,the stem will undergo the same changes as the present indicative if ( [verbExit isEqualToString:@"ar"] || [verbExit isEqualToString:@"er"] ) { if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] || [[self simplePresentOtoUEstemChangersArray] containsObject:verb] || [[self simplePresentEtoIstemChangersArray] containsObject:verb] || [verb isEqualToString:@"jugar"] ) { if ( [verb isEqualToString:@"jugar"] ) return @"juegue"; if ( [verbExit isEqualToString:@"ar"] ) return [simplePresentYoStem stringByAppendingString:@"e"]; else return [simplePresentYoStem stringByAppendingString:@"a"]; } } // 4. if the stem of the yo form when compared to infinitie shows it's an -ir stem changing verb, all // forms of the present subjunctive will have stem changes if ( [verbExit isEqualToString:@"ir"] || [verbExit isEqualToString:@"ír"] ) { if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] || [[self simplePresentOtoUEstemChangersArray] containsObject:verb] || [[self simplePresentEtoIstemChangersArray] containsObject:verb] ) { return [simplePresentYoStem stringByAppendingString:@"a"]; } } // 5. Changing stem in yo form and not a stem changing verb,: use this stem for all forms of // present subjuntive if ( [verbExit isEqualToString:@"ar"] ) return [simplePresentYoStem stringByAppendingString:@"e"]; else return [simplePresentYoStem stringByAppendingString:@"a"]; } else if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"]) { // 1. If the first person singular does not end in an -o, the verb is irregular in the present subjunctive if ( [verb isEqualToString:@"ser"]) return @"seas"; if ( [verb isEqualToString:@"estar"]) return @"estés"; if ( [verb isEqualToString:@"ir"]) return @"vayas"; if ( [verb isEqualToString:@"dar"]) return @"des"; if ( [verb isEqualToString:@"saber"]) return @"sepas"; if ( [verb isEqualToString:@"haber"]) return @"hayas"; // 2. If the stem of the yo form is exactly the same as the stem of the infinitive, the verb is regular // Orthographic changes if ( simplePresentYoStem.length > 2 && [[simplePresentYoStem substringFromIndex:simplePresentYoStem.length - 2] isEqualToString:@"go"] ) return [[simplePresentYoStem substringToIndex:simplePresentYoStem.length - 1] stringByAppendingString:@"as"]; if ( verb.length > 3 && [[verb substringFromIndex:verb.length - 3] isEqualToString:@"car"] ) return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"c" options:NSBackwardsSearch] withString:@"ques"]; if ( verb.length > 3 && [[verb substringFromIndex:verb.length - 3] isEqualToString:@"gar"] ) return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"gues"]; if ( verb.length > 3 && [[verb substringFromIndex:verb.length - 3] isEqualToString:@"zar"] ) return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"z" options:NSBackwardsSearch] withString:@"ces"]; if ( verb.length > 4 && [[verb substringFromIndex:verb.length - 4] isEqualToString:@"guir"] ) { if ([[simplePresentYoStem substringFromIndex:simplePresentYoStem.length -1] isEqualToString:@"g"] ) { return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"gas"]; } else { return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"gu" options:NSBackwardsSearch] withString:@"gas"]; } } if ( verb.length > 3 && [[verb substringFromIndex:verb.length - 3] isEqualToString:@"gir"] ) { if ([[simplePresentYoStem substringFromIndex:simplePresentYoStem.length -1] isEqualToString:@"j"] ) { return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"j" options:NSBackwardsSearch] withString:@"jas"]; } else { return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"jas"]; } } if ( [verbStem isEqualToString:simplePresentYoStem] ) { if ( [verbExit isEqualToString:@"ar"] ) return [verbStem stringByAppendingString:@"es"]; else return [verbStem stringByAppendingString:@"as"]; } // 3. If the stem of the yo form shows a stem change when compared to the stem of the infinitive, // and it's an -ar or -er verb,the stem will undergo the same changes as the present indicative if ( [verbExit isEqualToString:@"ar"] || [verbExit isEqualToString:@"er"] ) { if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] || [[self simplePresentOtoUEstemChangersArray] containsObject:verb] || [[self simplePresentEtoIstemChangersArray] containsObject:verb] || [verb isEqualToString:@"jugar"] ) { if ( [verb isEqualToString:@"jugar"] ) return @"juegues"; if ( [verbExit isEqualToString:@"ar"] ) return [simplePresentYoStem stringByAppendingString:@"es"]; else return [simplePresentYoStem stringByAppendingString:@"as"]; } } // 4. if the stem of the yo form when compared to infinitie shows it's an -ir stem changing verb, all // forms of the present subjunctive will have stem changes and special changes in nosotros and vosotros if ( [verbExit isEqualToString:@"ir"] || [verbExit isEqualToString:@"ír"] ) { if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] || [[self simplePresentOtoUEstemChangersArray] containsObject:verb] || [[self simplePresentEtoIstemChangersArray] containsObject:verb] ) { return [simplePresentYoStem stringByAppendingString:@"as"]; } } // 5. Changing stem in yo form and not a stem changing verb,: use this stem for all forms of // present subjuntive if ( [verbExit isEqualToString:@"ar"] ) return [simplePresentYoStem stringByAppendingString:@"es"]; else return [simplePresentYoStem stringByAppendingString:@"as"]; } else if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) { // Remove any accented characters, if any from stem if ( [verbStem rangeOfString:@"í"].location != NSNotFound ) { verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"í"] withString:@"i"]; } if ( [verbStem rangeOfString:@"é"].location != NSNotFound ) { verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"é"] withString:@"e"]; } if ( [simplePresentYoStem rangeOfString:@"ú"].location != NSNotFound ) { verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"ú"] withString:@"u"]; } // 1. If the first person singular does not end in an -o, the verb is irregular in the present subjunctive if ( [verb isEqualToString:@"ser"]) return @"seamos"; if ( [verb isEqualToString:@"estar"]) return @"estemos"; if ( [verb isEqualToString:@"ir"]) return @"vayamos"; if ( [verb isEqualToString:@"dar"]) return @"demos"; if ( [verb isEqualToString:@"saber"]) return @"sepamos"; if ( [verb isEqualToString:@"haber"]) return @"hayamos"; // 2. If the stem of the yo form is exactly the same as the stem of the infinitive, the verb is regular // Orthographic changes if ( simplePresentYoStem.length > 2 && [[simplePresentYoStem substringFromIndex:simplePresentYoStem.length - 2] isEqualToString:@"go"] ) return [[simplePresentYoStem substringToIndex:simplePresentYoStem.length - 1] stringByAppendingString:@"gamos"]; if ( verb.length > 3 && [[verb substringFromIndex:verb.length - 3] isEqualToString:@"car"] ) return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"c" options:NSBackwardsSearch] withString:@"quemos"]; if ( verb.length > 3 && [[verb substringFromIndex:verb.length - 3] isEqualToString:@"gar"] ) return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"guemos"]; if ( verb.length > 3 && [[verb substringFromIndex:verb.length - 3] isEqualToString:@"zar"] ) return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"z" options:NSBackwardsSearch] withString:@"cemos"]; if ( verb.length > 4 && [[verb substringFromIndex:verb.length - 4] isEqualToString:@"guir"] ) { if ([[simplePresentYoStem substringFromIndex:simplePresentYoStem.length -1] isEqualToString:@"g"] ) { return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"gamos"]; } else { return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"gu" options:NSBackwardsSearch] withString:@"gamos"]; } } if ( verb.length > 3 && [[verb substringFromIndex:verb.length - 3] isEqualToString:@"gir"] ) { if ([[simplePresentYoStem substringFromIndex:simplePresentYoStem.length -1] isEqualToString:@"j"] ) { return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"j" options:NSBackwardsSearch] withString:@"jamos"]; } else { return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"jamos"]; } } if ( [verbStem isEqualToString:simplePresentYoStem] || [self.simplePresentUARtoAccentedUArray containsObject:verb] || [self.simplePresentIARtoAccentedIArray containsObject:verb] ) { if ( [verbExit isEqualToString:@"ar"] ) return [verbStem stringByAppendingString:@"emos"]; else return [verbStem stringByAppendingString:@"amos"]; } // 3. If the stem of the yo form shows a stem change when compared to the stem of the infinitive, // and it's an -ar or -er verb,the stem will undergo the same changes as the present indicative if ( [verbExit isEqualToString:@"ar"] || [verbExit isEqualToString:@"er"] ) { if ( [verb isEqualToString:@"jugar"] ) return @"jueguemos"; if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] && [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] isEqualToString:simplePresentYoStem] ) { if ( [verbExit isEqualToString:@"ar"] ) return [verbStem stringByAppendingString:@"emos"]; else return [verbStem stringByAppendingString:@"amos"]; } if ( [[self simplePresentOtoUEstemChangersArray] containsObject:verb] && [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] isEqualToString:simplePresentYoStem] ) { if ( [verbExit isEqualToString:@"ar"] ) return [verbStem stringByAppendingString:@"emos"]; else return [verbStem stringByAppendingString:@"amos"]; } if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] && [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] isEqualToString:simplePresentYoStem] ) { if ( [verbExit isEqualToString:@"ar"] ) return [verbStem stringByAppendingString:@"emos"]; else return [verbStem stringByAppendingString:@"amos"]; } } // 4. if the stem of the yo form when compared to infinitie shows it's an -ir stem changing verb, all // forms of the present subjunctive will have stem changes and special changes in nosotros and vosotros if ( [verbExit isEqualToString:@"ir"] || [verbExit isEqualToString:@"ír"] ) { if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] && [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] isEqualToString:simplePresentYoStem] ) { return [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"amos"]; } if ( [[self simplePresentOtoUEstemChangersArray] containsObject:verb] && [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] isEqualToString:simplePresentYoStem] ) { return [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"u"] stringByAppendingString:@"amos"]; } if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] && [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] isEqualToString:simplePresentYoStem] ) { return [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"amos"]; } } // 5. Changing stem in yo form and not a stem changing verb,: use this stem for all forms of // present subjuntive if ( [verbExit isEqualToString:@"ar"] ) return [simplePresentYoStem stringByAppendingString:@"emos"]; else return [simplePresentYoStem stringByAppendingString:@"amos"]; } else if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"]) { // Remove any accented characters, if any from stem if ( [verbStem rangeOfString:@"í"].location != NSNotFound ) { verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"í"] withString:@"i"]; } if ( [verbStem rangeOfString:@"é"].location != NSNotFound ) { verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"é"] withString:@"e"]; } if ( [simplePresentYoStem rangeOfString:@"ú"].location != NSNotFound ) { verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"ú"] withString:@"u"]; } // 1. If the first person singular does not end in an -o, the verb is irregular in the present subjunctive if ( [verb isEqualToString:@"ser"]) return @"seáis"; if ( [verb isEqualToString:@"estar"]) return @"estéis"; if ( [verb isEqualToString:@"ir"]) return @"vayáis"; if ( [verb isEqualToString:@"dar"]) return @"deis"; if ( [verb isEqualToString:@"saber"]) return @"sepáis"; if ( [verb isEqualToString:@"haber"]) return @"hayáis"; // 2. If the stem of the yo form is exactly the same as the stem of the infinitive, the verb is regular // Orthographic changes if ( simplePresentYoStem.length > 2 && [[simplePresentYoStem substringFromIndex:simplePresentYoStem.length - 2] isEqualToString:@"go"] ) return [[simplePresentYoStem substringToIndex:simplePresentYoStem.length - 1] stringByAppendingString:@"áis"]; if ( verb.length > 3 && [[verb substringFromIndex:verb.length - 3] isEqualToString:@"car"] ) return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"c" options:NSBackwardsSearch] withString:@"quéis"]; if ( verb.length > 3 && [[verb substringFromIndex:verb.length - 3] isEqualToString:@"gar"] ) return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"guéis"]; if ( verb.length > 3 && [[verb substringFromIndex:verb.length - 3] isEqualToString:@"zar"] ) return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"z" options:NSBackwardsSearch] withString:@"céis"]; if ( verb.length > 4 && [[verb substringFromIndex:verb.length - 4] isEqualToString:@"guir"] ) { if ([[simplePresentYoStem substringFromIndex:simplePresentYoStem.length -1] isEqualToString:@"g"] ) { return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"gáis"]; } else { return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"gu" options:NSBackwardsSearch] withString:@"gáis"]; } } if ( verb.length > 3 && [[verb substringFromIndex:verb.length - 3] isEqualToString:@"gir"] ) { if ([[simplePresentYoStem substringFromIndex:simplePresentYoStem.length -1] isEqualToString:@"j"] ) { return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"j" options:NSBackwardsSearch] withString:@"jáis"]; } else { return [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"jáis"]; } } if ( [verbStem isEqualToString:simplePresentYoStem] || [self.simplePresentUARtoAccentedUArray containsObject:verb] || [self.simplePresentIARtoAccentedIArray containsObject:verb] ) { if ( [verbExit isEqualToString:@"ar"] ) return [verbStem stringByAppendingString:@"éis"]; else return [verbStem stringByAppendingString:@"áis"]; } // 3. If the stem of the yo form shows a stem change when compared to the stem of the infinitive, // and it's an -ar or -er verb,the stem will undergo the same changes as the present indicative if ( [verbExit isEqualToString:@"ar"] || [verbExit isEqualToString:@"er"] ) { if ( [verb isEqualToString:@"jugar"] ) return @"jueguemos"; if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] && [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] isEqualToString:simplePresentYoStem] ) { if ( [verbExit isEqualToString:@"ar"] ) return [verbStem stringByAppendingString:@"éis"]; else return [verbStem stringByAppendingString:@"áis"]; } if ( [[self simplePresentOtoUEstemChangersArray] containsObject:verb] && [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] isEqualToString:simplePresentYoStem] ) { if ( [verbExit isEqualToString:@"ar"] ) return [verbStem stringByAppendingString:@"éis"]; else return [verbStem stringByAppendingString:@"áis"]; } if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] && [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] isEqualToString:simplePresentYoStem] ) { if ( [verbExit isEqualToString:@"ar"] ) return [verbStem stringByAppendingString:@"éis"]; else return [verbStem stringByAppendingString:@"áis"]; } } // 4. if the stem of the yo form when compared to infinitie shows it's an -ir stem changing verb, all // forms of the present subjunctive will have stem changes and special changes in nosotros and vosotros if ( [verbExit isEqualToString:@"ir"] || [verbExit isEqualToString:@"ír"] ) { if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] && [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] isEqualToString:simplePresentYoStem] ) { return [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"áis"]; } if ( [[self simplePresentOtoUEstemChangersArray] containsObject:verb] && [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] isEqualToString:simplePresentYoStem] ) { return [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"u"] stringByAppendingString:@"áis"]; } if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] && [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] isEqualToString:simplePresentYoStem] ) { return [[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"áis"]; } } // 5. Changing stem in yo form and not a stem changing verb,: use this stem for all forms of // present subjuntive if ( [verbExit isEqualToString:@"ar"] ) return [simplePresentYoStem stringByAppendingString:@"éis"]; else return [simplePresentYoStem stringByAppendingString:@"áis"]; } else if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"]) { // 1. If the first person singular does not end in an -o, the verb is irregular in the present subjunctive if ( [verb isEqualToString:@"ser"]) return @"sean"; if ( [verb isEqualToString:@"estar"]) return @"estén"; if ( [verb isEqualToString:@"ir"]) return @"vayan"; if ( [verb isEqualToString:@"dar"]) return @"den"; if ( [verb isEqualToString:@"saber"]) return @"sepan"; if ( [verb isEqualToString:@"haber"]) return @"hayan"; // 2. If the stem of the yo form is exactly the same as the stem of the infinitive, the verb is regular // Orthographic changes if ( simplePresentYoStem.length > 2 && [[simplePresentYoStem substringFromIndex:simplePresentYoStem.length - 2] isEqualToString:@"go"] ) return [[simplePresentYoStem substringToIndex:simplePresentYoStem.length - 1] stringByAppendingString:@"an"]; if ( verb.length > 3 && [[verb substringFromIndex:verb.length - 3] isEqualToString:@"car"] ) return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"c" options:NSBackwardsSearch] withString:@"quen"]; if ( verb.length > 3 && [[verb substringFromIndex:verb.length - 3] isEqualToString:@"gar"] ) return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"guen"]; if ( verb.length > 3 && [[verb substringFromIndex:verb.length - 3] isEqualToString:@"zar"] ) return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"z" options:NSBackwardsSearch] withString:@"cen"]; if ( verb.length > 4 && [[verb substringFromIndex:verb.length - 4] isEqualToString:@"guir"] ) { if ([[simplePresentYoStem substringFromIndex:simplePresentYoStem.length -1] isEqualToString:@"g"] ) { return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"gan"]; } else { return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"gu" options:NSBackwardsSearch] withString:@"gan"]; } } if ( verb.length > 3 && [[verb substringFromIndex:verb.length - 3] isEqualToString:@"gir"] ) { if ([[simplePresentYoStem substringFromIndex:simplePresentYoStem.length -1] isEqualToString:@"j"] ) { return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"j" options:NSBackwardsSearch] withString:@"jan"]; } else { return [simplePresentYoStem stringByReplacingCharactersInRange:[simplePresentYoStem rangeOfString:@"g" options:NSBackwardsSearch] withString:@"jan"]; } } if ( [verbStem isEqualToString:simplePresentYoStem]) { if ( [verbExit isEqualToString:@"ar"] ) return [verbStem stringByAppendingString:@"en"]; else return [verbStem stringByAppendingString:@"an"]; } // 3. If the stem of the yo form shows a stem change when compared to the stem of the infinitive, // and it's an -ar or -er verb,the stem will undergo the same changes as the present indicative if ( [verbExit isEqualToString:@"ar"] || [verbExit isEqualToString:@"er"] ) { if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] || [[self simplePresentOtoUEstemChangersArray] containsObject:verb] || [[self simplePresentEtoIstemChangersArray] containsObject:verb] || [verb isEqualToString:@"jugar"] ) { if ( [verb isEqualToString:@"jugar"] ) return @"jueguen"; if ( [verbExit isEqualToString:@"ar"] ) return [simplePresentYoStem stringByAppendingString:@"en"]; else return [simplePresentYoStem stringByAppendingString:@"an"]; } } // 4. if the stem of the yo form when compared to infinitie shows it's an -ir stem changing verb, all // forms of the present subjunctive will have stem changes if ( [verbExit isEqualToString:@"ir"] || [verbExit isEqualToString:@"ír"] ) { if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] || [[self simplePresentOtoUEstemChangersArray] containsObject:verb] || [[self simplePresentEtoIstemChangersArray] containsObject:verb] ) { return [simplePresentYoStem stringByAppendingString:@"an"]; } } // 5. Changing stem in yo form and not a stem changing verb,: use this stem for all forms of // present subjuntive if ( [verbExit isEqualToString:@"ar"] ) return [simplePresentYoStem stringByAppendingString:@"en"]; else return [simplePresentYoStem stringByAppendingString:@"an"]; } return verb; } # pragma mark - Simple Past - (NSString *) conjugateSimplePastVerb:(NSString *) verb inPerson:(NSString *) person { NSString * verbStem = [self getStem:verb]; NSString * verbExit = [self getExit:verb]; if ( [verb isEqualToString:@"andar"]) verbStem = @"anduv"; if ( [verb isEqualToString:@"conducir"]) verbStem = @"conduj"; if ( [verb isEqualToString:@"decir"]) verbStem = @"dij"; if ( [verb isEqualToString:@"estar"]) verbStem = @"estuv"; if ( [verb isEqualToString:@"haber"]) verbStem = @"hub"; if ( [verb isEqualToString:@"hacer"]) { if ( [person isEqualToString:@"THIRD_PERSON_SINGULAR"]) verbStem = @"hiz"; else verbStem = @"hic"; } if ( [verb isEqualToString:@"poder"]) verbStem = @"pud"; if ( [verb isEqualToString:@"poner"]) verbStem = @"pus"; if ( [verb isEqualToString:@"querer"]) verbStem = @"quis"; if ( [verb isEqualToString:@"saber"]) verbStem = @"sup"; if ( [verb isEqualToString:@"tener"]) verbStem = @"tuv"; if ( [verb isEqualToString:@"traducir"]) verbStem = @"traduj"; if ( [verb isEqualToString:@"traer"]) verbStem = @"traj"; if ( [verb isEqualToString:@"venir"]) verbStem = @"vin"; if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"]) { // Irregular if ( [verb isEqualToString:@"dar"]) return @"di"; if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) return @"fui"; if ( verb.length > 3 && [[verb substringFromIndex:[verb length] - 3] isEqualToString:@"car"] ) return [[verb substringToIndex:[verb length] - 3] stringByAppendingString:@"qué"]; if ( verb.length > 3 && [[verb substringFromIndex:[verb length] - 3] isEqualToString:@"gar"] ) return [[verb substringToIndex:[verb length] - 3] stringByAppendingString:@"gué"]; if ( verb.length > 3 && [[verb substringFromIndex:[verb length] - 3] isEqualToString:@"zar"] ) return [[verb substringToIndex:[verb length] - 3] stringByAppendingString:@"cé"]; if ( [verbStem isEqualToString:[self getStem:verb]]) { // Regular if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"é"]; else return [verbStem stringByAppendingString:@"í"]; } else { // Irregular return [verbStem stringByAppendingString:@"e"]; } } if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"]) { // Irregular if ( [verb isEqualToString:@"dar"]) return @"diste"; if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) return @"fuiste"; if ( [verbStem isEqualToString:[self getStem:verb]]) { // Regular if ( [@"ar" isEqualToString:verbExit] ) { return [verbStem stringByAppendingString:@"aste"]; } else if ( [[verbStem substringFromIndex:verbStem.length-1] isEqualToString:@"e"] ) { return [verbStem stringByAppendingString:@"íste"]; } else if ( [[verbStem substringFromIndex:verbStem.length-1] isEqualToString:@"o"] ) { return [verbStem stringByAppendingString:@"íste"]; } else { return [verbStem stringByAppendingString:@"iste"]; } } else { // Irregular return [verbStem stringByAppendingString:@"iste"]; } } if ( [person isEqualToString:@"THIRD_PERSON_SINGULAR"]) { // Irregular if ( [verb isEqualToString:@"dar"]) return @"dio"; if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) return @"fue"; if ( ![verbStem isEqualToString:[self getStem:verb]]) { // Irregular, stem changed if ( verbStem.length > 1 && [[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"i"]) return [verbStem stringByAppendingString:@"ó"]; else return [verbStem stringByAppendingString:@"o"]; } if ( verb.length > 3 && ![[verb substringFromIndex:verb.length-3] isEqualToString:@"car"] && ![[verb substringFromIndex:verb.length-3] isEqualToString:@"gar"] && ![[verb substringFromIndex:verb.length-3] isEqualToString:@"zar"] ) { if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] && [verbStem rangeOfString:@"e"].location != NSNotFound) { // Verb changes stem from e to i verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"]; } if ( [[self simplePresentOtoUEstemChangersArray] containsObject:verb] && [verbStem rangeOfString:@"o"].location != NSNotFound) { // Verb changes stem from o to u verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"u"]; } if ( [[self simplePresentEtoIstemChangersArray] containsObject:verb] && [verbStem rangeOfString:@"e"].location != NSNotFound) { // Verb changes stem from e to i verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"]; } } if ( verb.length > 0 && [verbStem isEqualToString:[self getStem:verb]] && // No stem change ([[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"e"] || [[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"u"] || [[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"o"]) ) { // If the stem of an -er or -ir ends in a vowel, the -i of the 3rd person changes to y return [verbStem stringByAppendingString:@"yó"]; } // Regular if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"ó"]; else if ( verbStem.length > 1 && [[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"i"]) return [verbStem stringByAppendingString:@"ó"]; else if ( verbStem.length > 1 && [[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"e"]) return [verbStem stringByAppendingString:@"yo"]; else return [verbStem stringByAppendingString:@"ió"]; } if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) { // Irregular if ( [verb isEqualToString:@"dar"]) return @"dimos"; if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) return @"fuimos"; if ( [verbStem isEqualToString:[self getStem:verb]]) { // Regular if ( [@"ar" isEqualToString:verbExit] ) { return [verbStem stringByAppendingString:@"amos"]; } else if ( [[verbStem substringFromIndex:verbStem.length-1] isEqualToString:@"e"] ) { return [verbStem stringByAppendingString:@"ímos"]; } else if ( [[verbStem substringFromIndex:verbStem.length-1] isEqualToString:@"o"] ) { return [verbStem stringByAppendingString:@"ímos"]; } else { return [verbStem stringByAppendingString:@"imos"]; } } else { // Irregular return [verbStem stringByAppendingString:@"imos"]; } } if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"]) { // Irregular if ( [verb isEqualToString:@"dar"]) return @"disteis"; if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) return @"fuisteis"; if ( [verbStem isEqualToString:[self getStem:verb]]) { // Regular if ( [@"ar" isEqualToString:verbExit] ) { return [verbStem stringByAppendingString:@"asteis"]; } else if ( [[verbStem substringFromIndex:verbStem.length-1] isEqualToString:@"e"] ) { return [verbStem stringByAppendingString:@"ísteis"]; } else if ( [[verbStem substringFromIndex:verbStem.length-1] isEqualToString:@"o"] ) { return [verbStem stringByAppendingString:@"ísteis"]; } else { return [verbStem stringByAppendingString:@"isteis"]; } } else { // Irregular return [verbStem stringByAppendingString:@"isteis"]; } } if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"]) { // Irregular if ( [verb isEqualToString:@"dar"]) return @"dieron"; if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) return @"fueron"; if ( [verbStem isEqualToString:[self getStem:verb]] && verb.length > 3 && ![[verb substringFromIndex:verb.length-3] isEqualToString:@"car"] && ![[verb substringFromIndex:verb.length-3] isEqualToString:@"gar"] && ![[verb substringFromIndex:verb.length-3] isEqualToString:@"zar"] ) { if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] ) { // Verb changes stem from e to i verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"]; } if ( [[self simplePresentOtoUEstemChangersArray] containsObject:verb] ) { // Verb changes stem from o to u verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"u"]; } if ( [[self simplePresentEtoIstemChangersArray] containsObject:verb] ) { // Verb changes stem from e to i verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"]; } } if ( [verbStem isEqualToString:[self getStem:verb]]) { // Regular if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"aron"]; else if ( verbStem.length > 0 && [[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"j"]) return [verbStem stringByAppendingString:@"eron"]; else if ( verbStem.length > 0 && [[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"i"]) return [verbStem stringByAppendingString:@"yeron"]; else if ( verbStem.length > 0 && [[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"e"]) return [verbStem stringByAppendingString:@"yeron"]; else if ( verbStem.length > 0 && [[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"u"]) return [verbStem stringByAppendingString:@"yeron"]; else if ( verbStem.length > 0 && [[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"o"]) return [verbStem stringByAppendingString:@"yeron"]; else return [verbStem stringByAppendingString:@"ieron"]; } else { if ( verbStem.length > 1 && [[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"j"]) return [verbStem stringByAppendingString:@"eron"]; else if ( verbStem.length > 0 && [[verbStem substringFromIndex:[verbStem length] - 1] isEqualToString:@"i"]) return [verbStem stringByAppendingString:@"eron"]; else return [verbStem stringByAppendingString:@"ieron"]; } } return verb; } # pragma mark - Imperfect - (NSString *) conjugateImperfectVerb:(NSString *) verb inPerson:(NSString *) person { NSString * verbStem = [self getStem:verb]; NSString * verbExit = [self getExit:verb]; // regular if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"]) { if ( [verb isEqualToString:@"ser"] ) return @"era"; if ( [verb isEqualToString:@"ir"] ) return @"iba"; if ( [verb isEqualToString:@"ver"] ) return @"veía"; if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"aba"]; else return [verbStem stringByAppendingString:@"ía"]; } if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"]) { if ( [verb isEqualToString:@"ser"] ) return @"eras"; if ( [verb isEqualToString:@"ir"] ) return @"ibas"; if ( [verb isEqualToString:@"ver"] ) return @"veías"; if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"abas"]; else return [verbStem stringByAppendingString:@"ías"]; } if ( [person isEqualToString:@"THIRD_PERSON_SINGULAR"]) { if ( [verb isEqualToString:@"ser"] ) return @"era"; if ( [verb isEqualToString:@"ir"] ) return @"iba"; if ( [verb isEqualToString:@"ver"] ) return @"veía"; if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"aba"]; else return [verbStem stringByAppendingString:@"ía"]; } if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) { if ( [verb isEqualToString:@"ser"] ) return @"éramos"; if ( [verb isEqualToString:@"ir"] ) return @"íbamos"; if ( [verb isEqualToString:@"ver"] ) return @"veíamos"; if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"ábamos"]; else return [verbStem stringByAppendingString:@"íamos"]; } if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"]) { if ( [verb isEqualToString:@"ser"] ) return @"erais"; if ( [verb isEqualToString:@"ir"] ) return @"ibais"; if ( [verb isEqualToString:@"ver"] ) return @"veíais"; if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"abais"]; else return [verbStem stringByAppendingString:@"íais"]; } if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"]) { if ( [verb isEqualToString:@"ser"] ) return @"eran"; if ( [verb isEqualToString:@"ir"] ) return @"iban"; if ( [verb isEqualToString:@"ver"] ) return @"veían"; if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"aban"]; else return [verbStem stringByAppendingString:@"ían"]; } return verb; } - (NSString *) conjugateImperfectSubjunctiveVerb:(NSString *) verb inPerson:(NSString *) person { NSString * verbExit = [self getExit:verb]; NSString * verbStem = nil; NSString * imperfect = [self conjugateSimplePastVerb:verb inPerson:@"THIRD_PERSON_PLURAL"]; if ( imperfect.length > 2 ) verbStem = [imperfect substringToIndex:imperfect.length-2]; // regular if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"]) { return [verbStem stringByAppendingString:@"a"]; } if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"]) { return [verbStem stringByAppendingString:@"as"]; } if ( [person isEqualToString:@"THIRD_PERSON_SINGULAR"]) { return [verbStem stringByAppendingString:@"a"]; } if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) { if ([[verbStem substringFromIndex:verbStem.length-2] isEqualToString:@"ar"]) verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"ar" options:NSBackwardsSearch] withString:@"ár"]; else verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"er" options:NSBackwardsSearch] withString:@"ér"]; return [verbStem stringByAppendingString:@"amos"];; } if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"]) { return [verbStem stringByAppendingString:@"ais"]; } if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"]) { return [verbStem stringByAppendingString:@"an"]; } return verb; } # pragma mark - Future / Condicional // Get stem for Future and Condicional - (NSString *) getFutureStem:(NSString *) verb { // Irregular stem if ( [verb isEqualToString:@"decir"]) return @"dir"; if ( [verb isEqualToString:@"haber"]) return @"habr"; if ( [verb isEqualToString:@"hacer"]) return @"har"; if ( [verb isEqualToString:@"poder"]) return @"podr"; if ( [verb isEqualToString:@"poner"]) return @"pondr"; if ( [verb isEqualToString:@"querer"]) return @"querr"; if ( [verb isEqualToString:@"saber"]) return @"sabr"; if ( [verb isEqualToString:@"salir"]) return @"saldr"; if ( [verb isEqualToString:@"tener"]) return @"tendr"; if ( [verb isEqualToString:@"valer"]) return @"valdr"; if ( [verb isEqualToString:@"venir"]) return @"vendr"; // Regular stem = infinitive return verb; } - (NSString *) conjugateFutureVerb:(NSString *) verb inPerson:(NSString *) person { NSString * verbStem = [self getFutureStem:verb]; // regular if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"]) return [verbStem stringByAppendingString:@"é"]; if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"]) return [verbStem stringByAppendingString:@"ás"]; if ( [person isEqualToString:@"THIRD_PERSON_SINGULAR"]) return [verbStem stringByAppendingString:@"á"]; if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) return [verbStem stringByAppendingString:@"emos"]; if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"]) return [verbStem stringByAppendingString:@"éis"]; if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"]) return [verbStem stringByAppendingString:@"án"]; return verb; } - (NSString *) conjugateConditionalVerb:(NSString *) verb inPerson:(NSString *) person { NSString * verbStem = [self getFutureStem:verb]; // regular if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"]) return [verbStem stringByAppendingString:@"ía"]; if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"]) return [verbStem stringByAppendingString:@"ías"]; if ( [person isEqualToString:@"THIRD_PERSON_SINGULAR"]) return [verbStem stringByAppendingString:@"ía"]; if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) return [verbStem stringByAppendingString:@"íamos"]; if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"]) return [verbStem stringByAppendingString:@"íais"]; if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"]) return [verbStem stringByAppendingString:@"ían"]; return verb; } # pragma mark - Perfect - (NSString *) conjugatePerfectVerb:(NSString *) verb { NSString * verbStem = [self getStem:verb]; NSString * verbExit = [self getExit:verb]; if ( [verb rangeOfString:@"abrir"].location != NSNotFound) return [verb stringByReplacingCharactersInRange:[verb rangeOfString:@"abrir"] withString:@"abierto"]; if ( [verb rangeOfString:@"cubrir"].location != NSNotFound) return [verb stringByReplacingCharactersInRange:[verb rangeOfString:@"cubrir"] withString:@"cubierto"]; if ( [verb rangeOfString:@"decir"].location != NSNotFound) return [verb stringByReplacingCharactersInRange:[verb rangeOfString:@"decir"] withString:@"dicho"]; if ( [verb rangeOfString:@"escribir"].location != NSNotFound) return [verb stringByReplacingCharactersInRange:[verb rangeOfString:@"escribir"] withString:@"escrito"]; if ( [verb rangeOfString:@"hacer"].location != NSNotFound) return [verb stringByReplacingCharactersInRange:[verb rangeOfString:@"hacer"] withString:@"hecho"]; if ( [verb rangeOfString:@"morir"].location != NSNotFound) return [verb stringByReplacingCharactersInRange:[verb rangeOfString:@"morir"] withString:@"muerto"]; if ( [verb rangeOfString:@"poner"].location != NSNotFound) return [verb stringByReplacingCharactersInRange:[verb rangeOfString:@"poner"] withString:@"puesto"]; if ( [verb rangeOfString:@"romper"].location != NSNotFound) return [verb stringByReplacingCharactersInRange:[verb rangeOfString:@"romper"] withString:@"roto"]; if ( [verb rangeOfString:@"volver"].location != NSNotFound) return [verb stringByReplacingCharactersInRange:[verb rangeOfString:@"volver"] withString:@"vuelto"]; if ( [verb isEqualToString:@"ver"]) return @"visto"; if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"ado"]; else if ( [@"ír" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"ído"]; else return [verbStem stringByAppendingString:@"ido"]; return verb; } // El perfecto - (NSString *) conjugatePresentPerfectVerb:(NSString *) verb inPerson:(NSString *) person { // Present of haber + Perfect tense return [[[self conjugateSimplePresentVerb:@"haber" inPerson:person] stringByAppendingString:@" "] stringByAppendingString:[self conjugatePerfectVerb:verb]]; } // El perfecto de subjuntivo - (NSString *) conjugatePerfectSubjunctiveVerb:(NSString *) verb inPerson:(NSString *) person { // Present of haber + Perfect tense return [[[self conjugatePresentSubjunctiveVerb:@"haber" inPerson:person] stringByAppendingString:@" "] stringByAppendingString:[self conjugatePerfectVerb:verb]]; } // el pluscuamperfecto - (NSString *) conjugatePastPerfectVerb:(NSString *) verb inPerson:(NSString *) person { // Past of haber + Perfect tense return [[[self conjugateImperfectVerb:@"haber" inPerson:person] stringByAppendingString:@" "] stringByAppendingString:[self conjugatePerfectVerb:verb]]; } // el pluscuamperfecto de subjuntivo - (NSString *) conjugatePastPerfectSubjunctiveVerb:(NSString *) verb inPerson:(NSString *) person { // Past of haber + Perfect tense return [[[self conjugateImperfectSubjunctiveVerb:@"haber" inPerson:person] stringByAppendingString:@" "] stringByAppendingString:[self conjugatePerfectVerb:verb]]; } // el futuro perfecto - (NSString *) conjugateFuturePerfectVerb:(NSString *) verb inPerson:(NSString *) person { // Future of haber + Perfect tense return [[[self conjugateFutureVerb:@"haber" inPerson:person] stringByAppendingString:@" "] stringByAppendingString:[self conjugatePerfectVerb:verb]]; } // el condicional perfecto - (NSString *) conjugateConditionalPerfectVerb:(NSString *) verb inPerson:(NSString *) person { // Future of haber + Perfect tense return [[[self conjugateConditionalVerb:@"haber" inPerson:person] stringByAppendingString:@" "] stringByAppendingString:[self conjugatePerfectVerb:verb]]; } # pragma mark - Gerund - (NSString *) conjugateGerundVerb:(NSString *) verb inPerson:(NSString *) person { NSString * verbStem = [self getStem:verb]; NSString * verbExit = [self getExit:verb]; // Irregular if ( [verb isEqualToString:@"ir"]) return @"yendo"; if ( verbStem.length > 1 && ( [[verbStem substringFromIndex:[verb length] - 1] isEqualToString:@"a"] || [[verbStem substringFromIndex:[verb length] - 1] isEqualToString:@"e"] || [[verbStem substringFromIndex:[verb length] - 1] isEqualToString:@"i"])) // If the stem of an -er or -ir ends in a vowel, the -i of the 3rd person changes to y return [verbStem stringByAppendingString:@"yendo"]; if ( [[self simplePresentEtoIEstemChangersArray] containsObject:verb] ) { // Verb changes stem from e to i verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"]; } if ( [[self simplePresentOtoUEstemChangersArray] containsObject:verb] ) { // Verb changes stem from o to u verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"u"]; } if ( [[self simplePresentEtoIstemChangersArray] containsObject:verb] ) { // Verb changes stem from e to i verbStem = [verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"]; } // Regular if ( [@"ar" isEqualToString:verbExit] ) return [verbStem stringByAppendingString:@"ando"]; else return [verbStem stringByAppendingString:@"iendo"]; return verb; } # pragma mark - Conjugate Verb - (NSString *) conjugateVerb:(NSString *) verb inPerson:(NSString *) person andTense:(Tense *) tense { BOOL reflexive = FALSE; NSString * conjugated = nil; if ( [[self getExit:verb] isEqualToString:@"se"] ) { reflexive = TRUE; // Getting the stem will remove the last 2 characters verb = [self getStem:verb]; } if ( [tense.tense isEqualToString:@"SIMPLE_PRESENT"]) conjugated = [self conjugateSimplePresentVerb:verb inPerson:person]; else if ( [tense.tense isEqualToString:@"PRESENT_SUBJUNCTIVE"]) conjugated = [self conjugatePresentSubjunctiveVerb:verb inPerson:person]; else if ( [tense.tense isEqualToString:@"SIMPLE_PAST"]) conjugated = [self conjugateSimplePastVerb:verb inPerson:person]; else if ( [tense.tense isEqualToString:@"IMPERFECT"]) conjugated = [self conjugateImperfectVerb:verb inPerson:person]; else if ( [tense.tense isEqualToString:@"IMPERFECT_SUBJUNCTIVE"]) conjugated = [self conjugateImperfectSubjunctiveVerb:verb inPerson:person]; else if ( [tense.tense isEqualToString:@"FUTURE"]) conjugated = [self conjugateFutureVerb:verb inPerson:person]; else if ( [tense.tense isEqualToString:@"PERFECT"]) conjugated = [self conjugatePerfectVerb:verb]; else if ( [tense.tense isEqualToString:@"PRESENT_PERFECT"]) conjugated = [self conjugatePresentPerfectVerb:verb inPerson:person]; else if ( [tense.tense isEqualToString:@"PERFECT_SUBJUNCTIVE"]) conjugated = [self conjugatePerfectSubjunctiveVerb:verb inPerson:person]; else if ( [tense.tense isEqualToString:@"PAST_PERFECT"]) // Pluscuamperfecto conjugated = [self conjugatePastPerfectVerb:verb inPerson:person]; else if ( [tense.tense isEqualToString:@"PAST_PERFECT_SUBJUNCTIVE"]) // Pluscuamperfecto de subjuntivo conjugated = [self conjugatePastPerfectSubjunctiveVerb:verb inPerson:person]; else if ( [tense.tense isEqualToString:@"FUTURE_PERFECT"]) conjugated = [self conjugateFuturePerfectVerb:verb inPerson:person]; else if ( [tense.tense isEqualToString:@"CONDITIONAL_PERFECT"]) conjugated = [self conjugateConditionalPerfectVerb:verb inPerson:person]; else if ( [tense.tense isEqualToString:@"CONDITIONAL"]) conjugated = [self conjugateConditionalVerb:verb inPerson:person]; else if ( [tense.tense isEqualToString:@"GERUND"]) conjugated = [self conjugateGerundVerb:verb inPerson:person]; else return @"Invalid tense"; if ( reflexive ) { NSLog(@"%@",[[[[self reflexivePersons] objectForKey:person] stringByAppendingString:@" "] stringByAppendingString:conjugated]); return [[[[self reflexivePersons] objectForKey:person] stringByAppendingString:@" "] stringByAppendingString:conjugated]; } else { return conjugated; } } #pragma mark - Generate test answers - (NSMutableArray *)addToAnswers:(NSMutableArray *)answers withCorrectAnswer:(NSString *) correct conjugation:(NSString *) conjugation { if ( [conjugation isEqualToString:correct]) return answers; else // Check if answer already exists in array for ( NSString * a in answers) { if ( [a isEqualToString:conjugation]) return answers; } [answers addObject:conjugation]; return answers; } - (id) popLastFromArray:(NSMutableArray *)a { id lastObject = nil; if ( a && a.count > 0 ) { lastObject = [a lastObject]; NSLog(@"Popping: %@", lastObject); [a removeLastObject]; } return lastObject; } - (NSMutableArray *)generateFalseConjugationsSimplePresentVerb:(NSString *) verb inPerson:(NSString *)person withCorrectAnswer:(NSString *)correct { NSMutableArray *answers = [[NSMutableArray alloc] init]; NSString *verbExit = [self getExit:verb]; NSString *verbStem = [self getStem:verb]; if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"]) { if ( [verb isEqualToString:@"ir"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vaya"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"ido"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayo"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vaye"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"ido"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"ide"]; } if ( ![verb isEqualToString:@"ir"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"a"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"e"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ó"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"é"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"í"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ió"]]; } if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"o"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"o"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"o"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"o"]]; if ( [verbExit isEqualToString:@"er"] ) { if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"e"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"e"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"e"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"e"]]; } if ( [verbExit isEqualToString:@"ir"] ) { if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"i"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"i"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"i"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"i"]]; } } else if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"] ) { if ( [verb isEqualToString:@"ir"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayas"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"idas"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayes"]; } [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"as"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"es"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"is"]]; if ( [verbExit isEqualToString:@"ar"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aste"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abas"]]; } else { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"iste"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íais"]]; } if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"s"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"as"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"as"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"as"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"es"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"es"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"es"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"es"]]; if ( [verbExit isEqualToString:@"ir"] ) { if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"is"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"is"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"is"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"is"]]; } } else if ( [person isEqualToString:@"THIRD_PERSON_SINGULAR"]) { if ( [verb isEqualToString:@"ir"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vaya"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"idas"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayo"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"ido"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"ide"]; } if ( ![verb isEqualToString:@"ir"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"a"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"á"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"e"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"o"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"é"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"í"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ió"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aba"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ía"]]; } if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"o"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"o"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"o"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"o"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"e"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"e"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"e"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"e"]]; } else if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) { if ( [verb isEqualToString:@"ir"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayamos"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"idamos"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"idemos"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayemos"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"idemos"]; } [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"amos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"emos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"imos"]]; if ( [verbExit isEqualToString:@"ar"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abamos"]]; } else { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íais"]]; } if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"amos"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"amos"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"amos"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"amos"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"emos"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"emos"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"emos"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"emos"]]; } else if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"] ) { if ( [verb isEqualToString:@"ir"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayáis"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"idáis"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"idáis"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayéis"]; } [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"áis"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aís"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"éis"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"eís"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"is"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ís"]]; if ( [verbExit isEqualToString:@"ar"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abais"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abas"]]; } else { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íais"]]; } if ( [verbExit isEqualToString:@"ar"] ) { if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"áis"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"áis"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"áis"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"áis"]]; } if ( [verbExit isEqualToString:@"er"] ) { if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"éis"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"éis"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"éis"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"éis"]]; } if ( [verbExit isEqualToString:@"ir"] ) { if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"ís"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"ís"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"ís"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"ís"]]; } } else if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"]) { if ( [verb isEqualToString:@"ir"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayan"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"iden"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"idan"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayen"]; } [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"an"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"en"]]; if ( [verbExit isEqualToString:@"ir"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"in"]]; } [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ieron"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aban"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"en"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"en"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"en"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"en"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"an"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"an"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"an"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"an"]]; } else { answers = [[NSMutableArray alloc] initWithObjects:@"Answer 1",@"Answer 2",@"Answer 3", @"Answer 4", nil]; } [answers shuffle]; return [answers mutableCopy]; } - (NSMutableArray *)generateFalseConjugationsSimplePastVerb:(NSString *) verb inPerson:(NSString *)person withCorrectAnswer:(NSString *)correct { NSMutableArray *answers = [[NSMutableArray alloc] init]; NSString *verbExit = [self getExit:verb]; NSString *verbStem = [self getStem:verb]; if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"]) { if ( [verb isEqualToString:@"ir"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fue"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vaye"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayó"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fí"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"iba"]; } if ( ![verb isEqualToString:@"ir"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"a"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"e"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ó"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"é"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"í"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ió"]]; } if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"é"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"é"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"é"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"é"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"í"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"í"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"í"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"í"]]; } else if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"] ) { if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fueste"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayaste"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayeste"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fiësta"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"ibaste"]; } if ( [verbExit isEqualToString:@"ar"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"as"]]; } else { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"es"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"is"]]; } [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aste"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abas"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"iste"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íais"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"aste"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"aste"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"aste"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"aste"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"iste"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"iste"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"iste"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"iste"]]; } else if ( [person isEqualToString:@"THIRD_PERSON_SINGULAR"]) { if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fui"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayó"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vaye"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fiëstó"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"iba"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"iró"]; } if ( ![verb isEqualToString:@"ir"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"a"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"á"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"e"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"o"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"é"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"í"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ió"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aba"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ía"]]; } if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"o"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"o"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"o"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"o"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"ío"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"ío"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"ío"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"ío"]]; } else if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) { if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fuemos"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayemos"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayamos"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fiëstamos"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"ibamos"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"iramos"]; } [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"amos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"emos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"imos"]]; if ( [verbExit isEqualToString:@"ar"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abamos"]]; } else { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íais"]]; } if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"amos"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"amos"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"amos"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"amos"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"emos"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"emos"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"emos"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"emos"]]; if ( ![verbExit isEqualToString:@"ar"] ) { if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"imos"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"imos"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"imos"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"imos"]]; } } else if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"] ) { if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fuesteis"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayesteis"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayasteis"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fiëstasteis"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"ibeis"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"ireis"]; } [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"astáis"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"asteis"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"astais"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"esteis"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"estéis"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"isteis"]]; if ( [verbExit isEqualToString:@"ar"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abais"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abas"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"áis"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aís"]]; } else { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íais"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"éis"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"eís"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"is"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ís"]]; } if ( [verbExit isEqualToString:@"ar"] ) { if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"astáis"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"astáis"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"astáis"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"astáis"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"astais"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"astais"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"astais"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"astais"]]; } if ( [verbExit isEqualToString:@"er"] ) { if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"esteis"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"esteis"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"esteis"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"esteis"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"estéis"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"estéis"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"estéis"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"estéis"]]; } if ( ![verbExit isEqualToString:@"ar"] ) { if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"ísteis"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"ísteis"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"ísteis"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"ísteis"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"isteis"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"isteis"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"isteis"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"isteis"]]; } } else if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"]) { if ( [verb isEqualToString:@"ir"] || [verb isEqualToString:@"ser"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fuiron"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayaron"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayeron"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fieron"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"ibaron"]; } [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"an"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"en"]]; if ( [verbExit isEqualToString:@"ir"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"in"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"iron"]]; } [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ieron"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"eron"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aron"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aban"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"aron"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"aron"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"aron"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"aron"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"eron"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"eron"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"eron"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"eron"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"ieron"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"ieron"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"ieron"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"ieron"]]; } else { answers = [[NSMutableArray alloc] initWithObjects:@"Answer 1",@"Answer 2",@"Answer 3", @"Answer 4", nil]; } [answers shuffle]; return [answers mutableCopy]; } - (NSMutableArray *)generateFalseConjugationsImperfectVerb:(NSString *) verb inPerson:(NSString *)person withCorrectAnswer:(NSString *)correct { NSMutableArray *answers = [[NSMutableArray alloc] init]; NSString *verbExit = [self getExit:verb]; NSString *verbStem = [self getStem:verb]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[self conjugateImperfectSubjunctiveVerb:verb inPerson:person]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[self conjugateImperfectVerb:verb inPerson:person]]; if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"] || [person isEqualToString:@"THIRD_PERSON_SINGULAR"] ) { if ( [verb isEqualToString:@"ir"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fue"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vaye"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"vayó"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"fí"]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:@"iba"]; } [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"a"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"e"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"í"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ió"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aba"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ía"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ia"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"aba"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"aba"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"aba"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"aba"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"ía"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"ía"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"ía"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"ía"]]; } else if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"] ) { if ( [verbExit isEqualToString:@"ar"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"as"]]; } else { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"es"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"is"]]; } [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ias"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ías"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"iás"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íais"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abas"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"abas"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"abas"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"abas"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"abas"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"ías"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"ías"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"ías"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"ías"]]; } else if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"amos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"emos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"imos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abamos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ábamos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"iamos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íamos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íais"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"ábamos"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"ábamos"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"ábamos"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"ábamos"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"íamos"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"íamos"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"íamos"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"íamos"]]; } else if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"asteis"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"astais"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abais"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ábais"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"abaís"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íais"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"iaís"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"isteis"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"áis"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"éis"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"abais"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"abais"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"abais"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"abais"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"íais"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"íais"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"íais"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"íais"]]; } else if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"]) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"an"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"en"]]; if ( [verbExit isEqualToString:@"ir"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"in"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"iron"]]; } [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ieron"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"eron"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aron"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"aban"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ían"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ián"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ian"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"aban"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"aban"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"aban"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"aban"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"ían"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"ían"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"ían"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"ían"]]; } else { answers = [[NSMutableArray alloc] initWithObjects:@"Answer 1",@"Answer 2",@"Answer 3", @"Answer 4", nil]; } [answers shuffle]; return [answers mutableCopy]; } - (NSMutableArray *)generateFalseConjugationsFutureVerb:(NSString *) verb inPerson:(NSString *)person withCorrectAnswer:(NSString *)correct { NSMutableArray *answers = [[NSMutableArray alloc] init]; NSString *verbExit = [self getExit:verb]; NSString *verbStem = [self getStem:verb]; if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"]) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"é"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"e"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"ó"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"á"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"e"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"ó"]]; if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] || [[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"] )) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dré"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"drá"]]; } else if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"]) ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"ré"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"rá"]]; } else { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ré"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"rá"]]; } if ( [verbExit isEqualToString:@"ir"]) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"í"]]; } if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"é"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"é"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"é"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"é"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"á"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"á"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"á"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"á"]]; } else if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"as"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"es"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"és"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"ás"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"es"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"és"]]; if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] || [[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"] )) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"drés"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"drás"]]; } else if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"]) ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"rés"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"rás"]]; } else { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"rés"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"rás"]]; } if ( [verbExit isEqualToString:@"ir"]) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"ís"]]; } if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"és"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"és"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"és"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"és"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"ás"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"ás"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ás"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ás"]]; } else if ( [person isEqualToString:@"THIRD_PERSON_SINGULAR"]) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"a"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"é"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"ó"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"a"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"é"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"ó"]]; if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] || [[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"] )) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dré"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"drá"]]; } else if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"]) ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"ré"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"rá"]]; } else { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ré"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"rá"]]; } if ( [verbExit isEqualToString:@"ir"]) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"í"]]; } if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"é"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"é"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"é"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"é"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"á"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"á"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"á"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"á"]]; } else if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"amos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"imos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"abamos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"amos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"imos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"abamos"]]; if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] || [[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"] )) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dremos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dramos"]]; } else if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"]) ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"remos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"ramos"]]; } else { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"remos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ramos"]]; } if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"emos"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"emos"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"emos"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"emos"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"emos"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"emos"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"emos"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"emos"]]; } else if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"eís"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"áis"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"aís"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"abáis"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"áis"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"éis"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"abáis"]]; if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] || [[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"] )) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dréis"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dráis"]]; } else if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"]) ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"réis"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"réis"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"réis"]]; } else { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"réis"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ráis"]]; } if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"éis"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"éis"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"éis"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"éis"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"áis"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"áis"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"áis"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"áis"]]; } else if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"]) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"én"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"an"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"en"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"én"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"án"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"en"]]; if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] || [[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"] )) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"drán"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dran"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dren"]]; } else if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"]) ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"rán"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"ran"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"ren"]]; } else { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"rán"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ran"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ren"]]; } if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"én"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"én"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"én"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"én"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"án"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"án"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"án"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"án"]]; } else { answers = [[NSMutableArray alloc] initWithObjects:@"Answer 1",@"Answer 2",@"Answer 3", @"Answer 4", nil]; } [answers shuffle]; return [answers mutableCopy]; } - (NSMutableArray *)generateFalseConjugationsConditionalVerb:(NSString *) verb inPerson:(NSString *)person withCorrectAnswer:(NSString *)correct { NSMutableArray *answers = [[NSMutableArray alloc] init]; NSString *verbExit = [self getExit:verb]; NSString *verbStem = [self getStem:verb]; if ( [person isEqualToString:@"FIRST_PERSON_SINGULAR"]) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"é"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"ia"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"a"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ía"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"á"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"ía"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"é"]]; if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] || [[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"] )) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dría"]]; } else if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"]) ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"ría"]]; } else { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ría"]]; } if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]]; } else if ( [person isEqualToString:@"SECOND_PERSON_SINGULAR"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"és"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"ias"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"as"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ías"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"as"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"ias"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"é"]]; if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] || [[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"] )) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"drías"]]; } else if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"]) ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"rías"]]; } else { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"rías"]]; } if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"ías"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"ías"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ías"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ías"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"ías"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"ías"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ías"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ías"]]; } else if ( [person isEqualToString:@"THIRD_PERSON_SINGULAR"]) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"é"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"ia"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"a"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ía"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"á"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"ía"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"é"]]; if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] || [[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"] )) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dría"]]; } else if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"]) ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"ría"]]; } else { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ría"]]; } if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ía"]]; } else if ( [person isEqualToString:@"FIRST_PERSON_PLURAL"]) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"émos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"iamos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"amas"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íamos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"ámos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"íamos"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"émos"]]; if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] || [[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"] )) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dríamos"]]; } else if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"]) ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"ríamos"]]; } else { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ríamos"]]; } if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"íamos"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"íamos"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"íamos"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"íamos"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"íamos"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"íamos"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"íamos"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"íamos"]]; } else if ( [person isEqualToString:@"SECOND_PERSON_PLURAL"] ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"eís"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"áis"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"aís"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"abáis"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"íais"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"ás"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"íais"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"íeis"]]; if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] || [[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"] )) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"dríais"]]; } else if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"]) ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"ríais"]]; } else { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ríais"]]; } if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"íais"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"íais"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"íais"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"íais"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"íais"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"íais"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"íais"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"íais"]]; } else if ( [person isEqualToString:@"THIRD_PERSON_PLURAL"]) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"én"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"ian"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verb stringByAppendingString:@"an"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"ía"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"án"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"ían"]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[self getFutureStem:verb] stringByAppendingString:@"én"]]; if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"l"] || [[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"n"] )) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"drían"]]; } else if ( verbStem.length > 1 && ([[verbStem substringFromIndex:verbStem.length -1] isEqualToString:@"c"]) ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[verbStem substringToIndex:verbStem.length -1] stringByAppendingString:@"rían"]]; } else { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[verbStem stringByAppendingString:@"rían"]]; } if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"ían"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"ían"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ían"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ían"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:verbExit] stringByAppendingString:@"ían"]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:verbExit] stringByAppendingString:@"ían"]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ían"]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:verbExit] stringByAppendingString:@"ían"]]; } else { answers = [[NSMutableArray alloc] initWithObjects:@"Answer 1",@"Answer 2",@"Answer 3", @"Answer 4", nil]; } [answers shuffle]; return [answers mutableCopy]; } - (NSMutableArray *)generateFalseConjugationsPerfectVerb:(NSString *) verb withHaberConjugation:(NSString *)haberConj withCorrectAnswer:(NSString *)correct inPerson:(NSString *)person { NSMutableArray *answers = [[NSMutableArray alloc] init]; NSString *verbExit = [self getExit:verb]; NSString *verbStem = [self getStem:verb]; if ((arc4random() % 2) == 0 ) { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[self conjugateFuturePerfectVerb:verb inPerson:person]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[self conjugatePastPerfectVerb:verb inPerson:person]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[self conjugatePresentPerfectVerb:verb inPerson:person]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[self conjugatePastPerfectSubjunctiveVerb:verb inPerson:person]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[self conjugatePerfectSubjunctiveVerb:verb inPerson:person]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[self conjugateConditionalPerfectVerb:verb inPerson:person]]; } else { [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[verbStem stringByAppendingString:@"ado"]]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[verbStem stringByAppendingString:@"ido"]]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[verbStem stringByAppendingString:@"endo"]]]; [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[verbStem stringByAppendingString:@"iendo"]]]; if ( [verbExit isEqualToString:@"ir"]){ [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[verbStem stringByAppendingString:@"ierto"]]]; } if ( [verbExit isEqualToString:@"ar"]){ if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"ado"]]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"ado"]]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"ado"]]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"ado"]]]; } else { if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"ie"] stringByAppendingString:@"ido"]]]; if ( [verbStem rangeOfString:@"e" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"e" options:NSBackwardsSearch] withString:@"i"] stringByAppendingString:@"ido"]]]; if ( [verbStem rangeOfString:@"o" options:NSBackwardsSearch].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"o" options:NSBackwardsSearch] withString:@"ue"] stringByAppendingString:@"ido"]]]; if ( [verbStem rangeOfString:@"u"].location != NSNotFound) [self addToAnswers:answers withCorrectAnswer:correct conjugation:[[haberConj stringByAppendingString:@" "] stringByAppendingString:[[verbStem stringByReplacingCharactersInRange:[verbStem rangeOfString:@"u"] withString:@"ue"] stringByAppendingString:@"ido"]]]; } } [answers shuffle]; return [answers mutableCopy]; } - (NSMutableArray *) getTestConjugationsForVerb:(NSString *) verb inPerson:(NSString *) person andTense:(Tense *) tense { BOOL reflexive = FALSE; NSLog(@"Getting test conjugation for %@ in person %@ and %@",verb,person,tense); if ( [[self getExit:verb] isEqualToString:@"se"] ) { reflexive = TRUE; // Getting the stem will remove the last 2 characters verb = [self getStem:verb]; } NSString * correctAnswer = nil; NSMutableArray * wrongAnswers = nil; NSMutableArray * answers = [[NSMutableArray alloc] init]; if ( reflexive) { correctAnswer = [[[[self reflexivePersons] objectForKey:person] stringByAppendingString:@" "] stringByAppendingString:[self conjugateVerb:verb inPerson:person andTense:tense]]; } else { correctAnswer = [self conjugateVerb:verb inPerson:person andTense:tense]; } NSLog(@"Correct answer: %@", correctAnswer); if ( [tense.tense isEqualToString:@"SIMPLE_PRESENT"]) wrongAnswers = [self generateFalseConjugationsSimplePresentVerb:verb inPerson:person withCorrectAnswer:correctAnswer]; else if ( [tense.tense isEqualToString:@"PRESENT_SUBJUNCTIVE"]) wrongAnswers = [self generateFalseConjugationsSimplePresentVerb:verb inPerson:person withCorrectAnswer:correctAnswer]; else if ( [tense.tense isEqualToString:@"SIMPLE_PAST"]) wrongAnswers = [self generateFalseConjugationsSimplePastVerb:verb inPerson:person withCorrectAnswer:correctAnswer]; else if ( [tense.tense isEqualToString:@"IMPERFECT"]) wrongAnswers = [self generateFalseConjugationsImperfectVerb:verb inPerson:person withCorrectAnswer:correctAnswer]; else if ( [tense.tense isEqualToString:@"IMPERFECT_SUBJUNCTIVE"]) wrongAnswers = [self generateFalseConjugationsImperfectVerb:verb inPerson:person withCorrectAnswer:correctAnswer]; else if ( [tense.tense isEqualToString:@"PRESENT_PERFECT"]) wrongAnswers = [self generateFalseConjugationsPerfectVerb:verb withHaberConjugation:[self conjugateSimplePresentVerb:@"haber" inPerson:person] withCorrectAnswer:correctAnswer inPerson:person]; else if ( [tense.tense isEqualToString:@"PERFECT_SUBJUNCTIVE"]) wrongAnswers = [self generateFalseConjugationsPerfectVerb:verb withHaberConjugation:[self conjugatePresentSubjunctiveVerb:@"haber" inPerson:person] withCorrectAnswer:correctAnswer inPerson:person]; else if ( [tense.tense isEqualToString:@"PAST_PERFECT"]) wrongAnswers = [self generateFalseConjugationsPerfectVerb:verb withHaberConjugation:[self conjugateImperfectVerb:@"haber" inPerson:person] withCorrectAnswer:correctAnswer inPerson:person]; else if ( [tense.tense isEqualToString:@"PAST_PERFECT_SUBJUNCTIVE"]) wrongAnswers = [self generateFalseConjugationsPerfectVerb:verb withHaberConjugation:[self conjugateImperfectSubjunctiveVerb:@"haber" inPerson:person] withCorrectAnswer:correctAnswer inPerson:person]; else if ( [tense.tense isEqualToString:@"FUTURE"]) wrongAnswers = [self generateFalseConjugationsFutureVerb:verb inPerson:person withCorrectAnswer:correctAnswer]; else if ( [tense.tense isEqualToString:@"FUTURE_PERFECT"]) wrongAnswers = [self generateFalseConjugationsPerfectVerb:verb withHaberConjugation:[self conjugateFutureVerb:@"haber" inPerson:person] withCorrectAnswer:correctAnswer inPerson:person]; else if ( [tense.tense isEqualToString:@"CONDITIONAL"]) wrongAnswers = [self generateFalseConjugationsConditionalVerb:verb inPerson:person withCorrectAnswer:correctAnswer]; else if ( [tense.tense isEqualToString:@"CONDITIONAL_PERFECT"]) wrongAnswers = [self generateFalseConjugationsPerfectVerb:verb withHaberConjugation:[self conjugateConditionalVerb:@"haber" inPerson:person] withCorrectAnswer:correctAnswer inPerson:person]; else wrongAnswers = [[NSMutableArray alloc] initWithObjects:@"Answer 1",@"Answer 2",@"Answer 3", nil]; if ( reflexive) { // Need to correct the wrong answers NSMutableArray *rAnswers = [[NSMutableArray alloc] init]; for ( NSString * v in wrongAnswers){ [rAnswers addObject:[[[[self reflexivePersons] objectForKey:person] stringByAppendingString:@" "] stringByAppendingString:v]]; } wrongAnswers = rAnswers; } // Add the correct answer [answers addObject:correctAnswer]; // add 3 wrong answers [answers addObject:[self popLastFromArray:wrongAnswers]]; [answers addObject:[self popLastFromArray:wrongAnswers]]; [answers addObject:[self popLastFromArray:wrongAnswers]]; [answers shuffle]; return [answers mutableCopy]; } @end