写了个凑数小程序
文章目录
缘起
咖啡价目表
咖啡店送了一张 100 块的代金券,如何在不额外花一分钱的情况下,刚好将这 100 块代金券花完?
由于价格数字不大,靠人脑还是很容易凑出来这 100 块。
但如果数字再大一点、再多一些呢?作为码农,写一个程序解决还是很容易的,但对于普通人来说就稍微麻烦一些了。
Vibe Coding 这么火,且之前一直有想靠 AI 帮我写一个小程序的想法(只是一直没想好写什么),这不,需求刚好来了。凑数功能只是一个纯粹的计算逻辑,不需要服务器交互,整个功能非常简单,很适合小程序用后即弃的场景。
开发
开发使用腾讯出品的 CodeBuddy,Claude-4.0-Sonnet 模型。
功能上,由于不一定刚好凑出用户需要的目标数字,因此我希望增加「大于接近」和「小于接近」功能,用来尽可能的接近目标数字。
最初给出的 prompt 如下。
我现在要开发一款微信小程序,小程序为工具类应用。
程序主要是凑数功能,
- 允许用户输入一个目标数字,比如 100。
- 同时允许用户输入一些选项数字,比如 10,14,20,30,40,16 等等,选项数字最多允许 20 个。 允许数字重复。
- 之后用户选择选项,有完全匹配、小于接近目标数字、大于接近目标数字 这三个选项
- 以上信息确定后,对于完全匹配来说,需要基于用户输入的选项数字凑出来 100 这个目标值。 比如 输入的 30、40、14、16 这 4 个数字就可以凑成 100 这个值。如果用户选择了允许数字重复,那么同一个数字可以允许用多次,比如 10 个 10 。如果有多个组合,那么将所有符合要求的组合都列出来。如果凑不出来,那么直接提示用户无法实现要求。
- 如果用户选择了小于接近目标数字,那么就组合数字,给出所有数字求和后的小于且同时最接近 100 的数字。大于接近目标数字同理。
请基于以上需求,帮我设计小程序的应用界面,并实现相应的功能,算法方面要非常的高效。
由于功能很简单,第一版就给出了我比较满意的 AI 界面,整个功能也基本能够使用。
经过测试后,发现有一些一开始未考虑到的地方。
- 不支持小数,不支持负数。
- 数字重复的情况下,计算量太大,小程序卡主的时间太长。于是不再添加允许数字重复的选项。
- UI 展示的结果不够友好。
不断的给 AI 指出相关的问题也都得到了一一的修复,最终的效果图如下。
效果图
后面我在小红书上也看到有人有类似的需求,并找了些复杂的例子进行测试。进而又发现了 AI 给我留的坑。
拿复杂例子测试时,发现「大于接近」情况下给出的结果并不对。捋了下代码发现,原来 AI 生成的代码中,只找出了 1000 个大于目标数字的结果,然后从这 1000 个结果中找出最接近的目标数字的结果。这样计算速度快是快,但结果显然不对。
之前基本是秒出结果,而去除 1000 个数字的限制后,程序需要计算好几分钟。有点不太接受,于是开始让 AI 优化,最后给出了这么个 方案。我测试速度挺快,之后我让 CodeBuddy 将这段 python 代码移植到了小程序中,这样结果正确的情况下,计算时间也算可以接受了。

就这次开发来说,两个体会,
- 每次让 AI 修改代码前,一定要先提交代码。AI 大概率会让正常可用的代码变成一坨屎。
- 一定要 review AI 的代码,了解逻辑,说不定哪里就留了一个坑。
最后
程序很简单,如果有需要的话,可以扫码尝试使用。

开发这个程序的另一个目的是,熟悉了解下微信小程序的开发上线流程,如认证、备案等。AI 浪潮下,开发实现不再是重点,更重要的是发掘需求并产品化落地的能力。