0%

使用New Bing理解、评估与改进代码

写了一段聪明的 Python 代码扔给 New Bing 去理解(出自118. 杨辉三角 - 力扣(Leetcode))。

1
2
3
4
5
6
7
8
9
from itertools import pairwise


class Solution:
def generate(self, numRows: int) -> list[list[int]]:
return [
(last := [1, *(a + b for a, b in pairwise(last)), 1] if x else [1])
for x in range(numRows)
]

explain python code

整体回答还是相当不错的,很好地解释了代码的意图和算法实现。不过有一些细节上的问题,比如 Python 的赋值表达式语法是在 Python 3.8 版本引入的,而不是 3.10。这也一定程度上体现出大语言模型的局限性,经常会生成一些并不存在的事实。

接着让它评价一下这段代码的可读性。

readability

有理有据,令人信服。

然后让它尝试改进一下代码。

refactor

由于 New Bing 每次回复的 token 数是有上限的,最后的双重 for 循环版本的代码不完整。不过它的改进思路很明确,渐进式逐步提升了代码的可读性(加注释->将赋值表达式改为提前定义变量->替换 pairwise 函数->将列表生成器改为 for 循环)。

New Bing 的 coding 能力得到了我的认可。

扫码加入技术交流群🖱️
QR code