#AEAI06001. 受限抓取动作链校验

受限抓取动作链校验

题目描述

具身智能部在调试桌面抓取流程时,会把“看见目标、靠近目标、夹爪闭合、搬运、放置、返回”等动作写成一串编号。每个编号只有在当前状态满足前置条件时才能执行,否则整条动作链应立即判为非法,并指出出错的第几步和原因。

给定目标是否已识别、可见、可达、是否已被抓取或放置、机器人是否在目标附近或放置区、夹爪是否空闲以及路径是否安全,你需要按顺序模拟动作链。初始位置 locnearat_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

这些值均为 01。第二行输入整数 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