50 lines
1.5 KiB
Python
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()
|