收到了一个公司的面试邀约,需要完成一个程序题,恰好 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 文件