今天注册了openAI账号,并且体验了以下chatGPT。体验过程中,我明显感觉到chatGPT不是所谓的“人工智障”,比起原来简单的问答机器人有了巨大的进步。
我主要体验的是chatGPT自动编写代码的功能。
下面两段是由chatGPT生成的代码:
提问:用python写冒泡排序算法和C++编写快速排序算法
//冒泡排序
def bubble_sort(arr):n = len(arr)for i in range(n):for j in range(n-i-1):if arr[j] > arr[j+1]:arr[j], arr[j+1] = arr[j+1], arr[j]return arrarr = [6, 2, 4, 3, 5, 1]
res = bubble_sort(arr)
print(res) # [1, 2, 3, 4, 5, 6]
//快速排序
#include<iostream>
using namespace std; void quickSort(int arr[], int left, int right) {int i = left, j = right;int tmp;int pivot = arr[(left + right) / 2];/* partition */while (i <= j) {while (arr[i] < pivot)i++;while (arr[j] > pivot)j--;if (i <= j) {tmp = arr[i];arr[i] = arr[j];arr[j] = tmp;i++;j--;}};/* recursion */if (left < j)quickSort(arr, left, j);if (i < right)quickSort(arr, i, right);
}int main() {int arr[] = { 5, 3, 8, 6, 4 };int n = sizeof(arr) / sizeof(arr[0]);quickSort(arr, 0, n - 1);for (int i = 0; i < n; i++)cout << arr[i] << " ";cout << endl;return 0;
}
下面是我输入指令,chatGPT回答的视频链接:
chatCPT问答
上面两个问答有确切的关键词,还不能充分展现chatGPT的智能水平。
下面是一道蓝桥杯考试真题,我直接以文本的形式输入到了对话框,并要求chatGPT给出回答。下面是具体的输入:
小蓝最近学习了一些排序算法,其中冒泡排序让他印象深刻。在冒泡排序中,每次只能交换相邻的两个元素。小蓝发现,如果对一个字符串中的字符排序,只允许交换相邻的两个字符,则在所有可能的排序方案中,冒泡排序的总交换次数是最少的。例如,对于字符串 lan 排序,只需要 1次交换。对于字符串 qiao 排序,总共需要 4次交换。小蓝的幸运数字是 V,他想找到一个只包含小写英文字母的字符串,对这个串中的字符进行冒泡排序,正好需要 V次交换。请帮助小蓝找一个这样的字符串。如果可能找到多个,请告诉小蓝最短的那个。如果最短的仍然有多个,请告诉小蓝字典序最小的那个。请注意字符串中可以包含相同的字符。输入数字为数字V,输出为字符串。请用python写出解决该问题的代码并添加注释
chatGPT对应的输出:
# 定义一个函数,传入参数为数字V
def findString(V):# 创建一个空列表,用于存放所有可能的字符串all_string = []# 创建一个列表,存放所有可能的小写英文字母letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']# 使用itertools库的permutations函数,生成所有可能的组合# 返回的结果是元组的列表permutations = list(itertools.permutations(letters, V))# 遍历元组的列表for p in permutations:# 将元组转换为字符串s = ''.join(p)# 计算字符串排序所需要的交换次数count = 0for i in range(len(s)-1):if s[i] > s[i+1]:count += 1# 如果交换次数正好为V,则添加进结果列表if count == V:all_string.append(s)# 如果结果列表不为空,则返回最短的字符串if all_string:return min(all_string)# 否则返回空字符串else:return ''# 调用函数,传入数字V
V = 5
print(findString(V)) # abcef
从这个问答可以看出:
比起前些年的问答机器人,chatGPT在自然语言处理方面进步显著,它可以清晰的从文本中提取语义、正确理解并且做出对应的应答,而且chatGPT做出的回答是完全与问题相对应的,不会毫无逻辑。chatGPT对该问题进行理解并且尝试提出算法解决该问题。
chatGPT不仅可以自动生成代码解决问题,同时可以生成注释,大大增强了代码的可解释性。
chatGPT生成的代码也有一些不足,比如, chatGPT主要采取的方法是穷举法,即通过遍历的方法来解决问题,将所有的可能性列举出来,最后找到符合题意的方法。注释的生成具有模式化、套路化的特点,也就是说,虽然chatGPT已经可以自动根据要求生成代码,具有一定的创造性,但是这种创造性目前仍然限制在一定模式内,是遵循了一定的套路的。
虽然还有一定的不足,但显而易见的是,在自动化生成代码方面,chatGPT已经取得了巨大的成就,无论是正确快速理解题目要求还是高效快速生成无bug代码。
体验chatGPT发现的事情:😂
好家伙,直接好家伙,川宝赢麻了,看到官方的解释是: