用 AI 打造魔術方塊解題器:一個prompt搞不定

最近,看到一篇貼文,提到有人只用一個提示就讓 Gemini 2.5Pro 生成了一個可玩的魔術方塊遊戲。受到啟發,我立刻使用 AI Cursor,也想用幾個prompt來打造一個能自動解開魔術方塊的遊戲。

然而,這個過程比最初想像的更加複雜,且充滿啟發。

我最初的想法是,AI 應該可以自己找出最佳解。畢竟,它是 AI,對吧?一個提示肯定能解鎖魔術方塊的奧秘。

很快的我就發現有問題。雖然 AI 可以生成程式碼,但它並未自動產生一個強大的魔術方塊解題器,一開始不是選轉時會把黑色面轉出來,在不然就是轉歪了。我意識到,向 AI 丟出一個提示並不能神奇地產生最佳的解決方案。

經過數天實驗和除錯的嘗試,我終於設法弄清楚了解開魔術方塊的核心演算法邏輯與概念。現在,最後一塊拼圖是連接一個運行 Kociemba 演算法的後端伺服器,這是一個已知有效解開魔術方塊的方法。一旦完成,我就應該能擁有一個自動化的魔術方塊解題器了!

整個過程充滿挑戰,也是一次學習經驗。以下是一些關鍵收穫,希望能幫助其他正在探索使用 AI 寫程式的人:

1. 基礎知識仍是最重要

這次經驗讓我體會到,對你試圖解決的問題擁有基礎理解的重要性仍是最高的。
就我而言,以前從未寫過魔術方塊的演算法。當 AI 生成錯誤結果時,是完全不知道該從何處開始除錯的。

理解魔術方塊底層邏輯,像是如何將魔術方塊表示為字串並進行解題這樣的概念,對於識別和更正 AI 生成的程式碼很重要。如果沒有這些基礎知識,基本上就是在盲目摸索。

2. 對於複雜問題,先提示 AI 分析問題:例如,如何同時從面塊字串繪製 2D 可視化和 3D 立方體

我注意到 AI 在面對複雜的整體技術挑戰時,傾向於立即開始編寫程式碼。它會熱情地回應我的提示,聲稱我抓住了重點,然後繼續進行大量的修改或生成全新的函數(有時甚至在功能已經存在的情況下!)。在這種情況下,我學到先提示 AI 分析問題要有效得多。例如,與其要求它編寫程式碼來顯示魔術方塊,我應該先問它如何同時從一個面塊字串生成 2D 可視化和 3D 立方體。這鼓勵 AI 在實際編碼之前先從概念上思考問題,也協助我進行學習未知的domain。

3. 要求 AI 解釋其程式碼:理解其邏輯並引導修正

當 AI 產生大量程式碼時,很容易會盯著程式碼,試圖找出問題可能出在哪裡,或者是拿錯誤log給他看,要他自己解決。不管怎樣,面對魔術方塊自動解這種題目,得讓AI扮演協助的角色。

與其一行一行地仔細檢查,不如讓 AI 解釋它的方法。要求它描述程式碼的特定部分正在做什麼以及為什麼這樣做。這讓你能夠理解它的邏輯,然後運用你自己的推理來找出潛在的錯誤並提供更具針對性的提示或更正。這是一種更有效率的除錯方式,也能更好地引導 AI 朝著期望的結果前進。

4. 將複雜的問題分解成小部分來處理

當面對一個複雜的整體問題時,AI 的「幻覺」和過度自信可能會非常嚴重。將問題分解成更小、更易於管理的部分並單獨處理它們會更有效。當你需要進行修改時,一次只專注於一個特定的部分。這種方法有助於減輕 AI 在面對龐大而複雜的任務時,傾向於生成不正確或不必要的程式碼的問題。

這次使用 AI 打造魔術方塊解題器的旅程,讓我深刻體會到,雖然 AI 是一個強大的工具,但它並非萬能。它需要一種協作的方法,人類的理解和邏輯推理在引導 AI 實現預期結果方面發揮著至關重要的作用。

目前我的魔術方塊是正確呈現的,也能轉動,也能自動解(基本是目前是倒著解)
但,下一版我應該就能做出,連接 Kociemba 後端服務,自動化魔術方塊解題器就能實際運作了!

發佈留言