缘起

咖啡价目表

咖啡店送了一张 100 块的代金券,如何在不额外花一分钱的情况下,刚好将这 100 块代金券花完?

由于价格数字不大,靠人脑还是很容易凑出来这 100 块。

但如果数字再大一点、再多一些呢?作为码农,写一个程序解决还是很容易的,但对于普通人来说就稍微麻烦一些了。

Vibe Coding 这么火,且之前一直有想靠 AI 帮我写一个小程序的想法(只是一直没想好写什么),这不,需求刚好来了。凑数功能只是一个纯粹的计算逻辑,不需要服务器交互,整个功能非常简单,很适合小程序用后即弃的场景。

开发

开发使用腾讯出品的 CodeBuddy,Claude-4.0-Sonnet 模型。

功能上,由于不一定刚好凑出用户需要的目标数字,因此我希望增加「大于接近」和「小于接近」功能,用来尽可能的接近目标数字。

最初给出的 prompt 如下。

我现在要开发一款微信小程序,小程序为工具类应用。

程序主要是凑数功能,

  1. 允许用户输入一个目标数字,比如 100。
  2. 同时允许用户输入一些选项数字,比如 10,14,20,30,40,16 等等,选项数字最多允许 20 个。 允许数字重复。
  3. 之后用户选择选项,有完全匹配、小于接近目标数字、大于接近目标数字 这三个选项
  4. 以上信息确定后,对于完全匹配来说,需要基于用户输入的选项数字凑出来 100 这个目标值。 比如 输入的 30、40、14、16 这 4 个数字就可以凑成 100 这个值。如果用户选择了允许数字重复,那么同一个数字可以允许用多次,比如 10 个 10 。如果有多个组合,那么将所有符合要求的组合都列出来。如果凑不出来,那么直接提示用户无法实现要求。
  5. 如果用户选择了小于接近目标数字,那么就组合数字,给出所有数字求和后的小于且同时最接近 100 的数字。大于接近目标数字同理。

请基于以上需求,帮我设计小程序的应用界面,并实现相应的功能,算法方面要非常的高效。

由于功能很简单,第一版就给出了我比较满意的 AI 界面,整个功能也基本能够使用。

经过测试后,发现有一些一开始未考虑到的地方。

  1. 不支持小数,不支持负数。
  2. 数字重复的情况下,计算量太大,小程序卡主的时间太长。于是不再添加允许数字重复的选项。
  3. UI 展示的结果不够友好。

不断的给 AI 指出相关的问题也都得到了一一的修复,最终的效果图如下。

效果图

后面我在小红书上也看到有人有类似的需求,并找了些复杂的例子进行测试。进而又发现了 AI 给我留的坑。

拿复杂例子测试时,发现「大于接近」情况下给出的结果并不对。捋了下代码发现,原来 AI 生成的代码中,只找出了 1000 个大于目标数字的结果,然后从这 1000 个结果中找出最接近的目标数字的结果。这样计算速度快是快,但结果显然不对。

之前基本是秒出结果,而去除 1000 个数字的限制后,程序需要计算好几分钟。有点不太接受,于是开始让 AI 优化,最后给出了这么个 方案。我测试速度挺快,之后我让 CodeBuddy 将这段 python 代码移植到了小程序中,这样结果正确的情况下,计算时间也算可以接受了。

凑个数效果

就这次开发来说,两个体会,

  1. 每次让 AI 修改代码前,一定要先提交代码。AI 大概率会让正常可用的代码变成一坨屎。
  2. 一定要 review AI 的代码,了解逻辑,说不定哪里就留了一个坑。

最后

程序很简单,如果有需要的话,可以扫码尝试使用。

小程序码

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