收到了一個公司的面試邀約,需要完成一個程序題,恰好 ChatGPT 正火,就嘗試生成了一下,結果讓我自愧不如,實在是覺得短時間內無法超越,索性上傳github發送給了對方,非常慶幸7天回覆期內沒有收到任何的回覆,沒有通過也沒有被懟。
網上搜索了一下,這道題解答挺多的,但是ChatGPT的做法還是讓人眼前一亮,欣喜今後不用寫代碼同時,找孩子一起玩了一下自己ctrl+c、ctrl+v的遊戲,發現問題還是有一些,比如最終的勝者的判斷錯誤,如果只剩一根牙籤應該預判獲勝方。
我們一起看看 ChatGPT 完成的這個題目...
題目
將15根牙籤,分成三行,每行自上而下(其實方向不限)分別是3、5、7根, 安排兩個玩家,每人可以在一輪內,在任意行拿任意根牙籤,但不能跨行,拿最後一根牙籤的人即爲輸家。
分析
實現
用 ChatGPT 分別生成了C#、Javascript 的代碼,基本思路是一樣的。
- 使用數組來存儲行及對應的牙籤數量;
- 定義循環,模擬玩家進行遊戲,模擬玩家錄入行號 和 每行錄入的牙籤數量,驗證行號是否正確,錄入的牙籤數量是否超出剩餘,更新行內剩餘的牙籤數量;
- 每行數量是否爲0,結束遊戲和顯示贏家。
成品
https://github.com/smallidea/toothpicks-game
開發工具:vscode,語言:C#、Javascript
說明:
- 改進:如果牙籤總數爲0,或者只剩下1根牙籤,結束遊戲和顯示最終贏家
- 分別使用 Javascript、C# 寫完了代碼,時間關係Type Script代碼沒有寫,其實基本邏輯是一樣的
- C# 採用命令行的標準輸入、輸出的方式進行交互
- JS 使用彈窗的形式進行交互,輸出 F12 見 console
- Jupyter Notebook 的方式有點折騰,後續再做
調試效果
C#
cd csharp
dotnet run
Javascript
進入 js 文件夾,打開 test.htm 文件