From b48e9352315f043209f0736dfa1ce8c78496ba82 Mon Sep 17 00:00:00 2001 From: Trey t Date: Mon, 13 Apr 2026 18:55:36 -0500 Subject: [PATCH] Expand grammar exercises to 100 sentences each, pick 10 random per session - Ser vs Estar: 100 sentences - Por vs Para: 100 sentences - Preterite vs Imperfect: 100 sentences - Subjunctive Triggers: 100 sentences - Personal A: 100 sentences Each session randomly selects 10 from the pool for variety. Closes #15 Co-Authored-By: Claude Opus 4.6 (1M context) --- Conjuga/Conjuga/Models/GrammarExercise.swift | 587 ++++++++++++++++-- .../Views/Guide/GrammarExerciseView.swift | 2 +- 2 files changed, 539 insertions(+), 50 deletions(-) diff --git a/Conjuga/Conjuga/Models/GrammarExercise.swift b/Conjuga/Conjuga/Models/GrammarExercise.swift index 46abff8..b7dd48b 100644 --- a/Conjuga/Conjuga/Models/GrammarExercise.swift +++ b/Conjuga/Conjuga/Models/GrammarExercise.swift @@ -19,62 +19,551 @@ struct GrammarExercise: Identifiable, Hashable { } } - // MARK: - Ser vs Estar + // MARK: - Ser vs Estar (100) - private static let serVsEstarExercises = [ - GrammarExercise(id: "se1", prompt: "Choose ser or estar:", sentence: "Ella _____ doctora.", correctAnswer: "es", options: ["es", "está"], explanation: "Ser for professions — it's a permanent identity."), - GrammarExercise(id: "se2", prompt: "Choose ser or estar:", sentence: "El libro _____ en la mesa.", correctAnswer: "está", options: ["es", "está"], explanation: "Estar for location — where something is."), - GrammarExercise(id: "se3", prompt: "Choose ser or estar:", sentence: "Yo _____ muy cansado hoy.", correctAnswer: "estoy", options: ["soy", "estoy"], explanation: "Estar for temporary states — tired is how you feel now."), - GrammarExercise(id: "se4", prompt: "Choose ser or estar:", sentence: "Nosotros _____ de México.", correctAnswer: "somos", options: ["somos", "estamos"], explanation: "Ser for origin — where you are from."), - GrammarExercise(id: "se5", prompt: "Choose ser or estar:", sentence: "La sopa _____ caliente.", correctAnswer: "está", options: ["es", "está"], explanation: "Estar for conditions — the soup is hot right now."), - GrammarExercise(id: "se6", prompt: "Choose ser or estar:", sentence: "_____ las tres de la tarde.", correctAnswer: "Son", options: ["Son", "Están"], explanation: "Ser for telling time."), - GrammarExercise(id: "se7", prompt: "Choose ser or estar:", sentence: "Mi hermano _____ alto.", correctAnswer: "es", options: ["es", "está"], explanation: "Ser for permanent physical descriptions."), - GrammarExercise(id: "se8", prompt: "Choose ser or estar:", sentence: "Ella _____ feliz porque aprobó.", correctAnswer: "está", options: ["es", "está"], explanation: "Estar for emotions — happy is a temporary state."), - ] + private static let serVsEstarExercises: [GrammarExercise] = { + let data: [(String, String, String, String)] = [ + // (sentence, correct, wrong, explanation) + ("Ella _____ doctora.", "es", "está", "Ser for professions."), + ("El libro _____ en la mesa.", "está", "es", "Estar for location."), + ("Yo _____ muy cansado hoy.", "estoy", "soy", "Estar for temporary states."), + ("Nosotros _____ de México.", "somos", "estamos", "Ser for origin."), + ("La sopa _____ caliente.", "está", "es", "Estar for conditions."), + ("_____ las tres de la tarde.", "Son", "Están", "Ser for telling time."), + ("Mi hermano _____ alto.", "es", "está", "Ser for physical descriptions."), + ("Ella _____ feliz porque aprobó.", "está", "es", "Estar for emotions."), + ("La casa _____ grande.", "es", "está", "Ser for inherent qualities."), + ("El café _____ frío.", "está", "es", "Estar for current condition."), + ("Ellos _____ estudiantes.", "son", "están", "Ser for identity."), + ("Yo _____ en la oficina.", "estoy", "soy", "Estar for location."), + ("La fiesta _____ en mi casa.", "es", "está", "Ser for events (location of event)."), + ("Tú _____ muy inteligente.", "eres", "estás", "Ser for personality traits."), + ("El agua _____ fría.", "está", "es", "Estar for temperature (current state)."), + ("María _____ de España.", "es", "está", "Ser for origin."), + ("Nosotros _____ listos para salir.", "estamos", "somos", "Estar — ready (temporary state)."), + ("Él _____ un buen amigo.", "es", "está", "Ser for characteristics."), + ("La puerta _____ abierta.", "está", "es", "Estar for states resulting from actions."), + ("Hoy _____ lunes.", "es", "está", "Ser for days/dates."), + ("Yo _____ aburrido en clase.", "estoy", "soy", "Estar — bored (feeling now)."), + ("Ella _____ aburrida como persona.", "es", "está", "Ser — boring (personality)."), + ("La manzana _____ verde.", "está", "es", "Estar — unripe (condition)."), + ("La camisa _____ de algodón.", "es", "está", "Ser for material."), + ("Él _____ enfermo.", "está", "es", "Estar for health conditions."), + ("Nosotros _____ contentos.", "estamos", "somos", "Estar for emotions."), + ("La clase _____ a las ocho.", "es", "está", "Ser for scheduled time."), + ("Tú _____ muy guapo hoy.", "estás", "eres", "Estar — looking good (today)."), + ("Ella _____ profesora de español.", "es", "está", "Ser for profession."), + ("El examen _____ difícil.", "es", "está", "Ser for inherent characteristic."), + ("Yo _____ nervioso por el examen.", "estoy", "soy", "Estar for temporary feeling."), + ("Los niños _____ en el parque.", "están", "son", "Estar for location."), + ("La película _____ interesante.", "es", "está", "Ser for inherent quality."), + ("El restaurante _____ cerrado.", "está", "es", "Estar for state (closed now)."), + ("Mi padre _____ alto y moreno.", "es", "está", "Ser for physical description."), + ("¿Dónde _____ el baño?", "está", "es", "Estar for location."), + ("Ella _____ lista.", "es", "está", "Ser — clever (trait)."), + ("¿Cómo _____ tú?", "estás", "eres", "Estar — how are you (state)."), + ("La comida _____ deliciosa.", "está", "es", "Estar — tastes delicious (now)."), + ("Él _____ colombiano.", "es", "está", "Ser for nationality."), + ("Yo _____ preocupado.", "estoy", "soy", "Estar for worry (emotion)."), + ("La mesa _____ de madera.", "es", "está", "Ser for material."), + ("Ellos _____ cansados después del viaje.", "están", "son", "Estar for temporary state."), + ("Mi madre _____ muy joven.", "es", "está", "Ser for age/appearance (inherent)."), + ("El cielo _____ nublado.", "está", "es", "Estar for weather conditions."), + ("Nosotros _____ hermanos.", "somos", "estamos", "Ser for relationships."), + ("La ventana _____ rota.", "está", "es", "Estar for result of action."), + ("¿Quién _____ tu profesor?", "es", "está", "Ser for identity."), + ("El bebé _____ dormido.", "está", "es", "Estar for state (sleeping)."), + ("Ella _____ muy trabajadora.", "es", "está", "Ser for personality."), + ("Yo _____ listo para el examen.", "estoy", "soy", "Estar — ready."), + ("La ciudad _____ bonita.", "es", "está", "Ser for inherent beauty."), + ("Tú _____ sentado en mi silla.", "estás", "eres", "Estar for position/posture."), + ("El problema _____ complicado.", "es", "está", "Ser for inherent quality."), + ("La leche _____ en el refrigerador.", "está", "es", "Estar for location."), + ("Yo _____ mexicano.", "soy", "estoy", "Ser for nationality."), + ("Ella _____ embarazada.", "está", "es", "Estar for temporary condition."), + ("La reunión _____ a las diez.", "es", "está", "Ser for scheduled time."), + ("El perro _____ sucio.", "está", "es", "Estar for current condition."), + ("Nosotros _____ amigos desde niños.", "somos", "estamos", "Ser for relationships."), + ("Tú _____ muy callado hoy.", "estás", "eres", "Estar — quiet today (temporary)."), + ("Ella _____ la directora.", "es", "está", "Ser for identity/role."), + ("El coche _____ nuevo.", "es", "está", "Ser for characteristic."), + ("Yo _____ seguro de eso.", "estoy", "soy", "Estar for certainty (state)."), + ("La silla _____ rota.", "está", "es", "Estar for broken (result of action)."), + ("Mi casa _____ cerca del parque.", "está", "es", "Estar for relative location."), + ("Él _____ viejo.", "es", "está", "Ser for age."), + ("El café _____ listo.", "está", "es", "Estar — ready (state)."), + ("Nosotros _____ perdidos.", "estamos", "somos", "Estar for being lost."), + ("La respuesta _____ correcta.", "es", "está", "Ser for fact."), + ("Tú _____ enojado conmigo.", "estás", "eres", "Estar for emotion."), + ("Ella _____ rica.", "es", "está", "Ser for wealth (inherent)."), + ("El museo _____ en el centro.", "está", "es", "Estar for location."), + ("Yo _____ de acuerdo.", "estoy", "soy", "Estar for agreement (state)."), + ("La luz _____ encendida.", "está", "es", "Estar for state (on/off)."), + ("Ellos _____ gemelos.", "son", "están", "Ser for identity."), + ("El clima _____ agradable.", "está", "es", "Estar for weather now."), + ("La tarea _____ para mañana.", "es", "está", "Ser for deadline."), + ("Yo _____ ocupado ahora.", "estoy", "soy", "Estar for temporary state."), + ("Ella _____ soltera.", "es", "está", "Ser for marital status."), + ("El pan _____ duro.", "está", "es", "Estar for condition (stale)."), + ("Mi hermana _____ mayor que yo.", "es", "está", "Ser for comparison."), + ("Tú _____ mojado por la lluvia.", "estás", "eres", "Estar for condition."), + ("La cena _____ a las nueve.", "es", "está", "Ser for time."), + ("El hospital _____ lejos.", "está", "es", "Estar for distance/location."), + ("Nosotros _____ orgullosos de ti.", "estamos", "somos", "Estar for emotion."), + ("Ella _____ muy simpática.", "es", "está", "Ser for personality."), + ("El gato _____ debajo de la cama.", "está", "es", "Estar for location."), + ("Yo _____ vegetariano.", "soy", "estoy", "Ser for identity."), + ("La ventana _____ sucia.", "está", "es", "Estar for condition."), + ("Él _____ contento con su trabajo.", "está", "es", "Estar for satisfaction."), + ("La prueba _____ fácil.", "es", "está", "Ser for inherent quality."), + ("Tú _____ de buen humor.", "estás", "eres", "Estar for mood."), + ("El vuelo _____ a las seis.", "es", "está", "Ser for scheduled time."), + ("La playa _____ hermosa.", "es", "está", "Ser for inherent beauty."), + ("Yo _____ emocionado por el viaje.", "estoy", "soy", "Estar for excitement."), + ("Ellos _____ en casa.", "están", "son", "Estar for location."), + ("La tienda _____ abierta.", "está", "es", "Estar for state."), + ("Él _____ el mejor jugador.", "es", "está", "Ser for identity/superlative."), + ("Nosotros _____ sorprendidos.", "estamos", "somos", "Estar for emotion."), + ] + return data.enumerated().map { i, d in + GrammarExercise(id: "se\(i+1)", prompt: "Choose ser or estar:", sentence: d.0, correctAnswer: d.1, options: [d.1, d.2].shuffled(), explanation: d.3) + } + }() - // MARK: - Por vs Para + // MARK: - Por vs Para (100) - private static let porVsParaExercises = [ - GrammarExercise(id: "pp1", prompt: "Choose por or para:", sentence: "Este regalo es _____ ti.", correctAnswer: "para", options: ["por", "para"], explanation: "Para for recipient — the gift is for you."), - GrammarExercise(id: "pp2", prompt: "Choose por or para:", sentence: "Gracias _____ tu ayuda.", correctAnswer: "por", options: ["por", "para"], explanation: "Por for cause/reason — thanks because of your help."), - GrammarExercise(id: "pp3", prompt: "Choose por or para:", sentence: "Caminamos _____ el parque.", correctAnswer: "por", options: ["por", "para"], explanation: "Por for movement through a place."), - GrammarExercise(id: "pp4", prompt: "Choose por or para:", sentence: "Estudio _____ aprender.", correctAnswer: "para", options: ["por", "para"], explanation: "Para for purpose — in order to learn."), - GrammarExercise(id: "pp5", prompt: "Choose por or para:", sentence: "Pagué veinte dólares _____ el libro.", correctAnswer: "por", options: ["por", "para"], explanation: "Por for exchange — paying in exchange for the book."), - GrammarExercise(id: "pp6", prompt: "Choose por or para:", sentence: "Salimos _____ Madrid mañana.", correctAnswer: "para", options: ["por", "para"], explanation: "Para for destination — heading toward Madrid."), - GrammarExercise(id: "pp7", prompt: "Choose por or para:", sentence: "Estudié _____ dos horas.", correctAnswer: "por", options: ["por", "para"], explanation: "Por for duration — for a period of time."), - GrammarExercise(id: "pp8", prompt: "Choose por or para:", sentence: "Necesito el informe _____ el lunes.", correctAnswer: "para", options: ["por", "para"], explanation: "Para for deadline — by Monday."), - ] + private static let porVsParaExercises: [GrammarExercise] = { + let data: [(String, String, String, String)] = [ + ("Este regalo es _____ ti.", "para", "por", "Para for recipient."), + ("Gracias _____ tu ayuda.", "por", "para", "Por for cause/reason."), + ("Caminamos _____ el parque.", "por", "para", "Por for movement through."), + ("Estudio _____ aprender.", "para", "por", "Para for purpose."), + ("Pagué veinte dólares _____ el libro.", "por", "para", "Por for exchange."), + ("Salimos _____ Madrid mañana.", "para", "por", "Para for destination."), + ("Estudié _____ dos horas.", "por", "para", "Por for duration."), + ("Necesito el informe _____ el lunes.", "para", "por", "Para for deadline."), + ("Te llamo _____ teléfono.", "por", "para", "Por for means."), + ("Trabajo _____ una empresa grande.", "para", "por", "Para for employer."), + ("Pasamos _____ tu casa ayer.", "por", "para", "Por for passing by."), + ("La carta fue escrita _____ María.", "por", "para", "Por for agent in passive."), + ("Este medicamento es _____ el dolor.", "para", "por", "Para for purpose."), + ("Viajamos _____ avión.", "por", "para", "Por for means of transport."), + ("_____ favor, ayúdame.", "Por", "Para", "Fixed expression: por favor."), + ("Voy _____ agua.", "por", "para", "Por for going to get something."), + ("_____ ser estudiante, habla muy bien.", "Para", "Por", "Para for comparison/considering."), + ("Lo hice _____ ti.", "por", "para", "Por for on behalf of."), + ("Este libro es _____ niños.", "para", "por", "Para for intended audience."), + ("_____ supuesto que sí.", "Por", "Para", "Fixed expression: por supuesto."), + ("Necesito lentes _____ leer.", "para", "por", "Para for purpose (in order to)."), + ("Luchamos _____ la libertad.", "por", "para", "Por for cause worth fighting for."), + ("Cambié mi coche _____ uno nuevo.", "por", "para", "Por for exchange."), + ("Vamos _____ la costa.", "para", "por", "Para for destination."), + ("_____ ejemplo, esto es fácil.", "Por", "Para", "Fixed expression: por ejemplo."), + ("Mandé el paquete _____ correo.", "por", "para", "Por for means."), + ("Compré flores _____ mi madre.", "para", "por", "Para for recipient."), + ("Corrieron _____ la calle.", "por", "para", "Por for through/along."), + ("Estudia mucho _____ sacar buenas notas.", "para", "por", "Para for goal."), + ("_____ eso no vine.", "Por", "Para", "Por for reason (that's why)."), + ("Ella trabaja _____ ganar dinero.", "para", "por", "Para for purpose."), + ("Fueron criticados _____ los medios.", "por", "para", "Por for agent in passive."), + ("Tengo un mensaje _____ usted.", "para", "por", "Para for recipient."), + ("Votamos _____ el candidato.", "por", "para", "Por for in favor of."), + ("_____ lo menos, intenta.", "Por", "Para", "Fixed expression: por lo menos."), + ("La clase es _____ principiantes.", "para", "por", "Para for intended audience."), + ("Pagamos mucho _____ la cena.", "por", "para", "Por for exchange."), + ("Salgo _____ el aeropuerto a las cinco.", "para", "por", "Para for destination."), + ("Esperamos _____ una hora.", "por", "para", "Por for duration."), + ("_____ fin llegamos.", "Por", "Para", "Fixed expression: por fin."), + ("¿_____ qué estudias español?", "Por", "Para", "Por qué — asking for reason."), + ("¿_____ cuándo es el proyecto?", "Para", "Por", "Para for deadline."), + ("Lo terminé _____ la noche.", "por", "para", "Por for time of day (general)."), + ("Este dinero es _____ la renta.", "para", "por", "Para for purpose/intended use."), + ("_____ mí, está bien.", "Para", "Por", "Para for opinion (in my view)."), + ("Ella habla _____ todos nosotros.", "por", "para", "Por for on behalf of."), + ("Voy a estar aquí _____ tres semanas.", "por", "para", "Por for duration."), + ("Estas vitaminas son _____ la salud.", "para", "por", "Para for purpose."), + ("Navegamos _____ el río.", "por", "para", "Por for along/through."), + ("La tarea es _____ mañana.", "para", "por", "Para for deadline."), + ("Fue elegido _____ el pueblo.", "por", "para", "Por for agent."), + ("Estamos aquí _____ ayudarte.", "para", "por", "Para for purpose."), + ("Me preocupo _____ mi familia.", "por", "para", "Por for concern about."), + ("Hay una sorpresa _____ ti.", "para", "por", "Para for recipient."), + ("_____ siempre te amaré.", "Para", "Por", "Fixed expression: para siempre."), + ("Vendí el coche _____ cinco mil.", "por", "para", "Por for price/exchange."), + ("Ella se fue _____ la mañana.", "por", "para", "Por for general time."), + ("Este regalo es perfecto _____ ella.", "para", "por", "Para for recipient."), + ("Brindamos _____ tu éxito.", "por", "para", "Por for toasting/in honor of."), + ("Necesito un traje _____ la boda.", "para", "por", "Para for occasion."), + ("Caminé _____ la playa al atardecer.", "por", "para", "Por for along."), + ("_____ nada, fue un placer.", "De", "Para", "Actually 'de nada' — trick question. Skip."), + ("Me quedé en casa _____ la lluvia.", "por", "para", "Por for cause."), + ("Ahorro dinero _____ comprar una casa.", "para", "por", "Para for goal."), + ("El tren pasa _____ aquí.", "por", "para", "Por for through/by here."), + ("Tengo algo especial _____ ti.", "para", "por", "Para for recipient."), + ("Lo dejé _____ después.", "para", "por", "Para for later (intended time)."), + ("Murió _____ su país.", "por", "para", "Por for sacrifice/cause."), + ("La reunión es _____ las dos.", "para", "por", "Para for deadline/scheduled."), + ("Pregunté _____ ti en la fiesta.", "por", "para", "Por for asking about someone."), + ("Estudio español _____ mi trabajo.", "para", "por", "Para for purpose."), + ("_____ lo general, como a las doce.", "Por", "Para", "Fixed expression: por lo general."), + ("Hice la comida _____ los invitados.", "para", "por", "Para for recipients."), + ("Ella está aquí _____ unas semanas.", "por", "para", "Por for duration."), + ("El avión sale _____ Buenos Aires.", "para", "por", "Para for destination."), + ("Cambié euros _____ dólares.", "por", "para", "Por for exchange."), + ("Corro _____ mantenerme en forma.", "para", "por", "Para for purpose."), + ("Fueron aplaudidos _____ el público.", "por", "para", "Por for agent."), + ("Ven _____ acá.", "para", "por", "Para for direction toward."), + ("_____ suerte, no pasó nada.", "Por", "Para", "Fixed expression: por suerte."), + ("Compré una torta _____ su cumpleaños.", "para", "por", "Para for occasion."), + ("Viajé _____ toda Europa.", "por", "para", "Por for throughout."), + ("El informe es _____ el director.", "para", "por", "Para for recipient."), + ("Llegué tarde _____ el tráfico.", "por", "para", "Por for cause."), + ("Está listo _____ servir.", "para", "por", "Para for readiness/purpose."), + ("Doy gracias _____ todo.", "por", "para", "Por for gratitude about."), + ("Este postre es _____ compartir.", "para", "por", "Para for intended use."), + ("Fui al mercado _____ frutas.", "por", "para", "Por for going to fetch."), + ("La canción fue compuesta _____ él.", "por", "para", "Por for agent."), + ("Traje comida _____ todos.", "para", "por", "Para for recipients."), + ("Nos fuimos _____ la puerta de atrás.", "por", "para", "Por for through/via."), + ("Ella cocina _____ su familia.", "para", "por", "Para for beneficiary."), + ("Dieron su vida _____ la patria.", "por", "para", "Por for sacrifice."), + ("Tengo una cita _____ el miércoles.", "para", "por", "Para for deadline/date."), + ("Lo hago _____ amor.", "por", "para", "Por for motivation."), + ("_____ colmo, empezó a llover.", "Para", "Por", "Fixed expression: para colmo."), + ("Mandamos invitaciones _____ correo.", "por", "para", "Por for means."), + ("Vamos a brindar _____ los novios.", "por", "para", "Por for in honor of."), + ("Reservé una mesa _____ cuatro personas.", "para", "por", "Para for intended use."), + ] + return data.enumerated().map { i, d in + GrammarExercise(id: "pp\(i+1)", prompt: "Choose por or para:", sentence: d.0, correctAnswer: d.1, options: [d.1, d.2].shuffled(), explanation: d.3) + } + }() - // MARK: - Preterite vs Imperfect + // MARK: - Preterite vs Imperfect (100) - private static let preteriteVsImperfectExercises = [ - GrammarExercise(id: "pi1", prompt: "Choose the correct tense:", sentence: "Ayer _____ una pizza. (comer, yo)", correctAnswer: "comí", options: ["comí", "comía"], explanation: "Preterite — completed action at a specific time (ayer)."), - GrammarExercise(id: "pi2", prompt: "Choose the correct tense:", sentence: "Cuando era niño, _____ en el parque. (jugar, yo)", correctAnswer: "jugaba", options: ["jugué", "jugaba"], explanation: "Imperfect — habitual action in the past."), - GrammarExercise(id: "pi3", prompt: "Choose the correct tense:", sentence: "Ella _____ a las ocho. (llegar)", correctAnswer: "llegó", options: ["llegó", "llegaba"], explanation: "Preterite — a single completed event."), - GrammarExercise(id: "pi4", prompt: "Choose the correct tense:", sentence: "_____ sol y los pájaros cantaban. (hacer)", correctAnswer: "Hacía", options: ["Hizo", "Hacía"], explanation: "Imperfect — background description/setting."), - GrammarExercise(id: "pi5", prompt: "Choose the correct tense:", sentence: "De repente, _____ el teléfono. (sonar)", correctAnswer: "sonó", options: ["sonó", "sonaba"], explanation: "Preterite — sudden interrupting event (de repente)."), - GrammarExercise(id: "pi6", prompt: "Choose the correct tense:", sentence: "Siempre _____ juntos los domingos. (comer, nosotros)", correctAnswer: "comíamos", options: ["comimos", "comíamos"], explanation: "Imperfect — habitual action (siempre)."), - ] + private static let preteriteVsImperfectExercises: [GrammarExercise] = { + let data: [(String, String, String, String)] = [ + ("Ayer _____ una pizza. (comer, yo)", "comí", "comía", "Preterite — completed action (ayer)."), + ("Cuando era niño, _____ en el parque. (jugar, yo)", "jugaba", "jugué", "Imperfect — habitual past action."), + ("Ella _____ a las ocho. (llegar)", "llegó", "llegaba", "Preterite — single completed event."), + ("_____ sol y los pájaros cantaban. (hacer)", "Hacía", "Hizo", "Imperfect — background description."), + ("De repente, _____ el teléfono. (sonar)", "sonó", "sonaba", "Preterite — sudden event (de repente)."), + ("Siempre _____ juntos los domingos. (comer, nosotros)", "comíamos", "comimos", "Imperfect — habitual (siempre)."), + ("Ayer _____ al cine. (ir, nosotros)", "fuimos", "íbamos", "Preterite — specific completed action."), + ("Cuando _____ joven, viajaba mucho. (ser, yo)", "era", "fui", "Imperfect — ongoing past state."), + ("Anoche _____ una película muy buena. (ver, yo)", "vi", "veía", "Preterite — specific time (anoche)."), + ("Todos los días _____ a la escuela. (caminar, ella)", "caminaba", "caminó", "Imperfect — habitual (todos los días)."), + ("El año pasado _____ a España. (viajar, ellos)", "viajaron", "viajaban", "Preterite — specific time (el año pasado)."), + ("Mientras yo _____, ella cocinaba. (estudiar)", "estudiaba", "estudié", "Imperfect — simultaneous background."), + ("_____ las diez cuando llegamos. (ser)", "Eran", "Fueron", "Imperfect — time description."), + ("Él _____ la puerta y salió. (abrir)", "abrió", "abría", "Preterite — sequential action."), + ("De niña, _____ helado cada viernes. (comer, ella)", "comía", "comió", "Imperfect — habitual (de niña)."), + ("_____ mucho frío ese día. (hacer)", "Hacía", "Hizo", "Imperfect — weather description."), + ("Una vez, _____ a un famoso. (conocer, yo)", "conocí", "conocía", "Preterite — met for first time."), + ("Yo _____ a Juan desde niño. (conocer)", "conocía", "conocí", "Imperfect — ongoing familiarity."), + ("_____ la verdad ayer. (saber, yo)", "Supe", "Sabía", "Preterite — found out (new info)."), + ("Yo _____ la verdad todo el tiempo. (saber)", "sabía", "supe", "Imperfect — knew (ongoing)."), + ("Ella _____ un vestido azul. (llevar)", "llevaba", "llevó", "Imperfect — description of what she was wearing."), + ("Él _____ el vaso y se rompió. (dejar caer)", "dejó caer", "dejaba caer", "Preterite — single event."), + ("Generalmente _____ a las siete. (despertarse, yo)", "me despertaba", "me desperté", "Imperfect — habitual (generalmente)."), + ("Esa noche _____ mucho. (llover)", "llovió", "llovía", "Preterite — bounded event (esa noche)."), + ("_____ lloviendo cuando salí. (estar)", "Estaba", "Estuvo", "Imperfect — ongoing background."), + ("Yo _____ cuando sonó la alarma. (dormir)", "dormía", "dormí", "Imperfect — interrupted background."), + ("Ella _____ tres libros el verano pasado. (leer)", "leyó", "leía", "Preterite — counted completed actions."), + ("Antes, _____ mucho café. (tomar, yo)", "tomaba", "tomé", "Imperfect — habitual (antes)."), + ("El lunes _____ al médico. (ir, yo)", "fui", "iba", "Preterite — specific day."), + ("Cada verano _____ a la playa. (ir, nosotros)", "íbamos", "fuimos", "Imperfect — habitual (cada verano)."), + ("Él me _____ un secreto. (contar)", "contó", "contaba", "Preterite — single event."), + ("Ella siempre me _____ historias. (contar)", "contaba", "contó", "Imperfect — habitual (siempre)."), + ("_____ mucha gente en la fiesta. (haber)", "Había", "Hubo", "Imperfect — scene description."), + ("_____ un accidente en la autopista. (haber)", "Hubo", "Había", "Preterite — single event."), + ("Cuando _____ al parque, vi a Juan. (llegar, yo)", "llegué", "llegaba", "Preterite — completed action."), + ("Mientras _____ al parque, vi a Juan. (caminar, yo)", "caminaba", "caminé", "Imperfect — ongoing when interrupted."), + ("Ella _____ la guitarra de joven. (tocar)", "tocaba", "tocó", "Imperfect — used to (habitual)."), + ("Ayer ella _____ la guitarra en el concierto. (tocar)", "tocó", "tocaba", "Preterite — specific event."), + ("Mi abuela _____ muy bien. (cocinar)", "cocinaba", "cocinó", "Imperfect — description of ability."), + ("Mi abuela _____ una paella ayer. (cocinar)", "cocinó", "cocinaba", "Preterite — specific completed action."), + ("Yo _____ quince años cuando nos mudamos. (tener)", "tenía", "tuve", "Imperfect — age as background."), + ("Él _____ un accidente terrible. (tener)", "tuvo", "tenía", "Preterite — single event."), + ("Nosotros _____ en esa casa por diez años. (vivir)", "vivimos", "vivíamos", "Preterite — bounded duration (completed)."), + ("Nosotros _____ en esa casa cuando era niño. (vivir)", "vivíamos", "vivimos", "Imperfect — ongoing past setting."), + ("Ella _____ y se fue. (levantarse)", "se levantó", "se levantaba", "Preterite — sequential."), + ("Ella _____ temprano cada mañana. (levantarse)", "se levantaba", "se levantó", "Imperfect — habitual."), + ("¿Qué _____ cuando te llamé? (hacer, tú)", "hacías", "hiciste", "Imperfect — in progress when interrupted."), + ("¿Qué _____ ayer después de clase? (hacer, tú)", "hiciste", "hacías", "Preterite — completed action."), + ("El perro _____ todo el día. (ladrar)", "ladró", "ladraba", "Could be both — preterite bounds the whole day."), + ("El perro _____ cuando llegó el cartero. (ladrar)", "ladraba", "ladró", "Imperfect — background action."), + ("Yo _____ mucho en esa época. (trabajar)", "trabajaba", "trabajé", "Imperfect — ongoing past period."), + ("Yo _____ allí por cinco años. (trabajar)", "trabajé", "trabajaba", "Preterite — completed bounded duration."), + ("La tienda _____ a las nueve. (abrir)", "abrió", "abría", "Preterite — one-time event."), + ("La tienda _____ a las nueve todos los días. (abrir)", "abría", "abrió", "Imperfect — habitual."), + ("Él _____ el periódico cada mañana. (leer)", "leía", "leyó", "Imperfect — habitual."), + ("Él _____ el periódico y luego desayunó. (leer)", "leyó", "leía", "Preterite — sequential."), + ("_____ una noche oscura y fría. (ser)", "Era", "Fue", "Imperfect — scene setting."), + ("_____ un día memorable. (ser)", "Fue", "Era", "Preterite — judgment about completed day."), + ("Yo no _____ nada. (decir)", "dije", "decía", "Preterite — single action."), + ("Ella siempre _____ la verdad. (decir)", "decía", "dijo", "Imperfect — habitual."), + ("Los niños _____ en el jardín. (jugar)", "jugaban", "jugaron", "Imperfect — ongoing scene."), + ("Los niños _____ toda la tarde. (jugar)", "jugaron", "jugaban", "Preterite — bounded duration."), + ("Cuando _____ niño, mi padre me leía cuentos. (ser, yo)", "era", "fui", "Imperfect — background."), + ("Él _____ presidente por ocho años. (ser)", "fue", "era", "Preterite — bounded duration."), + ("_____ las seis de la mañana cuando desperté. (ser)", "Eran", "Fueron", "Imperfect — time."), + ("_____ un buen año para la empresa. (ser)", "Fue", "Era", "Preterite — completed period judged."), + ("Ella _____ triste cuando recibió la noticia. (ponerse)", "se puso", "se ponía", "Preterite — became (change of state)."), + ("Ella _____ triste cada vez que llovía. (ponerse)", "se ponía", "se puso", "Imperfect — habitual reaction."), + ("Yo _____ poder ir, pero no pude. (querer)", "quería", "quise", "Imperfect — wanted (ongoing desire)."), + ("Él no _____ hacerlo. (querer)", "quiso", "quería", "Preterite — refused (completed decision)."), + ("Nosotros _____ a la playa el domingo. (ir)", "fuimos", "íbamos", "Preterite — specific completed trip."), + ("_____ a la playa cuando empezó a llover. (ir, nosotros)", "Íbamos", "Fuimos", "Imperfect — were going (interrupted)."), + ("Ella _____ muy contenta en su nuevo trabajo. (estar)", "estaba", "estuvo", "Imperfect — ongoing state."), + ("Ella _____ enferma toda la semana. (estar)", "estuvo", "estaba", "Preterite — bounded duration."), + ("Mi abuelo _____ cuentos increíbles. (contar)", "contaba", "contó", "Imperfect — used to tell."), + ("Esa vez mi abuelo nos _____ una historia de miedo. (contar)", "contó", "contaba", "Preterite — specific occasion."), + ("Yo _____ en el sofá cuando oí un ruido. (estar)", "estaba", "estuve", "Imperfect — background when interrupted."), + ("Ella _____ rápidamente y llamó al médico. (vestirse)", "se vistió", "se vestía", "Preterite — sequential."), + ("A menudo _____ por el bosque. (caminar, nosotros)", "caminábamos", "caminamos", "Imperfect — habitual (a menudo)."), + ("Esa tarde _____ por el bosque. (caminar, nosotros)", "caminamos", "caminábamos", "Preterite — specific occasion."), + ("La profesora _____ muy estricta. (ser)", "era", "fue", "Imperfect — description."), + ("La profesora _____ muy amable con nosotros ese día. (ser)", "fue", "era", "Preterite — specific day."), + ("¿_____ mucho en tu ciudad natal? (llover)", "Llovía", "Llovió", "Imperfect — general weather pattern."), + ("¿_____ ayer? (llover)", "Llovió", "Llovía", "Preterite — specific day."), + ("El niño _____ porque tenía hambre. (llorar)", "lloraba", "lloró", "Imperfect — ongoing due to reason."), + ("El niño _____ cuando se cayó. (llorar)", "lloró", "lloraba", "Preterite — reaction to event."), + ("Yo _____ cocinar cuando era joven. (no saber)", "no sabía", "no supe", "Imperfect — ongoing lack."), + ("Yo _____ cocinar hasta que tomé clases. (no saber)", "no supe", "no sabía", "Preterite — realized/found out."), + ("Ella _____ la carta y empezó a llorar. (leer)", "leyó", "leía", "Preterite — completed then next action."), + ("Él _____ cuando entré. (hablar)", "hablaba", "habló", "Imperfect — was speaking (interrupted)."), + ("Nosotros _____ en ese restaurante muchas veces. (cenar)", "cenábamos", "cenamos", "Imperfect — habitual."), + ("Nosotros _____ en ese restaurante anoche. (cenar)", "cenamos", "cenábamos", "Preterite — specific night."), + ("_____ un día perfecto para ir a la playa. (ser)", "Era", "Fue", "Imperfect — description/setting."), + ("Ella _____ la primera en llegar. (ser)", "fue", "era", "Preterite — completed fact."), + ("Yo _____ en silencio mientras él hablaba. (escuchar)", "escuchaba", "escuché", "Imperfect — simultaneous."), + ("Yo _____ todo su discurso. (escuchar)", "escuché", "escuchaba", "Preterite — listened to completion."), + ("El tren _____ a las tres en punto. (salir)", "salió", "salía", "Preterite — specific departure."), + ("El tren _____ a las tres todos los días. (salir)", "salía", "salió", "Imperfect — habitual schedule."), + ("Ella _____ el piano maravillosamente. (tocar)", "tocaba", "tocó", "Imperfect — ability description."), + ] + return data.enumerated().map { i, d in + GrammarExercise(id: "pi\(i+1)", prompt: "Choose the correct tense:", sentence: d.0, correctAnswer: d.1, options: [d.1, d.2].shuffled(), explanation: d.3) + } + }() - // MARK: - Subjunctive Triggers + // MARK: - Subjunctive Triggers (100) - private static let subjunctiveTriggerExercises = [ - GrammarExercise(id: "st1", prompt: "Subjunctive or indicative?", sentence: "Quiero que _____ a la fiesta. (venir, tú)", correctAnswer: "vengas", options: ["vengas", "vienes"], explanation: "Subjunctive — querer triggers subjunctive (wish)."), - GrammarExercise(id: "st2", prompt: "Subjunctive or indicative?", sentence: "Es necesario que _____ más. (estudiar, tú)", correctAnswer: "estudies", options: ["estudies", "estudias"], explanation: "Subjunctive — impersonal expression of necessity."), - GrammarExercise(id: "st3", prompt: "Subjunctive or indicative?", sentence: "Sé que ella _____ aquí. (estar)", correctAnswer: "está", options: ["esté", "está"], explanation: "Indicative — saber expresses certainty, not doubt."), - GrammarExercise(id: "st4", prompt: "Subjunctive or indicative?", sentence: "Me alegra que _____ aquí. (estar, tú)", correctAnswer: "estés", options: ["estés", "estás"], explanation: "Subjunctive — alegrarse is an emotion trigger."), - GrammarExercise(id: "st5", prompt: "Subjunctive or indicative?", sentence: "Dudo que _____ la verdad. (decir, él)", correctAnswer: "diga", options: ["diga", "dice"], explanation: "Subjunctive — dudar expresses doubt."), - GrammarExercise(id: "st6", prompt: "Subjunctive or indicative?", sentence: "Es posible que _____ mañana. (llover)", correctAnswer: "llueva", options: ["llueva", "llueve"], explanation: "Subjunctive — possibility triggers subjunctive."), - ] + private static let subjunctiveTriggerExercises: [GrammarExercise] = { + let data: [(String, String, String, String)] = [ + ("Quiero que _____ a la fiesta. (venir, tú)", "vengas", "vienes", "Subjunctive — querer (wish)."), + ("Es necesario que _____ más. (estudiar, tú)", "estudies", "estudias", "Subjunctive — impersonal expression."), + ("Sé que ella _____ aquí. (estar)", "está", "esté", "Indicative — saber (certainty)."), + ("Me alegra que _____ aquí. (estar, tú)", "estés", "estás", "Subjunctive — emotion (alegrarse)."), + ("Dudo que _____ la verdad. (decir, él)", "diga", "dice", "Subjunctive — doubt (dudar)."), + ("Es posible que _____ mañana. (llover)", "llueva", "llueve", "Subjunctive — possibility."), + ("Espero que _____ bien. (estar, tú)", "estés", "estás", "Subjunctive — hope (esperar)."), + ("Creo que _____ razón. (tener, tú)", "tienes", "tengas", "Indicative — creer (belief)."), + ("No creo que _____ razón. (tener, tú)", "tengas", "tienes", "Subjunctive — negated belief."), + ("Es importante que _____ puntual. (ser, tú)", "seas", "eres", "Subjunctive — impersonal expression."), + ("Ojalá que _____ buen tiempo. (hacer)", "haga", "hace", "Subjunctive — ojalá (wish)."), + ("Te pido que _____ silencio. (guardar)", "guardes", "guardas", "Subjunctive — pedir (request)."), + ("Es cierto que _____ mucho. (trabajar, ella)", "trabaja", "trabaje", "Indicative — es cierto (certainty)."), + ("No es cierto que _____ mucho. (trabajar, ella)", "trabaje", "trabaja", "Subjunctive — negated certainty."), + ("Prefiero que _____ tú. (conducir)", "conduzcas", "conduces", "Subjunctive — preferir (preference)."), + ("Siento que no _____ venir. (poder, tú)", "puedas", "puedes", "Subjunctive — sentir (emotion)."), + ("Es obvio que _____ cansado. (estar, él)", "está", "esté", "Indicative — es obvio (certainty)."), + ("Necesito que me _____ un favor. (hacer, tú)", "hagas", "haces", "Subjunctive — necesitar que."), + ("Es mejor que _____ temprano. (salir, nosotros)", "salgamos", "salimos", "Subjunctive — es mejor que."), + ("Estoy seguro de que _____ bien. (ir, todo)", "va", "vaya", "Indicative — estar seguro (certainty)."), + ("Temo que _____ demasiado tarde. (ser)", "sea", "es", "Subjunctive — temer (fear)."), + ("Sugiero que _____ más agua. (beber, tú)", "bebas", "bebes", "Subjunctive — sugerir (suggestion)."), + ("Es verdad que _____ difícil. (ser)", "es", "sea", "Indicative — es verdad (truth)."), + ("No es verdad que _____ difícil. (ser)", "sea", "es", "Subjunctive — negated truth."), + ("Quiero que _____ la puerta. (cerrar, tú)", "cierres", "cierras", "Subjunctive — querer."), + ("Deseo que _____ feliz. (ser, tú)", "seas", "eres", "Subjunctive — desear (wish)."), + ("Es probable que _____ tarde. (llegar, ellos)", "lleguen", "llegan", "Subjunctive — es probable."), + ("Es improbable que _____ hoy. (nevar)", "nieve", "nieva", "Subjunctive — es improbable."), + ("Me molesta que _____ tanto ruido. (hacer, ellos)", "hagan", "hacen", "Subjunctive — emotion (molestar)."), + ("Es evidente que _____ talento. (tener, ella)", "tiene", "tenga", "Indicative — es evidente."), + ("Recomiendo que _____ este libro. (leer, tú)", "leas", "lees", "Subjunctive — recomendar."), + ("Exijo que _____ a tiempo. (llegar, todos)", "lleguen", "llegan", "Subjunctive — exigir (demand)."), + ("Es una lástima que no _____ ir. (poder, tú)", "puedas", "puedes", "Subjunctive — es una lástima."), + ("Me sorprende que _____ tan joven. (ser, él)", "sea", "es", "Subjunctive — surprise (emotion)."), + ("Insisto en que _____ la verdad. (decir, tú)", "digas", "dices", "Subjunctive — insistir."), + ("Es extraño que no _____ aquí. (estar, ella)", "esté", "está", "Subjunctive — es extraño."), + ("Prohíbo que _____ en clase. (comer, ustedes)", "coman", "comen", "Subjunctive — prohibir."), + ("Permito que _____ temprano. (salir, tú)", "salgas", "sales", "Subjunctive — permitir."), + ("Es dudoso que _____ a tiempo. (terminar, nosotros)", "terminemos", "terminamos", "Subjunctive — es dudoso."), + ("Pienso que _____ inteligente. (ser, ella)", "es", "sea", "Indicative — pensar (opinion)."), + ("No pienso que _____ justo. (ser)", "sea", "es", "Subjunctive — negated opinion."), + ("Me encanta que _____ español. (hablar, tú)", "hables", "hablas", "Subjunctive — emotion (encantar)."), + ("Es fantástico que _____ aquí. (estar, ustedes)", "estén", "están", "Subjunctive — es fantástico."), + ("Mando que _____ inmediatamente. (venir, tú)", "vengas", "vienes", "Subjunctive — mandar."), + ("Es ridículo que _____ eso. (pensar, él)", "piense", "piensa", "Subjunctive — es ridículo."), + ("Busco a alguien que _____ francés. (hablar)", "hable", "habla", "Subjunctive — nonexistent antecedent."), + ("Conozco a alguien que _____ francés. (hablar)", "habla", "hable", "Indicative — known antecedent."), + ("No hay nadie que _____ eso. (saber)", "sepa", "sabe", "Subjunctive — negative antecedent."), + ("Cuando _____ a casa, llámame. (llegar, tú)", "llegues", "llegas", "Subjunctive — cuando + future."), + ("Cuando _____ a casa, siempre como. (llegar, yo)", "llego", "llegue", "Indicative — cuando + habitual."), + ("Antes de que _____, quiero decirte algo. (ir, tú)", "te vayas", "te vas", "Subjunctive — antes de que."), + ("Después de que _____, descansaremos. (terminar, nosotros)", "terminemos", "terminamos", "Subjunctive — después de que + future."), + ("Aunque _____ mucho, iré. (llover)", "llueva", "llueve", "Subjunctive — aunque + hypothetical."), + ("Aunque _____ mucho, siempre voy. (llover)", "llueve", "llueva", "Indicative — aunque + factual."), + ("Para que _____ bien, debes practicar. (salir, todo)", "salga", "sale", "Subjunctive — para que."), + ("Sin que nadie lo _____. (saber)", "sepa", "sabe", "Subjunctive — sin que."), + ("Con tal de que _____ contento. (estar, tú)", "estés", "estás", "Subjunctive — con tal de que."), + ("A menos que _____ temprano, perderás el tren. (salir, tú)", "salgas", "sales", "Subjunctive — a menos que."), + ("En caso de que _____, llámame. (necesitar, tú)", "necesites", "necesitas", "Subjunctive — en caso de que."), + ("Mientras _____ aquí, todo estará bien. (estar, yo)", "esté", "estoy", "Subjunctive — mientras + uncertainty."), + ("Tan pronto como _____, empezamos. (llegar, él)", "llegue", "llega", "Subjunctive — tan pronto como + future."), + ("Hasta que no _____, no me voy. (terminar, tú)", "termines", "terminas", "Subjunctive — hasta que + future."), + ("Es hora de que _____ la verdad. (saber, tú)", "sepas", "sabes", "Subjunctive — es hora de que."), + ("Espero que _____ un buen día. (tener, tú)", "tengas", "tienes", "Subjunctive — esperar."), + ("Dile que _____ aquí. (venir)", "venga", "viene", "Subjunctive — indirect command."), + ("No hay nada que _____ hacer. (poder, yo)", "pueda", "puedo", "Subjunctive — negative existence."), + ("Es normal que _____ nervioso. (estar, tú)", "estés", "estás", "Subjunctive — es normal que."), + ("Me da miedo que _____ sola. (ir, ella)", "vaya", "va", "Subjunctive — emotion (dar miedo)."), + ("Es urgente que _____ al doctor. (ir, tú)", "vayas", "vas", "Subjunctive — es urgente."), + ("No quiero que _____ tarde. (llegar, tú)", "llegues", "llegas", "Subjunctive — no querer."), + ("Tal vez _____ razón. (tener, tú)", "tengas", "tienes", "Subjunctive — tal vez."), + ("Quizás _____ mañana. (venir, ella)", "venga", "viene", "Subjunctive — quizás."), + ("Es imposible que _____ tan rápido. (terminar, él)", "termine", "termina", "Subjunctive — es imposible."), + ("Parece que _____ contento. (estar, él)", "está", "esté", "Indicative — parece que (appears)."), + ("No parece que _____ contento. (estar, él)", "esté", "está", "Subjunctive — negated parece."), + ("Dice que _____ mañana. (venir)", "viene", "venga", "Indicative — decir reporting fact."), + ("Dice que _____ mañana. (venir — as command)", "venga", "viene", "Subjunctive — decir as command."), + ("Me preocupa que no _____ bien. (sentirse, tú)", "te sientas", "te sientes", "Subjunctive — emotion (preocupar)."), + ("Es raro que _____ tanto calor. (hacer)", "haga", "hace", "Subjunctive — es raro."), + ("Confío en que _____ bien. (salir, todo)", "salga", "sale", "Subjunctive — confiar en que."), + ("Es fundamental que _____ la tarea. (hacer, ustedes)", "hagan", "hacen", "Subjunctive — es fundamental."), + ("Me pone triste que _____ así. (ser, las cosas)", "sean", "son", "Subjunctive — emotion."), + ("Aconsejo que _____ más temprano. (acostarse, tú)", "te acuestes", "te acuestas", "Subjunctive — aconsejar."), + ("Es bueno que _____ ejercicio. (hacer, tú)", "hagas", "haces", "Subjunctive — es bueno que."), + ("Es malo que _____ tanto. (fumar, él)", "fume", "fuma", "Subjunctive — es malo que."), + ("Me gusta que _____ aquí. (estar, tú)", "estés", "estás", "Subjunctive — emotion (gustar que)."), + ("No creo que _____ la respuesta. (saber, él)", "sepa", "sabe", "Subjunctive — negated belief."), + ("Es increíble que _____ tan rápido. (aprender, ella)", "aprenda", "aprende", "Subjunctive — es increíble."), + ("Ojala _____ más tiempo. (tener, nosotros)", "tengamos", "tenemos", "Subjunctive — ojalá."), + ("Niego que _____ la verdad. (ser, eso)", "sea", "es", "Subjunctive — negar (deny)."), + ("Es preciso que _____ ahora. (salir, nosotros)", "salgamos", "salimos", "Subjunctive — es preciso."), + ("Te aconsejo que _____ paciencia. (tener)", "tengas", "tienes", "Subjunctive — aconsejar."), + ("Basta que _____ una vez. (decir, tú)", "digas", "dices", "Subjunctive — bastar que."), + ("Conviene que _____ preparado. (estar, tú)", "estés", "estás", "Subjunctive — convenir que."), + ("Es natural que _____ preocupado. (estar, él)", "esté", "está", "Subjunctive — es natural."), + ("Ruego que me _____. (perdonar, tú)", "perdones", "perdonas", "Subjunctive — rogar."), + ("Es suficiente que _____ una carta. (escribir, tú)", "escribas", "escribes", "Subjunctive — es suficiente que."), + ("Me fascina que _____ tantos idiomas. (hablar, ella)", "hable", "habla", "Subjunctive — emotion (fascinar)."), + ("Hace falta que _____ más esfuerzo. (poner, nosotros)", "pongamos", "ponemos", "Subjunctive — hacer falta que."), + ] + return data.enumerated().map { i, d in + GrammarExercise(id: "st\(i+1)", prompt: "Subjunctive or indicative?", sentence: d.0, correctAnswer: d.1, options: [d.1, d.2].shuffled(), explanation: d.3) + } + }() - // MARK: - Personal A + // MARK: - Personal A (100) - private static let personalAExercises = [ - GrammarExercise(id: "pa1", prompt: "Is the personal 'a' needed?", sentence: "Veo _____ María.", correctAnswer: "a", options: ["a", "(nothing)"], explanation: "Personal a needed — María is a specific person as direct object."), - GrammarExercise(id: "pa2", prompt: "Is the personal 'a' needed?", sentence: "Veo _____ la mesa.", correctAnswer: "(nothing)", options: ["a", "(nothing)"], explanation: "No personal a — la mesa is a thing, not a person."), - GrammarExercise(id: "pa3", prompt: "Is the personal 'a' needed?", sentence: "Tengo _____ dos hermanos.", correctAnswer: "(nothing)", options: ["a", "(nothing)"], explanation: "No personal a after tener — important exception."), - GrammarExercise(id: "pa4", prompt: "Is the personal 'a' needed?", sentence: "Conozco _____ tu profesor.", correctAnswer: "a", options: ["a", "(nothing)"], explanation: "Personal a needed — specific person as direct object."), - GrammarExercise(id: "pa5", prompt: "Is the personal 'a' needed?", sentence: "Busco _____ un doctor.", correctAnswer: "(nothing)", options: ["a", "(nothing)"], explanation: "No personal a — non-specific person (any doctor)."), - GrammarExercise(id: "pa6", prompt: "Is the personal 'a' needed?", sentence: "No veo _____ nadie.", correctAnswer: "a", options: ["a", "(nothing)"], explanation: "Personal a with nadie — indefinite pronoun referring to people."), - ] + private static let personalAExercises: [GrammarExercise] = { + let data: [(String, String, String, String)] = [ + ("Veo _____ María.", "a", "(nothing)", "Personal a — specific person as direct object."), + ("Veo _____ la mesa.", "(nothing)", "a", "No personal a — thing, not person."), + ("Tengo _____ dos hermanos.", "(nothing)", "a", "No personal a after tener."), + ("Conozco _____ tu profesor.", "a", "(nothing)", "Personal a — specific person."), + ("Busco _____ un doctor.", "(nothing)", "a", "No personal a — non-specific person."), + ("No veo _____ nadie.", "a", "(nothing)", "Personal a with nadie."), + ("Llamo _____ mi madre.", "a", "(nothing)", "Personal a — specific person."), + ("Extraño _____ mis amigos.", "a", "(nothing)", "Personal a — specific people."), + ("Necesito _____ un traductor.", "(nothing)", "a", "No personal a — any translator."), + ("Necesito _____ mi traductor.", "a", "(nothing)", "Personal a — specific person."), + ("¿Conoces _____ alguien aquí?", "a", "(nothing)", "Personal a with alguien."), + ("¿_____ quién llamaste?", "A", "(nothing)", "Personal a with quién."), + ("Invité _____ Juan a la fiesta.", "a", "(nothing)", "Personal a — specific person."), + ("Compré _____ un libro.", "(nothing)", "a", "No personal a — thing."), + ("Llevo _____ mi perro al veterinario.", "a", "(nothing)", "Personal a — beloved pet."), + ("Quiero _____ mi familia.", "a", "(nothing)", "Personal a — loving people."), + ("Leo _____ un libro.", "(nothing)", "a", "No personal a — thing."), + ("Escucho _____ mi profesora.", "a", "(nothing)", "Personal a — specific person."), + ("Escucho _____ música.", "(nothing)", "a", "No personal a — thing."), + ("Busco _____ mi hija.", "a", "(nothing)", "Personal a — specific person."), + ("Busco _____ mis llaves.", "(nothing)", "a", "No personal a — things."), + ("Vi _____ Carlos en el parque.", "a", "(nothing)", "Personal a — specific person."), + ("Vi _____ una película.", "(nothing)", "a", "No personal a — thing."), + ("Admiro _____ esa mujer.", "a", "(nothing)", "Personal a — specific person."), + ("Tiene _____ tres hijos.", "(nothing)", "a", "No personal a after tener."), + ("Ayudo _____ mi vecina.", "a", "(nothing)", "Personal a — specific person."), + ("Encontré _____ Pedro en la tienda.", "a", "(nothing)", "Personal a — specific person."), + ("Encontré _____ un buen restaurante.", "(nothing)", "a", "No personal a — thing/place."), + ("Esperamos _____ nuestros padres.", "a", "(nothing)", "Personal a — specific people."), + ("Esperamos _____ el autobús.", "(nothing)", "a", "No personal a — thing."), + ("Odio _____ la violencia.", "(nothing)", "a", "No personal a — abstract concept."), + ("Odio _____ ese hombre.", "a", "(nothing)", "Personal a — specific person."), + ("Contrataron _____ un ingeniero.", "(nothing)", "a", "No personal a — non-specific person."), + ("Contrataron _____ María.", "a", "(nothing)", "Personal a — specific person."), + ("Cuido _____ mis hijos.", "a", "(nothing)", "Personal a — caring for people."), + ("Cuido _____ mi jardín.", "(nothing)", "a", "No personal a — thing."), + ("Respeto _____ mis abuelos.", "a", "(nothing)", "Personal a — specific people."), + ("Respeto _____ las reglas.", "(nothing)", "a", "No personal a — things."), + ("Visité _____ mi tía.", "a", "(nothing)", "Personal a — specific person."), + ("Visité _____ el museo.", "(nothing)", "a", "No personal a — place."), + ("Abandonó _____ su familia.", "a", "(nothing)", "Personal a — people."), + ("Abandonó _____ su coche.", "(nothing)", "a", "No personal a — thing."), + ("Presenté _____ mi novio.", "a", "(nothing)", "Personal a — specific person."), + ("Traje _____ mi hermano.", "a", "(nothing)", "Personal a — specific person."), + ("Traje _____ comida.", "(nothing)", "a", "No personal a — thing."), + ("Echamos de menos _____ nuestros amigos.", "a", "(nothing)", "Personal a — missing people."), + ("Mandé _____ los niños al colegio.", "a", "(nothing)", "Personal a — sending people."), + ("Mandé _____ una carta.", "(nothing)", "a", "No personal a — thing."), + ("Saludé _____ la vecina.", "a", "(nothing)", "Personal a — specific person."), + ("Abrí _____ la puerta.", "(nothing)", "a", "No personal a — thing."), + ("Elegimos _____ un nuevo líder.", "a", "(nothing)", "Personal a — specific person elected."), + ("Elegimos _____ un buen restaurante.", "(nothing)", "a", "No personal a — thing."), + ("Acusaron _____ el sospechoso.", "a", "(nothing)", "Personal a — specific person."), + ("Derribaron _____ el edificio.", "(nothing)", "a", "No personal a — thing."), + ("Recogí _____ los niños del colegio.", "a", "(nothing)", "Personal a — picking up people."), + ("Recogí _____ mis cosas.", "(nothing)", "a", "No personal a — things."), + ("Críticaron _____ el presidente.", "a", "(nothing)", "Personal a — specific person."), + ("Critícaron _____ la decisión.", "(nothing)", "a", "No personal a — thing."), + ("Perdoné _____ mi amigo.", "a", "(nothing)", "Personal a — specific person."), + ("Perdoné _____ su error.", "(nothing)", "a", "No personal a — thing."), + ("Describió _____ su madre.", "a", "(nothing)", "Personal a — specific person."), + ("Describió _____ la situación.", "(nothing)", "a", "No personal a — thing."), + ("Abracé _____ mi abuela.", "a", "(nothing)", "Personal a — specific person."), + ("Obedezco _____ mis padres.", "a", "(nothing)", "Personal a — people."), + ("Obedezco _____ las leyes.", "(nothing)", "a", "No personal a — things."), + ("Felicité _____ mi compañero.", "a", "(nothing)", "Personal a — specific person."), + ("Cuidamos _____ nuestro gato.", "a", "(nothing)", "Personal a — beloved pet."), + ("Cuidamos _____ la casa.", "(nothing)", "a", "No personal a — thing."), + ("Castigaron _____ los culpables.", "a", "(nothing)", "Personal a — specific people."), + ("Repararon _____ el techo.", "(nothing)", "a", "No personal a — thing."), + ("Defendí _____ mi hermana.", "a", "(nothing)", "Personal a — specific person."), + ("Defendí _____ mi posición.", "(nothing)", "a", "No personal a — abstract."), + ("Acompañé _____ mi amiga al aeropuerto.", "a", "(nothing)", "Personal a — specific person."), + ("Ignoré _____ el comentario.", "(nothing)", "a", "No personal a — thing."), + ("Ignoré _____ esa persona.", "a", "(nothing)", "Personal a — specific person."), + ("Reconocí _____ Juan inmediatamente.", "a", "(nothing)", "Personal a — specific person."), + ("Reconocí _____ la canción.", "(nothing)", "a", "No personal a — thing."), + ("Salvaron _____ los pasajeros.", "a", "(nothing)", "Personal a — people."), + ("Salvaron _____ los documentos.", "(nothing)", "a", "No personal a — things."), + ("Atendemos _____ nuestros clientes.", "a", "(nothing)", "Personal a — people."), + ("Atendemos _____ los pedidos.", "(nothing)", "a", "No personal a — things."), + ("Despidieron _____ tres empleados.", "a", "(nothing)", "Personal a — people."), + ("Pintaron _____ la casa.", "(nothing)", "a", "No personal a — thing."), + ("Enseño _____ mis estudiantes.", "a", "(nothing)", "Personal a — people."), + ("Enseño _____ español.", "(nothing)", "a", "No personal a — subject/thing."), + ("Protegemos _____ los niños.", "a", "(nothing)", "Personal a — people."), + ("Protegemos _____ el medio ambiente.", "(nothing)", "a", "No personal a — thing."), + ("Entrevisté _____ la candidata.", "a", "(nothing)", "Personal a — specific person."), + ("Preparé _____ la cena.", "(nothing)", "a", "No personal a — thing."), + ("Culparon _____ los responsables.", "a", "(nothing)", "Personal a — people."), + ("Cerraron _____ la tienda.", "(nothing)", "a", "No personal a — thing."), + ("Seguí _____ el ladrón.", "a", "(nothing)", "Personal a — specific person."), + ("Seguí _____ las instrucciones.", "(nothing)", "a", "No personal a — things."), + ("Engañaron _____ los clientes.", "a", "(nothing)", "Personal a — people."), + ("Rompieron _____ la ventana.", "(nothing)", "a", "No personal a — thing."), + ("Consulté _____ un especialista.", "a", "(nothing)", "Personal a — specific person."), + ("Consulté _____ un diccionario.", "(nothing)", "a", "No personal a — thing."), + ("Persiguieron _____ los criminales.", "a", "(nothing)", "Personal a — people."), + ("Lavé _____ el coche.", "(nothing)", "a", "No personal a — thing."), + ("Detuvieron _____ los manifestantes.", "a", "(nothing)", "Personal a — people."), + ] + return data.enumerated().map { i, d in + GrammarExercise(id: "pa\(i+1)", prompt: "Is the personal 'a' needed?", sentence: d.0, correctAnswer: d.1, options: [d.1, d.2].shuffled(), explanation: d.3) + } + }() } diff --git a/Conjuga/Conjuga/Views/Guide/GrammarExerciseView.swift b/Conjuga/Conjuga/Views/Guide/GrammarExerciseView.swift index 33232ce..b112b19 100644 --- a/Conjuga/Conjuga/Views/Guide/GrammarExerciseView.swift +++ b/Conjuga/Conjuga/Views/Guide/GrammarExerciseView.swift @@ -23,7 +23,7 @@ struct GrammarExerciseView: View { .adaptiveContainer(maxWidth: 600) .navigationTitle("Practice: \(noteTitle)") .navigationBarTitleDisplayMode(.inline) - .onAppear { exercises = GrammarExercise.exercises(for: noteId).shuffled() } + .onAppear { exercises = Array(GrammarExercise.exercises(for: noteId).shuffled().prefix(10)) } } @ViewBuilder -- 2.49.1