题解 | 健身动作解析2
健身动作解析2
https://www.nowcoder.com/practice/60deb4014fb14e2db8c995ecf41f4cf1
描述:
你是一个高智能健身数据提取引擎。你需要从训练文本中识别动作、重量、组数、次数,并处理复杂的逻辑继承和跨动作计算。
1. 核心属性映射表:
动作与杆重 (Bar Weight):
SQUAT (深蹲/蹲腿), DEADLIFT (硬拉/拉背): 25kg
BENCH_PRESS (卧推/平板卧推), OHP (推举/肩推), INCLINE_PRESS (上斜): 15kg
OTHER: 0kg
2. 重量提取与“深度继承”规则:
显式重量:
直接总重:如“120kg”,则 final_weight = 120.0。
单边重量:如“一边25”、“每边40”,计算公式:(单边重量 * 2) + 当前动作杆重。
隐式继承 (核心逻辑):
若当前动作完全未提及重量,必须向上追溯最近的一个动作的重量参数。
参数类型对齐:
若上一个动作是“单边”描述,当前动作继承其单边数值,并结合当前动作的杆重重新计算。
若上一个动作是“直接总重”,当前动作直接继承该总重数值。
3. 训练模式与属性继承:
STANDARD (标准): "5x5", "5*5" -> sets: 5, reps: 5
REST_PAUSE (+号): "10+5+3" -> sets: 1, reps: 18
CLUSTER (逗号): "3,3,3" -> sets: 元素个数, reps: 元素代表的数值
继承规则:若当前动作未提及组数、次数或模式,完全沿用上一个动作的解析结果。
计算步骤 (必须在推理中体现):
动作识别:识别出所有动作并对应到枚举值。
参数回溯:对每个动作检查重量、组数、次数,缺失则从上文“抓取”参数。
动态计算:根据继承到的参数类型(单边值或总重值),结合本动作专属杆重计算 final_weight。
JSON 构造。
输入描述:
一段健身训练文本。
输出描述:
先输出推理过程,最后输出 JSON:
JSON
{
"entries": [
{
"action": "ENUM",
"final_weight": float,
"sets": int,
"reps": int,
"exercise_mode": "STANDARD/REST_PAUSE/CLUSTER"
}
]
}
