通过掘金社区AI刷题活动,我深度体验了豆包MarsCode AI用于刷题辅助工具所提供的便利。
功能上
MarsCode AI功能按钮会出现在工具栏中,可以很方便地调取使用,并能够保存一段时间的历史记录便于查找回顾。
它下方有三个提示指令,分别是:
- 需要一点思路提示:会给出一些当前题目的思路提示;
- 给我一些代码提示:会给出一些当前题目的代码提示,但很多时候并不完整,只列出了一些函数接口功能,需要自己完成剩余部分;
- 帮我检查一下编译区的代码:可以检查编译区代码的编译bug分析出现的原因,以及提示一些可能产生bug的编写。 以上三个指令的使用相比于其他AI模型接口,具有更强的题目适应性,用户不需要复制当前题目和当前代码,就可以通过简单的按键操作获得想要的结果。
一个实践案例
下面以第49题 红包运气排行榜 这道题目演示一下MarsCode AI的辅助作用。 由于这道题目是简单题目,我作为用户已经有了基本思路,所以给了一个更具体的提示信息:
根据这个信息,MarsCode AI自行结合题目要求为我生成了如下代码:
def solution(n: int, s: list, x: list) -> list:
# 建立字典存储人名和金额
people_dict = {s[i]: x[i] for i in range(n)}
# 将人名列表转换为元组列表,便于排序
people_list = [(name, people_dict[name]) for name in s]
# 冒泡排序
for i in range(n):
for j in range(0, n-i-1):
if people_list[j][1] < people_list[j+1][1]:
# 金额大的排在前面
people_list[j], people_list[j+1] = people_list[j+1], people_list[j]
elif people_list[j][1] == people_list[j+1][1]:
# 金额相同,按照原始顺序排序
if s.index(people_list[j][0]) > s.index(people_list[j+1][0]):
people_list[j], people_list[j+1] = people_list[j+1], people_list[j]
# 提取排序后的人名
sorted_names = [name for name, amount in people_list]
return sorted_names
if __name__ == '__main__':
print(solution(4, ["a", "b", "c", "d"], [1, 2, 2, 1]) == ['b', 'c', 'a', 'd'])
print(solution(3, ["x", "y", "z"], [100, 200, 200]) == ['y', 'z', 'x'])
print(solution(5, ["m", "n", "o", "p", "q"], [50, 50, 30, 30, 20]) == ['m', 'n', 'o', 'p', 'q'])
这是一个完整的可以直接运行的代码,省去了很多用户的编写简单逻辑的时间。但是很遗憾并没有通过测评样例,分析错误样例可知,并没有考虑到同一个人多次抢红包这一个情况,所以进一步地我要求:
这一次AI对部分代码进行了修改,并重新生成代码:
def solution(n: int, s: list, x: list) -> list:
# 建立字典存储人名和累加金额
people_dict = {}
for i in range(n):
if s[i] in people_dict:
people_dict[s[i]] += x[i]
else:
people_dict[s[i]] = x[i]
# 将人名列表转换为元组列表,便于排序
people_list = [(name, people_dict[name]) for name in people_dict]
# 冒泡排序
for i in range(len(people_list)):
for j in range(0, len(people_list)-i-1):
if people_list[j][1] < people_list[j+1][1]:
# 金额大的排在前面
people_list[j], people_list[j+1] = people_list[j+1], people_list[j]
elif people_list[j][1] == people_list[j+1][1]:
# 金额相同,按照原始顺序排序
if s.index(people_list[j][0]) > s.index(people_list[j+1][0]):
people_list[j], people_list[j+1] = people_list[j+1], people_list[j]
# 提取排序后的人名
sorted_names = [name for name, amount in people_list]
return sorted_names
if __name__ == '__main__':
print(solution(4, ["a", "b", "c", "d"], [1, 2, 2, 1]) == ['b', 'c', 'a', 'd'])
print(solution(3, ["x", "y", "z"], [100, 200, 200]) == ['y', 'z', 'x'])
print(solution(5, ["m", "n", "o", "p", "q"], [50, 50, 30, 30, 20]) == ['m', 'n', 'o', 'p', 'q'])
成功通过了评测。
感受总结
AI辅助编码的使用可以极大地减少程序员编写简单程序的时间,并可以对一些编写失误进行纠错,可以为开发工作带来极大的便捷,但是仍存在一些可以改进的地方:
- MarsCode AI对于一些简单题目往往能够直接生成正确的编码,但是对于中难题目(逻辑比较复杂的题目)往往会由于逻辑思考不严密/方向错误而产生错误的结果(并且往往难以修改成正确的答案)。
- 纠错结果不及时,仍需要程序员手动调试和排查,生成的答案不够简洁直接。
虽然存在一些不足,但是豆包MarsCode AI将AI用于辅助刷题,仍是非常便捷具有重大进步意义的。