本文正在参加 ✍🏻 技术视角深入 ChatGPT 征文活动
ChatGPT初体验,确实是里程碑了
ChatGPT是什么
ChatGPT最近火爆全世界,又掀起了一股人工智能的浪潮。为什么说又呢?因为上一次人工智能掀起这么大讨论热潮的还是2016年3月AlphaGo在围棋上战胜世界冠军李世石。
网上关于ChatGPT的介绍多如牛毛,本人就不详细介绍了,简单一句话:ChatGPT是一个聊天机器人,能与人对话,理解对话并作出回答/解答,甚至能写程序代码!
ChatGPT对话分享
-
写个小游戏呗!
我:编写一个扫雷游戏用python
chatgpt:这是一段python代码,用来创建一个扫雷游戏,它可以运行在pygame的环境中
代码省略,因为需要第三方依赖,作者环境暂时没有
所以我就换了一个语言,换了一种提问方式,再次让chatgpt开始他的扫雷代码编程之路
我:编写扫雷游戏代码,用java。要求带
main方法,可运行,且不依赖第三方jar包。
chatgpt:这是一段Java代码,用来创建一个扫雷游戏,它包含了一个main()方法,可以被运行,不依赖于任何第三方包:(完整代码文章末尾)。
本着求真务实的态度,我把代码复制到IEDA中尝试运行了下,震惊了还真的能跑起来。其结果虽然像是蹒跚学步的婴儿的一小步,但却迈开了超越人类的步伐,我把运行结果贴上:
-
这个人烧不烧?
我:帮忙把下面体温数据整体成表格形式,并求最大值,最小值,平均值:12点36.5度,13点36.8度,14点37.8度,15点39度,16点38度,17点36度
chagpt: (算了我还是直接贴图吧)
-
括号里填什么数?
我:1,3,5,7,11,13,17,(),()。请问这两个括号填哪两个数字比较合理?为什么?
chatgpt: (还是继续贴图,无图无真相,主要是chatgpt能理解什么是括号,能理解括号里要填数,还能根据提示一步步修正答案)
tips
chatgpt训练集的数据是截至到2021年,所以你问他时间或者最近的新闻事件他可能答不对,你问他知识类的他也可能答不对。还是问一些理解,推理性质的比较好,结果会出乎你所料。
代码
import java.util.Scanner;
public class Minesweeper {
// Constants
private static final int BOARD_SIZE = 10;
private static final int NUM_MINES = 20;
// Global variables
private int numMinesLeft;
private boolean[][] isMine;
private int[][] numMinesAdjacent;
private boolean[][] revealed;
public Minesweeper() {
resetGame();
}
private void resetGame() {
// Initialize game state
isMine = new boolean[BOARD_SIZE][BOARD_SIZE];
numMinesAdjacent = new int[BOARD_SIZE][BOARD_SIZE];
revealed = new boolean[BOARD_SIZE][BOARD_SIZE];
numMinesLeft = NUM_MINES;
// Generate 20 random mines
while (numMinesLeft > 0) {
int row = (int)(Math.random() * BOARD_SIZE);
int col = (int)(Math.random() * BOARD_SIZE);
if (!isMine[row][col]) {
isMine[row][col] = true;
numMinesLeft--;
}
}
// Count adjacent mines for each cell
for (int row = 0; row < BOARD_SIZE; row++) {
for (int col = 0; col < BOARD_SIZE; col++) {
int count = 0;
for (int xOffset = -1; xOffset <= 1; xOffset++) {
for (int yOffset = -1; yOffset <= 1; yOffset++) {
if (xOffset == 0 && yOffset == 0) {
continue;
}
int x = row + xOffset;
int y = col + yOffset;
if (x >= 0 && x < BOARD_SIZE && y >= 0 && y < BOARD_SIZE) {
if (isMine[x][y]) {
count++;
}
}
}
}
numMinesAdjacent[row][col] = count;
}
}
}
// Main play loop
public void play(){
Scanner scanner = new Scanner(System.in);
while(true){
// Display the board
printBoard();
// Read user input
System.out.print("Enter row: ");
int row = scanner.nextInt();
System.out.print("Enter column: ");
int col = scanner.nextInt();
System.out.println();
// Check for valid input
if (row < 0 || row >= BOARD_SIZE || col < 0 || col >= BOARD_SIZE){
System.out.println("Invalid input.");
continue;
}
// Reveal cell
if (revealed[row][col]){
System.out.println("Cell already revealed.");
continue;
}
revealed[row][col] = true;
if (isMine[row][col]){
// Game over
System.out.println("BOOM! Game over.");
break;
}
}
}
// Method to print board
private void printBoard(){
System.out.print(" |");
for (int col = 0; col < BOARD_SIZE; col++){
System.out.print(col+"|");
}
System.out.println();
for (int row = 0; row < BOARD_SIZE; row++){
System.out.print(row+"|");
for (int col = 0; col < BOARD_SIZE; col++){
if (isMine[row][col]){
System.out.print("X|");
} else if (revealed[row][col]){
System.out.print(numMinesAdjacent[row][col]+"|");
} else {
System.out.print(" |");
}
}
System.out.println();
}
}
// Main method
public static void main(String[] args) {
Minesweeper minesweeper = new Minesweeper();
minesweeper.play();
}
}