以梦为码,CodeArts Snap 缩短我与算法的距离

背景

最近一直在体验华为云的 CodeArts Snap,逐渐掌握了使用方法,代码自动生成的准确程度大大提高了。

自从上次跟着 CodeArts Snap 学习用 Python 编程,逐渐喜欢上了 Python。

我还给 CodeArts Snap 起了一个花名:

最佳智能学习伴读

之前就在看 CodeArts Snap 简介的时候,就注意到它熟悉算法。

而我虽然对算法感兴趣,但是因为时常想不出来实现方案,而很少运用算法。

既然是 CodeArts Snap,我还可以借鉴之前的"借力 CodeArts Snap实现结果倒推过程"学习思路,来学习算法。

关于 CodeArts Snap 的使用,推荐我另一篇文章《念念不忘智能编程,必有回响CodeArts Snap【玩转华为云CodeArts Snap】》

关于"结果倒推过程"学习思路,推荐我另一篇文章《借力 CodeArts Snap,助我打开结果倒推过程新思路【玩转华为云CodeArts Snap】》

CodeArts Snap:缩短与算法的距离

最优装载

我在看算法的题目时,看到一个很有趣的关于轮船装载的题目

一天,一艘货轮正在装货,这艘货轮的载重量是C,每件货物的重量是Wi。

现在需要装入尽可能多的货物,但是所有的货物总重量不能超过货轮的载重量。

问:最多能装多少件货物?

这个题目挺好懂的,怎么实现呢?

让我来考一考 CodeArts Snap。

功能注释

将题目转换成注释,录入到 py 文件中:

"""
1、假设有一辆轮船正在装货;
2、现在有一组货物需要装上,每个货物的重量为:4,10,7,11,3,5,14,2;
3、装货的限制是,装入的货物重量之和不能超过轮船的载重量30;
4、现在设计一个算法,求出轮船能装入货物的最多的总数量。
:return:
"""

生成代码

在注释下方进行"回车"操作,CodeArts Snap 可以自动生成代码:

def max_weight(weight, goods):
    """
    :param weight: 货物重量
    :param goods: 货物列表
    :return: 最大的货物数量
    """
    if len(goods) == 0:
        return 0
    max_weight = 0
    count = 0
    for i in range(len(goods)):
        if max_weight + goods[i] <= weight:
            max_weight = max_weight + goods[i]
            count += 1
    return count

这次的代码十分漂亮,给出了入参和返回的注释。

调用

我们来按照入参的注释,定义 goods:

goods = [4,10,7,11,3,5,14,2]

这个时候,可以手动输入打印结果的代码,也可以进行"回车"操作,因为回车之后,CodeArts Snap 都会快速的给出下一步的提示,准确度很高。

print(max_weight(weight, goods))

运行结果

最优装载和货轮的载重量有关,不同的载重量会有不同的结果。

先来设置的最大载重量为:30,运行代码,得到结果是:5。

我又观察了一下这组货物的特点,发现一个很妙的载重量:31,于是重新设置了一下,运行代码,得到结果是:6。

小结

CodeArts Snap 给出代码的速度十分迅速,而且上面的代码很好理解。

但是我却有个疑问,CodeArts Snap 给出的算法是最优解吗?

等我深入学习算法之后,再来回答这个问题吧。

优化建议

不过,在体验过程中,也发现了一些使用上的不方便的地方,整理了几个优化建议。

1、功能准确性还有待提升

有时候会出现代码不全的情况,有时候,代码结尾出现一个多出来且没有写完全的"if"语句

2、功能匹配的精度还有待提升

有时候,代码会比注释描述的内容多很多,且会出现重复循环的代码。

结尾小记

经过一段时间的体验,我又解锁了 CodeArts Snap 一重用法------学习算法。

CodeArts Snap 给出代码的速度确实快,但是,有一点使用中不方便的地方:

功能注释要尝试多次,才能得到想要的功能。

未来,我还需要不断摸索"功能描述",让 CodeArts Snap 生成的代码更加准确💐。


作者:非职业「传道授业解惑」的开发者叶一一

简介:「趣学前端」、「CSS畅想」系列作者,华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。

如果看完文章有所收获,欢迎点赞👍 | 收藏⭐️ | 留言📝。

相关推荐
幸运超级加倍~5 分钟前
软件设计师-上午题-16 算法(4-5分)
笔记·算法
yannan2019031313 分钟前
【算法】(Python)动态规划
python·算法·动态规划
埃菲尔铁塔_CV算法15 分钟前
人工智能图像算法:开启视觉新时代的钥匙
人工智能·算法
EasyCVR15 分钟前
EHOME视频平台EasyCVR视频融合平台使用OBS进行RTMP推流,WebRTC播放出现抖动、卡顿如何解决?
人工智能·算法·ffmpeg·音视频·webrtc·监控视频接入
linsa_pursuer16 分钟前
快乐数算法
算法·leetcode·职场和发展
小芒果_0117 分钟前
P11229 [CSP-J 2024] 小木棍
c++·算法·信息学奥赛
qq_4340859019 分钟前
Day 52 || 739. 每日温度 、 496.下一个更大元素 I 、503.下一个更大元素II
算法
Beau_Will19 分钟前
ZISUOJ 2024算法基础公选课练习一(2)
算法
XuanRanDev22 分钟前
【每日一题】LeetCode - 三数之和
数据结构·算法·leetcode·1024程序员节
gkdpjj23 分钟前
C++优选算法十 哈希表
c++·算法·散列表