跳到主要内容

CodeChef · June Challenge 2018 · WAREHOUS

Warehouseman

编写完整的叉车指令程序,存放依次到达的货物并按编号顺序取回。

01

任务

每个 Case 提供一个 6–20 行、6–20 列的仓库和完整公开的货物到达排列。叉车必须存放全部到货,按编号顺序取回,并返回入口。

Policy 一次性输出完整指令程序。Environment 在 500,000 字符限制下原子化地解析、校验并执行。

02

Policy 接口

Warehouseman 是一步构造任务。初始 Observation 包含生成完整解所需的全部公开输入。

Observation 字段含义
rows / columns仓库尺寸,范围均为 6–20
arrivals完整货物到达排列
instruction_limit最大输出长度:500,000 字符

返回一个 ASCII 指令字符串,使用移动、拾取、放下、装载和卸载操作。

Action含义
N W S E移动叉车
P D拾取到货或交付货物
LN LW LS LE装载相邻已存货物
UN UW US UE卸载到相邻格子
03

评估

定义
完成条件存放全部到货、按编号取回并返回入口
Benchmark 得分官方归一化指令成本的平均值
Policy failure计为有界成本 1,000,000
04

Feedback

Feedback 报告归一化成本、指令长度、完成解、失败与 diagnostics 覆盖。

字段含义
mean_normalized_cost主要 Benchmark 得分
mean_instruction_characters已完成解的平均输出长度
completed / policy_failuresEpisode 结果计数
diagnostic_episodesdiagnostics 覆盖的 Episode 数量
diagnostics.jsonl有界的逐 Episode 完成与成本 diagnostics,不包含原始到货排列或指令字符串。
05

使用 distribution

从仓库根目录构建这个可独立安装的叶子 project:

uv sync --project environments/codechef/june18/warehouseman --extra dev
uv build environments/codechef/june18/warehouseman

该 package 导出:

from warehouseman import WarehousemanBenchmark, baseline_program

benchmark = WarehousemanBenchmark()
program = baseline_program()