94 lines
2.5 KiB
Markdown
94 lines
2.5 KiB
Markdown
# dim2 · 代码修改(3 题 / 满分 7 分)
|
||
|
||
> 考察:定位缺陷、最小修复、不越界。**题面发给模型;评分点不给。**
|
||
> 判定:把模型的修复产物放回可运行环境实测(自动化优先)。
|
||
|
||
---
|
||
|
||
## Q2.1 · Python 平均值(3 分)
|
||
|
||
### 给模型的题面
|
||
```text
|
||
下面是一个工具函数,请修复它,使其满足规格:
|
||
|
||
规格:
|
||
- 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 分)
|
||
|
||
### 给模型的题面
|
||
```text
|
||
下面函数意图是返回数组所有元素之和,但存在缺陷,请修复:
|
||
|
||
规格:
|
||
- 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 分)
|
||
|
||
### 给模型的题面
|
||
```text
|
||
下面函数应把版本字符串解析为 (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 | 人工/评委 |
|