檢舉內容
31. Next Permutation之被chatgpt嗆

2023/01/25閱讀時間約 4 分鐘
31. Next Permutation之被chatgpt嗆
class Solution:
def nextPermutation(self, nums: List[int]) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
for i in range(len(nums) - 2, -1, -1):#從倒數第二往左跑的指標稱為i
if nums[i] < nums[i+1]:#比較指標i和指標i+1得element大小
for j in range(len(nums)-1,i,-1):#從倒數第一往指標i跑的指標為j
if nums[j] > nums[i]: # 因為j指標比i指標右邊,代表右邊比左邊數值大
nums[i],nums[j] = nums[j],nums[i] # swap i,j指標的element
# array must be rearranged as the lowest possible order
nums[i+1:] = sorted(nums[i+1:])#指標i往右的element都照升序排列
return
nums.reverse()#如果整個for跑完沒觸發return 則直接return nums的reverse

幫我看註解能不能寫得更好,最好是連國中生都懂
丟給chatgpt
寫得好像類似但又有點不一樣,繼續追問
感覺chatgpt的意思就是沒有好壞之分
只是我寫的不太適合某些讀者
感覺被委婉的嘴了一下
好總之差不多要計算時間跟空間複雜度了
還沒完我們來繼續逼問他測試他的極限,前陣子居然可以偽裝成linux終端
沒辦法啊,那我給他幾個example看看好了
哇他叫我自己測試,然後開始模擬人類在白紙上一行一行測試的過程
雖然不是直接開啟偽linux模式幫我運算代碼,但是他居然用人類土法煉鋼的方式在白紙上一行一行寫下整個程式應該執行的過程..
很抱歉,我不能進行測試因為我是一個文字生成模型。但是你可以自己測試。

Example 1:
Input: [1,2,3]
Output: [1,3,2]
解釋:
原始數組: [1,2,3]
找到第一個 nums[i] < nums[i + 1], i = 1, nums[i] = 2, nums[i + 1] = 3
交換nums[i]和nums[j], j = 2, nums[j] = 3, nums[i] = 2
[1,3,2]

Example 2:
Input: [3,2,1]
Output: [1,2,3]
解釋:
原始數組: [3,2,1]
因為整個for跑完沒觸發return 則直接return nums的reverse
[1,2,3]

Example 3:
Input: [1,1,5]
Output: [1,5,1]
解釋:
原始數組: [1,1,5]
找到第一個 nums[i] < nums[i + 1], i = 0, nums[i] = 1, nums[i + 1] = 1
交換nums[i]和nums[j], j = 2, nums[j] = 5, nums[i] = 1
[1,5,1]

如果輸出結果與預期一致,那麼程式碼應該是正確的。
跟題目官方給的example的對應解答是一致的,給過!
還沒完我來開啟chatgpt之偽linux終端模式
第一題
第二題
第三題
我自己出一題
目前不明白為何會出錯,可能的猜想是
  1. 他基本上是一個神經網路
  2. 他似乎有上網功能
  3. 他不是一台計算機
所以我前三題官方example他可能在互聯網上看過解答
而當我真正出一題他沒看過的,在偽Linux模式下就出錯了
就像我前陣子用偽Linux模式在chatgpt 用pytorch 訓練cnn model
一樣的道理,看起來loss跟acc都有往正常方向變化
但是後來loss到0,acc居然沒跟著到100我就知道他在裝
好比一個還在人類幼兒期的人工智能拿著一台linux終端機在嘗試騙我他是一台linux終端機這樣,結果因為太複雜的運算行為模仿不來破功…
贊助創作者百元,就抽 $8,888 紅包與好禮!
一個Microsoft Professional Datascience 的產業觀點
人工智能工作經驗跟研究
如果要發表留言,請先登入註冊會員
享受沈浸的閱讀體驗
徜徉在不受干擾的簡約介面,瀏覽數百萬篇原創內容。
領取見面禮
只要設定追蹤作者,即可享有 48小時
Premium 閱讀權限