Source code for haive.games.single_player.towers_of_hanoi.move
"""Tower of Hanoi move model."""fromtypingimportAnyfrompydanticimportBaseModel,Field,field_validator
[docs]classHanoiMoveModel(BaseModel):"""Model for structured output of Tower of Hanoi moves."""from_peg:int=Field(...,description="Source peg number (1, 2, or 3)")to_peg:int=Field(...,description="Destination peg number (1, 2, or 3)")reasoning:str=Field(...,description="Explanation for this move")
[docs]@field_validator("from_peg")@classmethoddefvalidate_from_peg(cls,v:int)->int:"""Validate From Peg.Args: v: [TODO: Add description]Returns: [TODO: Add return description]"""ifvnotin[1,2,3]:raiseValueError("Source peg must be 1, 2, or 3")returnv
[docs]@field_validator("to_peg")@classmethoddefvalidate_to_peg(cls,v:int,info:Any)->int:"""Validate To Peg.Args: v: [TODO: Add description] info: [TODO: Add description]Returns: [TODO: Add return description]"""ifvnotin[1,2,3]:raiseValueError("Destination peg must be 1, 2, or 3")if"from_peg"ininfo.dataandv==info.data["from_peg"]:raiseValueError("Source and destination pegs must be different")returnv