Files
math-problems-structure/app/problems/grade_1/subtract_with_image_reference.py
2026-05-26 14:58:56 -04:00

50 lines
1.5 KiB
Python

from app.schemas.grade_1.subtract_with_image_reference import (
FigureGroup,
PictureAsset,
SubtractWithImageReferenceProblem,
SubtractionEquation,
)
def subtract_with_image_reference(
object_name: str,
initial_quantity: int,
removed_quantity: int,
figure: dict,
actor_name: str = "Diego",
) -> dict:
"""Generate a subtraction story problem with remaining and removed groups."""
if removed_quantity > initial_quantity:
raise ValueError("removed_quantity must be less than or equal to initial_quantity")
selected_figure = PictureAsset.model_validate(figure)
remaining_quantity = initial_quantity - removed_quantity
question = (
f"Hay {initial_quantity} {object_name}. "
f"{actor_name} sacó {removed_quantity} {object_name}. "
f"¿Cuántos {object_name} quedan?"
)
problem = SubtractWithImageReferenceProblem(
question=question,
object_name=object_name,
actor_name=actor_name,
figure=selected_figure,
remaining_group=FigureGroup(
label="quedan",
quantity=remaining_quantity,
picture=selected_figure,
),
subtracted_group=FigureGroup(
label="sacó",
quantity=removed_quantity,
picture=selected_figure,
),
equation=SubtractionEquation(
initial_quantity=initial_quantity,
removed_quantity=removed_quantity,
remaining_quantity=remaining_quantity,
),
)
return problem.model_dump()