接上文,博主注册了个OpenAI,这确实很智能。
后来我就比较懒,因为OpenAI官网得代理才能使用,找了个别人利用这个搭的网站,就是这个chatgpt.sbaliyun.com (不得不说,他这域名很容易记住)。还用他这个网站水了好多文章,后来逛hostloc看有人说才发现这个不是最近openAI那个版本的,随后我试了一下确实不一样,
(以下为用sbaliyun的输出结果)
我找了一个当时高一信息课学python时的问题,直接复制粘贴了上去。
输入:
利用python实现以下功能:
有n个环,拆装这些环的规则:
第一个环可以随意拆装
第二个只有在第一环已装上时可以拆装,第三个只有在第二个环已装上且第一个环已拆下时可以拆装。
第 i 个环只有在第 i-1 环已装上,且第 i-2 、第 i-3 、…,第 1 环都拆下时可以装拆。
现输入n,表示这n个已经装上的环,现在输出拆下这n个环的最简单过程。
输出方法是每个状态用0、1来表示,0表示对应位置上的环已卸下,1表示对应位置上的环已装上,输出每拆装一个环时候的状态,初始状态也要输出。输入:一个整数n,1 <= n <= 9输出:输出每拆装一个环时候的状态。
输出:
示例:
输入:3
输出:
111
101
001
000# 根据题意,可以使用深度优先搜索算法来实现 def dfs(n, state): if n == 0: print(state) return # 如果第n个环已经装上,则可以拆下 if state[n] == '1': state[n] = '0' dfs(n-1, state) # 如果第n个环未装上,则只有在第n-1个环已装上,且第n-2、n-3、...、1环都拆下时可以装上 if state[n] == '0': # 检查n-1、n-2、n-3、...、1环是否都拆下 flag = True for i in range(n-1, 0, -1): if state[i] == '1': flag = False break # 如果n-1、n-2、n-3、...、1环都拆下,则可以装上第n个环 if flag and state[n-1] == '0': state[n] = '1' dfs(n-1, state) # 主函数 if __name__ == '__main__': n = int(input()) # 初始状态,n个环都装上 state = ['1'] * n print(state) dfs(n-1, state)
事实证明测试后这个写的是不能用的。
以下为OpenAI的输出结果(一样的问题):
n = int(input()) # 输入n
# 初始化状态为全部装上的状态
state = [1] * n
# 从后往前遍历每个环
for i in range(n - 1, -1, -1):
# 如果当前环已装上,则拆下
if state[i] == 1:
state[i] = 0
# 输出当前状态
print(state)
# 如果当前环已拆下,则装上
else:
state[i] = 1
# 输出当前状态
print(state)
(甚至还跑了个样例)输入n后,程序会初始化状态为全部装上的状态,然后从后往前遍历每个环,如果当前环已装上,则拆下,如果当前环已拆下,则装上,并输出当前状态。
例如,输入n=3时,输出的状态序列如下:
[1, 1, 1]
[0, 1, 1]
[0, 0, 1]
[0, 0, 0]
[1, 0, 0]
[1, 1, 0]
[1, 1, 1]
运行了一下也不太对,但至少看着还行。
3
[1, 1, 0]
[1, 0, 0]
[0, 0, 0]