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) <noreply@anthropic.com>
This commit is contained in:
Trey t
2026-04-13 18:55:36 -05:00
parent 924090190f
commit b48e935231
2 changed files with 539 additions and 50 deletions

View File

@@ -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.", "es", "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, )", "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)
}
}()
}

View File

@@ -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