0%

ChatGPT使用指导

chatgpt是一个很强大的AI, 本文旨在解决如何提高提问效率, 来更好地让chatgpt解决问题

编码

  • ```
    优化[]中的文案, 扩充到500字
    [我国是一个美丽的国家]

    - 尽量使用英文提问
    - 设置简写: `接下来的对话, 如果我发送的内容是 again, 我的意思是 重新回答这一问题`
    - **编写代码**
    

    用 {编程语言} 实现:{描述需要实现的功能}

    
    - 要求越详细越好
    - **正则表达式**
    

    正则表达式:{描述需要实现的功能}

    
    - 例子:
    

    正则表达式:大于0的正整数

    - **评审代码**
    

    Review code and explain in Chinese

    - **检查代码出错原因**
    

    Check the cause of the code error and explain in Chinese

    - **重构/优化代码**
    
      - 重构代码
    

    refactor the code

    - 重构代码,以 vimdiff 格式展示更改的内容,并解释更改的内容
    

    Refactor the code to present the changes in vimdiff format and explain the changes in Chinese

    - **生成接口文档**
    

    Generate markdown API Chinese documentation

    
    ### 测试
    
    ---
    
    - **添加单元测试**
    

    Adding unit tests

    - **生成 Mock 数据**
    

    Generate data in json format

    
    - 例子:
    

    Generate data in json format

    interface AComponent {
    id: string;
    name: string;
    bComponent: BComponent;
    }
    interface BComponent {
    id: string;
    name: string;
    }

    
    下面举几个例子:
    
    ## 编程
    
    我们可以让chatgpt写各种常见不常见的算法题, 只要题目描述足够清楚, chatgpt大概率能够AC
    

c++编程题:对于一个长度为 n 的序列 a1,a2,…,an,所有前缀的中位数是多少?
第一行一个正整数 t(1≤t≤10),表示数据组数。
对于每组数据,第一行一个正奇数 n(1≤n≤100000),含义同题目描述。
第二行 n 个整数 a1, a2, …, an(0≤ai≤100000),含义同题目描述。
对于每组数据,输出一行 (n + 1)/2 个整数,第 i 个数表示长度为 2*i−1 的前缀的中位数。直接给出你的代码


下面是chatgpt的答案

```cpp
#include <bits/stdc++.h>
using namespace std;

const int N = 100005;
int n, t, a[N];
multiset<int> s;
multiset<int>::iterator it;

int main() {
    cin >> t;
    while (t--) {
        cin >> n;
        for (int i = 0; i < n; i++) {
            cin >> a[i];
            s.insert(a[i]);
            if (i & 1) {
                it = s.begin();
                advance(it, (i + 1) / 2 - 1);
                cout << *it << " ";
            } else {
                it = s.begin();
                advance(it, i / 2);
                int x = *it;
                it = s.end();
                advance(it, -i / 2 - 1);
                int y = *it;
                cout << (x + y) / 2 << " ";
            }
        }
        cout << endl;
        s.clear();
    }
    return 0;
}

修改代码

我们在上机的时候, 代码是会查重的<del>如果我们又想抄同学的代码, 又不想被查重</del>, 就可以让chatgpt修改代码. 需要注意的是, 小打小闹地改变量, for换成while是没用的. 如果代码里有很多函数, 我们可以让chatgpt把函数都写到main函数里, 反之亦然. 如果代码是递归的, 我们可以让chatgpt改成迭代的.

#include <bits/stdc++.h>
#define N 100010
using namespace std;
int t, n;
int a[N];
int tree[4 * N];
void add(int p, int l, int r, int x) {
    if (l == r) {
        tree[p]++;
        return;
    }
    int mid = (l + r) / 2;
    if (x <= mid) add(2 * p, l, mid, x);
    else add(2 * p + 1, mid + 1, r, x);
    tree[p] = tree[2 * p] + tree[2 * p + 1];
}
int query(int p, int l, int r, int x) { // 查第x大
    if (l == r) return l;
    int mid = (l + r) / 2;
    if (x <= tree[2 * p]) return query(2 * p, l, mid, x);
    else return query(2 * p + 1, mid + 1, r, x - tree[2 * p]);
}
int main() {
    scanf("%d", &t);
    while (t--) {
        scanf("%d", &n);
        memset(tree, 0, sizeof(tree));
        for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
        for (int i = 1; i <= n; i++) {
            add(1, 0, 100000, a[i]);
            if (i % 2) {
                printf("%d ", query(1, 0, 100000, i / 2 + 1));
            }
        }
        printf("\n");

    }
    return 0;
}

我们想把其他代码都写入主函数, 或者把递归改成迭代

// 迭代
#include <bits/stdc++.h>
#define N 100010
using namespace std;
int t, n;
int a[N];
int tree[4 * N];
void add(int p, int l, int r, int x) {
while (l < r) {
int mid = (l + r) / 2;
if (x <= mid) {
r = mid;
p = 2 * p;
} else {
l = mid + 1;
p = 2 * p + 1;
}
tree[p]++;
}
tree[p]++;
}
int query(int p, int l, int r, int x) {
while (l < r) {
int mid = (l + r) / 2;
if (x <= tree[2 * p]) {
r = mid;
p = 2 * p;
} else {
l = mid + 1;
x -= tree[2 * p];
p = 2 * p + 1;
}
}
return l;
}
int main() {
scanf("%d", &t);
while (t--) {
scanf("%d", &n);
memset(tree, 0, sizeof(tree));
for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
for (int i = 1; i <= n; i++) {
add(1, 0, 100000, a[i]);
if (i % 2) {
printf("%d ", query(1, 0, 100000,))

文案

  • 扩写一下这段话,加入一些例子和金句:我国是历史悠久的国家。要求提示越多越好
  • 把下面这段话,改写成100字以内的摘要
  • 校对下面这段话
  • 也可以让它检查你英语的语法和用词, 甚至可以让它对你的句子进行修改, 给出更高级地道的表达
  • 翻译: 感觉没有google translate好

阅读

这是一个神奇的功能, 我们可以通过chatgpt来阅读

作为一种在多样化的文本数据集上训练的语言模型,ChatGPT能够理解和总结 2021 年之前几乎所有书籍的内容。凭借其先进的自然语言处理能力,ChatGPT可以将冗长的作品压缩成易于消化的信息块,提供您可以快速轻松地学习一本书的要点。

这听起来很难理解, 我举一个例子:

比如我想阅读Yuval Noah Harari 的《智人:人类简史》, 该书全面概述了从非洲智人出现到今天的人类历史。但是这本书超过500也, 对注意力愈发缺失的现代人是一个不小的挑战

我们可以对chatgpt输入: 列出尤瓦尔·诺亚·哈拉里 (Yuval Noah Harari) 的《智人:人类简史》一书的所有章节

Chatgpt

《智人:人类简史》一共有十章:

起源
智人社会
智人革命
智人帝国
宗教革命
科学革命
工业革命
政治革命
知识革命
现代革命
请注意,本答案的知识截至日期为2021年,可能会存在更新版本。

比如我现在对”智人革命”一章感兴趣, 我可以让它展开说说

我:

深入研究“智人革命”一章并给出较长的内容描述,并提供该章的重点

Chatgpt

“智人革命”一章是《智人:人类简史》中的第三章,是关于智人(Homo sapiens)的起源和发展的重要章节。该章的重点包括:

1.智人的起源:作者在这一章中探讨了智人如何诞生并在非洲蔓延。

2.智人与其他人类物种的区别:作者在这一章中比较了智人与其他人类物种(如尼安德特人和半人猿)的差异,包括智力、语言和文化传承方面的差异。

3.智人的迁徙:作者在这一章中描述了智人如何从非洲迁徙到全球其他地区。

4.智人的文化创新:作者在这一章中探讨了智人如何创造了全新的文化,包括音乐、艺术、宗教和社会制度。

5.智人对环境的影响:作者在这一章中描述了智人对环境的影响,包括对动物种群的影响和对生态系统的影响。

总的来说,“智人革命”一章是一个关于智人起源、发展和影响的全面概述,是该书的重要章节之一。

比如我对第四点很有兴趣, 我就可以让它讲讲

我: 深入探讨“智人的文化创新”并给出较长的内容描述和要点

chatgpt

“智人的文化创新”是《智人:人类简史》中“智人革命”一章中的一个重要内容。该内容探讨了智人如何创造了全新的文化。下面是关于“智人的文化创新”的更详细的内容描述和要点:

智人的语言能力:智人的语言能力是其创造文化的关键因素。语言不仅允许智人将想法和信息传递给他人,还允许他们进行抽象思维。

智人的艺术:智人创造了各种形式的艺术,如音乐、绘画、雕塑和剧场。艺术不仅是智人表现自己的情感和思想的方式,还是他们建立起文化传承的重要工具。

智人的宗教:智人创造了各种不同的宗教,包括基督教、伊斯兰教、佛教和犹太教等。宗教不仅是智人对自然界和生活意义的探索,还是他们社会组织的重要因素。

智人的社会制度:智人创造了各种不同的社会制度,如皇权制度、共和制度和民主制度。社会制度不仅决定了智人的社会地位和权力关系,还是他们经济活动的重要框架。

总的来说,“智人的文化创新”一章讲述了智人如何通过语言、艺术、宗教和社会制度等创造了人类文化。这些文化创新是智人不断探索、表现和组织自己的生活的结果,是人类文化发展的重要标志。因此,“智人的文化创新”一章的重点是强调智人的创造力和创新能力。

除此之外, 如果我们在阅读过程中产生问题, 也可以用chatgpt进行提问

这样,我们就可以更深入地了解本书及其主要论点,而无需花费数小时通读整篇文章。