Qwen Max
変動分析 · 2026年 第12週
Qwen Max 2026年 第12週 コード実行次元が 38.6 点上昇。主にDebug:链表反转、全排列(去重 + 有序)で得点
スコア比較
42.2
56.3
+14.1
| 次元 | 前回 | 今回 | 変動 |
|---|---|---|---|
| コード実行 | 20.2 | 58.8 | +38.6 |
| 知識総合 | 34.4 | 40.8 | +6.4 |
| 引用検証 | 60.2 | 80.6 | +20.4 |
| コストパフォーマンス | 27.9 | 42.2 | +14.3 |
| 安定性 | 53 | 30.2 | -22.8 |
| 可用性 | 100 | 100 | 0 |
失点 Top 5
供应商加权评分
33.3
0
-33.3
知識総合
calc_with_tolerance
STRICT
詳細証拠を展開
前回の回答
首先,根据给定的权重和评分计算每家供应商的加权总分。
- 准确率权重:40% 或 0.4
- 稳定性权重:25% 或 0.25
- 成本权重:20% 或 0.2
- 接入难度权重:15% 或 0.15
### A公司的加权总分
\[= 9*0.4 + 7*0.25 + 5*0.2 + 8*0.15 = 3.6 + 1.75 + 1 + 1.2 = 7.55\]
### B公司的加权总分
\[= 8*0.4 + 9*0.25 + 7*0.2 + 6*0.15 = 3.2 + 2.25 + 1.4 + 0.9 = 7.75\]
### C公司的加权总分
\[= 7*0.4 + 8*0.25 + 9*0.2 + 7*0.15 = 2.8 + 2 + 1.8 + 1.05 = 7.65\]
基于以上计算,初步排序为:
1. B公司 (7.75)
2. C公司 (7.65)
3. A公司 (7.55)
如果“稳定性”权重提升到35%,则新的权重分配如下:
- 准确率:40% 或 0.4
- 稳定性:35% 或 0.35
- 成本:20% 或 0.2
- 接入难度:5% 或 0.05
重新计算:
### A公司的新加权总分
\[= 9*0.4 + 7*0.35 + 5*0.2 + 8*0.05 = 3.6 + 2.45 + 1 + 0.4 = 7.45\]
### B公司的新加权总分
\[= 8*0.4 + 9*0.35 + 7*0.2 + 6*0.05 = 3.2 + 3.15 + 1.4 + 0.3 = 7.95\]
### C公司的新加权总分
\[= 7*0.4 + 8*0.35 + 9*0.2 + 7*0.05 = 2.8 + 2.8 + 1.8 + 0.35 = 7.75\]
调整后的新排序为:
1. B公司 (7.95)
2. C公司 (7.75)
3...
今回の回答
根据给定的权重和评分,首先计算每家供应商在初始条件下的加权总分。
- 准确率:40%
- 稳定性:25%
- 成本:20%
- 接入难度:15%
### A 供应商
- 准确率:9 * 0.4 = 3.6
- 稳定性:7 * 0.25 = 1.75
- 成本:5 * 0.2 = 1
- 接入难度:8 * 0.15 = 1.2
- **总分**:3.6 + 1.75 + 1 + 1.2 = 7.55
### B 供应商
- 准确率:8 * 0.4 = 3.2
- 稳定性:9 * 0.25 = 2.25
- 成本:7 * 0.2 = 1.4
- 接入难度:6 * 0.15 = 0.9
- **总分**:3.2 + 2.25 + 1.4 + 0.9 = 7.75
### C 供应商
- 准确率:7 * 0.4 = 2.8
- 稳定性:8 * 0.25 = 2
- 成本:9 * 0.2 = 1.8
- 接入难度:7 * 0.15 = 1.05
- **总分**:2.8 + 2 + 1.8 + 1.05 = 7.65
按照初始权重排序:
1. B (7.75)
2. C (7.65)
3. A (7.55)
当“稳定性”的权重提升到 35% 时,重新分配权重如下:
- 准确率:40%
- 稳定性:35%
- 成本:20%
- 接入难度:5%
### A 供应商(新权重)
- 准确率:9 * 0.4 = 3.6
- 稳定性:7 * 0.35 = 2.45
- 成本:5 * 0.2 = 1
- 接入难度:8 * 0.05 = 0.4
- **总分**:3.6 + 2.45 + 1 + 0.4 = 7.45
### B 供应商(新权重)
- 准确率:8 * 0.4 = 3.2
- 稳定性:9 * 0.35 = 3.15
- 成本:7 * 0.2 = 1.4
- 接入难度:6...
贪心:活动选择(返回方案)
20
0
-20
コード実行
python_unit_test
STRICT
詳細証拠を展開
前回の回答
```python
def max_activities(activities):
activities.sort(key=lambda x: (x[1], x[0]))
selected = [activities[0]]
for i in range(1, len(activities)):
if activities[i][0] >= selected[-1][1]:
selected.append(activities[i])
return selected
```
今回の回答
```python
def max_activities(activities):
activities.sort(key=lambda x: (x[1], x[0]))
selected = [activities[0]]
for i in range(1, len(activities)):
if activities[i][0] >= selected[-1][1]:
selected.append(activities[i])
return selected
```
正则表达式编写
20
0
-20
コード実行
python_unit_test
詳細証拠を展開
前回の回答
```python
pattern1 = r'^(?:\+?86|0086)?1\d{10}$'
pattern2 = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
pattern3 = r'^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'
```
今回の回答
```python
pattern1 = r'^(?:\+86|0086)?1\d{10}$'
pattern2 = r'^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$'
pattern3 = r'^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'
```
浮点精度陷阱
10
0
-10
コード実行
exact_lines
STRICT
詳細証拠を展開
前回の回答
False
True
True
今回の回答
False
True
True
代码输出:闭包
10
0
-10
コード実行
exact_lines
STRICT
詳細証拠を展開
前回の回答
[2, 2, 2]
今回の回答
[2, 2, 2]
得点 Top 5
Debug:链表反转
10
100
+90
コード実行
diff_patch_unit_test
STRICT
詳細証拠を展開
前回の回答
修正后的代码如下:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def reverse_list(head):
prev = None
curr = head
while curr:
temp = curr.next # 保存当前节点的下一个节点
curr.next = prev # 反转链表
prev = curr # 移动prev和curr指针
curr = temp
return prev
```
原因:在原始代码中,`curr = curr.next`这行代码执行后,`curr`已经指向了新的下一个节点,而这个节点已经被反转连接到了`prev`上。因此,在下一次循环开始时,链表中的一部分节点就会丢失。通过引入临时变量`temp`来存储`curr`的下一个节点,可以避免这个问题。
今回の回答
修正后的完整代码如下:
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def reverse_list(head):
prev = None
curr = head
while curr:
temp = curr.next # 保存当前节点的下一个节点
curr.next = prev # 将当前节点指向前一个节点
prev = curr # 更新前一个节点为当前节点
curr = temp # 更新当前节点为其下一个节点
return prev
# 辅助函数,用于创建链表
def create_linked_list(arr):
if not arr:
return None
head = ListNode(arr[0])
current = head
for value in arr[1:]:
current.next = ListNode(value)
current = current.next
return head
# 辅助函数,用于打印链表
def print_linked_list(head):
elements = []
while head:
elements.append(str(head.val))
head = head.next
print(" -> ".join(elements))
...
全排列(去重 + 有序)
10
95
+85
コード実行
python_unit_test
STRICT
詳細証拠を展開
前回の回答
```python
from itertools import permutations
def permute_unique(nums):
return [list(p) for p in sorted(set(permutations(nums)))]
```
今回の回答
```python
from itertools import permutations
def permute_unique(nums):
if not nums:
return [[]]
return [list(p) for p in sorted(set(permutations(nums)))]
```
数据流中位数
10
95
+85
コード実行
python_unit_test
STRICT
詳細証拠を展開
前回の回答
```python
import heapq
class MedianFinder:
def __init__(self):
self.small = [] # 最大堆,存储较小的一半
self.large = [] # 最小堆,存储较大的一半
def add_num(self, num: int) -> None:
if len(self.small) == len(self.large):
heapq.heappush(self.large, -heapq.heappushpop(self.small, -num))
else:
heapq.heappush(self.small, -heapq.heappushpop(self.large, num))
def find_median(self) -> float:
if len(self.small) < len(self.large):
return self.large[0]
return (-self.small[0] + self.large[0]) / 2.0
```
今回の回答
```python
import heapq
class MedianFinder:
def __init__(self):
self.small, self.large = [], []
def add_num(self, num: int) -> None:
if len(self.small) == len(self.large):
heapq.heappush(self.small, -heapq.heappushpop(self.large, num))
else:
heapq.heappush(self.large, -heapq.heappushpop(self.small, -num))
def find_median(self) -> float:
if len(self.small) > len(self.large):
return -self.small[0]
return (-self.small[0] + self.large[0]) / 2
```
Debug:DFS 环检测
10
95
+85
コード実行
diff_patch_unit_test
STRICT
詳細証拠を展開
前回の回答
```python
def has_cycle(graph):
visited = set() # 已完全访问节点
on_stack = set() # 当前递归栈中的节点
def dfs(node):
if node in on_stack:
return True
if node in visited:
return False
on_stack.add(node)
for nei in graph.get(node, []):
if dfs(nei):
return True
on_stack.remove(node)
visited.add(node)
return False
for n in graph:
if n not in visited and dfs(n):
return True
return False
```
今回の回答
```python
def has_cycle(graph):
visited = set()
recursion_stack = set()
def dfs(node):
if node in recursion_stack:
return True
if node in visited:
return False
recursion_stack.add(node)
visited.add(node)
for nei in graph.get(node, []):
if dfs(nei):
return True
recursion_stack.remove(node)
return False
for n in graph:
if n not in visited:
if dfs(n):
return True
return False
```
位运算:判断2的幂与 bit count
20
100
+80
コード実行
python_unit_test
STRICT
詳細証拠を展開
前回の回答
```python
def is_power_of_2(n):
return n > 0 and (n & (n - 1)) == 0
def count_bits(n):
count = 0
while n:
count += n & 1
n >>= 1
return count
print(is_power_of_2(0))
print(is_power_of_2(8))
print(is_power_of_2(12))
print(count_bits(15))
```
实际输出:
```
False
True
False
4
```
今回の回答
```python
def is_power_of_2(n):
return n > 0 and (n & (n - 1)) == 0
def count_bits(n):
count = 0
while n:
count += n & 1
n >>= 1
return count
print(is_power_of_2(0))
print(is_power_of_2(8))
print(is_power_of_2(12))
print(count_bits(15))
```
实际输出:
```
False
True
False
4
```