Kotlin Multiplatform Knapsack solver targeting Android, Web, iOS and Desktop, aiming for experience Compose Multiplatform. **MoeTax** 是纯 Kotlin 背包问题求解器。它用于按要求打包包裹。使用户海淘了大量物品时,能够保证每个包裹的进口税小于或等于 50 人民币的免征税额度,一个包裹最多含 5 个物品,同时包裹的数量最少。输出各个包裹的内含物和关税值。方法可能不是最佳的。 ## 背景 如果您时间紧,您可以跳过此部分。 集美 [高松灯](https://mzh.moegirl.org.cn/%E9%AB%98%E6%9D%BE%E7%81%AF) 特别羡慕初中生 [山田杏奈](https://mzh.moegirl.org.cn/%E5%B1%B1%E7%94%B0%E6%9D%8F%E5%A5%88) 的大仍子,所以特别喜欢购入 [我心危](https://mzh.moegirl.org.cn/%E6%88%91%E5%BF%83%E9%87%8C%E5%8D%B1%E9%99%A9%E7%9A%84%E4%B8%9C%E8%A5%BF) 的 [吧唧](https://www.bilibili.com/read/cv15559774)。但是 [海鲜市场](https://m.douban.com/group/topic/258829584/) 的倒🐶倒✌️实在太多了所以不收 [国现](https://regengbaike.com/59.html)。她比较怕生,很[不安](https://g.nga.cn/read.php?tid=26020604),没有找 [煤炉代切](https://www.zhihu.com/question/485951222),而是在软件上单机切煤,但是她把剩余的时间都用来做题、偷带手机在寝室里看日本 TV 动画或者在小红书上分享自己的 [朋克摇滚](https://www.bilibili.com/read/cv27620793/)。而且她只会 [天体力学](https://www.bilibili.com/read/cv9525202/),摆弄石头以解决三体问题,并不怎么会计算进口税 (tariff)。 高松灯吃谷不多,也不会买什么 [冷捆热](https://www.zhihu.com/question/446339197) 和 [h 价谷](https://www.zhihu.com/question/292646747),因此咪只会购买下面好价谷子: - 单个商品的进口税小于等于 50 人民币。关税若有小于 1 人民币的余数 `CNY 48.01`,均视为 1 人民币。取整即 `CNY 49.00`。 - 她购买的物品,品类要不就是收 13% 进口税,要不就是收 20% 进口税的。 - 完税金额 (海关认定最低价) 没有考虑,需要自己判断并填入;她看起来不会购买电子产品、 3 套以上的印刷品或音像制品。 - 她购买的商品都是可以过关的非 R [清水本](https://baike.baidu.com/item/%E6%B8%85%E6%B0%B4%E6%96%87) 等在列商品。 程序不需要计算海关认定最低价。需要她手动检查并输入商品价格。 由于她[住在鬼门关](https://tieba.baidu.com/p/8037301660),选择 EMS 肯定会带来额外的进口税,而快递费本身也负担不起。她很害怕。就这些垃圾屋捡来的小垃圾,为什么要花时间弄报关呢。因此她只能选择使用 [代清关物流](https://www.zhihu.com/answer/1285774474) 或者 [阳光报税物流](https://www.zhihu.com/question/301845038/answer/1282252015) 。但是代清关小包能发的东西不多。比如她想购买一张 [MyGO!!!!! 1st Album「迷跡波」【通常盤】](https://bang-dream.com/discographies/3457),但被告知 CD 不能经手代清关。 因此辗转反侧后她决定使用阳光报税物流。阳光报税的意思是切煤平台会提前收完整的税,由不得你,但是价格还是最舒服的,只要不超过税额。有的切煤平台叫中通清关,有的叫什么竹蜻蜓,萌特快,还有倒闭的喵急便。 由于高松灯买的是多个小件,高松灯希望能多打几个包裹发货,来避免收税。 其中,阳光报税物流有一定要求: - 单个包裹的进口税不超过 50 人民币。 - 如果超过了,就要交全额的进口税; - 如果没超过,就正大光明的免税了! - 单个包裹小于等于 5 个订单。 - 她在骏河屋上盲抽了山田杏奈的 3 组初伤钥匙扣,产生了 3 个订单。 - 她在雅虎日拍上捡到了 Azarashi Soft (海豹社) 的三张 [甜蜜女友 2+](https://vndb.org/v31813) 的 Galgame [原声带 CD](https://vgmdb.net/album/134797)。这算一个订单。 - 她在煤炉上找樱花妹切了 25 个啤酒烧烤的特典书签,这算一个订单。不过很可惜!由于这个订单属于量贩,因此不能走阳光报税物流。 不过不要紧!相信高松灯自己会填写的。 因此,如果一个包裹装不下,那就再打一个包裹。即使这样,也比使用 EMS 或者海运更省钱了... > 根据海关总署 > 2010 > 年第 > 43 > 号(关于调整进出境个人邮递物品管理措施有关事宜)公告,个人邮寄进境的物品只有应征进口税税额在人民币 > 50 > 元(含 > 50 > 元)以下的才能免于征税,否则将依法征收进口税。 ## 用法 写 MoeTax 的目的是做出来一个真正能用的完全 Kotlin 跨平台、代码包括 UI 都几乎完全共享的程序。它不求复杂,也不需要难搞的第三方库依赖。使用的唯一一个第三方库 Kolor 是为了动态取色主题。 这是一个 Compose Multiplatform 项目,用于体验界面的。这又不是竞技性编程,死刷没用的题,反正以后都用 ChadGPT 做 CodeForced 或者 liitcode 了。此外我[不和那些臭做题家一样,不仅我会打包成 exe](https://www.reddit.com/r/github/comments/1at9br4/i_am_new_to_github_and_i_have_lots_to_say/) ,也支持 Web 和 Android。由于我没有 Apple 设备,所以我没办法测试,但是应该是能用的。这是为了高松灯能更好地切谷。 高松灯首先需要打开代切平台,抄写下实时的日元汇率。每个软件的汇率都是不一样的,不能在线获取。 然后,她需要根据软件要求填入包裹不可分割商品的最大件数 (商品总数)。例如 萌○快 是 5 件;筋○云 和 竹○蜓 是 20 件。 随后添加包裹。填写好独一无二的每个商品名称是重要的,之后可以一眼顶针地按照程序的输出来发货了。此外应该填写所有的手续费、检品等杂费费用,没有就填 0 日元。优惠券抵扣的也是要算进去的。 最后 MoeTax 将输出每个包裹中的物品,包裹的总价和包裹的税费。 现在,高松灯可以通过返回的商品名称合单发货了,或者根据计算结果再购买一些还能免税寄的小吧唧来凑单。希望她的包裹结实完好,四角方方。 ## 截图 | Desktop | WebAssembly | |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |