#AEAI06001. 受限抓取动作链校验
受限抓取动作链校验
题目描述
具身智能部在调试桌面抓取流程时,会把“看见目标、靠近目标、夹爪闭合、搬运、放置、返回”等动作写成一串编号。每个编号只有在当前状态满足前置条件时才能执行,否则整条动作链应立即判为非法,并指出出错的第几步和原因。
给定目标是否已识别、可见、可达、是否已被抓取或放置、机器人是否在目标附近或放置区、夹爪是否空闲以及路径是否安全,你需要按顺序模拟动作链。初始位置 loc 由 near 和 at_place 决定:若 near=1 则为 1,否则若 at_place=1 则为 2,否则为 0。
动作编号含义如下:
1:观察并靠近目标,需要identified=visible=reachable=safe=1且目标尚未放置,执行后loc=1。2:抓取目标。若目标已放置,输出ALREADY_PLACED;否则需要loc=1且目标已识别、可见、可达,再要求夹爪空闲,执行后grabbed=1, free=0。3:确认手中目标,需要已经抓取且loc=1。4:移动到放置区,需要已经抓取且路径安全,执行后loc=2。5:放置目标,需要loc=2、已经抓取且夹爪非空闲,执行后grabbed=0, placed=1, free=1。6:空夹爪安全返回,需要路径安全且夹爪空闲,执行后loc=0。
若某一步不满足规则,立即停止并输出对应错误;未知动作编号输出 UNKNOWN_ACTION。
输入格式
第一行输入 9 个整数:
identified visible reachable grabbed placed near at_place free safe
这些值均为 0 或 1。第二行输入整数 k,表示动作数。第三行输入 k 个整数,表示动作编号。
输出格式
若动作链全部合法,输出:
SUCCESS grabbed placed free loc
其中四个状态为模拟结束后的值。若第 i 个动作非法,输出:
ILLEGAL i reason
reason 为上述规则中的错误原因。
数据范围与测试提示
- 正式测试会覆盖样例没有出现的边界输入,请不要依赖样例规模或样例顺序写特判。
- 输出只包含题目要求的字段,不要输出调试信息;浮点结果按题面要求保留 6 位小数。
- 动作链可能为空、提前完成或在非法动作处停止;停止后不要继续更新后续状态。
- 夹爪占用、目标区域、抓取可行性和放置合法性的检查顺序要与题面一致。
near优先于at_place决定初始位置;非法时立即停止,抓取已放置物体优先报ALREADY_PLACED。
样例
输入样例 1
1 1 1 0 0 0 0 1 1
5
1 2 3 4 5
输出样例 1
SUCCESS 0 1 1 2
输入样例 2
1 1 0 0 0 0 0 1 1
2
1 2
输出样例 2
ILLEGAL 1 TARGET_NOT_READY