以梦为码,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畅想」系列作者,华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。

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

相关推荐
_WndProc3 分钟前
C++ 日志输出
开发语言·c++·算法
努力学习编程的伍大侠16 分钟前
基础排序算法
数据结构·c++·算法
XiaoLeisj44 分钟前
【递归,搜索与回溯算法 & 综合练习】深入理解暴搜决策树:递归,搜索与回溯算法综合小专题(二)
数据结构·算法·leetcode·决策树·深度优先·剪枝
Jasmine_llq1 小时前
《 火星人 》
算法·青少年编程·c#
闻缺陷则喜何志丹1 小时前
【C++动态规划 图论】3243. 新增道路查询后的最短距离 I|1567
c++·算法·动态规划·力扣·图论·最短路·路径
Lenyiin2 小时前
01.02、判定是否互为字符重排
算法·leetcode
鸽鸽程序猿2 小时前
【算法】【优选算法】宽搜(BFS)中队列的使用
算法·宽度优先·队列
Jackey_Song_Odd2 小时前
C语言 单向链表反转问题
c语言·数据结构·算法·链表
Watermelo6172 小时前
详解js柯里化原理及用法,探究柯里化在Redux Selector 的场景模拟、构建复杂的数据流管道、优化深度嵌套函数中的精妙应用
开发语言·前端·javascript·算法·数据挖掘·数据分析·ecmascript