雖然一次周賽的幾個題目說明不了太多問題,比如這個周賽的Hard題目就是板子題,算不上Hard,也許把第三題和第四題的順序換一下比較合適。但是,GPT4的表現(xiàn)已經(jīng)嚴(yán)重超出了我的預(yù)期。對于這次周賽的四個題目,GPT4的表現(xiàn)如下:題目1: 錯了一次,簡單提示后修正了錯誤,2A了。題目2: 1A。題目3: 無法通過提示的方法讓GPT4做對,WA。題目4: 1A。不得不說,GPT4在模擬,模板題方面已經(jīng)具備了不錯的理解和處理能力,感覺在更強(qiáng)大的數(shù)據(jù)和更大模型的加持下以后大語言模型的做題能力能趕上一大半人類。| 從提升算法能力的角度來說,我不建議任何讀者使用GPT4來做Leetcode。
0x0. 前言
GPT4論文(https://cdn.openai.com/papers/gpt-4.pdf)的第4節(jié)展示了GPT4的各種能力,在表格的最后三行展示了GPT4做Leetcode的能力,我比較感興趣,所以本文打算來探索一下這種能力??匆幌翯PT4配合一個只發(fā)出prompt的人的表現(xiàn)如何。
為了公平起見,我這里選取了LeetCode第 102 場雙周賽(https://leetcode.cn/contest/biweekly-contest-102/)也就是2023年4月15日的這一場。我打算用GPT4來嘗試解開這場周賽的4道題目,但是不一定能都解開,只是測試一下GPT4的寫算法的能力。
我將全程只指揮GPT4寫代碼來解題,我自己不做任何的Coding工作。
先建立一個GPT4的新對話:
0x1. 第一題
第一題是個Easy的題目,描述如下:
接下來,我們先把題面輸入到GPT4。
GPT4給了我們一個回復(fù),感覺挺對的,但是這種格式不能讓Leetcode直接通過,我們再讓GPT4更新一下格式:
接下來就是緊張的時刻,我們把這個類的代碼提交給Leetcode。
結(jié)果錯誤,Leetcode返回了錯誤的例子。我們把這個錯誤的例子再返回給GPT4讓它自己debug。
我們把它修正后的代碼提交給Leetcode。
現(xiàn)在GPT4順利通過了第一道題目。
0x2. 第二題
我們問一下GPT4
我們提交給Leetcode試試。
直接通過,GPT4真有點(diǎn)強(qiáng)。
0x3. 第三題
問問GPT4:
這個問題感覺還是比較麻煩的,GPT4給出的方案感覺一眼假,不過我們不妨運(yùn)行一下它給的代碼。
我們發(fā)現(xiàn)編譯就報錯了。我們返回這個結(jié)果給GPT4:
現(xiàn)在確實(shí)可以編譯了,但我們發(fā)現(xiàn)這個程序連樣例都無法通過。顯然,GPT4根本沒有理解這道題目的意思,結(jié)果傾向于是“胡說八道”。再加強(qiáng)一些提示:
最后GPT4輸出的代碼仍然無法通過樣例。這道題,GPT4應(yīng)該是無能為力了。
從這道題目,我們可以看到GPT4的局限性,那就是對于這種思維性的題目,GPT4很難理解這道題目暗含的意思,設(shè)計(jì)的算法也是錯誤的。
題解可以參考:https://leetcode.cn/problems/cousins-in-binary-tree-ii/solution/bfssuan-liang-ci-pythonjavacgo-by-endles-b72a/
0x4. 第4題
接下來我們看一下第4題,這個題是比較模板的題,我們看一下GPT4能否解開。
我們來看一下GPT4給出的答案能否通過樣例。
是可以通過給出的樣例的。我們提交試試。
這道題GPT4的完整代碼實(shí)現(xiàn)如下:
classGraph{
public:
Graph(intn,vector<vector<int>>&edges){
this->n=n;
for(constauto&edge:edges){
adjList[edge[0]].push_back({edge[1],edge[2]});
}
}
voidaddEdge(vector<int>edge){
adjList[edge[0]].push_back({edge[1],edge[2]});
}
intshortestPath(intnode1,intnode2){
vector<int>dist(n,INT_MAX);
dist[node1]=0;
priority_queueint,int>,vectorint,int>>,greaterint,int>>>pq;
pq.push({0,node1});
while(!pq.empty()){
intcurrNode=pq.top().second;
intcurrDist=pq.top().first;
pq.pop();
if(currNode==node2)returncurrDist;
if(currDist>dist[currNode])continue;
for(constauto&neighbor:adjList[currNode]){
intnextNode=neighbor.first;
intedgeCost=neighbor.second;
if(currDist+edgeCostreturn-1;
}
private:
intn;
unordered_map<int,vectorint,int>>>adjList;
};
雖然這道題很難說是Hrad的難度,但1A真的太嚇人了。。。
0x5. 總結(jié)+預(yù)測
雖然一次周賽的幾個題目說明不了太多問題,比如這個周賽的Hard題目就是板子題,算不上Hard,也許把第三題和第四題的順序換一下比較合適。但是,GPT4的表現(xiàn)已經(jīng)嚴(yán)重超出了我的預(yù)期。
對于這次周賽的四個題目,GPT4的表現(xiàn)如下:
題目1: 錯了一次,簡單提示后修正了錯誤,2A了。題目2: 1A題目3: 無法通過提示的方法讓GPT4做對,WA。題目4: 1A。
不得不說,GPT4在模擬,模板題方面已經(jīng)具備了不錯的理解和處理能力,感覺在更強(qiáng)大的數(shù)據(jù)和更大模型的加持下以后大語言模型的做題能力能趕上一大半人類。| 從提升算法能力的角度來說,我不建議任何讀者使用GPT4來做Leetcode。
審核編輯 :李倩
-
算法
+關(guān)注
關(guān)注
23文章
4612瀏覽量
92901 -
代碼
+關(guān)注
關(guān)注
30文章
4788瀏覽量
68616 -
GPT
+關(guān)注
關(guān)注
0文章
354瀏覽量
15379
原文標(biāo)題:0x5. 總結(jié)+預(yù)測
文章出處:【微信號:GiantPandaCV,微信公眾號:GiantPandaCV】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論