各类AI工具编程能力测试对比

各类AI工具编程能力对比

  • 现在各类AI工具火爆,擅长各类问题解决,闲来无事,验证下各类AI工具的编程能力如何。
  • 问题:c++ 实现杨辉三角,并main函数测试

kimi

  • 对话窗口输入问题,得到了c++的完整程序:
#include <iostream>
#include <vector>

// 函数用于生成杨辉三角的前n行
void generatePascalTriangle(int n) {
    std::vector<std::vector<int>> triangle;

    for (int i = 0; i < n; i++) {
        std::vector<int> row(i + 1, 1); // 每一行的开始和结束都是1
        for (int j = 1; j < i; j++) {
            // 每个数字是它上方两个数字的和
            row[j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
        }
        triangle.push_back(row);
    }

    // 打印杨辉三角
    for (const auto &row : triangle) {
        for (int num : row) {
            std::cout << num << " ";
        }
        std::cout << std::endl;
    }
}

// 主函数
int main() {
    int numRows;
    std::cout << "Enter the number of rows for Pascal's Triangle: ";
    std::cin >> numRows;

    // 生成并打印杨辉三角
    generatePascalTriangle(numRows);

    return 0;
}
  • 拷贝到VS2022中验证下,运行成功,输入10,之后输出正确的结果;kimi对于简单编程能力还可以👍。
    在这里插入图片描述

文心一言

  • 对话窗口输入问题,得到完整的c++ 代码:
#include <iostream>  
#include <vector>  

using namespace std;

// 函数用于生成杨辉三角的前numRows行  
vector<vector<int>> generate(int numRows) {
    vector<vector<int>> triangle;

    for (int i = 0; i < numRows; ++i) {
        // 创建一个新行,并初始化第一个元素为1  
        vector<int> row(i + 1, 1);

        // 填充中间的元素  
        for (int j = 1; j < i; ++j) {
            row[j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
        }

        // 将当前行添加到杨辉三角中  
        triangle.push_back(row);
    }

    return triangle;
}

int main() {
    int numRows;
    cout << "请输入杨辉三角的行数: ";
    cin >> numRows;

    vector<vector<int>> triangle = generate(numRows);

    // 打印杨辉三角  
    for (int i = 0; i < numRows; ++i) {
        for (int j = 0; j <= i; ++j) {
            cout << triangle[i][j] << " ";
        }
        cout << endl;
    }

    return 0;
}
  • 拷贝到VS2022中验证下,运行成功,输入10,之后输出正确的结果;文心一言对于简单编程能力还可以👍。
    在这里插入图片描述

chatGPT

  • 对话窗口输入问题,得到完整的c++ 代码:main函数默认给的是5行,没有给用户自主配置权。
#include <iostream>
#include <vector>

// 生成杨辉三角
std::vector<std::vector<int>> generateYanghuiTriangle(int numRows) {
    std::vector<std::vector<int>> triangle;
    if (numRows == 0) {
        return triangle;
    }

    triangle.push_back({1});
    for (int i = 1; i < numRows; i++) {
        std::vector<int> row(i + 1, 1);
        for (int j = 1; j < i; j++) {
            row[j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
        }
        triangle.push_back(row);
    }

    return triangle;
}

// 打印杨辉三角
void printYanghuiTriangle(const std::vector<std::vector<int>>& triangle) {
    for (const auto& row : triangle) {
        for (int num : row) {
            std::cout << num << " ";
        }
        std::cout << std::endl;
    }
}

int main() {
    int numRows = 5;
    std::vector<std::vector<int>> triangle = generateYanghuiTriangle(numRows);
    printYanghuiTriangle(triangle);

    return 0;
}
  • 拷贝到VS2022中验证下,将行数改成10,对齐其他的AI工具,运行成功,输入10,之后输出正确的结果;chatGPT对于简单编程能力还可以👍。
    在这里插入图片描述

讯飞星火

  • 对话窗口输入问题,居然给出了两种方法c++实现,一直二维数组,一种队列法,
    二维数组法:
#include <iostream>
using namespace std;

const int ROWS = 10; // 定义要打印的行数

void printYangHui(int yanghui[][ROWS]) {
    for (int i = 0; i < ROWS; i++) {
        for (int j = 0; j <= i; j++) {
            cout << yanghui[i][j] << " ";
        }
        cout << endl;
    }
}

int main() {
    int yanghui[ROWS][ROWS] = {0}; // 初始化二维数组为0

    // 设置每一行的首位和末尾都为1
    for (int i = 0; i < ROWS; i++) {
        yanghui[i][0] = 1;
        yanghui[i][i] = 1;
    }

    // 从第三行开始,每一行的数字都是它上一行的左上方和右上方两个数字之和
    for (int i = 2; i < ROWS; i++) {
        for (int j = 1; j < i; j++) {
            yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];
        }
    }

    // 打印杨辉三角
    printYangHui(yanghui);

    return 0;
}

队列法:

#include <iostream>
#include <queue>
using namespace std;

// 运用队列实现杨辉三角形的函数
void yanghui(int n) {
    queue<int> q; // 初始化队列
    q.push(1);
    q.push(1);
    int s = 0, t;

    for (int i = 1; i <= n; i++) { // 逐行计算
        cout << endl;
        q.push(0);
        for (int j = 1; j <= i + 2; j++) { // 下一行
            t = q.front();
            q.pop();
            q.push(s + t);
            s = t;
            if (j != i + 2) cout << s << ' ';
        }
    }
}

int main() {
    int n = 10; // 定义要打印的行数
    yanghui(n);
    return 0;
}
  • 拷贝到VS2022中验证下,逐个验证下,二维数组法跟前面几种AI工具结果一致;但队列法好像没有算只有一个 “1”的那行,所以多了最下面的一行。更前面几种AI工具结果不一致。
    在这里插入图片描述

在这里插入图片描述

通义千问

  • 对话窗口输入问题,居然也给出了两种方法c++实现,一直二维数组,一种队列法;
    二维数组法:
#include <iostream>

void printYangHui(int rows) {
    int yanghui[rows][rows] = {0}; // 初始化二维数组为0

    for (int i = 0; i < rows; i++) {
        yanghui[i][0] = 1; // 每一行的开始都是1
        yanghui[i][i] = 1; // 每一行的结束都是1

        // 从第三行开始,每一行的数字都是它上一行的左上方和右上方两个数字之和
        for (int j = 1; j < i; j++) {
            yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];
        }
    }

    // 打印杨辉三角
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j <= i; j++) {
            std::cout << yanghui[i][j] << " ";
        }
        std::cout << std::endl;
    }
}

int main() {
    int rows = 10; // 定义要打印的行数
    printYangHui(rows);
    return 0;
}

队列法:

#include <iostream>
#include <queue>

void printYangHuiQueue(int rows) {
    std::queue<int> q; // 初始化队列
    q.push(1);

    for (int i = 0; i < rows; i++) {
        std::cout << std::endl;
        q.push(0); // 在队列末尾添加0,用于计算下一行的首元素

        int s = 0, t;
        while (!q.empty()) {
            t = q.front();
            q.pop();
            q.push(s + t);
            s = t;
            if (q.size() > 1) std::cout << s << ' ';
        }
    }
}

int main() {
    int rows = 10; // 定义要打印的行数
    printYangHuiQueue(rows);
    return 0;
}
  • 拷贝到VS2022中验证下,二维数组法报错了,无法运行,队列法虽然运行成功,但输出是错的,无限输出,看来通义千问编程能力得继续提升呀😂。
    在这里插入图片描述
    在这里插入图片描述

智谱清言

  • 对话窗口输入问题,居然也给出了两种方法c++实现,一直二维数组,一种队列法;
    二维数组法:
#include <iostream>
using namespace std;

void printYangHui(int rows) {
    int yanghui[rows][rows] = {0}; // 初始化二维数组为0

    // 设置每一行的首位和末尾都为1
    for (int i = 0; i < rows; i++) {
        yanghui[i][0] = 1;
        yanghui[i][i] = 1;
    }

    // 从第三行开始,每一行的数字都是它上一行的左上方和右上方两个数字之和
    for (int i = 2; i < rows; i++) {
        for (int j = 1; j < i; j++) {
            yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];
        }
    }

    // 打印杨辉三角
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j <= i; j++) {
            cout << yanghui[i][j] << " ";
        }
        cout << endl;
    }
}

int main() {
    int rows = 10; // 定义要打印的行数
    printYangHui(rows);
    return 0;
}

队列法:

#include <iostream>
#include <queue>
using namespace std;

void printYangHui(int n) {
    queue<int> q; // 初始化队列
    q.push(1);
    q.push(1);

    for (int i = 1; i <= n; i++) { // 逐行计算
        cout << endl;
        q.push(0);
        int s = 0, t;
        for (int j = 1; j <= i + 2; j++) { // 下一行
            t = q.front();
            q.pop();
            q.push(s + t);
            s = t;
            if (j != i + 2) cout << s << ' ';
        }
    }
}

int main() {
    int rows = 10; // 定义要打印的行数
    printYangHui(rows);
    return 0;
}
  • 拷贝到VS2022中验证下,二维数组法报错了,无法运行,报错跟通义千问一样😂;队列法成功运行,但输出结果跟讯飞星火的队列法输出结果一样😂。
    在这里插入图片描述

在这里插入图片描述

豆包

  • 对话窗口输入问题,得到完整的c++ 代码:
#include <iostream>

// 计算杨辉三角中某一行的值
int* generateRow(int rowIndex) {
    int* row = new int[rowIndex + 1];
    row[0] = 1;
    row[rowIndex] = 1;

    for (int i = 1; i < rowIndex; i++) {
        row[i] = (row[i - 1] * (rowIndex - i + 1)) / i;
    }

    return row;
}

// 打印杨辉三角的前 numRows 行
void printYangHuiTriangle(int numRows) {
    for (int i = 0; i < numRows; i++) {
        int* row = generateRow(i);
        for (int j = 0; j <= i; j++) {
            std::cout << row[j] << " ";
        }
        std::cout << std::endl;
        delete[] row;
    }
}

int main() {
    int numRows = 10;
    printYangHuiTriangle(numRows);

    return 0;
}
  • 拷贝到VS2022验证下,可以看到豆包也可以正确的输出结果,豆包的编程能力也还是可以的👍。
    在这里插入图片描述

结论

  • kimi、文心一言、chatGPT、豆包可以正确编程;讯飞星火、通义千问、智谱清言虽然提供了更多的实现方法,但不是完整正确,而且错误的点都有点类似,严重怀疑这三家的用的都是同一个开源大模型进行训练的😂。
  • 所以说,AI工具只能作为参考,程序员还需要更深的打磨自己的技术。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/872747.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

通过redis-operator 来部署 Redis Cluster 集群

安装 Redis Operator 首先&#xff0c;需要安装 redis-operator。可以通过 Helm 或直接应用 YAML 文件来安装。 使用 Helm 安装&#xff1a; helm repo add ot-helm https://ot-container-kit.github.io/helm-charts/ helm install redis-operator ot-helm/redis-operator --…

B树和B+树

B树和B树是两种用于数据库和文件系统中的自平衡树数据结构&#xff0c;它们可以保持数据有序&#xff0c;同时支持快速的查找、插入和删除操作。下面是它们的基本介绍&#xff1a; B树&#xff08;B-Tree&#xff09; 定义&#xff1a;B树是一种平衡的多路搜索树&#xff0c;…

数据分析新星,DuckDB与Pandas处理大数据速度对比

大家好&#xff0c;Pandas库众所周知&#xff0c;适合数据分析新手入门&#xff0c;但在大数据面前却显得处理缓慢。相比之下&#xff0c;开源的DuckDB以其卓越的列式存储性能&#xff0c;在大数据处理上速度惊人&#xff0c;速度远超Pandas。而且&#xff0c;DuckDB配备了Pyth…

JS设计模式之“语言之魂” - 原型模式

前言 当我们学习JavaScript的时候&#xff0c;经常会听到原型&#xff08;prototype)、原型链&#xff08;prototype chain&#xff09;和原型模式&#xff08;prototype pattern&#xff09;这些概念&#xff0c;它们之间有什么关联呢&#xff1f;怎么样才能使用好原型模式呢…

基于yolov8的西红柿检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的西红柿检测系统是一种利用深度学习技术的创新应用&#xff0c;旨在通过自动化和智能化手段提高西红柿成熟度检测的准确性和效率。该系统采用YOLOv8算法&#xff0c;该算法是深度学习领域中的先进目标检测模型&#xff0c;具备实时检测和多目标识别的…

OpenGL Texture C++ 预览Camera视频

OpenGL是一个图形API&#xff0c;并不是一个独立的平台。包含了一系列可以操作图形、图像的函数。基于Texture纹理强大的功能&#xff0c;本篇文章实现Android OpenGL Texture C 预览Camera视频流的功能。 项目github地址&#xff1a;https://github.com/wangyongyao1989/WyFFm…

第T10周:数据增强

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊](https://mtyjkh.blog.csdn.net/)** 在本教程中&#xff0c;你将学会如何进行数…

iOS——APP启动流程

APP启动 APP启动主要分为两个阶段&#xff1a;pre-main和main之后&#xff0c;而APP的启动优化也主要是在这两个阶段进行的。 main之后的优化&#xff1a;1. 减少不必要的任务&#xff0c;2.必要的任务延迟执行&#xff0c;例如放在控制器界面等等。 APP启动的大致过程&#…

云原生技术:‌引领数字化转型的新浪潮

云原生技术&#xff1a;‌引领数字化转型的新浪潮 在数字化转型的时代背景下&#xff0c;‌企业面临着前所未有的挑战与机遇。‌随着云计算技术的飞速发展&#xff0c;‌云原生技术作为一种新型的应用程序开发和部署方式&#xff0c;‌正逐步成为构建高可用、‌可扩展应用程序…

景联文科技:专业视频标注服务助力计算机视觉应用升级

视频标注是指对视频内容进行分析&#xff0c;并在视频中的特定对象、行为或事件上添加标签的过程。 视频标注包括&#xff1a; 1. 对象检测与跟踪 •对象检测&#xff1a;在每一帧中识别并定位特定的对象&#xff0c;如人、车、动物等。 •对象跟踪&#xff1a;跟踪这些对象…

使用html+css+layui实现动态表格组件

1、概述 需求&#xff0c;表格第一列指标可配置通过后端api传进来&#xff0c;表格显示数据以及鼠标触摸后气泡弹出层提示信息都是从后端传过来&#xff0c;实现动态表格的组件&#xff01;&#xff01;实现效果如下&#xff1a; 接口标准数据格式如下&#xff1a; {"da…

Unity TMP (TextMeshPro) 更新中文字符集

TMP更新中文字符集 1 字符集缺失说明2 字体的字符表2.1 字符表更新模式&#xff1a;动态2.2 字符表更新模式&#xff1a;静态 3 更新字符集步骤3.1 打开纹理更新面板3.1 导入文本文件3.3 关于警告处理 4 修改TMP默认字体设置 1 字符集缺失说明 使用TMP显示中文需要用到中文字体…

SprinBoot+Vue问卷调查微信小程序的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平…

uniapp / uniapp x UI 组件库推荐大全

在 uniapp 开发中&#xff0c;我们大多数都会使用到第三方UI 组件库&#xff0c;提起 uniapp 的UI组件库&#xff0c;我们最常使用的应该就是uview了吧&#xff0c;但是随着日益增长的需求&#xff0c;uview 在某些情况下已经不在满足于我们的一些开发需求&#xff0c;尽管它目…

单例模式的总结

常规模式:有属性/构造方法/普通方法&#xff0c;也可以在类中执行主方法&#xff0c;也可以在test类中执行主方法 单例模式是什么&#xff1f; 单例模式&#xff1a;类只有1个对象&#xff1b;保证一个类仅有一个实例&#xff0c;并提供一个访问它的全局访问点。单例模式是在内…

Linux平台屏幕|摄像头采集并实现RTMP推送两种技术方案探究

技术背景 随着国产化操作系统的推进&#xff0c;市场对国产化操作系统下的生态构建&#xff0c;需求越来越迫切&#xff0c;特别是音视频这块&#xff0c;今天我们讨论的是如何在linux平台实现屏幕|摄像头采集&#xff0c;并推送至RTMP服务。 我们知道&#xff0c;Linux平台&…

pdf压缩到指定大小需要怎么压缩?2024快速进行文件压缩的软件合集

pdf压缩到指定大小需要怎么压缩&#xff1f;2024快速进行文件压缩的软件合集 当你需要将PDF文件压缩到指定的大小时&#xff0c;选择适当的软件和方法可以帮助你在保持文件质量的同时&#xff0c;尽可能地减小文件体积。以下是五款可以帮助你快速压缩PDF文件并控制其大小的软件…

pdf在线转换成word免费版,一键免费转换

在日常的学习和办公中&#xff0c;PDF文件和Word文档是我们离不开的两种最常见的文件&#xff0c;而PDF与Word文档之间的转换成为了我们日常工作中不可或缺的一部分。无论是为了编辑、修改还是共享文件&#xff0c;掌握多种PDF转Word的方法都显得尤为重要。很多小伙伴关心能不能…

linux下的Socket网络编程教程

套接字概念 Socket本身有“插座”的意思&#xff0c;在Linux环境下&#xff0c;用于表示进程间网络通信的特殊文件类型。本质为内核借助缓冲区形成的伪文件。与管道类似的&#xff0c;Linux系统将其封装成文件的目的是为了统一接口&#xff0c;使得读写套接字和读写文件的操作…

万界星空科技MES:企业实现数字化转型的护航者

万界星空科技在制造业管理软件领域&#xff0c;特别是MES系统上的技术实力和创新能力&#xff0c;为制造型企业实现数字化转型提供了全方位的支持和保障。 一、万界星空MES系统的核心功能 实时数据采集与分析&#xff1a; 万界星空科技MES系统通过物联网技术实时采集生产现场的…