分享|试用 ChatGPT4 打算法竞赛
4352
2023.12.20
发布于 未知归属地

昨晚参加了一场算法竞赛,尝试用 GPT4 来辅助。记录如下,如果大家有 prompt 方面或者使用方法的建议,欢迎交流。原始记录附在最后。

跟 GPT4 的约定

  1. 语言的输入输出模板和主程序框架
  2. 约定提供英文题面,用中文交流
  3. 要求先交流算法,再生成代码

我的操作流程

  1. 复制题面,等解答
  2. 测试 GPT4 提供的代码是否通过样例
  3. 把我的思考反馈给 GPT4
  4. 重复2、3步骤直到耐心耗尽

结果

image.png

过程

  1. A题:"Problemsolving Log"
    GPT4 直接 AC 的题就这一道。它提供的代码通过样例,我就直接提交了。
  2. B题:"Preparing for the Contest"
    GPT4 对于这题整体的构造思路是对的,但是没有完全理解题意,导致后半部分还是用递增来构造,就出错了。
    后来两次做了提示,它都没改对。我就在它第一次的代码上改了一点点就 AC 了。
  3. C题:"Quests"
    GPT4 的第一个思路完全不着边儿,看上去还是没有理解题意。第二个思路接近了一些,主体框架对了,但是忽视了每个阶段都有可能取到最优值的可能。prompt 之后的代码得到了 AC。
  4. D题:"Three Activities"
    GPT4 能够找到没有约数下的最佳方案,但问题的挑战就在于处理避免冲突的约束。由于算法显而易见,我就直接提示了我的思路,GPT4 再次给出的代码获得了 AC。
    最终,只有 A、C 和 D 这 3 道题,是完全用 GPT4 的代码通过的题目。
  5. E2题:"Game with Marbles (Hard Version)"
    每回合的选择有一个显而易见的贪心策略,能看出 GPT4 试图找出这个策略,并且很接近。我尝试给它一个有一点点错误的方案,然而它并没有纠正。最后我自己手痒自己上了。
    这道题如果给出正确的 prompt,GPT4 应该能写出 AC 的代码。
  6. F题:"Programming Competition"
    GPT4 对这道题的题意理解,或者说对约束的理解有很大问题。中途还提出了二部图这个思路,挺有意思但不能解决本题。我尝试解释为什么不能用二部图,希望能加深它的理解,看上去没什么卵用。
    这题我思考也不多,给了它一个简单的贪心思路,它的实现没有问题,但是通过样例的结果,帮我发现了贪心的问题。只将问题跟 GPT4 沟通,它提供的思路大体正确,但是代码实现明显是错的。
    觉得实现不是啥挑战了,又不想跟它多费口舌,秉着我行我上的原则,这题我就自己切了。
    另外这题涉及到 dfs,之前没跟它约定 py 的 dfs 要用手写栈,于是自己补充了 bootstrap。
  7. G2题:"Light Bulbs (Hard Version)"
    技术题。难题 GPT4 真是无能为力,在怒怼它第一版的瞎扯后(我还真就仔细看了它的思路和代码),第二次给出的思路有点点意思了。但也只是捕捉了最基本的观察,并没有深入思考算法。
    沟通的过程中,我大概也有了初步的算法框架。我在它提供的代码上加了几行,能通过样例。但是提交后得到了 WA。
    我先把修改后的代码,和 WA 的结果告诉 GPT4,它朦胧地只出了错误可能的方向(没啥具体作用)
    自己思考了一阵,找到了 WA 点,但是 GPT4 不能够直接给出正确的代码,此时比赛时间已经临近结束,而且 GPT4 的流量居然也给我跑完了~
    最后没来得及完成这题的代码。

体会

优点

  1. GPT4 的代码风格和命名规范都不错,提供的代码挺容易读懂(即便可能跟它说的思路有出入)。
  2. 稍微长一点的代码实现的速度比手搓还是快的,一些简单的想法可以让它写出来做实验。
  3. 当做组队赛里一个菜鸡队友,一边交流一边整理思路还不错。(另一面见缺点3)

缺点

  1. 并没有等我确认算法后再生成代码,以后在约定中可能要强调这一点。
  2. 话痨,还是有冗长的表达。
  3. 打字交流效率低,而且要反复多次沟通才能抓住重点。
  4. 就算理解了问题的本质,也很难直接给出正确的算法。

优化

  1. 比赛中意识到直接复制题面的文字贴到 GPT4 中,格式会有问题。后面几道题目略作调整。
  2. 更完整和全面的 prompt 可能更有效率。(这点希望得到有经验的你指点)
  3. 如果把 GPT4 当做队友,我应该更有耐心一些。

结论

  1. 最简单直接的题,如果它不话痨,速度和正确率是不错的。
  2. 大部分题,反复交流的时间,还不如自己写得快。
  3. 困难题如果没思路,也许找个无情绪的机器交流,也是一种选择。

最后来看看 GPT4 自己的总结:
image.png

原始记录

评论 (11)