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

news2024/9/20 6:05:56

各类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工具只能作为参考,程序员还需要更深的打磨自己的技术。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JS面试真题 part2

JS面试真题 part2 6、typeof 与 instanceof 区别7、JavaScript原型&#xff0c;原型链&#xff1f;有什么特点8、说说你对作用域链的理解9、谈谈this对象的理解10、说说new操作符具体干了什么 6、typeof 与 instanceof 区别 自己回答&#xff1a; typeof&#xff1a;用来判断数…

SLM561A​​系列 60V 10mA到50mA线性恒流LED驱动芯片 为智能家居照明注入新活力

SLM561A系列选型参考&#xff1a; SLM561A10ae-7G SOD123 SLM561A15ae-7G SOD123 SLM561A20ae-7G SOD123 SLM561A25ae-7G SOD123 SLM561A30ae-7G SOD123 SLM561A35ae-7G SOD123 SLM561A40ae-7G SOD123 SLM561A45ae-7G SOD123 SLM561A50ae-7G SOD123 …

数字证书与公钥基础设施

关注这个证书的其他相关笔记&#xff1a;NISP 一级 —— 考证笔记合集-CSDN博客 0x01&#xff1a;数字证书 数字证书是由第三方可信机构&#xff08;一般是证书服务器&#xff09;颁发的数字证书&#xff0c;可以证明身份的可信度。 数字证书具有以下特点以及性质&#xff1a…

对极约束及其性质 —— 公式详细推导

Title: 对极约束及其性质 —— 公式详细推导 文章目录 前言1. 对极约束 (Epipolar Constraint)2. 坐标转换 (Coordinate Transformations)3. 像素坐标 (Pixel Coordinates)4. 像素坐标转换 (Transformations of Pixel Coordinates)5. 本质矩阵 (Essential Matrix)6. 线坐标 (Co…

【蓝桥杯嵌入式(一)程序框架和调度器】

蓝桥杯嵌入式&#xff08;一&#xff09;程序框架和调度器 序、代码命名规则零、STM32和8051⼀、软件及环境安装⼆、⼯程框架搭建1.时钟配置2、SYS配置3、⼯程配置4、NVIC配置5.、Keil配置 三、系统初始化四、任务调度器 链接: 视频出处 序、代码命名规则 以下是一些常见的举例…

树状数组记录

树状数组&#xff08;Fenwick Tree&#xff09;是一种用于维护数组前缀和的数据结构&#xff0c;支持高效的单点更新和区间查询操作。它的查询和更新时间复杂度为 O ( log ⁡ n ) O(\log n) O(logn)&#xff0c;适用于需要频繁更新和查询的场景。 树状数组的基本操作 单点更…

HCIA--实验五:静态路由综合实验

静态路由综合实验 一、实验内容&#xff1a; 1.需求/目的&#xff1a; 在ensp模拟器中使用四个路由器&#xff0c;并且在路由器上创建loopback接口&#xff0c;相当于连接了一台主机&#xff0c;通过配置静态路由的方式实现全网通。 二、实验过程 1.道具&#xff1a; 4个…

基于 AC 驱动的电容结构 GaN LED 模型开发和应用

随着芯片尺寸减小&#xff0c;微小尺寸GaN 基 Micro LED 显示面临着显示与驱动高密度集成的难题&#xff0c;传统直流&#xff08;DC&#xff09;驱动技术会导致结温上升&#xff0c;降低器件寿命。南京大学团队创新提出交流&#xff08;AC&#xff09;驱动的单电极 LED&#x…

flask-login 生成 cookie,session

flask-login 生成 cookie,session Flask-Login login_user() 显示来自 Set-Cookie 标头的加密 cookie # 模拟一个用户类 class User(UserMixin):def __init__(self, id):self.id idapp.route(/login) def login():# 模拟用户登录过程user User(1)login_user(user)from flask…

openconnect-gui for qt 避坑指南

构建mingw_32 的时候 cmake居然识别的是vc 一直改不了 &#xff0c;一直到卸载qt重装 编译release 模式tap-win 下载一直不成功 修改cmake文件&#xff08;手动下载下来&#xff09;

智慧农业-自动化如何塑造农业的未来

全球人口的增长和气候变化对农业生产的持续影响&#xff0c;传统农业面临非常大的考验。为了保证农业效率、减少资源浪费和应对环境破坏&#xff0c;智能农业&#xff08;Smart Agriculture&#xff09;已成为未来农业发展的关键趋势。但在智能农业的诸多技术中&#xff0c;自动…

【OpenMV】AprilTag 机器视觉定位技术详解

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…

C++开发基础之自定义异步日志库实现及性能测试

1. 前言 在软件开发中&#xff0c;日志记录是一个必不可少的部分。通过日志&#xff0c;我们可以记录系统的运行状态、错误信息以及调试数据。然而&#xff0c;当系统的日志量很大时&#xff0c;日志写入操作可能会影响系统的性能&#xff0c;尤其是在 I/O 操作较为频繁的情况…

VR虚拟展厅的应用场景有哪些?

虚拟展厅作为一种利用虚拟现实技术构建的三维展示空间&#xff0c;其应用场景广泛且多样。视创云展为企业虚拟展厅搭建提供技术支持。以下是一些主要的应用场景&#xff1a; 1. 博物馆和艺术展览 文物保护与展示&#xff1a; 在博物馆中&#xff0c;为了保护珍贵的文物和艺术…

初识命名空间

1.创建两个命名空间 ip netns add host1 ip netns add host2 2. 查看命名空间 ip netns ls 3 、 创建veth ip -netns host1 link add veth0 type veth peer name host1-peer 4、 查看命名空间接口 ip -netns host1 address 5、 把host1-peer移动到host2命名空间 ip -ne…

编译过程例题

答案&#xff1a;A 知识点&#xff1a; 词法分析&#xff1a;从左到右逐个扫描源程序中的字符&#xff0c;识别其中如关键字&#xff0c;标识符&#xff0c;常数&#xff0c;运算符以及分隔符 语法分析&#xff1a;根据语法规则将单词符号分解成各类语法单位&#xff0c;并分…

1.2CubeMAX创建FREERTOS入门示例

1.CUBEMAX快速配置 V2改为V1否则编译会报错 2.Freertos各配置选项卡解释 Events &#xff1a;事件相关的创建 Task and Queues &#xff1a; 任务与队列的创建 Timers and Semaphores &#xff1a; 定时器和信号量的创建 Mutexes &#xff1a; 互斥量的创建 FreeRTOS Heap…

android之bootchart的使用

文章目录 简述流程 简述 主要是记录开机运行时的一些进程记录情况 流程 1.开启bootchart 输入以下命令 adb shell touch /data/bootchart/enabled然后重新启动设备&#xff0c;即可记录开机过程中的一些文件,如下所示 如果不想要bootchart进行记录&#xff0c;直接删除掉/…

STM32单片机HAL库——ADC输入

一、单通道采集 二、单通道DMA采集 使能DMA 三、定时器采集DMA传输 选择定时器1的通道1作为触发源&#xff0c;在TIM1的上升沿进行采集 定时器1挂载在APB2上面&#xff0c;APB2上定时器的频率为168MHZ psc168-1 arr1000-1 TIM1的时钟频率为168/168/10001kHZ pulse设置为500…

云计算之大数据(下)

目录 一、Hologres 1.1 产品定义 1.2 产品架构 1.3 Hologres基本概念 1.4 最佳实践 - Hologres分区表 1.5 最佳实践 - 分区字段设置 1.6 最佳实践 - 设置字段类型 1.7 最佳实践 - 存储属性设置 1.8 最佳实践 - 分布键设置 1.9 最佳实践 - 聚簇键设置 1.10 最佳实践 -…