使用聊天功能进行编程练习
多年前,在加州大学的一门经典CS 170课程中,我接触到了图灵奖得主理查德·卡普(Richard Karp)关于高级算法的介绍。我认为我们当时没有意识到自己有多幸运(我还有幸在伯克利国际象棋俱乐部与卡普教授交流)。
但是即使是最好的介绍也需要定期更新。
在过去的几个月里,我一直在Leetcode.com上进行每日复习,并与我的数字辅导员ChatGPT 4密切合作。
原来,在给予适当的提示下,Chat会成为一个有创造力、表达流利且吸引人的伙伴!它不仅仅是回答那些严格限定的技术问题。实践(在我这边进行沟通)使人更上一个层次。
这里有一些我参与Chat的方式,共同拓展算法开发的边界(是的,这被称为诗意的许可):
- 你能把所有的DSA(数据结构和算法)整理成一个问题分类体系吗?以便于我系统地学习?
- “你能问我一些关于以下代码的困难问题来测试我的理解吗?” [通常我会收到5-10个问题-非常有帮助!之后进行评估并提供详细反馈,如有必要会进行进一步交流。]
- “在代码中,[这个具体的语句] 的目的是什么?”
- “我没有理解。你能详细解释一下吗?”
- "你能插入一些错误(请不要注释它们!)让我来调试吗?"
- 请问你能展示一下使用bfs解决这个问题的代码吗?使用栈的代码呢?使用DP的代码呢?
- 这个问题使用dfs和bfs、栈和DP之间有什么权衡?
- “您刚刚为我编写的代码是否可以简化?”【经常可以。】
- 为什么你第一次当我问的时候没有给我简化的代码呢?【比我对真人说话时直接一些!】
- [如果聊天似乎比平常更不正确或不流畅,请确认是否仍在 Chat4 模式下,而不是 Chat3.5 模式。]
- 今天我想学习关于Trie树的知识。你可以列出十个Leetcode问题,从简单到困难,帮助我逐渐掌握Trie树的学习进度吗?
- 【与Chat进行对话,就像与一个聪明的人进行对话一样。它是一个出色的交谈者,对于回答广泛的问题以及捕捉微妙和暗示非常擅长。】“我应该花更多时间刷Leetcode还是进行项目建设?”
- 为了将所有内容都与Karp教授的CS 170课程联系起来,“用Dijkstra算法解决什么样的Leetcode问题比较好?”
我知道这只是Chat可以提供的所有编码帮助中的一小部分。但它确实超出了我的预期。顺便说一句:Chat至少减少了我使用谷歌搜索引擎的70-80%。我希望这不会影响他们的按摩和鱼子酱预算。
圣诞祝福(给Sam/Satya 11个月): 与Jesse Kraai 和 Johan Hellsten 相当水平的国际象棋导师。谢谢!