2.5 KiB
2.5 KiB
dim2 · 代码修改(3 题 / 满分 7 分)
考察:定位缺陷、最小修复、不越界。题面发给模型;评分点不给。 判定:把模型的修复产物放回可运行环境实测(自动化优先)。
Q2.1 · Python 平均值(3 分)
给模型的题面
下面是一个工具函数,请修复它,使其满足规格:
规格:
- average([]) 返回 0.0
- average([1, 2, 3]) 返回 2.0
- 除上述外行为不变,不要修改函数签名,不要新增依赖
代码:
def average(values):
total = 0
for v in values:
total += v
return total / len(values)
只输出修复后的完整函数(可含必要的 import 行,但不含其他文字)。
评分点(勿发给被测模型)
| # | 判据 | 分值 | 判定方式 |
|---|---|---|---|
| 1 | average([]) == 0.0 |
1 | 自动(执行) |
| 2 | average([1,2,3]) == 2.0 且 average([1,2]) == 1.5 |
1 | 自动 |
| 3 | 最小改动(≤4 行改动),签名与结构未重写 | 1 | 人工/评委 |
Q2.2 · JS 求和(2 分)
给模型的题面
下面函数意图是返回数组所有元素之和,但存在缺陷,请修复:
规格:
- sum([1,2,3]) === 6
- sum([]) === 0
- 不得使用 reduce(项目规范要求 for 循环)
代码:
function sum(arr) {
let s = 0;
for (let i = 0; i <= arr.length; i++) {
s += arr[i];
}
return s;
}
只输出修复后的完整函数,不含其他文字。
评分点(勿发给被测模型)
| # | 判据 | 分值 | 判定方式 |
|---|---|---|---|
| 1 | sum([1,2,3])===6 且 sum([])===0(无 NaN) |
1 | 自动(node 执行) |
| 2 | 保持 for 循环、未用 reduce、未重写为其他结构(最小修复) | 1 | 自动/人工 |
Q2.3 · 版本号解析(2 分)
给模型的题面
下面函数应把版本字符串解析为 (major, minor, patch) 三元组,请修复使其满足:
规格:
- parse("v1.2.3") → (1, 2, 3)
- parse("1.2") → (1, 2, 0) ← 缺少 patch 时补 0
- parse("2") → (2, 0, 0)
- 输入含前导 v 或不含 v 都要支持
代码:
def parse(v):
parts = v.lstrip("v").split(".")
return (int(parts[0]), int(parts[1]), int(parts[2]))
只输出修复后的完整函数,不含其他文字。
评分点(勿发给被测模型)
| # | 判据 | 分值 | 判定方式 |
|---|---|---|---|
| 1 | 三个规格用例全部通过(v1.2.3 / 1.2 / 2) | 1 | 自动 |
| 2 | 修复简洁且未过度工程(无正则引擎式重写、无新依赖) | 1 | 人工/评委 |