DracoBench Report: xiaomi/mimo-v2.5-pro

xiaomi/mimo-v2.5-pro
Pass rate
92.0%
Cases
92/100
Avg latency
26795 ms
Total time
44m 41s
Total cost
$0.087083
Prompt tokens
10368
Completion tokens
83683
Reasoning tokens
74311
Errors
0

By Suite

SuiteCasesPassedPass rateAvg latencyCost
chinese_writing44100.0%33154 ms$0.003020
coding282485.7%54122 ms$0.053995
debugging1919100.0%9266 ms$0.004928
instruction_following66100.0%24500 ms$0.003815
rag_long_context181794.4%17530 ms$0.009136
reasoning252288.0%15713 ms$0.012188

Failure Examples

challenge-coding-004

Suite: coding
Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(capacity: int, ops: list[str]) -> list[int],模拟 LRU cache。ops 包含 "put key value" 和 "get key"。get 返回 value,不存在返回 -1。put 已存在 key 要更新并变成最近使用。容量为 0 时所有 get 都返回 -1。
Standard Answer / Scoring Expectation
Reference tests:
ops = ['put a 1', 'put b 2', 'get a', 'put c 3', 'get b', 'get a', 'get c']
assert solution.solve(2, ops) == [1, -1, 1, 3]
assert solution.solve(0, ['put a 1', 'get a']) == [-1]
assert solution.solve(1, ['put a 1', 'put a 2', 'get a']) == [2]
Mistake Analysis
Failure type: runtime_type_assumption
题目里的 cache key 是字符串,例如 `a`、`b`、`c`,但模型把 key 强行写成 `int(parts[1])`。测试一遇到 `put a 1` 就在解析 `a` 时抛出 ValueError。根因是模型擅自补了“key 是整数”的类型假设。
Scorer Details
{
  "returncode": 1,
  "stdout": "",
  "stderr": "Traceback (most recent call last):\n  File \"/var/folders/x_/4cht1kfj1_j31gdv5w01sgmw0000gn/T/dracobench-code-qips56yi/test_solution.py\", line 4, in <module>\n    assert solution.solve(2, ops) == [1, -1, 1, 3]\n           ^^^^^^^^^^^^^^^^^^^^^^\n  File \"/private/var/folders/x_/4cht1kfj1_j31gdv5w01sgmw0000gn/T/dracobench-code-qips56yi/solution.py\", line 20, in solve\n    key, value = int(key), int(value)\n                 ^^^^^^^^\nValueError: invalid literal for int() with base 10: 'a'\n"
}
Output
```python
from collections import OrderedDict

def solve(capacity: int, ops: list[str]) -> list[int]:
    if capacity == 0:
        return [-1 if op.startswith("get") else 0 for op in ops]
    
    cache = OrderedDict()
    res = []
    
    for op in ops:
        if op.startswith("get"):
            key = int(op.split()[1])
            if key in cache:
                cache.move_to_end(key)
                res.append(cache[key])
            else:
                res.append(-1)
        else:
            _, key, value = op.split()
            key, value = int(key), int(value)
            if key in cache:
                cache.move_to_end(key)
            elif len(cache) == capacity:
                cache.popitem(last=False)
            cache[key] = value
            res.append(0)
    
    return res
```

challenge-reasoning-002

Suite: reasoning
Finish: stop
Prompt
只回答一个字母:五个任务 A、B、C、D、E 排队。A 必须在 B 前,B 必须在 C 前;D 不能在两端;E 必须紧挨在 C 后面。在所有满足条件的队列中,按字典序最小的队列第三个任务是谁?
Standard Answer / Scoring Expectation
Answer: D
Mistake Analysis
Failure type: format_violation
核心答案可以还原为标准答案 `D`,但模型输出为 `# 求解过程\n\n## 约束条件\n1. A < B < C(位置顺序)\n2. C 后面紧跟 E(CE 是连续块)\n3. D 不能在第1位或第5位\n\n## 排列 CE 块的位置\n\n综合约束 A < B < C < E,链式顺…`,包含 Markdown、解释或其他多余内容。题目要求只输出最终答案,因此严格 exact scorer 判失败。
Scorer Details
{
  "expected": "D",
  "actual": "# 求解过程\n\n## 约束条件\n1. A < B < C(位置顺序)\n2. C 后面紧跟 E(CE 是连续块)\n3. D 不能在第1位或第5位\n\n## 排列 CE 块的位置\n\n综合约束 A < B < C < E,链式顺序为 **A → B → CE**\n\n| CE 位置 | 可行性 |\n|---------|--------|\n| (1,2) | ❌ B 必须在 C 前,无位置 |\n| (2,3) | ❌ B 在位置1,A 无位置 |\n| (3,4) | ❌ D 必须在位置5(端点),违规 |\n| **(4,5)** | ✅ 见下方分析 |\n\n## CE 在 (4,5) 时枚举\n\n剩余位置 1、2、3 分配给 A、B、D(要求 A < B,D 不在端点):\n\n- A=1, B=2, D=3 → **A, B, D, C, E** ✅\n- A=1, B=3, D=2 → **A, D, B, C, E** ✅\n- A=2, B=3, D=1 → D 在位置1 ❌\n\n## 字典序比较\n\n$$A, \\underline{B}, D, C, E \\quad < \\quad A, \\underline{D}, B, C, E$$\n\n字典序最小的队列为 **A, B, D, C, E**,第三个任务是:\n\n**D**"
}
Output
# 求解过程

## 约束条件
1. A < B < C(位置顺序)
2. C 后面紧跟 E(CE 是连续块)
3. D 不能在第1位或第5位

## 排列 CE 块的位置

综合约束 A < B < C < E,链式顺序为 **A → B → CE**

| CE 位置 | 可行性 |
|---------|--------|
| (1,2) | ❌ B 必须在 C 前,无位置 |
| (2,3) | ❌ B 在位置1,A 无位置 |
| (3,4) | ❌ D 必须在位置5(端点),违规 |
| **(4,5)** | ✅ 见下方分析 |

## CE 在 (4,5) 时枚举

剩余位置 1、2、3 分配给 A、B、D(要求 A < B,D 不在端点):

- A=1, B=2, D=3 → **A, B, D, C, E** ✅
- A=1, B=3, D=2 → **A, D, B, C, E** ✅
- A=2, B=3, D=1 → D 在位置1 ❌

## 字典序比较

$$A, \underline{B}, D, C, E \quad < \quad A, \underline{D}, B, C, E$$

字典序最小的队列为 **A, B, D, C, E**,第三个任务是:

**D**

challenge-reasoning-005

Suite: reasoning
Finish: stop
Prompt
只回答“可满足”或“不可满足”:有三个布尔变量 x、y、z。约束为:x 或 y 为真;如果 x 为真则 z 为假;如果 y 为真则 z 为真;x 和 y 不能同时为真。是否存在赋值满足全部约束?
Standard Answer / Scoring Expectation
Answer: 可满足
Mistake Analysis
Failure type: format_violation
核心答案可以还原为标准答案 `可满足`,但模型输出为 `**可满足**\n\n存在满足全部约束的赋值,例如:\n\n- **x = 真,y = 假,z = 假**(满足约束1:x为真✓;约束2:x为真则z为假✓;约束3:y为假,前提不成立✓;约束4:不同时为真✓)\n\n另一组可行解:x = …`,包含 Markdown、解释或其他多余内容。题目要求只输出最终答案,因此严格 exact scorer 判失败。
Scorer Details
{
  "expected": "可满足",
  "actual": "**可满足**\n\n存在满足全部约束的赋值,例如:\n\n- **x = 真,y = 假,z = 假**(满足约束1:x为真✓;约束2:x为真则z为假✓;约束3:y为假,前提不成立✓;约束4:不同时为真✓)\n\n另一组可行解:x = 假,y = 真,z = 真。"
}
Output
**可满足**

存在满足全部约束的赋值,例如:

- **x = 真,y = 假,z = 假**(满足约束1:x为真✓;约束2:x为真则z为假✓;约束3:y为假,前提不成立✓;约束4:不同时为真✓)

另一组可行解:x = 假,y = 真,z = 真。

challenge-coding-010

Suite: coding
Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(expr: str) -> int。expr 只包含非负整数、+、-、空格和括号,计算表达式结果。不要使用 eval。
Standard Answer / Scoring Expectation
Reference tests:
assert solution.solve('1 + 2 - 3') == 0
assert solution.solve('10 - (2 + 3) + 4') == 9
assert solution.solve('(1+(4+5+2)-3)+(6+8)') == 23
Mistake Analysis
Failure type: code_assertion_failure
表达式解析器没有在读取运算符前跳过空格。解析完 `1` 后,指针停在空格上,`while expr[i] in '+-'` 直接结束,导致 `1 + 2 - 3` 只返回 1 而不是继续计算到 0。根因是词法扫描对空白字符处理不一致。
Scorer Details
{
  "returncode": 1,
  "stdout": "",
  "stderr": "Traceback (most recent call last):\n  File \"/var/folders/x_/4cht1kfj1_j31gdv5w01sgmw0000gn/T/dracobench-code-xoifdp2j/test_solution.py\", line 3, in <module>\n    assert solution.solve('1 + 2 - 3') == 0\nAssertionError\n"
}
Output
```python
def solve(expr: str) -> int:
    i = 0
    def parse_expr():
        nonlocal i
        result = parse_term()
        while i < len(expr) and expr[i] in '+-':
            op = expr[i]
            i += 1
            term = parse_term()
            if op == '+':
                result += term
            else:
                result -= term
        return result

    def parse_term():
        nonlocal i
        while i < len(expr) and expr[i] == ' ':
            i += 1
        if i < len(expr) and expr[i] == '(':
            i += 1  # skip '('
            result = parse_expr()
            i += 1  # skip ')'
            return result
        sign = 1
        if i < len(expr) and expr[i] == '-':
            sign = -1
            i += 1
        while i < len(expr) and expr[i] == ' ':
            i += 1
        num = 0
        while i < len(expr) and expr[i].isdigit():
            num = num * 10 + int(expr[i])
            i += 1
        return sign * num

    return parse_expr()
```

challenge-reasoning-012

Suite: reasoning
Finish: stop
Prompt
只回答最终数字:一个 5 位二进制数 10110 先循环右移 1 位,再与 00111 做异或,最后转成十进制。结果是多少?
Standard Answer / Scoring Expectation
Answer: 12
Mistake Analysis
Failure type: format_violation
核心答案可以还原为标准答案 `12`,但模型输出为 `**12**\n\n逐步过程:\n1. **循环右移1位**:10110 → **01011**\n2. **与 00111 异或**:01011 ⊕ 00111 = **01100**\n3. **转十进制**:01100₂ = **1…`,包含 Markdown、解释或其他多余内容。题目要求只输出最终答案,因此严格 exact scorer 判失败。
Scorer Details
{
  "expected": "12",
  "actual": "**12**\n\n逐步过程:\n1. **循环右移1位**:10110 → **01011**\n2. **与 00111 异或**:01011 ⊕ 00111 = **01100**\n3. **转十进制**:01100₂ = **12**"
}
Output
**12**

逐步过程:
1. **循环右移1位**:10110 → **01011**
2. **与 00111 异或**:01011 ⊕ 00111 = **01100**
3. **转十进制**:01100₂ = **12**

challenge-coding-015

Suite: coding
Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(line: str) -> list[str],解析一行简化 CSV:逗号分隔;字段可以用双引号包裹;引号内逗号保留;引号内两个连续双引号表示一个双引号;空字段保留;空格是普通字符,不要自动 trim。
Standard Answer / Scoring Expectation
Reference tests:
assert solution.solve('a,"b,c",d') == ['a', 'b,c', 'd']
assert solution.solve('"a""b",,x') == ['a"b', '', 'x']
assert solution.solve('  a ," b " ') == ['  a ', ' b  ']
Mistake Analysis
Failure type: code_assertion_failure
CSV 解析在引号字段结束后只接受紧跟逗号,没有把引号后的普通空格作为字段内容保留下来。第三个测试里 `" b " ` 的结束引号后还有一个空格,期望字段是 ` b `;模型输出漏掉了尾随空格,违反了题目“空格是普通字符,不要 trim”的要求。
Scorer Details
{
  "returncode": 1,
  "stdout": "",
  "stderr": "Traceback (most recent call last):\n  File \"/var/folders/x_/4cht1kfj1_j31gdv5w01sgmw0000gn/T/dracobench-code-ske8u3eq/test_solution.py\", line 5, in <module>\n    assert solution.solve('  a ,\" b \" ') == ['  a ', ' b  ']\nAssertionError\n"
}
Output
```python
def solve(line: str) -> list[str]:
    fields = []
    i = 0
    n = len(line)
    while i <= n:
        if i == n or line[i] == ',':
            fields.append('')
            i += 1
        elif line[i] == '"':
            i += 1
            field = []
            while i < n:
                if line[i] == '"':
                    if i + 1 < n and line[i + 1] == '"':
                        field.append('"')
                        i += 2
                    else:
                        i += 1
                        break
                else:
                    field.append(line[i])
                    i += 1
            fields.append(''.join(field))
            if i < n and line[i] == ',':
                i += 1
        else:
            j = i
            while j < n and line[j] != ',':
                j += 1
            fields.append(line[i:j])
            i = j + 1
    return fields
```

challenge-coding-027

Suite: coding
Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(versions: list[str]) -> list[str],按简化语义版本排序。版本为 major.minor.patch 或 major.minor.patch-label;major/minor/patch 按数字比较;同一数字版本下,带 label 的预发布版本低于正式版本;label 按字典序比较。
Standard Answer / Scoring Expectation
Reference tests:
assert solution.solve(['1.0.0','1.0.0-alpha','1.0.1','1.0.0-beta','0.9.9']) == ['0.9.9','1.0.0-alpha','1.0.0-beta','1.0.0','1.0.1']
assert solution.solve(['1.0.10','1.0.2']) == ['1.0.2','1.0.10']
Mistake Analysis
Failure type: code_type_error
版本排序 key 的最后一项有时是字符串 label,有时是 `None`。Python 排序比较同一数字版本时会尝试比较 `'alpha'` 和 `None`,直接抛出 TypeError。根因是没有把正式版和预发布版映射到同一类型的可比较 key;应显式让预发布版低于正式版,例如用 `(has_no_label, label)` 这类布尔/字符串组合。
Scorer Details
{
  "returncode": 1,
  "stdout": "",
  "stderr": "Traceback (most recent call last):\n  File \"/var/folders/x_/4cht1kfj1_j31gdv5w01sgmw0000gn/T/dracobench-code-7bi9cfye/test_solution.py\", line 3, in <module>\n    assert solution.solve(['1.0.0','1.0.0-alpha','1.0.1','1.0.0-beta','0.9.9']) == ['0.9.9','1.0.0-alpha','1.0.0-beta','1.0.0','1.0.1']\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/private/var/folders/x_/4cht1kfj1_j31gdv5w01sgmw0000gn/T/dracobench-code-7bi9cfye/solution.py\", line 7, in solve\n    return sorted(versions, key=lambda v: parse_version(v))\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\nTypeError: '<' not supported between instances of 'str' and 'NoneType'\n"
}
Output
```python
def solve(versions: list[str]) -> list[str]:
    def parse_version(v: str):
        base, *label = v.split("-", 1)
        major, minor, patch = map(int, base.split("."))
        return (major, minor, patch, label[0] if label else None)
    
    return sorted(versions, key=lambda v: parse_version(v))
```

challenge-rag-014

Suite: rag_long_context
Finish: stop
Prompt
只根据资料回答。

资料 A:早期 ability mode 使用 4096 max_tokens。
资料 B:后来为了公平,ability mode 统一放宽到 16384 max_tokens。
资料 C:当前总览页只展示 v0.2-challenge50 且 ability16384 的结果。

问题:当前总览页对应的 token limit 是多少?
Standard Answer / Scoring Expectation
Required phrases: 16384
Forbidden phrases: 4096
Length guidance (diagnostic only): min=n/a, max=100
Mistake Analysis
Failure type: empty_output
题目问当前总览页对应的 token limit,资料 B/C 都指向 `ability16384`,应回答 16384。模型返回了空字符串,导致关键数字完全缺失。根因是正常 stop 但未产出正文,不是资料检索歧义。
Scorer Details
{
  "missing": [
    "16384"
  ],
  "missing_any": [],
  "present_forbidden": [],
  "char_count": 0,
  "length_ok": true,
  "length_scored": false
}
Output

All Questions & Answers

challenge-coding-001 PASS
Suite: coding · Latency: 79614 ms · Cost: $0.003388 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(lines: list[str]) -> dict。lines 是简化 INI:空行和以 # 开头的行忽略;[section] 开始新 section;key=value 写入当前 section;key/value 两侧空白要去掉;同一 section 内重复 key 后者覆盖前者。返回嵌套 dict。
Standard Answer / Scoring Expectation
Reference tests:
lines = ['# comment', '[db]', ' host = localhost ', 'port=5432', '', '[feature]', 'enabled=true', 'enabled = false']
assert solution.solve(lines) == {'db': {'host': 'localhost', 'port': '5432'}, 'feature': {'enabled': 'false'}}
assert solution.solve(['[x]', 'a=1', 'a=2', '[y]', 'b = hi']) == {'x': {'a': '2'}, 'y': {'b': 'hi'}}
Output
```python
def solve(lines: list[str]) -> dict:
    result = {}
    current_section = None
    for line in lines:
        line = line.strip()
        if not line or line.startswith('#'):
            continue
        if line.startswith('[') and line.endswith(']'):
            section_name = line[1:-1].strip()
            current_section = section_name
            if current_section not in result:
                result[current_section] = {}
        else:
            if current_section is None:
                current_section = ''
                if current_section not in result:
                    result[current_section] = {}
            if '=' in line:
                key, value = line.split('=', 1)
                key = key.strip()
                value = value.strip()
                result[current_section][key] = value
    return result
```
challenge-coding-002 PASS
Suite: coding · Latency: 115770 ms · Cost: $0.002217 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(events: list[str]) -> int。事件格式:"<id> credit <amount>" 增加余额,"<id> debit <amount>" 减少余额,"rev <id>" 撤销此前尚未撤销过的同 id 事件。重复交易 id 只保留第一次,未知撤销忽略。返回最终余额。
Standard Answer / Scoring Expectation
Reference tests:
events = ['a credit 100', 'b debit 40', 'a credit 999', 'rev b', 'c debit 10']
assert solution.solve(events) == 90
events = ['x debit 5', 'rev y', 'rev x', 'rev x', 'z credit 7']
assert solution.solve(events) == 7
Output
```python
def solve(events: list[str]) -> int:
    balance = 0
    event_status = {}  # 键: id, 值: [type, amount, revoked]
    
    for event in events:
        if event.startswith("rev"):
            # 撤销事件
            parts = event.split()
            if len(parts) != 2:
                continue
            id = parts[1]
            if id in event_status and not event_status[id][2]:
                type, amount, _ = event_status[id]
                if type == "credit":
                    balance -= amount
                else:  # debit
                    balance += amount
                event_status[id][2] = True
        else:
            # credit 或 debit 事件
            parts = event.split()
            if len(parts) != 3:
                continue
            id, type, amount_str = parts
            amount = int(amount_str)
            if id not in event_status:
                if type == "credit":
                    balance += amount
                else:  # debit
                    balance -= amount
                event_status[id] = [type, amount, False]
            # 重复id只保留第一次,忽略后续
    
    return balance
```
challenge-coding-003 PASS
Suite: coding · Latency: 19619 ms · Cost: $0.000371 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(deps: dict[str, list[str]]) -> list[list[str]]。deps 表示 task -> prerequisites。返回可并行执行的拓扑层,每层任务按字典序排序;如果存在环,返回空列表。所有只出现在 prerequisites 中的任务也要包含。
Standard Answer / Scoring Expectation
Reference tests:
deps = {'build': ['lint', 'test'], 'test': ['install'], 'lint': ['install']}
assert solution.solve(deps) == [['install'], ['lint', 'test'], ['build']]
assert solution.solve({'a': ['b'], 'b': ['a']}) == []
assert solution.solve({'deploy': ['build'], 'build': []}) == [['build'], ['deploy']]
Output
```python
def solve(deps: dict[str, list[str]]) -> list[list[str]]:
    from collections import defaultdict

    # Collect all tasks
    tasks = set(deps.keys())
    for prereqs in deps.values():
        for p in prereqs:
            tasks.add(p)

    # Build graph: edge from prereq -> task
    in_degree = {t: 0 for t in tasks}
    graph = defaultdict(list)  # prereq -> list of tasks that depend on it
    for task, prereqs in deps.items():
        for p in prereqs:
            graph[p].append(task)
            in_degree[task] += 1

    # Kahn's algorithm with layering
    current_layer = sorted([t for t in tasks if in_degree[t] == 0])
    layers = []
    processed = 0

    while current_layer:
        layers.append(current_layer)
        processed += len(current_layer)
        next_layer_set = set()
        for node in current_layer:
            for neighbor in graph[node]:
                in_degree[neighbor] -= 1
                if in_degree[neighbor] == 0:
                    next_layer_set.add(neighbor)
        current_layer = sorted(next_layer_set)

    if processed != len(tasks):
        return []
    return layers
```
challenge-coding-004 FAIL
Suite: coding · Latency: 29280 ms · Cost: $0.001367 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(capacity: int, ops: list[str]) -> list[int],模拟 LRU cache。ops 包含 "put key value" 和 "get key"。get 返回 value,不存在返回 -1。put 已存在 key 要更新并变成最近使用。容量为 0 时所有 get 都返回 -1。
Standard Answer / Scoring Expectation
Reference tests:
ops = ['put a 1', 'put b 2', 'get a', 'put c 3', 'get b', 'get a', 'get c']
assert solution.solve(2, ops) == [1, -1, 1, 3]
assert solution.solve(0, ['put a 1', 'get a']) == [-1]
assert solution.solve(1, ['put a 1', 'put a 2', 'get a']) == [2]
Mistake Analysis
Failure type: runtime_type_assumption
题目里的 cache key 是字符串,例如 `a`、`b`、`c`,但模型把 key 强行写成 `int(parts[1])`。测试一遇到 `put a 1` 就在解析 `a` 时抛出 ValueError。根因是模型擅自补了“key 是整数”的类型假设。
Output
```python
from collections import OrderedDict

def solve(capacity: int, ops: list[str]) -> list[int]:
    if capacity == 0:
        return [-1 if op.startswith("get") else 0 for op in ops]
    
    cache = OrderedDict()
    res = []
    
    for op in ops:
        if op.startswith("get"):
            key = int(op.split()[1])
            if key in cache:
                cache.move_to_end(key)
                res.append(cache[key])
            else:
                res.append(-1)
        else:
            _, key, value = op.split()
            key, value = int(key), int(value)
            if key in cache:
                cache.move_to_end(key)
            elif len(cache) == capacity:
                cache.popitem(last=False)
            cache[key] = value
            res.append(0)
    
    return res
```
challenge-coding-005 PASS
Suite: coding · Latency: 5215 ms · Cost: $0.000215 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(base: dict, patch: dict) -> dict,执行 JSON Merge Patch:patch 中值为 None 表示删除该 key;两个值都是 dict 时递归合并;其他值覆盖。不能修改输入对象。
Standard Answer / Scoring Expectation
Reference tests:
base = {'a': 1, 'b': {'x': 1, 'y': 2}, 'c': 3}
patch = {'b': {'y': None, 'z': 4}, 'c': None}
assert solution.solve(base, patch) == {'a': 1, 'b': {'x': 1, 'z': 4}}
assert base == {'a': 1, 'b': {'x': 1, 'y': 2}, 'c': 3}
assert solution.solve({'a': {'b': 1}}, {'a': 5}) == {'a': 5}
Output
```python
def solve(base: dict, patch: dict) -> dict:
    result = dict(base)
    for key, value in patch.items():
        if value is None:
            result.pop(key, None)
        elif isinstance(value, dict) and isinstance(result.get(key), dict):
            result[key] = solve(result[key], value)
        else:
            result[key] = value
    return result
```
challenge-coding-006 PASS
Suite: coding · Latency: 15181 ms · Cost: $0.000204 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(text: str) -> int,把时长字符串转换成毫秒。支持整数单位 d、h、m、s、ms,可有空格,单位可重复,顺序任意。例如 "1h 30m 500ms"。
Standard Answer / Scoring Expectation
Reference tests:
assert solution.solve('1h 30m 500ms') == 5400500
assert solution.solve('2d 1h 2s') == 176402000
assert solution.solve('100ms 2s 3ms') == 2103
Output
```python
import re

def solve(text: str) -> int:
    unit_ms = {'d': 86400000, 'h': 3600000, 'm': 60000, 's': 1000, 'ms': 1}
    total = 0
    for val, unit in re.findall(r'(\d+)\s*(ms|d|h|m|s)', text):
        total += int(val) * unit_ms[unit]
    return total
```
challenge-coding-007 PASS
Suite: coding · Latency: 110179 ms · Cost: $0.005385 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(s: str) -> bool,检查括号 ()[]{} 是否配对。单引号或双引号内部的括号忽略;反斜杠会转义引号。输入字符串可以包含普通字符。
Standard Answer / Scoring Expectation
Reference tests:
assert solution.solve('{a:[(1)]}') is True
assert solution.solve("{'x': '(]'}") is True
assert solution.solve("['unterminated]") is False
assert solution.solve('([)]') is False
assert solution.solve("\"paren \\\" ) still quoted\"") is True
Output
```python
def solve(s: str) -> bool:
    stack = []
    in_quote = None
    i = 0
    n = len(s)
    while i < n:
        c = s[i]
        if c == '\\':
            i += 1
            if i < n:
                i += 1
            continue
        if in_quote is None:
            if c in '({[':
                stack.append(c)
            elif c in ')}]':
                if not stack:
                    return False
                top = stack.pop()
                if not ((top == '(' and c == ')') or (top == '[' and c == ']') or (top == '{' and c == '}')):
                    return False
            elif c in '"\'':
                in_quote = c
        else:
            if c == in_quote:
                in_quote = None
        i += 1
    return len(stack) == 0
```
challenge-coding-008 PASS
Suite: coding · Latency: 69954 ms · Cost: $0.001415 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(rows: list[dict]) -> list[dict]。每行有 user、ts、value。对每个 user 保留 ts 最大的一行;若 ts 相同,保留在输入中更靠后的行。输出按 user 字典序排序。
Standard Answer / Scoring Expectation
Reference tests:
rows = [{'user':'b','ts':1,'value':'old'}, {'user':'a','ts':2,'value':'x'}, {'user':'b','ts':3,'value':'new'}]
assert solution.solve(rows) == [{'user':'a','ts':2,'value':'x'}, {'user':'b','ts':3,'value':'new'}]
rows = [{'user':'a','ts':1,'value':'first'}, {'user':'a','ts':1,'value':'second'}]
assert solution.solve(rows) == [{'user':'a','ts':1,'value':'second'}]
Output
```python
def solve(rows: list[dict]) -> list[dict]:
    best = {}
    for row in rows:
        user = row['user']
        ts = row['ts']
        if user not in best or ts >= best[user]['ts']:
            best[user] = row
    result = sorted(best.values(), key=lambda x: x['user'])
    return result
```
challenge-debugging-001 PASS
Suite: debugging · Latency: 8082 ms · Cost: $0.000316 · Finish: stop
Prompt
下面代码在 total 之后再次读取数据会变成空列表。请指出根因,并给出最小修复。最后单独一行写 FIX: <修复后的第一行函数定义>。

```python
def summarize(items=iter([1, 2, 3])):
    return sum(items)
```
Standard Answer / Scoring Expectation
Expected regex pattern:
FIX:\s*`?\s*def\s+summarize\(items=None\)\s*:
Output
## 根因

`items=iter([1, 2, 3])` 中的默认值只在 **函数定义时** 求值一次。所有未传参的调用共享同一个迭代器对象,第一次调用时迭代器已被耗尽,后续调用拿到的是同一个已耗尽的迭代器,`sum()` 对空迭代器返回 0(即"空列表"效果)。

## 最小修复

```python
def summarize(items=None):
    return sum(iter([1, 2, 3]) if items is None else items)
```

FIX: `def summarize(items=None):`
challenge-debugging-002 PASS
Suite: debugging · Latency: 14693 ms · Cost: $0.000691 · Finish: stop
Prompt
下面代码期望统计每个用户的事件数,但所有用户计数会互相影响。请指出根因,并给出最小修复。最后单独一行写 FIX: <修复后的 defaultdict 初始化行>。

```python
from collections import defaultdict
shared = {'seen': []}
counts = defaultdict(lambda: shared)

def add(user, event):
    counts[user]['seen'].append(event)
    return counts[user]
```
Standard Answer / Scoring Expectation
Expected regex pattern:
FIX:\s*`?\s*counts\s*=\s*defaultdict\(lambda\s*:\s*\{'seen'\s*:\s*\[\]\}\)\s*`?
Output
根因:`defaultdict(lambda: shared)` 中的 `shared` 是一个可变字典,作为 default_factory 时,所有键访问都会返回同一个对象,导致不同用户的数据相互覆盖。

修复:将 default_factory 改为每次调用时创建新的字典,确保每个用户拥有独立的数据结构。

FIX: `counts = defaultdict(lambda: {'seen': []})`
challenge-debugging-003 PASS
Suite: debugging · Latency: 12253 ms · Cost: $0.000259 · Finish: stop
Prompt
下面分页代码会漏掉最后不足 page_size 的一页。请指出 bug,并给出最小修复。最后单独一行写 FIX: <修复后的 range 行>。

```python
def pages(items, page_size):
    out = []
    for start in range(0, len(items) - page_size, page_size):
        out.append(items[start:start + page_size])
    return out
```
Standard Answer / Scoring Expectation
Expected regex pattern:
FIX:\s*`?\s*for\s+start\s+in\s+range\(0,\s*len\(items\),\s*page_size\)\s*:
Output
## Bug 分析

`range(0, len(items) - page_size, page_size)` 的上界多减了一个 `page_size`,导致最后一页(即使是满页)以及不足一页的尾页都被跳过。

## 修复

只需将上界改为 `len(items)`。当 `start` 处于最后不足 `page_size` 的位置时,`items[start:start+page_size]` 会自动截取剩余元素,无需额外处理。

FIX: `for start in range(0, len(items), page_size):`
challenge-debugging-004 PASS
Suite: debugging · Latency: 6589 ms · Cost: $0.000234 · Finish: stop
Prompt
下面代码期望把数字字符串按数值排序,但结果是字典序。请指出 bug,并给出最小修复。最后单独一行写 FIX: <修复后的 return 行>。

```python
def order(ids):
    return sorted(ids)
```
Standard Answer / Scoring Expectation
Expected regex pattern:
FIX:\s*`?\s*return\s+sorted\(ids,\s*key\s*=\s*int\)\s*`?
Output
## Bug 分析

`sorted(ids)` 默认按字符串的**字典序**(逐字符比较 Unicode 码点)排序,而非按字符串所表示的**数值大小**排序。

例如 `"10" < "2"` 为 `True`(字典序),但数值上 `10 > 2`。

## 最小修复

给 `sorted` 传入 `key=int`,使其按数值比较:

```python
def order(ids):
    return sorted(ids, key=int)
```

FIX: `return sorted(ids, key=int)`
challenge-debugging-005 PASS
Suite: debugging · Latency: 4625 ms · Cost: $0.000207 · Finish: stop
Prompt
下面缓存装饰器会把不同参数的调用混在一起。请指出 bug,并给出最小修复。最后单独一行写 FIX: <修复后的 key 赋值行>。

```python
cache = {}
def memo(fn):
    def wrapper(*args, **kwargs):
        key = fn.__name__
        if key not in cache:
            cache[key] = fn(*args, **kwargs)
        return cache[key]
    return wrapper
```
Standard Answer / Scoring Expectation
Expected regex pattern:
FIX:\s*`?\s*key\s*=\s*\(fn\.__name__,\s*args,\s*(?:tuple\(sorted\(kwargs\.items\(\)\)\)|frozenset\(kwargs\.items\(\)\))\)\s*`?
Output
**Bug:** `key = fn.__name__` 只用函数名作缓存键,不含参数,导致首次调用后所有不同参数的调用都返回同一缓存结果。

FIX: `key = (fn.__name__, args, tuple(sorted(kwargs.items())))`
challenge-debugging-006 PASS
Suite: debugging · Latency: 8250 ms · Cost: $0.000156 · Finish: stop
Prompt
下面代码期望浅拷贝列表后独立追加,但原列表也被修改。请指出 bug,并给出最小修复。最后单独一行写 FIX: <修复后的 copy 行>。

```python
def append_copy(items, value):
    copied = items
    copied.append(value)
    return copied
```
Standard Answer / Scoring Expectation
Expected regex pattern:
FIX:\s*`?\s*copied\s*=\s*(?:items\.copy\(\)|items\[:\]|list\(items\))\s*`?
Output
## Bug 分析

`copied = items` 并未创建副本,只是让 `copied` 指向**同一个列表对象**。因此对 `copied` 追加元素等同于修改原列表。

FIX: `copied = items.copy()`
challenge-debugging-007 PASS
Suite: debugging · Latency: 4348 ms · Cost: $0.000208 · Finish: stop
Prompt
下面代码期望解析 JSON 字符串,但传入已经是 dict 时会报错。请指出 bug,并给出最小修复。最后单独一行写 FIX: <修复后的 data 赋值行>。

```python
import json

def load(payload):
    data = json.loads(payload)
    return data['id']
```
Standard Answer / Scoring Expectation
Expected regex pattern:
FIX:\s*`?\s*data\s*=\s*(payload\s+if\s+isinstance\(payload,\s*dict\)\s+else\s+json\.loads\(payload\)|json\.loads\(payload\)\s+if\s+isinstance\(payload,\s*\(str,\s*bytes,\s*bytearray\)\)\s+else\s+payload|json\.loads\(payload\)\s+if\s+isinstance\(payload,\s*str\)\s+else\s+payload)\s*`?
Output
## Bug 分析

`json.loads()` 要求传入 `str`/`bytes`/`bytearray`。当 `payload` 已经是 `dict` 时,`json.loads()` 会抛出 `TypeError`。

## 最小修复

只需在调用 `json.loads` 前判断是否已经是 dict:

FIX: `data = payload if isinstance(payload, dict) else json.loads(payload)`
challenge-debugging-008 PASS
Suite: debugging · Latency: 8707 ms · Cost: $0.000233 · Finish: stop
Prompt
下面代码期望 finally 后仍保留 try 中返回值,但实际总是返回 None。请指出 bug,并给出最小修复。最后单独一行写 FIX: <要删除或替换的 finally 行说明>。

```python
def read_value():
    try:
        return 42
    finally:
        return None
```
Standard Answer / Scoring Expectation
Accepted answers:
- 删除 finally 中的 return None
- 去掉 finally 的 return None
- 不要在 finally 里 return None
- remove return None
- 去掉 finally 中的 return None
- 删除或替换 finally 中的 return None
- 去掉 finally 中的 `return None`
- 删除或替换 finally 中的 `return None`
- 删除 finally 块中的 `return None`
- 删除 finally 块中的 return None
- 删除 finally 中的 `return None`
- 删除 `finally` 块中的 `return None`
- 删除 `finally` 中的 `return None`
- 删除 `finally: return None`
- 将 `finally:` 中的 `return None` 删除
- finally 中的 return None 删除
- finally: 中的 return None 删除
- 删除 finally 块中的 'return None'
- 删除 finally 子句中的 `return None`
- 删除 finally 子句中的 return None
- delete the line `return None` inside the finally block
- delete the line return None inside the finally block
- finally 块不应包含 return 语句
- finally 块不应包含 return
- finally 不应包含 return
Output
## Bug 分析

在 Python 中,`finally` 块中的 `return` 会**覆盖** `try`(或 `except`)块中的 `return`。这里 `finally` 里的 `return None` 把 `try` 中的 `return 42` 给覆盖掉了。

## 修复

只需删除 `finally` 中的 `return None`:

```python
def read_value():
    try:
        return 42
    finally:
        pass
```

FIX: 删除 finally 块中的 `return None`,改为 `pass`(或直接去掉整个 `finally` 块)
challenge-reasoning-001 PASS
Suite: reasoning · Latency: 3337 ms · Cost: $0.000124 · Finish: stop
Prompt
只回答最终数字:有 A、B、C、D 四个服务。A 每分钟处理 6 个请求,B 比 A 少 2 个,C 是 B 的 2 倍,D 是 A 和 C 的平均值。四个服务 5 分钟一共处理多少请求?
Standard Answer / Scoring Expectation
Answer: 125
Output
125
challenge-reasoning-002 FAIL
Suite: reasoning · Latency: 35491 ms · Cost: $0.001788 · Finish: stop
Prompt
只回答一个字母:五个任务 A、B、C、D、E 排队。A 必须在 B 前,B 必须在 C 前;D 不能在两端;E 必须紧挨在 C 后面。在所有满足条件的队列中,按字典序最小的队列第三个任务是谁?
Standard Answer / Scoring Expectation
Answer: D
Mistake Analysis
Failure type: format_violation
核心答案可以还原为标准答案 `D`,但模型输出为 `# 求解过程\n\n## 约束条件\n1. A < B < C(位置顺序)\n2. C 后面紧跟 E(CE 是连续块)\n3. D 不能在第1位或第5位\n\n## 排列 CE 块的位置\n\n综合约束 A < B < C < E,链式顺…`,包含 Markdown、解释或其他多余内容。题目要求只输出最终答案,因此严格 exact scorer 判失败。
Output
# 求解过程

## 约束条件
1. A < B < C(位置顺序)
2. C 后面紧跟 E(CE 是连续块)
3. D 不能在第1位或第5位

## 排列 CE 块的位置

综合约束 A < B < C < E,链式顺序为 **A → B → CE**

| CE 位置 | 可行性 |
|---------|--------|
| (1,2) | ❌ B 必须在 C 前,无位置 |
| (2,3) | ❌ B 在位置1,A 无位置 |
| (3,4) | ❌ D 必须在位置5(端点),违规 |
| **(4,5)** | ✅ 见下方分析 |

## CE 在 (4,5) 时枚举

剩余位置 1、2、3 分配给 A、B、D(要求 A < B,D 不在端点):

- A=1, B=2, D=3 → **A, B, D, C, E** ✅
- A=1, B=3, D=2 → **A, D, B, C, E** ✅
- A=2, B=3, D=1 → D 在位置1 ❌

## 字典序比较

$$A, \underline{B}, D, C, E \quad < \quad A, \underline{D}, B, C, E$$

字典序最小的队列为 **A, B, D, C, E**,第三个任务是:

**D**
challenge-reasoning-003 PASS
Suite: reasoning · Latency: 22050 ms · Cost: $0.001061 · Finish: stop
Prompt
只回答最终数字:一个 4 位二进制数从 1011 开始,先左移一位并只保留低 4 位,再与 0110 做异或,最后转成十进制。结果是多少?
Standard Answer / Scoring Expectation
Answer: 0
Output
0
challenge-reasoning-004 PASS
Suite: reasoning · Latency: 12876 ms · Cost: $0.000289 · Finish: stop
Prompt
只回答最终数字:一个集合最初为 {1,2,3,4,5}。依次执行:删除所有偶数;加入 6 和 7;把每个元素乘以 2;删除大于 10 的元素。最终集合元素之和是多少?
Standard Answer / Scoring Expectation
Answer: 18
Output
18
challenge-reasoning-005 FAIL
Suite: reasoning · Latency: 16758 ms · Cost: $0.000326 · Finish: stop
Prompt
只回答“可满足”或“不可满足”:有三个布尔变量 x、y、z。约束为:x 或 y 为真;如果 x 为真则 z 为假;如果 y 为真则 z 为真;x 和 y 不能同时为真。是否存在赋值满足全部约束?
Standard Answer / Scoring Expectation
Answer: 可满足
Mistake Analysis
Failure type: format_violation
核心答案可以还原为标准答案 `可满足`,但模型输出为 `**可满足**\n\n存在满足全部约束的赋值,例如:\n\n- **x = 真,y = 假,z = 假**(满足约束1:x为真✓;约束2:x为真则z为假✓;约束3:y为假,前提不成立✓;约束4:不同时为真✓)\n\n另一组可行解:x = …`,包含 Markdown、解释或其他多余内容。题目要求只输出最终答案,因此严格 exact scorer 判失败。
Output
**可满足**

存在满足全部约束的赋值,例如:

- **x = 真,y = 假,z = 假**(满足约束1:x为真✓;约束2:x为真则z为假✓;约束3:y为假,前提不成立✓;约束4:不同时为真✓)

另一组可行解:x = 假,y = 真,z = 真。
challenge-rag-001 PASS
Suite: rag_long_context · Latency: 25596 ms · Cost: $0.001147 · Finish: stop
Prompt
只根据资料回答。

资料 A:DracoBench v0.2 的目标是提高区分度,优先增加 coding、debugging、RAG 和 instruction_following 题。
资料 B:DracoBench v0.2 不会默认使用 LLM-as-judge;开放中文写作题只做少量规则校验和人工抽检。
资料 C:v0.2 的 HTML 报告必须展示通过率、成本、reasoning tokens、失败样例和逐题明细。

问题:v0.2 为什么没有把 LLM-as-judge 作为默认判分?
Standard Answer / Scoring Expectation
Required phrases: 人工抽检
At least one from each group: 默认使用 / 默认判分 / 默认采用 / 作为默认判分
Forbidden phrases: 因为成本太高、因为不支持中文
Length guidance (diagnostic only): min=n/a, max=160
Output
根据资料 B,DracoBench v0.2 不会默认使用 LLM-as-judge,因为对于开放中文写作题,它只做少量规则校验和人工抽检。这表明 v0.2 依赖规则和人工验证来确保评分准确性,而非自动使用 LLM 作为评判者。
challenge-rag-002 PASS
Suite: rag_long_context · Latency: 33898 ms · Cost: $0.000675 · Finish: stop
Prompt
只根据资料回答,不要自行补充。

资料:模型 Alpha 在 30 道 challenge 题中通过 24 道,成本 0.08 美元,平均延迟 9 秒。模型 Beta 通过 22 道,成本 0.02 美元,平均延迟 3 秒。资料没有给出两者在多模态任务上的表现。

问题:如果要写低成本高吞吐摘要服务,资料更支持选择哪个模型?另外,多模态表现能否判断?
Standard Answer / Scoring Expectation
Required phrases: Beta、成本、延迟、判断
Forbidden phrases: Alpha 更适合、多模态更强
Length guidance (diagnostic only): min=n/a, max=180
Output
根据资料,模型 Beta 的成本(0.02 美元)低于模型 Alpha(0.08 美元),且平均延迟(3 秒)也低于 Alpha(9 秒)。对于低成本高吞吐摘要服务,资料更支持选择模型 Beta。

多模态表现无法判断,因为资料未提供两者在多模态任务上的表现。
challenge-rag-003 PASS
Suite: rag_long_context · Latency: 54919 ms · Cost: $0.001001 · Finish: stop
Prompt
只根据资料回答。

资料:一次评测中,K 模型在 smoke set 上 7/7,通过率 100%;在 hard set 上原始结果 47/50,其中 2 题后来被认定为题面歧义,单独复测通过。另有 1 题因 reasoning tokens 用尽而空输出。

问题:更公平的文字结论应该如何描述 K 模型这次 hard set 表现?
Standard Answer / Scoring Expectation
Required phrases: 题面歧义
At least one from each group: 47/50 / 47 题 / 47题;空输出 / 输出为空 / 未输出
Forbidden phrases: 满分、完全失败
Length guidance (diagnostic only): min=n/a, max=240
Output
K模型在hard set评测中原始通过47/50,但其中2题因题面歧义复测后通过,1题因reasoning tokens用尽而空输出,表明模型在理想条件下的实际通过率应为49/50或更高。
challenge-rag-004 PASS
Suite: rag_long_context · Latency: 11947 ms · Cost: $0.000448 · Finish: stop
Prompt
只根据资料回答,不要使用资料外知识。

资料:报告字段包括 pass_rate、avg_latency_ms、total_cost、prompt_tokens、completion_tokens、reasoning_tokens。报告不包含模型训练数据来源,也不包含供应商真实利润率。

问题:根据资料,能否从报告判断供应商利润率?
Standard Answer / Scoring Expectation
Required phrases: 不能、不包含、利润率
Forbidden phrases: 可以判断、训练数据
Length guidance (diagnostic only): min=n/a, max=100
Output
不能。资料明确说明报告不包含供应商真实利润率,且报告字段中没有收入信息,因此无法判断利润率。
challenge-if-001 PASS
Suite: instruction_following · Latency: 39856 ms · Cost: $0.000776 · Finish: stop
Prompt
只输出 JSON 对象,不要 Markdown。字段 status 必须是 "review";字段 scores 必须是对象,包含 coding、debugging、rag 三个整数;字段 note 必须是不超过 12 个汉字的中文字符串。
Standard Answer / Scoring Expectation
Expected JSON schema:
{
  "type": "object",
  "required": [
    "status",
    "scores",
    "note"
  ],
  "additionalProperties": false,
  "properties": {
    "status": {
      "type": "string",
      "const": "review"
    },
    "scores": {
      "type": "object",
      "required": [
        "coding",
        "debugging",
        "rag"
      ],
      "additionalProperties": false,
      "properties": {
        "coding": {
          "type": "integer"
        },
        "debugging": {
          "type": "integer"
        },
        "rag": {
          "type": "integer"
        }
      }
    },
    "note": {
      "type": "string"
    }
  }
}
Output
{
  "status": "review",
  "scores": {
    "coding": 80,
    "debugging": 75,
    "rag": 85
  },
  "note": "正在审查"
}
challenge-if-002 PASS
Suite: instruction_following · Latency: 28657 ms · Cost: $0.000543 · Finish: stop
Prompt
只输出 4 行,不要解释。第 1 行是 BEGIN,第 4 行是 END。第 2 行必须包含“模型评测”,第 3 行必须包含“HTML报告”。不能出现任何项目符号。
Standard Answer / Scoring Expectation
Expected regex pattern:
^\s*BEGIN\s*\n[^\n]*模型评测[^\n]*\n[^\n]*HTML报告[^\n]*\nEND\s*$
Output
BEGIN
开始模型评测
生成HTML报告
END
challenge-if-003 PASS
Suite: instruction_following · Latency: 6577 ms · Cost: $0.000296 · Finish: stop
Prompt
只输出一个中文句子,不能超过 28 个汉字。必须同时包含“难题”和“区分度”,不能包含“最强”“吊打”“遥遥领先”。
Standard Answer / Scoring Expectation
Required phrases: 难题、区分度
Forbidden phrases: 最强、吊打、遥遥领先
Length guidance (diagnostic only): min=n/a, max=28
Output
这道难题的区分度很高,能有效筛选出优秀学生。
challenge-zh-writing-001 PASS
Suite: chinese_writing · Latency: 43509 ms · Cost: $0.000861 · Finish: stop
Prompt
写一段不超过 120 个汉字的公众号结论,主题是“模型在简单题满分不代表真实强”。必须包含“简单题”“真实能力”“失败样例”,不能出现“吊打”。
Standard Answer / Scoring Expectation
Required phrases: 简单题、真实能力、失败样例
Forbidden phrases: 吊打
Length guidance (diagnostic only): min=n/a, max=120
Output
**结论:**

在简单题上拿满分,往往只是"基本功达标"的门槛,并不能代表模型的真实能力。真正拉开差距的,是复杂推理、多步规划与边界场景。当遇到长链条任务时,失败样例比比皆是。与其看基准得分,不如关注模型在困难任务上的鲁棒性和一致性。
challenge-zh-writing-002 PASS
Suite: chinese_writing · Latency: 29985 ms · Cost: $0.000576 · Finish: stop
Prompt
把下面口语句改写成专业表达,不超过 80 个汉字:这个模型看起来很猛,但一遇到复杂调试就开始掉链子。必须包含“复杂调试”和“稳定性”,不能包含“猛”“掉链子”。
Standard Answer / Scoring Expectation
Required phrases: 复杂调试、稳定性
Forbidden phrases: 猛、掉链子
Length guidance (diagnostic only): min=n/a, max=80
Output
该模型在常规任务中表现优异,但在复杂调试环境下,其稳定性存在明显不足。
challenge-coding-009 PASS
Suite: coding · Latency: 18419 ms · Cost: $0.001018 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(events: list[dict]) -> dict[str, int]。每个事件包含 user、type、amount;type 为 "add" 或 "remove"。按 user 汇总 add 减 remove 后的库存,结果中去掉库存为 0 的用户,按 key 字典序返回普通 dict。amount 可能是字符串数字。
Standard Answer / Scoring Expectation
Reference tests:
events=[{'user':'b','type':'add','amount':'5'},{'user':'a','type':'add','amount':3},{'user':'b','type':'remove','amount':2},{'user':'a','type':'remove','amount':3}]
assert solution.solve(events) == {'b': 3}
assert solution.solve([]) == {}
assert solution.solve([{'user':'x','type':'remove','amount':'2'}]) == {'x': -2}
Output
def solve(events: list[dict]) -> dict[str, int]:
    inventory = {}
    for event in events:
        user = event['user']
        type_ = event['type']
        amount = int(event['amount'])
        if type_ == 'add':
            inventory[user] = inventory.get(user, 0) + amount
        elif type_ == 'remove':
            inventory[user] = inventory.get(user, 0) - amount
    result = {user: stock for user, stock in inventory.items() if stock != 0}
    return dict(sorted(result.items()))
challenge-coding-010 FAIL
Suite: coding · Latency: 6976 ms · Cost: $0.000345 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(expr: str) -> int。expr 只包含非负整数、+、-、空格和括号,计算表达式结果。不要使用 eval。
Standard Answer / Scoring Expectation
Reference tests:
assert solution.solve('1 + 2 - 3') == 0
assert solution.solve('10 - (2 + 3) + 4') == 9
assert solution.solve('(1+(4+5+2)-3)+(6+8)') == 23
Mistake Analysis
Failure type: code_assertion_failure
表达式解析器没有在读取运算符前跳过空格。解析完 `1` 后,指针停在空格上,`while expr[i] in '+-'` 直接结束,导致 `1 + 2 - 3` 只返回 1 而不是继续计算到 0。根因是词法扫描对空白字符处理不一致。
Output
```python
def solve(expr: str) -> int:
    i = 0
    def parse_expr():
        nonlocal i
        result = parse_term()
        while i < len(expr) and expr[i] in '+-':
            op = expr[i]
            i += 1
            term = parse_term()
            if op == '+':
                result += term
            else:
                result -= term
        return result

    def parse_term():
        nonlocal i
        while i < len(expr) and expr[i] == ' ':
            i += 1
        if i < len(expr) and expr[i] == '(':
            i += 1  # skip '('
            result = parse_expr()
            i += 1  # skip ')'
            return result
        sign = 1
        if i < len(expr) and expr[i] == '-':
            sign = -1
            i += 1
        while i < len(expr) and expr[i] == ' ':
            i += 1
        num = 0
        while i < len(expr) and expr[i].isdigit():
            num = num * 10 + int(expr[i])
            i += 1
        return sign * num

    return parse_expr()
```
challenge-coding-011 PASS
Suite: coding · Latency: 15572 ms · Cost: $0.000577 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(rows: list[str]) -> list[tuple[str, int]]。每行格式为 "name score",空白数量不定;同名保留最高分;输出按分数降序、同分按 name 升序。忽略空行。
Standard Answer / Scoring Expectation
Reference tests:
assert solution.solve(['alice 10','bob   12','alice 15','','bob 11']) == [('alice',15),('bob',12)]
assert solution.solve(['x -1','a -1','b 0']) == [('b',0),('a',-1),('x',-1)]
Output
```python
def solve(rows: list[str]) -> list[tuple[str, int]]:
    name_to_max_score = {}
    for row in rows:
        stripped = row.strip()
        if not stripped:
            continue
        parts = stripped.split()
        name = parts[0]
        score = int(parts[-1])
        if name not in name_to_max_score or score > name_to_max_score[name]:
            name_to_max_score[name] = score
    result = [(name, score) for name, score in name_to_max_score.items()]
    result.sort(key=lambda x: (-x[1], x[0]))
    return result
```
challenge-coding-012 PASS
Suite: coding · Latency: 7115 ms · Cost: $0.000338 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(pattern: str, text: str) -> bool。pattern 支持 ? 匹配任意单字符,* 匹配任意长度字符串。必须匹配完整 text。
Standard Answer / Scoring Expectation
Reference tests:
assert solution.solve('a*b?d', 'axxxbc d'.replace(' ','')) is True
assert solution.solve('a*c', 'ab') is False
assert solution.solve('*', '') is True
assert solution.solve('file-??.txt', 'file-ab.txt') is True
Output
```python
def solve(pattern: str, text: str) -> bool:
    m, n = len(pattern), len(text)
    dp = [[False] * (n + 1) for _ in range(m + 1)]
    dp[0][0] = True
    for i in range(1, m + 1):
        if pattern[i - 1] == '*':
            dp[i][0] = dp[i - 1][0]
    for i in range(1, m + 1):
        for j in range(1, n + 1):
            if pattern[i - 1] == '*':
                dp[i][j] = dp[i - 1][j] or dp[i][j - 1]
            elif pattern[i - 1] == '?':
                dp[i][j] = dp[i - 1][j - 1]
            else:
                dp[i][j] = dp[i - 1][j - 1] and pattern[i - 1] == text[j - 1]
    return dp[m][n]
```
challenge-coding-013 PASS
Suite: coding · Latency: 76599 ms · Cost: $0.001358 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(tree: dict) -> list[str]。tree 是嵌套字典,叶子是字符串或数字。返回所有叶子的路径,路径用点连接,按字典序排序。例如 {'a': {'b': 1}} -> ['a.b=1']。
Standard Answer / Scoring Expectation
Reference tests:
assert solution.solve({'a': {'b': 1, 'c': 'x'}, 'd': 2}) == ['a.b=1','a.c=x','d=2']
assert solution.solve({'z': {'a': {'b': 3}}}) == ['z.a.b=3']
assert solution.solve({}) == []
Output
```python
def solve(tree: dict) -> list[str]:
    def dfs(node, path, result):
        for key, value in node.items():
            current_path = f"{path}.{key}" if path else key
            if isinstance(value, dict):
                dfs(value, current_path, result)
            else:
                result.append(f"{current_path}={value}")
    
    result = []
    dfs(tree, "", result)
    result.sort()
    return result
```
challenge-coding-014 PASS
Suite: coding · Latency: 273566 ms · Cost: $0.014216 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(nums: list[int]) -> int。返回删除恰好一个元素后,剩余数组的最大连续子数组和。nums 长度至少为 2,可以全为负数。
Standard Answer / Scoring Expectation
Reference tests:
assert solution.solve([1,-2,0,3]) == 4
assert solution.solve([1,-2,-2,3]) == 3
assert solution.solve([-1,-1,-1]) == -1
assert solution.solve([2,1,-2,3]) == 6
Output
```python
def solve(nums: list[int]) -> int:
    a = nums[0]  # max subarray sum ending at i, 0 deletions
    b = float('-inf')  # max subarray sum ending at i, 1 deletion
    ans = float('-inf')
    for i in range(1, len(nums)):
        b = max(a, b + nums[i], nums[i])
        a = max(nums[i], a + nums[i])
        ans = max(ans, b)
    return ans
```
challenge-debugging-009 PASS
Suite: debugging · Latency: 8449 ms · Cost: $0.000162 · Finish: stop
Prompt
下面代码期望把输入按逗号拆分并去掉空白,但会把空字段也保留下来。请指出 bug,并给出最小修复。最后单独一行写 FIX: <修复后的 return 行>。

```python
def parse(s):
    return [part.strip() for part in s.split(',')]
```
Standard Answer / Scoring Expectation
Expected regex pattern:
FIX:\s*`?\s*return\s+\[part\.strip\(\)\s+for\s+part\s+in\s+s\.split\('\,'\)\s+if\s+part\.strip\(\)\]\s*`?
Output
**Bug:** `split(',')` 后产生的空字符串 `""` 不会被 `strip()` 过滤掉(`"".strip()` 仍为 `""`),所以连续逗号或首尾逗号产生的空字段会被保留在结果中。

**修复:** 在列表推导中加一个条件,过滤掉 strip 后为空的元素。

FIX: `return [part.strip() for part in s.split(',') if part.strip()]`
challenge-debugging-010 PASS
Suite: debugging · Latency: 34545 ms · Cost: $0.000674 · Finish: stop
Prompt
下面代码期望用 UTC 时间戳排序,但字符串排序会错。请指出 bug,并给出最小修复。最后单独一行写 FIX: <修复后的 sort 行>。

```python
rows.sort(key=lambda r: r['ts'])
```
Standard Answer / Scoring Expectation
Accepted answers:
- datetime.fromisoformat
- dateutil.parser
- 解析 ts 后排序
- parse ts
- fromisoformat
- int(r['ts'])
- float(r['ts'])
- key=lambda r: int(r['ts'])
- key=lambda r: float(r['ts'])
Output
**Bug:** `ts` 字段是字符串,直接按字典序排序会导致数值型时间戳(如 `"9..."` 排在 `"10..."` 之前)或非 ISO-8601 格式日期的顺序错误。需要先转换为可比较的数值/时间类型。

**FIX:** `rows.sort(key=lambda r: float(r['ts']))`

> 若 `ts` 是 ISO-8601 字符串(如 `"2024-01-01T00:00:00Z"`),则应改为:
> `rows.sort(key=lambda r: datetime.fromisoformat(r['ts'].replace('Z', '+00:00')))`
challenge-debugging-011 PASS
Suite: debugging · Latency: 6599 ms · Cost: $0.000267 · Finish: stop
Prompt
下面代码在输入包含 0 时会误判为默认值 10。请指出 bug,并给出最小修复。最后单独一行写 FIX: <修复后的 limit 赋值行>。

```python
def query(limit=None):
    limit = limit or 10
    return list(range(limit))
```
Standard Answer / Scoring Expectation
Expected regex pattern:
FIX:\s*`?\s*(?:limit\s*=\s*10\s+if\s+limit\s+is\s+None\s+else\s+limit|limit\s*=\s*limit\s+if\s+limit\s+is\s+not\s+None\s+else\s+10|if\s+limit\s+is\s+None\s*:\s*limit\s*=\s*10)\s*`?
Output
## Bug 分析

`limit or 10` 利用的是 Python 的短路求值(truthiness)。当调用方传入 `limit=0` 时,`0` 是 falsy 值,导致 `0 or 10` 被求值为 `10`,而非预期的 `0`。

同理,`""`、`[]`、`False` 等合法的 falsy 参数值也会被错误地替换为默认值。

## 最小修复

将 `or` 改为显式的 `None` 检查:

FIX: `limit = limit if limit is not None else 10`
challenge-debugging-012 PASS
Suite: debugging · Latency: 13291 ms · Cost: $0.000233 · Finish: stop
Prompt
下面代码期望复制嵌套配置后修改副本,但原配置也被修改。请指出 bug,并给出最小修复。最后单独一行写 FIX: <修复后的 copied 赋值行>。

```python
def update(config):
    copied = dict(config)
    copied['db']['host'] = 'localhost'
    return copied
```
Standard Answer / Scoring Expectation
Expected regex pattern:
FIX:\s*`?\s*copied\s*=\s*(?:copy\.deepcopy\(config\)|__import__\(['\"]copy['\"]\)\.deepcopy\(config\))\s*`?
Output
## Bug 分析

`dict(config)` 是**浅拷贝**:外层字典是新的,但内层的 `config['db']` 仍然是对原对象的引用。因此修改 `copied['db']['host']` 会穿透回原 `config`。

## 最小修复

引入 `copy` 模块,用 `deepcopy` 替代浅拷贝即可:

```python
import copy

def update(config):
    copied = copy.deepcopy(config)
    copied['db']['host'] = 'localhost'
    return copied
```

FIX: `copied = copy.deepcopy(config)`
challenge-debugging-013 PASS
Suite: debugging · Latency: 4850 ms · Cost: $0.000185 · Finish: stop
Prompt
下面代码期望找到第一个匹配项,但找不到时会抛 StopIteration。请指出 bug,并给出最小修复。最后单独一行写 FIX: <修复后的 return 行>。

```python
def find_user(users, name):
    return next(u for u in users if u['name'] == name)
```
Standard Answer / Scoring Expectation
Expected regex pattern:
\*{0,2}FIX\*{0,2}:\*{0,2}\s*`?\s*return\s+next\(\(u\s+for\s+u\s+in\s+users\s+if\s+u\['name'\]\s*==\s*name\),\s*None\)\s*`?
Output
## Bug 分析

`next(iterator)` 在迭代器耗尽时默认抛出 `StopIteration`,没有匹配项时就会触发。

## 最小修复

给 `next()` 添加第二个参数作为默认值,找不到时返回 `None`:

FIX: `return next((u for u in users if u['name'] == name), None)`
challenge-debugging-014 PASS
Suite: debugging · Latency: 9373 ms · Cost: $0.000208 · Finish: stop
Prompt
下面代码期望按请求顺序记录日志,但默认参数导致多次调用共用同一个列表。请指出 bug,并给出最小修复。最后单独一行写 FIX: <修复后的函数定义行>。

```python
def log_request(req, logs=[]):
    logs.append(req['id'])
    return logs
```
Standard Answer / Scoring Expectation
Expected regex pattern:
FIX:\s*(?:```(?:python)?\s*)?`?\s*def\s+log_request\(req,\s*logs=None\)\s*:
Output
**Bug:** Python 中函数的默认参数是**定义时求值一次**并绑定到函数对象上的。`logs=[]` 这个列表只创建一次,之后所有未传 `logs` 的调用都会共享并修改同一个列表对象,导致日志累积而非独立记录。

**最小修复:** 将默认值改为 `None`,在函数体内按需创建新列表。

FIX: `def log_request(req, logs=None):`
```python
def log_request(req, logs=None):
    if logs is None:
        logs = []
    logs.append(req['id'])
    return logs
```
challenge-reasoning-006 PASS
Suite: reasoning · Latency: 11462 ms · Cost: $0.000571 · Finish: stop
Prompt
只回答最终数字:一个队列从左到右是 A,B,C,D,E。依次执行:把第 2 个移到末尾;删除第 3 个;在最前面插入 X;把最后两个反转。最终队列中 C 的位置是第几位?
Standard Answer / Scoring Expectation
Answer: 3
Output
3
challenge-reasoning-007 PASS
Suite: reasoning · Latency: 8029 ms · Cost: $0.000359 · Finish: stop
Prompt
只回答最终数字:某缓存命中率从 60% 提升到 75%。如果总请求数为 800,未命中请求减少了多少个?
Standard Answer / Scoring Expectation
Answer: 120
Output
120
challenge-rag-005 PASS
Suite: rag_long_context · Latency: 10002 ms · Cost: $0.000341 · Finish: stop
Prompt
只根据资料回答。

资料:A 模型在 ability mode 中通过 46/50,成本 0.12 美元;在 efficiency mode 中通过 34/50,成本 0.04 美元。报告建议把 ability mode 用于能力判断,把 efficiency mode 用于成本和稳定性判断。

问题:如果文章讨论“模型真实能力”,应该优先引用哪个模式?如果讨论“低预算可用性”,应该优先引用哪个模式?
Standard Answer / Scoring Expectation
Required phrases: ability mode、efficiency mode、真实能力、低预算
Forbidden phrases: 只看一个模式
Length guidance (diagnostic only): min=n/a, max=180
Output
- 讨论“模型真实能力”时,应优先引用 ability mode,因为报告建议将其用于能力判断。
- 讨论“低预算可用性”时,应优先引用 efficiency mode,因为报告建议将其用于成本和稳定性判断。
challenge-rag-006 PASS
Suite: rag_long_context · Latency: 18682 ms · Cost: $0.000369 · Finish: stop
Prompt
只根据资料回答。

资料:一次失败分析显示,模型输出了 key = int(parts[1]),但测试数据里的 key 是字符串 a、b、c。报告认为这是“擅自补类型假设”,不是 token 截断。

问题:这次失败的根因是什么?
Standard Answer / Scoring Expectation
Required phrases: key
At least one from each group: 字符串 / 类型不匹配;整数 / int;类型假设 / 假设 key 为整数 / 假设 key 是整数 / key 为整数类型
Length guidance (diagnostic only): min=n/a, max=120
Output
根因是模型擅自添加类型假设,错误地将 key 解析为整数,而实际测试数据中的 key 是字符串。
challenge-rag-007 PASS
Suite: rag_long_context · Latency: 16577 ms · Cost: $0.000747 · Finish: stop
Prompt
只根据资料回答,不要自行补充。

资料:DracoBench 的 HTML 报告目前展示 Summary、By Suite、Failure Examples 和 Case Details。Failure Examples 中包括 Prompt、Mistake Analysis、Scorer Details 和 Output。资料没有提到图表功能。

问题:报告是否已经支持图表?回答时说明依据。
Standard Answer / Scoring Expectation
Required phrases: 图表、资料
At least one from each group: 提到 / 提及
Forbidden phrases: 已经支持、折线图、柱状图
Length guidance (diagnostic only): min=n/a, max=100
Output
根据提供的资料,报告目前不支持图表功能。依据是资料中明确说明:“资料没有提到图表功能。”此外,资料描述的报告内容仅包括 Summary、By Suite、Failure Examples 和 Case Details(其中 Failure Examples 包含 Prompt、Mistake Analysis、Scorer Details 和 Output),这些部分均未涉及图表相关功能。因此,基于资料,图表功能未被提及或支持。
challenge-if-004 PASS
Suite: instruction_following · Latency: 35567 ms · Cost: $0.000566 · Finish: stop
Prompt
只输出 JSON 对象。字段 mode 必须是 "ability";字段 limits 必须是对象,包含 max_tokens:4096 和 temperature:0;字段 warnings 必须是正好两个字符串组成的数组。不要 Markdown。
Standard Answer / Scoring Expectation
Expected JSON schema:
{
  "type": "object",
  "required": [
    "mode",
    "limits",
    "warnings"
  ],
  "additionalProperties": false,
  "properties": {
    "mode": {
      "type": "string",
      "const": "ability"
    },
    "limits": {
      "type": "object",
      "required": [
        "max_tokens",
        "temperature"
      ],
      "additionalProperties": false,
      "properties": {
        "max_tokens": {
          "type": "integer",
          "const": 4096
        },
        "temperature": {
          "type": "integer",
          "const": 0
        }
      }
    },
    "warnings": {
      "type": "array",
      "minItems": 2,
      "maxItems": 2,
      "items": {
        "type": "string"
      }
    }
  }
}
Output
{
  "mode": "ability",
  "limits": {
    "max_tokens": 4096,
    "temperature": 0
  },
  "warnings": ["Token limit reached", "Temperature set to minimum"]
}
challenge-if-005 PASS
Suite: instruction_following · Latency: 15902 ms · Cost: $0.000644 · Finish: stop
Prompt
只输出 Markdown 表格,必须有 3 列:模式、用途、风险。必须包含 ability mode 和 efficiency mode 两行。不能添加表格外说明。
Standard Answer / Scoring Expectation
Expected regex pattern:
^\s*\|\s*模式\s*\|\s*用途\s*\|\s*风险\s*\|\s*\n\s*\|\s*-+\s*\|\s*-+\s*\|\s*-+\s*\|[\s\S]*ability mode[\s\S]*efficiency mode[\s\S]*$
Output
| 模式 | 用途 | 风险 |
|------|------|------|
| ability mode | 增强系统能力,提升性能或功能 | 资源消耗高,可能导致稳定性问题 |
| efficiency mode | 优化资源使用,提高效率或节省能源 | 可能牺牲性能或限制部分功能 |
challenge-zh-writing-003 PASS
Suite: chinese_writing · Latency: 17185 ms · Cost: $0.000825 · Finish: stop
Prompt
写一段不超过 140 个汉字的公众号小结,主题是“为什么要同时展示原题、模型输出和错误解释”。必须包含“原题”“错误解释”“可复查”,不能出现“玄学”。
Standard Answer / Scoring Expectation
Required phrases: 原题、错误解释、可复查
Forbidden phrases: 玄学
Length guidance (diagnostic only): min=n/a, max=140
Output
**公众号小结:为什么要同时展示原题、模型输出和错误解释**

在评测中同时展示原题、模型输出和错误解释,是提升透明度的关键。原题让读者自行判断难度,模型输出暴露真实水平,错误解释则指出问题根源。三者对照,结论可复查、可验证,避免主观臆断,也让改进有据可依。
challenge-reasoning-008 PASS
Suite: reasoning · Latency: 10291 ms · Cost: $0.000420 · Finish: stop
Prompt
只回答最终数字:变量初始为 x=2, y=5, z=1。若 x<y,交换 x 和 y;然后令 z=z+x-y;若 z 为偶数,令 y=y+z,否则令 x=x+z。最终 x+y+z 等于多少?
Standard Answer / Scoring Expectation
Answer: 15
Output
15
challenge-reasoning-009 PASS
Suite: reasoning · Latency: 60954 ms · Cost: $0.001226 · Finish: stop
Prompt
只回答一个字母:任务 A、B、C、D、E、F 排列。C 必须紧挨在 A 后面;B 必须在 D 前;D 必须在 F 前;F 必须最后;E 不能第一。在所有满足条件的排列中字典序最小的排列,第三个任务是谁?
Standard Answer / Scoring Expectation
Answer: B
Output
B
challenge-reasoning-010 PASS
Suite: reasoning · Latency: 11666 ms · Cost: $0.000550 · Finish: stop
Prompt
只回答“可满足”或“不可满足”:布尔变量 x、y、z 满足:x 和 y 恰好一个为真;如果 x 为真则 z 为真;如果 y 为真则 z 为假;z 为真。是否存在赋值满足全部约束?
Standard Answer / Scoring Expectation
Answer: 可满足
Output
可满足
challenge-reasoning-011 PASS
Suite: reasoning · Latency: 7646 ms · Cost: $0.000389 · Finish: stop
Prompt
只回答最终数字:列表 [2,4,6,8] 中每个数先减去它的位置编号(从 1 开始),然后删除所有奇数,再把剩余数平方,最后求和。结果是多少?
Standard Answer / Scoring Expectation
Answer: 20
Output
20
challenge-reasoning-012 FAIL
Suite: reasoning · Latency: 13894 ms · Cost: $0.000241 · Finish: stop
Prompt
只回答最终数字:一个 5 位二进制数 10110 先循环右移 1 位,再与 00111 做异或,最后转成十进制。结果是多少?
Standard Answer / Scoring Expectation
Answer: 12
Mistake Analysis
Failure type: format_violation
核心答案可以还原为标准答案 `12`,但模型输出为 `**12**\n\n逐步过程:\n1. **循环右移1位**:10110 → **01011**\n2. **与 00111 异或**:01011 ⊕ 00111 = **01100**\n3. **转十进制**:01100₂ = **1…`,包含 Markdown、解释或其他多余内容。题目要求只输出最终答案,因此严格 exact scorer 判失败。
Output
**12**

逐步过程:
1. **循环右移1位**:10110 → **01011**
2. **与 00111 异或**:01011 ⊕ 00111 = **01100**
3. **转十进制**:01100₂ = **12**
challenge-reasoning-013 PASS
Suite: reasoning · Latency: 3291 ms · Cost: $0.000095 · Finish: stop
Prompt
只回答一个字母:模型 A 通过 18 题、成本 0.06;模型 B 通过 20 题、成本 0.10;模型 C 通过 16 题、成本 0.04。按“通过题数/成本”最高选择,应该选哪个模型?
Standard Answer / Scoring Expectation
Answer: C
Output
C
challenge-reasoning-014 PASS
Suite: reasoning · Latency: 5606 ms · Cost: $0.000208 · Finish: stop
Prompt
只回答最终数字:同一套 100 道题中,失败题数从 12 降到 7。错误率降低了多少个百分点?
Standard Answer / Scoring Expectation
Answer: 5
Output
5
challenge-reasoning-015 PASS
Suite: reasoning · Latency: 11124 ms · Cost: $0.000479 · Finish: stop
Prompt
只回答最终数字:集合 S 初始为 {a,b,c,d}。删除字母序在 c 之前的元素;加入 e 和 b;再删除所有元音字母。最终集合有几个元素?
Standard Answer / Scoring Expectation
Answer: 3
Output
3
challenge-reasoning-016 PASS
Suite: reasoning · Latency: 23696 ms · Cost: $0.000474 · Finish: stop
Prompt
只回答最终数字:3x3 矩阵按行是 1 2 3 / 4 5 6 / 7 8 9。顺时针旋转 90 度后,第二行元素之和是多少?
Standard Answer / Scoring Expectation
Answer: 15
Output
15
challenge-reasoning-017 PASS
Suite: reasoning · Latency: 36394 ms · Cost: $0.000744 · Finish: stop
Prompt
只回答最终数字:依赖关系为 a 无依赖;b 依赖 a;c 依赖 a;d 依赖 b 和 c;e 依赖 b;f 依赖 d 和 e;g 依赖 a。按可并行执行的拓扑层划分,第二层有几个任务?
Standard Answer / Scoring Expectation
Answer: 3
Output
3
challenge-reasoning-018 PASS
Suite: reasoning · Latency: 7596 ms · Cost: $0.000074 · Finish: stop
Prompt
只回答星期几:第 0 天是星期二。每 7 天循环一次。第 17 天是星期几?
Standard Answer / Scoring Expectation
Answer: 星期五
Output
星期五
challenge-reasoning-019 PASS
Suite: reasoning · Latency: 32524 ms · Cost: $0.000636 · Finish: stop
Prompt
只回答最终数字:用 A、B、C 组成长度为 3 的字符串,要求恰好包含一个 A,并且最后一个字符不能是 C。满足条件的字符串有多少个?
Standard Answer / Scoring Expectation
Answer: 8
Output
8
challenge-reasoning-020 PASS
Suite: reasoning · Latency: 18087 ms · Cost: $0.000879 · Finish: stop
Prompt
只回答最终数字:栈操作从空栈开始。push n 表示入栈;dup 复制栈顶;add 弹出两个数并压入它们的和;swap 交换栈顶两个数;sub 先弹出 x 再弹出 y,并压入 y-x。依次执行:push 2, push 3, dup, add, push 4, swap, sub。最终栈顶是多少?
Standard Answer / Scoring Expectation
Answer: -2
Output
-2
challenge-reasoning-021 PASS
Suite: reasoning · Latency: 7248 ms · Cost: $0.000358 · Finish: stop
Prompt
只回答最终数字:三个队列 Q1、Q2、Q3 初始长度分别为 2、1、0。每一轮先从所有非空队列各处理 1 个元素,然后向 Q3 加入 2 个元素。执行 3 轮后,三个队列总长度是多少?
Standard Answer / Scoring Expectation
Answer: 4
Output
4
challenge-reasoning-022 PASS
Suite: reasoning · Latency: 7932 ms · Cost: $0.000349 · Finish: stop
Prompt
只回答最终数字:映射初始为 {a:1, b:2}。依次执行:设置 c=a+b;设置 a=c-b;删除 b;设置 d=a+c。最终所有 value 之和是多少?
Standard Answer / Scoring Expectation
Answer: 8
Output
8
challenge-reasoning-023 PASS
Suite: reasoning · Latency: 11793 ms · Cost: $0.000251 · Finish: stop
Prompt
只回答“甲”“乙”或“丙”:甲说“乙说的是真话”;乙说“丙说的是假话”;丙说“甲说的是假话”。如果恰好一人说真话,说真话的人是谁?
Standard Answer / Scoring Expectation
Answer: 丙
Output
challenge-reasoning-024 PASS
Suite: reasoning · Latency: 4013 ms · Cost: $0.000179 · Finish: stop
Prompt
只回答一个字母:综合分 = 通过率百分数 - 成本乘以 10。模型 A 通过率 92%、成本 0.20;模型 B 通过率 88%、成本 0.05;模型 C 通过率 90%、成本 0.10。综合分最高的是哪个模型?
Standard Answer / Scoring Expectation
Answer: A
Output
A
challenge-reasoning-025 PASS
Suite: reasoning · Latency: 9061 ms · Cost: $0.000120 · Finish: stop
Prompt
只回答最终三位数:一个三位数的百位为 a、十位为 b、个位为 c。已知 a+b+c=13,a=c+1,b=2c。这个三位数是多少?
Standard Answer / Scoring Expectation
Answer: 463
Output
463
challenge-coding-015 FAIL
Suite: coding · Latency: 7108 ms · Cost: $0.000372 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(line: str) -> list[str],解析一行简化 CSV:逗号分隔;字段可以用双引号包裹;引号内逗号保留;引号内两个连续双引号表示一个双引号;空字段保留;空格是普通字符,不要自动 trim。
Standard Answer / Scoring Expectation
Reference tests:
assert solution.solve('a,"b,c",d') == ['a', 'b,c', 'd']
assert solution.solve('"a""b",,x') == ['a"b', '', 'x']
assert solution.solve('  a ," b " ') == ['  a ', ' b  ']
Mistake Analysis
Failure type: code_assertion_failure
CSV 解析在引号字段结束后只接受紧跟逗号,没有把引号后的普通空格作为字段内容保留下来。第三个测试里 `" b " ` 的结束引号后还有一个空格,期望字段是 ` b `;模型输出漏掉了尾随空格,违反了题目“空格是普通字符,不要 trim”的要求。
Output
```python
def solve(line: str) -> list[str]:
    fields = []
    i = 0
    n = len(line)
    while i <= n:
        if i == n or line[i] == ',':
            fields.append('')
            i += 1
        elif line[i] == '"':
            i += 1
            field = []
            while i < n:
                if line[i] == '"':
                    if i + 1 < n and line[i + 1] == '"':
                        field.append('"')
                        i += 2
                    else:
                        i += 1
                        break
                else:
                    field.append(line[i])
                    i += 1
            fields.append(''.join(field))
            if i < n and line[i] == ',':
                i += 1
        else:
            j = i
            while j < n and line[j] != ',':
                j += 1
            fields.append(line[i:j])
            i = j + 1
    return fields
```
challenge-coding-016 PASS
Suite: coding · Latency: 43630 ms · Cost: $0.000903 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(intervals: list[tuple[int, int]]) -> list[tuple[int, int]]。intervals 是整数闭区间,先按起点排序;重叠或端点相邻的区间要合并,例如 [1,2] 和 [3,4] 合并为 [1,4]。
Standard Answer / Scoring Expectation
Reference tests:
assert solution.solve([(5,7),(1,2),(3,4),(10,10)]) == [(1,7),(10,10)]
assert solution.solve([(1,1),(3,3)]) == [(1,1),(3,3)]
assert solution.solve([]) == []
Output
```python
def solve(intervals: list[tuple[int, int]]) -> list[tuple[int, int]]:
    if not intervals:
        return []
    
    intervals.sort(key=lambda x: x[0])
    
    merged = []
    for start, end in intervals:
        if not merged:
            merged.append((start, end))
        else:
            last_start, last_end = merged[-1]
            if start <= last_end + 1:
                merged[-1] = (last_start, max(last_end, end))
            else:
                merged.append((start, end))
    
    return merged
```
challenge-coding-017 PASS
Suite: coding · Latency: 12719 ms · Cost: $0.000294 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(events: list[tuple[str, int]], window: int, limit: int) -> list[bool],模拟按用户限流。events 按时间非降序排列。某用户在当前事件时间 ts 的窗口 (ts-window, ts] 内,已放行事件数少于 limit 才放行;被拒绝的事件不计入窗口。
Standard Answer / Scoring Expectation
Reference tests:
events=[('a',1),('a',2),('a',3),('a',4),('a',8)]
assert solution.solve(events, 5, 2) == [True, True, False, False, True]
assert solution.solve([('x',10),('x',11),('x',16)], 5, 1) == [True, False, True]
Output
```python
from collections import deque

def solve(events: list[tuple[str, int]], window: int, limit: int) -> list[bool]:
    allowed_ts = deque()
    result = []
    for _, ts in events:
        while allowed_ts and allowed_ts[0] <= ts - window:
            allowed_ts.popleft()
        if len(allowed_ts) < limit:
            result.append(True)
            allowed_ts.append(ts)
        else:
            result.append(False)
    return result
```
challenge-coding-018 PASS
Suite: coding · Latency: 74311 ms · Cost: $0.001716 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(path: str) -> str,规范化绝对 Unix 路径:处理重复斜杠、.、..;.. 在根目录时仍留在根目录;返回结果必须以 / 开头且除根目录外不能以 / 结尾。不要使用 os.path。
Standard Answer / Scoring Expectation
Reference tests:
assert solution.solve('/a//b/./c/../') == '/a/b'
assert solution.solve('/../../x') == '/x'
assert solution.solve('/') == '/'
Output
```python
def solve(path: str) -> str:
    parts = path.split('/')
    stack = []
    for part in parts:
        if part == '' or part == '.':
            continue
        elif part == '..':
            if stack:
                stack.pop()
        else:
            stack.append(part)
    if not stack:
        return '/'
    return '/' + '/'.join(stack)
```
challenge-coding-019 PASS
Suite: coding · Latency: 85944 ms · Cost: $0.001839 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(words: list[str]) -> list[list[str]],按变位词分组。大小写敏感;组内保持输入顺序;组的顺序按该组第一个单词在输入中出现的位置。
Standard Answer / Scoring Expectation
Reference tests:
assert solution.solve(['eat','tea','tan','ate','nat','bat']) == [['eat','tea','ate'], ['tan','nat'], ['bat']]
assert solution.solve(['b','B','bb']) == [['b'], ['B'], ['bb']]
Output
```python
def solve(words: list[str]) -> list[list[str]]:
    anagram_groups = {}
    order_keys = []
    for word in words:
        key = ''.join(sorted(word))
        if key not in anagram_groups:
            anagram_groups[key] = []
            order_keys.append(key)
        anagram_groups[key].append(word)
    return [anagram_groups[key] for key in order_keys]
```
challenge-coding-020 PASS
Suite: coding · Latency: 26093 ms · Cost: $0.000607 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(text: str) -> dict,解析 Markdown front matter。只有第一行正好是 --- 时才解析,直到下一行 --- 结束;每行 key: value,key 和 value 两侧 trim;形如 [a, b] 的 value 返回字符串列表;其他 value 返回字符串。没有完整 front matter 返回 {}。
Standard Answer / Scoring Expectation
Reference tests:
text='---\ntitle: Test\ntags: [ai, bench,  v0]\ndraft: false\n---\nbody'
assert solution.solve(text) == {'title':'Test','tags':['ai','bench','v0'],'draft':'false'}
assert solution.solve('hello\n---\na: b') == {}
assert solution.solve('---\na: 1') == {}
Output
```python
def solve(text: str) -> dict:
    lines = text.split('\n')
    if not lines or lines[0].strip() != '---':
        return {}
    
    end_idx = -1
    for i in range(1, len(lines)):
        if lines[i].strip() == '---':
            end_idx = i
            break
    
    if end_idx == -1:
        return {}
    
    result = {}
    for i in range(1, end_idx):
        line = lines[i]
        colon_pos = line.find(':')
        if colon_pos == -1:
            continue
        key = line[:colon_pos].strip()
        value = line[colon_pos + 1:].strip()
        
        if value.startswith('[') and value.endswith(']'):
            inner = value[1:-1]
            result[key] = [item.strip() for item in inner.split(',')]
        else:
            result[key] = value
    
    return result
```
challenge-coding-021 PASS
Suite: coding · Latency: 22185 ms · Cost: $0.001011 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(items: list[str], k: int) -> list[str],返回出现次数最高的前 k 个元素;次数相同按第一次出现的先后排序;k 大于不同元素数量时返回全部。
Standard Answer / Scoring Expectation
Reference tests:
assert solution.solve(['b','a','b','c','a','b'], 2) == ['b','a']
assert solution.solve(['x','y','z','y','z','x'], 2) == ['x','y']
assert solution.solve(['a'], 5) == ['a']
Output
```python
def solve(items: list[str], k: int) -> list[str]:
    counts = {}
    first_occurrence = {}
    for idx, item in enumerate(items):
        if item not in counts:
            first_occurrence[item] = idx
            counts[item] = 0
        counts[item] += 1
    
    elements = [(item, counts[item], first_occurrence[item]) for item in counts]
    elements.sort(key=lambda x: (-x[1], x[2]))
    return [item for item, _, _ in elements[:k]]
```
challenge-coding-022 PASS
Suite: coding · Latency: 11422 ms · Cost: $0.000245 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(config: dict, overrides: dict[str, object]) -> dict。overrides 的 key 是点号路径;值为 None 表示删除该路径的叶子 key;其他值写入路径,必要时创建中间 dict;不能修改输入 config。
Standard Answer / Scoring Expectation
Reference tests:
base={'db':{'host':'old','port':5432},'feature':{'x':1}}
overrides={'db.host':'new','feature.x':None,'api.timeout':30}
res=solution.solve(base, overrides)
assert res == {'db':{'host':'new','port':5432},'feature':{},'api':{'timeout':30}}
assert base == {'db':{'host':'old','port':5432},'feature':{'x':1}}
assert solution.solve({'a':1}, {'a.b':2}) == {'a': {'b': 2}}
Output
```python
import copy

def solve(config: dict, overrides: dict[str, object]) -> dict:
    result = copy.deepcopy(config)

    for path, value in overrides.items():
        keys = path.split(".")
        if value is None:
            # Delete the leaf key
            d = result
            for key in keys[:-1]:
                if key not in d or not isinstance(d[key], dict):
                    break
                d = d[key]
            else:
                if keys[-1] in d:
                    del d[keys[-1]]
        else:
            # Set value, creating intermediate dicts as needed
            d = result
            for key in keys[:-1]:
                if key not in d or not isinstance(d[key], dict):
                    d[key] = {}
                d = d[key]
            d[keys[-1]] = value

    return result
```
challenge-coding-023 PASS
Suite: coding · Latency: 3790 ms · Cost: $0.000151 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(query: str) -> dict[str, list[str]],解析 URL query string。& 分隔参数;没有 = 的参数值为空字符串;+ 表示空格;%XX 需要按 UTF-8 百分号解码;同名 key 保留所有值的列表。可以使用标准库。
Standard Answer / Scoring Expectation
Reference tests:
assert solution.solve('a=1&b=two+words&a=3') == {'a':['1','3'], 'b':['two words']} 
assert solution.solve('empty=&flag&x=a%2Bb') == {'empty':[''], 'flag':[''], 'x':['a+b']} 
assert solution.solve('') == {}
Output
```python
import urllib.parse

def solve(query: str) -> dict[str, list[str]]:
    result: dict[str, list[str]] = {}
    pairs = urllib.parse.parse_qsl(query, keep_blank_values=True)
    for key, value in pairs:
        if key not in result:
            result[key] = []
        result[key].append(value)
    return result
```
challenge-coding-024 PASS
Suite: coding · Latency: 101607 ms · Cost: $0.002314 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(html: str) -> bool,校验简化 HTML 标签是否配对。标签形如 <a>、</a>、<br/>,标签名只含小写字母;自闭合标签不入栈;普通文本忽略。
Standard Answer / Scoring Expectation
Reference tests:
assert solution.solve('<div><br/><p>x</p></div>') is True
assert solution.solve('<a><b></a></b>') is False
assert solution.solve('text<a><b/></a>') is True
Output
```python
def solve(html: str) -> bool:
    stack = []
    i = 0
    n = len(html)
    while i < n:
        if html[i] == '<':
            j = i + 1
            while j < n and html[j] != '>':
                j += 1
            if j == n:
                return False
            tag_content = html[i:j+1]
            i = j + 1
            if tag_content.endswith('/>'):
                continue
            elif tag_content.startswith('</'):
                name = tag_content[2:-1]
                if not name.isalpha() or not name.islower():
                    return False
                if not stack or stack[-1] != name:
                    return False
                stack.pop()
            else:
                name = tag_content[1:-1]
                if not name.isalpha() or not name.islower():
                    return False
                stack.append(name)
        else:
            i += 1
    return len(stack) == 0
```
challenge-coding-025 PASS
Suite: coding · Latency: 14467 ms · Cost: $0.000281 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(grid: list[str]) -> int。grid 中 S 是起点,E 是终点,# 是墙,. 可走。每步上下左右移动一格,返回从 S 到 E 的最短步数;不可达返回 -1。
Standard Answer / Scoring Expectation
Reference tests:
assert solution.solve(['S..','##.','..E']) == 4
assert solution.solve(['S#','##','E.']) == -1
assert solution.solve(['SE']) == 1
Output
```python
from collections import deque

def solve(grid: list[str]) -> int:
    n, m = len(grid), len(grid[0])
    sr = sc = er = ec = -1
    for i in range(n):
        for j in range(m):
            if grid[i][j] == 'S':
                sr, sc = i, j
            elif grid[i][j] == 'E':
                er, ec = i, j
    dist = [[-1]*m for _ in range(n)]
    dist[sr][sc] = 0
    q = deque([(sr, sc)])
    while q:
        r, c = q.popleft()
        if r == er and c == ec:
            return dist[r][c]
        for dr, dc in [(-1,0),(1,0),(0,-1),(0,1)]:
            nr, nc = r+dr, c+dc
            if 0 <= nr < n and 0 <= nc < m and dist[nr][nc] == -1 and grid[nr][nc] != '#':
                dist[nr][nc] = dist[r][c] + 1
                q.append((nr, nc))
    return -1
```
challenge-coding-026 PASS
Suite: coding · Latency: 145026 ms · Cost: $0.006303 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(nums: list[int], k: int) -> list[float],返回每个长度为 k 的滑动窗口中位数。k 为奇数时返回中间值;k 为偶数时返回两个中间值平均数。
Standard Answer / Scoring Expectation
Reference tests:
assert solution.solve([1,3,-1,-3,5,3,6,7], 3) == [1, -1, -1, 3, 5, 6]
assert solution.solve([1,2,3,4], 2) == [1.5, 2.5, 3.5]
Output
```python
import bisect

def solve(nums: list[int], k: int) -> list[float]:
    if not nums or k <= 0 or k > len(nums):
        return []
    
    # left: 有序列表存储较小一半,降序
    # right: 有序列表存储较大一半,升序
    left, right = [], []
    
    def add(num):
        # 插入到对应列表
        if not left or num <= left[-1]:
            bisect.insort(left, num)
        else:
            bisect.insort(right, num)
        # 平衡两个列表
        balance()
    
    def remove(num):
        # 从对应列表移除
        if num <= left[-1]:
            idx = bisect.bisect_left(left, num)
            left.pop(idx)
        else:
            idx = bisect.bisect_left(right, num)
            right.pop(idx)
        balance()
    
    def balance():
        # 确保 left 大小等于 right 或多一个
        if len(left) > len(right) + 1:
            val = left.pop()
            bisect.insort(right, val)
        elif len(right) > len(left):
            val = right.pop(0)
            bisect.insort(left, val)
    
    def get_median():
        if k % 2 == 1:
            return float(left[-1])
        else:
            return (left[-1] + right[0]) / 2.0
    
    result = []
    for i in range(len(nums)):
        add(nums[i])
        if i >= k - 1:
            result.append(get_median())
            remove(nums[i - k + 1])
    
    return result
```
challenge-coding-027 FAIL
Suite: coding · Latency: 32790 ms · Cost: $0.001365 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(versions: list[str]) -> list[str],按简化语义版本排序。版本为 major.minor.patch 或 major.minor.patch-label;major/minor/patch 按数字比较;同一数字版本下,带 label 的预发布版本低于正式版本;label 按字典序比较。
Standard Answer / Scoring Expectation
Reference tests:
assert solution.solve(['1.0.0','1.0.0-alpha','1.0.1','1.0.0-beta','0.9.9']) == ['0.9.9','1.0.0-alpha','1.0.0-beta','1.0.0','1.0.1']
assert solution.solve(['1.0.10','1.0.2']) == ['1.0.2','1.0.10']
Mistake Analysis
Failure type: code_type_error
版本排序 key 的最后一项有时是字符串 label,有时是 `None`。Python 排序比较同一数字版本时会尝试比较 `'alpha'` 和 `None`,直接抛出 TypeError。根因是没有把正式版和预发布版映射到同一类型的可比较 key;应显式让预发布版低于正式版,例如用 `(has_no_label, label)` 这类布尔/字符串组合。
Output
```python
def solve(versions: list[str]) -> list[str]:
    def parse_version(v: str):
        base, *label = v.split("-", 1)
        major, minor, patch = map(int, base.split("."))
        return (major, minor, patch, label[0] if label else None)
    
    return sorted(versions, key=lambda v: parse_version(v))
```
challenge-coding-028 PASS
Suite: coding · Latency: 91279 ms · Cost: $0.004179 · Finish: stop
Prompt
只输出 Python 代码,不要解释。实现 solve(deps: dict[str, list[str]], changed: list[str]) -> list[str]。deps 表示 package -> 直接依赖。返回所有 changed 包,以及直接或间接依赖 changed 包的包,按字典序排序;只出现在依赖列表中的包也要能作为 changed 包返回。
Standard Answer / Scoring Expectation
Reference tests:
deps={'app':['lib','ui'],'ui':['core'],'lib':['core'],'core':[],'docs':[]}
assert solution.solve(deps, ['core']) == ['app','core','lib','ui']
assert solution.solve({'a':['x']}, ['x']) == ['a','x']
assert solution.solve({'a':['b'], 'b':[]}, ['a']) == ['a']
Output
```python
from collections import deque, defaultdict

def solve(deps: dict[str, list[str]], changed: list[str]) -> list[str]:
    # 收集所有包名
    all_packages = set(deps.keys())
    for dep_list in deps.values():
        all_packages.update(dep_list)
    all_packages.update(changed)

    # 构建反向依赖图
    reverse_deps = defaultdict(list)
    for pkg, dep_list in deps.items():
        for dep in dep_list:
            reverse_deps[dep].append(pkg)

    # 初始化受影响的集合和队列
    affected = set(changed)
    queue = deque(changed)

    # BFS
    while queue:
        p = queue.popleft()
        for q in reverse_deps.get(p, []):
            if q not in affected:
                affected.add(q)
                queue.append(q)

    # 返回排序后的列表
    return sorted(affected)
```
challenge-rag-008 PASS
Suite: rag_long_context · Latency: 9901 ms · Cost: $0.000459 · Finish: stop
Prompt
只根据资料回答。

资料 A:早期草案说 v0.3 只新增 20 道题。
资料 B:2026-06-16 的确认方案是 v0.3-challenge100,在现有 50 题基础上新增 50 道题。
资料 C:新增题应先生成审题 HTML,确认后再跑模型,不要立即消耗 API。

问题:下一步应该新增多少题?是否应该立刻跑模型?
Standard Answer / Scoring Expectation
Required phrases: 50、审题
At least one from each group: 不跑 / 不要立刻 / 先不跑 / 不应立刻 / 不应该立刻 / 不应立即 / 不应该立即 / 不应立刻跑 / 不应该立刻跑 / 不应立即跑 / 不应该立即跑
Length guidance (diagnostic only): min=n/a, max=160
Output
根据资料,下一步应该新增 50 道题(基于资料 B 的确认方案),并且不应该立刻跑模型,而应先生成审题 HTML 并确认后再跑模型(基于资料 C)。
challenge-rag-009 PASS
Suite: rag_long_context · Latency: 6703 ms · Cost: $0.000259 · Finish: stop
Prompt
只根据资料回答,不要自行补充。

资料:报告展示 pass_rate、avg_latency_ms、total_cost、reasoning_tokens、失败样例和逐题明细。资料没有包含用户满意度调查,也没有包含模型训练数据来源。

问题:能否根据这份报告判断用户满意度?
Standard Answer / Scoring Expectation
Required phrases: 不能、用户满意度
At least one from each group: 没有包含 / 没有提供 / 资料没有 / 未包含
Forbidden phrases: 可以判断
Length guidance (diagnostic only): min=n/a, max=120
Output
不能。资料明确指出报告没有包含用户满意度调查。
challenge-rag-010 PASS
Suite: rag_long_context · Latency: 34102 ms · Cost: $0.000654 · Finish: stop
Prompt
只根据资料回答。

资料:模型 A 通过 48/50,平均延迟 20 秒,成本 0.20 美元,没有超时失败。模型 B 通过 44/50,平均延迟 4 秒,成本 0.05 美元,没有超时失败。模型 C 通过 46/50,平均延迟 9 秒,成本 0.04 美元,但有 3 次 API 超时。

问题:如果要选低延迟且稳定的生产摘要模型,资料更支持选择哪个?
Standard Answer / Scoring Expectation
Required phrases: B、延迟
At least one from each group: 没有超时 / 无超时
Forbidden phrases: 选择 A、选择 C
Length guidance (diagnostic only): min=n/a, max=160
Output
根据资料,模型 B 的平均延迟最低(4 秒),且没有超时失败,因此低延迟且稳定。模型 A 延迟较高(20 秒),模型 C 有 API 超时导致不稳定。资料更支持选择模型 B。
challenge-rag-011 PASS
Suite: rag_long_context · Latency: 4476 ms · Cost: $0.000255 · Finish: stop
Prompt
只根据资料回答。

资料:DracoBench 当前 scoring policy 中,text_rules 的 max_chars/min_chars 只作为诊断信息记录,length_scored 为 false。缺少 required、required_any 或出现 forbidden 才会导致失败。

问题:如果答案超过 max_chars,但 required 都满足且没有 forbidden,会因为长度直接扣分吗?
Standard Answer / Scoring Expectation
Required phrases: 诊断
At least one from each group: 不扣分 / 不会 / 不会因长度 / 不会因此被扣分 / 不会直接导致扣分 / 不会导致扣分 / 不会导致失败或扣分;length_scored / 长度
Forbidden phrases: 直接失败、必须重跑
Length guidance (diagnostic only): min=n/a, max=140
Output
不会。根据资料,length_scored 为 false,max_chars 仅作为诊断信息记录,不参与评分或导致失败。失败仅由缺少 required/required_any 或出现 forbidden 触发。
challenge-rag-012 PASS
Suite: rag_long_context · Latency: 9288 ms · Cost: $0.000483 · Finish: stop
Prompt
只根据资料回答。

资料 A:某模型原始结果为 45/50。
资料 B:修正一个同义表达评分规则后,rescored 结果为 46/50。
资料 C:总览 index 使用 rescored JSONL 作为展示结果。

问题:写文章引用总览结果时,应写 45/50 还是 46/50?
Standard Answer / Scoring Expectation
Required phrases: 46/50
Forbidden phrases: 45/50 更合适、原始结果为准
Length guidance (diagnostic only): min=n/a, max=140
Output
根据资料 C,总览 index 使用 rescored JSONL 作为展示结果。因此,写文章引用总览结果时,应写 46/50。
challenge-rag-013 PASS
Suite: rag_long_context · Latency: 25163 ms · Cost: $0.001074 · Finish: stop
Prompt
只根据资料回答。

资料:为了复现一次 benchmark,记录中包含 model、case_id、prompt_hash、parameters、scorer details、output、latency_ms 和 usage。记录不包含 chain of thought,也不包含训练数据。

问题:复现评测主要应该依赖哪些记录字段?
Standard Answer / Scoring Expectation
Required phrases: model、prompt_hash、parameters、scorer
Forbidden phrases: chain of thought、训练数据
Length guidance (diagnostic only): min=n/a, max=200
Output
根据资料,复现评测主要应该依赖以下记录字段:model、case_id、prompt_hash、parameters 和 scorer details。这些字段提供了重新执行评测所需的关键信息,包括模型标识、测试用例、提示哈希、运行参数和评分器配置。而 output、latency_ms 和 usage 更多是评测结果或元数据,不作为复现的核心依赖。
challenge-rag-014 FAIL
Suite: rag_long_context · Latency: 5093 ms · Cost: $0.000058 · Finish: stop
Prompt
只根据资料回答。

资料 A:早期 ability mode 使用 4096 max_tokens。
资料 B:后来为了公平,ability mode 统一放宽到 16384 max_tokens。
资料 C:当前总览页只展示 v0.2-challenge50 且 ability16384 的结果。

问题:当前总览页对应的 token limit 是多少?
Standard Answer / Scoring Expectation
Required phrases: 16384
Forbidden phrases: 4096
Length guidance (diagnostic only): min=n/a, max=100
Mistake Analysis
Failure type: empty_output
题目问当前总览页对应的 token limit,资料 B/C 都指向 `ability16384`,应回答 16384。模型返回了空字符串,导致关键数字完全缺失。根因是正常 stop 但未产出正文,不是资料检索歧义。
Output

  
challenge-rag-015 PASS
Suite: rag_long_context · Latency: 8960 ms · Cost: $0.000425 · Finish: stop
Prompt
只根据资料回答。

资料:coding-004 的失败是代码运行时 ValueError,根因是把字符串 key 强转 int。rag-006 的失败曾经是规则没有把 int 类型视作“整数”的同义表达,后来通过人工复查修正规则。

问题:哪类失败更需要人工复查评分规则?回答时也说明 coding-004 是否属于这种情况。
Standard Answer / Scoring Expectation
Required phrases: 人工复查、coding-004
At least one from each group: rag-006 / 规则 / 评分规则 / 同义表达;不属于 / 不是 / 不需要
Length guidance (diagnostic only): min=n/a, max=180
Output
根据资料,rag-006 这类失败更需要人工复查评分规则,因为它涉及到规则本身的不完善(未将 int 类型视作“整数”的同义表达),需要人工修正规则。

而 coding-004 不属于这种情况,它是代码运行时错误(ValueError),根因是类型转换问题,属于技术实现缺陷,无需人工复查评分规则。
challenge-rag-016 PASS
Suite: rag_long_context · Latency: 11762 ms · Cost: $0.000229 · Finish: stop
Prompt
只根据资料回答。

资料:usage 字段包含 prompt_tokens、completion_tokens、reasoning_tokens 和 cost。报告没有供应商真实利润率,也没有供应商内部成本。

问题:能否从 usage 字段判断供应商利润率?
Standard Answer / Scoring Expectation
Required phrases: 不能、利润率
At least one from each group: 不包含 / 没有
Forbidden phrases: 可以判断
Length guidance (diagnostic only): min=n/a, max=120
Output
**不能。**

虽然 usage 字段包含 cost(可视为收入),但利润率计算需要:

**利润率 = (收入 - 成本) / 收入**

资料明确指出报告**没有供应商内部成本**,缺少计算利润率的关键数据。
challenge-rag-017 PASS
Suite: rag_long_context · Latency: 22496 ms · Cost: $0.000313 · Finish: stop
Prompt
只根据资料回答。

资料:当前 index 页只显示最后这版 50 道题的 v0.2-challenge50 结果,并且 token limit 都统一为 ability16384。之前的版本和 ability4096 结果不显示在 index 页。

问题:index 页是否应该展示旧版本结果?当前展示范围是什么?
Standard Answer / Scoring Expectation
Required phrases: v0.2-challenge50、ability16384
At least one from each group: 不应该 / 不展示 / 未展示 / 不显示 / 均不显示 / 不应展示;旧版本 / 之前的版本
Length guidance (diagnostic only): min=n/a, max=160
Output
根据资料,index页**不应该展示旧版本结果**。当前展示范围仅限于**最后这版50道题的v0.2-challenge50结果**,且token limit统一为ability16384。其他版本及ability4096结果均不在index页显示。
challenge-rag-018 PASS
Suite: rag_long_context · Latency: 5981 ms · Cost: $0.000199 · Finish: stop
Prompt
只根据资料回答。

资料:某 coding 题中,模型响应的 finish_reason 为 length,output 为空,测试报错为 module has no attribute solve。报告认为这不是算法逻辑错误,而是输出被截断后没有形成可执行函数。

问题:这次失败应如何归因?
Standard Answer / Scoring Expectation
Required phrases: 输出
At least one from each group: 截断 / length / token
Length guidance (diagnostic only): min=n/a, max=140
Output
输出被截断,导致未生成完整的可执行函数,因此失败。
challenge-debugging-015 PASS
Suite: debugging · Latency: 12087 ms · Cost: $0.000207 · Finish: stop
Prompt
下面代码期望 funcs[0]()、funcs[1]()、funcs[2]() 分别返回 0、1、2,但实际都会返回 2。请指出根因,并给出最小修复。最后单独一行写 FIX: <修复后的 append 行>。

```python
funcs = []
for i in range(3):
    funcs.append(lambda: i)
```
Standard Answer / Scoring Expectation
Expected regex pattern:
FIX:\s*`?\s*funcs\.append\(lambda\s+i=i\s*:\s*i\)\s*`?
Output
## 根因

Lambda 捕获的是变量 `i` 的**引用**(闭包),而非其当前值。循环结束后 `i` 为 2,因此所有 lambda 调用时都看到同一个 `i = 2`。

## 修复

利用默认参数在**定义时**求值的特性,将 `i` 的当前值绑定到每个 lambda 的局部作用域。

FIX: `funcs.append(lambda i=i: i)`
challenge-debugging-016 PASS
Suite: debugging · Latency: 5954 ms · Cost: $0.000176 · Finish: stop
Prompt
下面 context manager 期望异常继续向外抛出,但实际异常被吞掉。请指出 bug,并给出最小修复。最后单独一行写 FIX: <修复后的 return 行>。

```python
class Span:
    def __enter__(self):
        return self
    def __exit__(self, exc_type, exc, tb):
        return True
```
Standard Answer / Scoring Expectation
Expected regex pattern:
FIX:\s*`?\s*return(?:\s+False|\s+None)?\s*`?
Output
**Bug:** `__exit__` 返回 `True`,这会吞掉异常。Python 中 `__exit__` 返回 truthy 值表示"我已处理该异常,不要继续抛出"。

**修复:** 将 `return True` 改为 `return False`(或直接不返回)。

FIX: `return False`
challenge-debugging-017 PASS
Suite: debugging · Latency: 4175 ms · Cost: $0.000188 · Finish: stop
Prompt
下面代码期望每个 Bag 实例都有独立列表,但不同实例会共享 items。请指出 bug,并给出最小修复。最后单独一行写 FIX: <新增到 __init__ 中的赋值行>。

```python
class Bag:
    items = []
    def add(self, x):
        self.items.append(x)
```
Standard Answer / Scoring Expectation
Expected regex pattern:
FIX:\s*`?\s*self\.items\s*=\s*\[\]\s*`?
Output
**Bug:** `items = []` 是类变量,所有实例共享同一个列表对象。

**最小修复:** 将列表初始化移到 `__init__` 中,使其成为实例变量。

```python
class Bag:
    def __init__(self):
        self.items = []
    def add(self, x):
        self.items.append(x)
```

FIX: self.items = []
challenge-debugging-018 PASS
Suite: debugging · Latency: 5013 ms · Cost: $0.000215 · Finish: stop
Prompt
下面代码期望每次不传 ts 时使用当前时间,但默认时间只会在函数定义时计算一次。请指出 bug,并给出最小修复。最后单独一行写 FIX: <修复后的函数定义行>。

```python
from datetime import datetime

def mark(ts=datetime.utcnow()):
    return ts.isoformat()
```
Standard Answer / Scoring Expectation
Expected regex pattern:
FIX:\s*`?\s*def\s+mark\(ts=None\)\s*:
Output
**Bug:** Python 的默认参数值在函数**定义时**求值一次,之后所有调用共享同一个 `datetime` 对象,因此 `ts` 永远是模块加载时的时间。

**修复:** 用 `None` 作为哨兵值,在函数体内按需生成当前时间。

```python
def mark(ts=None):
    if ts is None:
        ts = datetime.utcnow()
    return ts.isoformat()
```

FIX: `def mark(ts=None):`
challenge-debugging-019 PASS
Suite: debugging · Latency: 4174 ms · Cost: $0.000108 · Finish: stop
Prompt
下面代码期望返回小写字符串,但实际返回的是方法对象。请指出 bug,并给出最小修复。最后单独一行写 FIX: <修复后的 return 行>。

```python
def normalize(s):
    return s.strip().lower
```
Standard Answer / Scoring Expectation
Expected regex pattern:
FIX:\s*`?\s*return\s+s\.strip\(\)\.lower\(\)\s*`?
Output
**Bug:** `lower` 后面缺少括号 `()`,导致返回的是方法对象而非方法的调用结果。

FIX: `return s.strip().lower()`
challenge-if-006 PASS
Suite: instruction_following · Latency: 20442 ms · Cost: $0.000991 · Finish: stop
Prompt
只输出 JSON 对象,不要 Markdown。字段 version 必须是 "v0.3";字段 ready 必须是 true;字段 cases 必须是正好两个对象组成的数组。cases 中每个对象只能包含 id、weight、active 三个字段;id 是字符串且匹配 case-1 或 case-2;weight 是整数;active 是布尔值。
Standard Answer / Scoring Expectation
Expected JSON schema:
{
  "type": "object",
  "required": [
    "version",
    "ready",
    "cases"
  ],
  "additionalProperties": false,
  "properties": {
    "version": {
      "type": "string",
      "const": "v0.3"
    },
    "ready": {
      "type": "boolean",
      "const": true
    },
    "cases": {
      "type": "array",
      "minItems": 2,
      "maxItems": 2,
      "items": {
        "type": "object",
        "required": [
          "id",
          "weight",
          "active"
        ],
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^case-[12]$"
          },
          "weight": {
            "type": "integer"
          },
          "active": {
            "type": "boolean"
          }
        }
      }
    }
  }
}
Output
{"version": "v0.3", "ready": true, "cases": [{"id": "case-1", "weight": 1, "active": true}, {"id": "case-2", "weight": 1, "active": true}]}
challenge-zh-writing-004 PASS
Suite: chinese_writing · Latency: 41939 ms · Cost: $0.000758 · Finish: stop
Prompt
写一段不超过 160 个汉字的公众号小结,主题是“为什么 v0.3 要扩到 100 题”。必须包含“推理题”“边界条件”“人工复查”,不能出现“排行榜”。
Standard Answer / Scoring Expectation
Required phrases: 推理题、边界条件、人工复查
Forbidden phrases: 排行榜
Length guidance (diagnostic only): min=n/a, max=160
Output
v0.3 版本将题库扩展至 100 题,旨在全面评估模型能力。新增推理题覆盖复杂逻辑场景,并针对边界条件进行测试,以检验模型鲁棒性和泛化性。所有题目均经人工复查,确保无歧义和准确性。此举提升模型实际应用性能,为后续优化奠定基础。

Case Details

CaseSuiteStatusFailure TypeScoreLatencyCostFinish
challenge-coding-001codingPASS-1.079614 ms$0.003388stop
challenge-coding-002codingPASS-1.0115770 ms$0.002217stop
challenge-coding-003codingPASS-1.019619 ms$0.000371stop
challenge-coding-004codingFAILruntime_type_assumption0.029280 ms$0.001367stop
challenge-coding-005codingPASS-1.05215 ms$0.000215stop
challenge-coding-006codingPASS-1.015181 ms$0.000204stop
challenge-coding-007codingPASS-1.0110179 ms$0.005385stop
challenge-coding-008codingPASS-1.069954 ms$0.001415stop
challenge-debugging-001debuggingPASS-1.08082 ms$0.000316stop
challenge-debugging-002debuggingPASS-1.014693 ms$0.000691stop
challenge-debugging-003debuggingPASS-1.012253 ms$0.000259stop
challenge-debugging-004debuggingPASS-1.06589 ms$0.000234stop
challenge-debugging-005debuggingPASS-1.04625 ms$0.000207stop
challenge-debugging-006debuggingPASS-1.08250 ms$0.000156stop
challenge-debugging-007debuggingPASS-1.04348 ms$0.000208stop
challenge-debugging-008debuggingPASS-1.08707 ms$0.000233stop
challenge-reasoning-001reasoningPASS-1.03337 ms$0.000124stop
challenge-reasoning-002reasoningFAILformat_violation0.035491 ms$0.001788stop
challenge-reasoning-003reasoningPASS-1.022050 ms$0.001061stop
challenge-reasoning-004reasoningPASS-1.012876 ms$0.000289stop
challenge-reasoning-005reasoningFAILformat_violation0.016758 ms$0.000326stop
challenge-rag-001rag_long_contextPASS-1.025596 ms$0.001147stop
challenge-rag-002rag_long_contextPASS-1.033898 ms$0.000675stop
challenge-rag-003rag_long_contextPASS-1.054919 ms$0.001001stop
challenge-rag-004rag_long_contextPASS-1.011947 ms$0.000448stop
challenge-if-001instruction_followingPASS-1.039856 ms$0.000776stop
challenge-if-002instruction_followingPASS-1.028657 ms$0.000543stop
challenge-if-003instruction_followingPASS-1.06577 ms$0.000296stop
challenge-zh-writing-001chinese_writingPASS-1.043509 ms$0.000861stop
challenge-zh-writing-002chinese_writingPASS-1.029985 ms$0.000576stop
challenge-coding-009codingPASS-1.018419 ms$0.001018stop
challenge-coding-010codingFAILcode_assertion_failure0.06976 ms$0.000345stop
challenge-coding-011codingPASS-1.015572 ms$0.000577stop
challenge-coding-012codingPASS-1.07115 ms$0.000338stop
challenge-coding-013codingPASS-1.076599 ms$0.001358stop
challenge-coding-014codingPASS-1.0273566 ms$0.014216stop
challenge-debugging-009debuggingPASS-1.08449 ms$0.000162stop
challenge-debugging-010debuggingPASS-1.034545 ms$0.000674stop
challenge-debugging-011debuggingPASS-1.06599 ms$0.000267stop
challenge-debugging-012debuggingPASS-1.013291 ms$0.000233stop
challenge-debugging-013debuggingPASS-1.04850 ms$0.000185stop
challenge-debugging-014debuggingPASS-1.09373 ms$0.000208stop
challenge-reasoning-006reasoningPASS-1.011462 ms$0.000571stop
challenge-reasoning-007reasoningPASS-1.08029 ms$0.000359stop
challenge-rag-005rag_long_contextPASS-1.010002 ms$0.000341stop
challenge-rag-006rag_long_contextPASS-1.018682 ms$0.000369stop
challenge-rag-007rag_long_contextPASS-1.016577 ms$0.000747stop
challenge-if-004instruction_followingPASS-1.035567 ms$0.000566stop
challenge-if-005instruction_followingPASS-1.015902 ms$0.000644stop
challenge-zh-writing-003chinese_writingPASS-1.017185 ms$0.000825stop
challenge-reasoning-008reasoningPASS-1.010291 ms$0.000420stop
challenge-reasoning-009reasoningPASS-1.060954 ms$0.001226stop
challenge-reasoning-010reasoningPASS-1.011666 ms$0.000550stop
challenge-reasoning-011reasoningPASS-1.07646 ms$0.000389stop
challenge-reasoning-012reasoningFAILformat_violation0.013894 ms$0.000241stop
challenge-reasoning-013reasoningPASS-1.03291 ms$0.000095stop
challenge-reasoning-014reasoningPASS-1.05606 ms$0.000208stop
challenge-reasoning-015reasoningPASS-1.011124 ms$0.000479stop
challenge-reasoning-016reasoningPASS-1.023696 ms$0.000474stop
challenge-reasoning-017reasoningPASS-1.036394 ms$0.000744stop
challenge-reasoning-018reasoningPASS-1.07596 ms$0.000074stop
challenge-reasoning-019reasoningPASS-1.032524 ms$0.000636stop
challenge-reasoning-020reasoningPASS-1.018087 ms$0.000879stop
challenge-reasoning-021reasoningPASS-1.07248 ms$0.000358stop
challenge-reasoning-022reasoningPASS-1.07932 ms$0.000349stop
challenge-reasoning-023reasoningPASS-1.011793 ms$0.000251stop
challenge-reasoning-024reasoningPASS-1.04013 ms$0.000179stop
challenge-reasoning-025reasoningPASS-1.09061 ms$0.000120stop
challenge-coding-015codingFAILcode_assertion_failure0.07108 ms$0.000372stop
challenge-coding-016codingPASS-1.043630 ms$0.000903stop
challenge-coding-017codingPASS-1.012719 ms$0.000294stop
challenge-coding-018codingPASS-1.074311 ms$0.001716stop
challenge-coding-019codingPASS-1.085944 ms$0.001839stop
challenge-coding-020codingPASS-1.026093 ms$0.000607stop
challenge-coding-021codingPASS-1.022185 ms$0.001011stop
challenge-coding-022codingPASS-1.011422 ms$0.000245stop
challenge-coding-023codingPASS-1.03790 ms$0.000151stop
challenge-coding-024codingPASS-1.0101607 ms$0.002314stop
challenge-coding-025codingPASS-1.014467 ms$0.000281stop
challenge-coding-026codingPASS-1.0145026 ms$0.006303stop
challenge-coding-027codingFAILcode_type_error0.032790 ms$0.001365stop
challenge-coding-028codingPASS-1.091279 ms$0.004179stop
challenge-rag-008rag_long_contextPASS-1.09901 ms$0.000459stop
challenge-rag-009rag_long_contextPASS-1.06703 ms$0.000259stop
challenge-rag-010rag_long_contextPASS-1.034102 ms$0.000654stop
challenge-rag-011rag_long_contextPASS-1.04476 ms$0.000255stop
challenge-rag-012rag_long_contextPASS-1.09288 ms$0.000483stop
challenge-rag-013rag_long_contextPASS-1.025163 ms$0.001074stop
challenge-rag-014rag_long_contextFAILempty_output0.05093 ms$0.000058stop
challenge-rag-015rag_long_contextPASS-1.08960 ms$0.000425stop
challenge-rag-016rag_long_contextPASS-1.011762 ms$0.000229stop
challenge-rag-017rag_long_contextPASS-1.022496 ms$0.000313stop
challenge-rag-018rag_long_contextPASS-1.05981 ms$0.000199stop
challenge-debugging-015debuggingPASS-1.012087 ms$0.000207stop
challenge-debugging-016debuggingPASS-1.05954 ms$0.000176stop
challenge-debugging-017debuggingPASS-1.04175 ms$0.000188stop
challenge-debugging-018debuggingPASS-1.05013 ms$0.000215stop
challenge-debugging-019debuggingPASS-1.04174 ms$0.000108stop
challenge-if-006instruction_followingPASS-1.020442 ms$0.000991stop
challenge-zh-writing-004chinese_writingPASS-1.041939 ms$0.000758stop