No testdata at current.
题目大概是这样的:地图上有我方和一个对手,双方每回合同时选择左转、直行或右转。走过的格子会永久留下轨迹,之后不能再次进入;撞到边界、墙、轨迹,或者双方同时进入同一个空格,都会撞毁。我们的任务就是实现 chooseMove(state),让角色尽量存活,并争取把对手逼入死路。
做这类题,关键还是用好 agent。
第一步,不要急着让 agent 直接写代码。先让它读懂题目和现有代码,确认 state 中地图、位置、方向、墙和轨迹分别怎么表示,再把移动规则和碰撞条件复述一遍。尤其注意双方是同时行动的,这一点很容易写错。
第二步,先做基础策略。枚举 left、straight、right 三个动作,排除会直接撞墙、出界或撞轨迹的方向。然后可以用 BFS/DFS 计算每个方向后续还能活动的空白区域大小,优先选择空间更大的位置,避免自己进入死胡同。
第三步,再考虑对手。枚举对方三个可能动作,判断双方是否可能抢同一个格子,同时比较双方剩余活动空间。策略上先保证自己不死,再考虑限制对手。如果基础版本稳定,还可以加入几层 minimax 搜索,但不要一开始就把搜索写得太复杂。
迭代时最好一次只改一个部分,比如先优化生存空间,再加入对手预测,最后处理围堵。每次跑完观察具体怎么输,再把问题告诉 agent,让它针对性修改,不要每轮都把整个策略推倒重写。
最后留时间验收:检查 chooseMove(state) 是否始终只返回 "left"、"straight"、"right",边界和碰撞判断是否正确,以及是否只修改了允许提交的 js/strategy.js。预览地图和训练对手只是调试用,不要针对它们写死规则,正式评分更看重策略的通用性。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册