今天注册了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 arr

arr = [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 = 0
        for 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

从这个问答可以看出:

  1. 比起前些年的问答机器人,chatGPT在自然语言处理方面进步显著,它可以清晰的从文本中提取语义、正确理解并且做出对应的应答,而且chatGPT做出的回答是完全与问题相对应的,不会毫无逻辑。chatGPT对该问题进行理解并且尝试提出算法解决该问题。

  1. chatGPT不仅可以自动生成代码解决问题,同时可以生成注释,大大增强了代码的可解释性。

chatGPT生成的代码也有一些不足,比如, chatGPT主要采取的方法是穷举法,即通过遍历的方法来解决问题,将所有的可能性列举出来,最后找到符合题意的方法。注释的生成具有模式化、套路化的特点,也就是说,虽然chatGPT已经可以自动根据要求生成代码,具有一定的创造性,但是这种创造性目前仍然限制在一定模式内,是遵循了一定的套路的。

虽然还有一定的不足,但显而易见的是,在自动化生成代码方面,chatGPT已经取得了巨大的成就,无论是正确快速理解题目要求还是高效快速生成无bug代码。

体验chatGPT发现的事情:😂

好家伙,直接好家伙,川宝赢麻了,看到官方的解释是:

更多推荐

体验chatGPT编写代码