Kotlin Multiplatform Knapsack solver targeting Android, Web, iOS and Desktop, aiming for experience Compose Multiplatform.
MoeTax 是纯 Kotlin 背包问题求解器。它用于按要求打包包裹。使用户海淘了大量物品时,能够保证每个包裹的进口税小于或等于 50 人民币的免征税额度,一个包裹最多含 5 个物品,同时包裹的数量最少。输出各个包裹的内含物和关税值。方法可能不是最佳的。
如果您时间紧,您可以跳过此部分。
集美 高松灯 特别羡慕初中生 山田杏奈 的大仍子,所以特别喜欢购入 我心危 的 吧唧。但是 海鲜市场 的倒🐶倒✌️实在太多了所以不收 国现。她比较怕生,很不安,没有找 煤炉代切,而是在软件上单机切煤,但是她把剩余的时间都用来做题、偷带手机在寝室里看日本 TV 动画或者在小红书上分享自己的 朋克摇滚。而且她只会 天体力学,摆弄石头以解决三体问题,并不怎么会计算进口税 (tariff)。
高松灯吃谷不多,也不会买什么 冷捆热 和 h 价谷,因此咪只会购买下面好价谷子:
-
单个商品的进口税小于等于 50 人民币。关税若有小于 1 人民币的余数
CNY 48.01
,均视为 1 人民币。取整即CNY 49.00
。 -
她购买的物品,品类要不就是收 13% 进口税,要不就是收 20% 进口税的。
-
完税金额 (海关认定最低价) 没有考虑,需要自己判断并填入;她看起来不会购买电子产品、 3 套以上的印刷品或音像制品。
-
她购买的商品都是可以过关的非 R 清水本 等在列商品。
程序不需要计算海关认定最低价。需要她手动检查并输入商品价格。
由于她住在鬼门关,选择 EMS 肯定会带来额外的进口税,而快递费本身也负担不起。她很害怕。就这些垃圾屋捡来的小垃圾,为什么要花时间弄报关呢。因此她只能选择使用 代清关物流 或者 阳光报税物流 。但是代清关小包能发的东西不多。比如她想购买一张 MyGO!!!!! 1st Album「迷跡波」【通常盤】,但被告知 CD 不能经手代清关。
因此辗转反侧后她决定使用阳光报税物流。阳光报税的意思是切煤平台会提前收完整的税,由不得你,但是价格还是最舒服的,只要不超过税额。有的切煤平台叫中通清关,有的叫什么竹蜻蜓,萌特快,还有倒闭的喵急便。
由于高松灯买的是多个小件,高松灯希望能多打几个包裹发货,来避免收税。
其中,阳光报税物流有一定要求:
-
单个包裹的进口税不超过 50 人民币。
-
如果超过了,就要交全额的进口税;
-
如果没超过,就正大光明的免税了!
-
-
单个包裹小于等于 5 个订单。
不过不要紧!相信高松灯自己会填写的。
因此,如果一个包裹装不下,那就再打一个包裹。即使这样,也比使用 EMS 或者海运更省钱了...
根据海关总署 2010 年第 43 号(关于调整进出境个人邮递物品管理措施有关事宜)公告,个人邮寄进境的物品只有应征进口税税额在人民币 50 元(含 50 元)以下的才能免于征税,否则将依法征收进口税。
写 MoeTax 的目的是做出来一个真正能用的完全 Kotlin 跨平台、代码包括 UI 都几乎完全共享的程序。它不求复杂,也不需要难搞的第三方库依赖。使用的唯一一个第三方库 Kolor 是为了动态取色主题。
这是一个 Compose Multiplatform 项目,用于体验界面的。这又不是竞技性编程,死刷没用的题,反正以后都用 ChadGPT 做 CodeForced 或者 liitcode 了。此外我不和那些臭做题家一样,不仅我会打包成 exe ,也支持 Web 和 Android。由于我没有 Apple 设备,所以我没办法测试,但是应该是能用的。这是为了高松灯能更好地切谷。
高松灯首先需要打开代切平台,抄写下实时的日元汇率。每个软件的汇率都是不一样的,不能在线获取。
然后,她需要根据软件要求填入包裹不可分割商品的最大件数 (商品总数)。例如 萌○快 是 5 件;筋○云 和 竹○蜓 是 20 件。
随后添加包裹。填写好独一无二的每个商品名称是重要的,之后可以一眼顶针地按照程序的输出来发货了。此外应该填写所有的手续费、检品等杂费费用,没有就填 0 日元。优惠券抵扣的也是要算进去的。
最后 MoeTax 将输出每个包裹中的物品,包裹的总价和包裹的税费。
现在,高松灯可以通过返回的商品名称合单发货了,或者根据计算结果再购买一些还能免税寄的小吧唧来凑单。希望她的包裹结实完好,四角方方。
Desktop | WebAssembly |
---|---|
Android | iOS |
---|---|
Working on it |
在
commonMain
的
main
package
下,有一个
main
函数。
可以直接使用预定义的
testItem
属性进行测试,或者自行输入。
下面的测试结果,不是本项目的问题,而是 Compose Multiplatform 的问题。 MoeTax 用于测试 Compose Multiplatform 在实际应用下的各种问题。
- 无法调用系统字体,并使得中文显示为方框。 此项目使用了 3000 中文常用字字库、常见符号、片假名、日本汉字以缩减 Noto Sans CJK 至 1.12MB 并延迟加载。但仍然不尽人意。
- 不支持任何快捷键。 无法执行任何键盘快捷键,包括全选、复制和粘贴。部分于 Kotlin 2.0 支持。
- 无法输入中文。输入法将只会调用英文输入法。
- 不支持软键盘。我们发现在需要时,
Compose
只会在控制台中输出
TODO showSoftwareKeyboard in JS
- 不支持缩放。和 Flutter 一样,它不支持缩放,并且在笔记本电脑用户使用触摸板进行双指缩放时,出现显示异常。
- 在所有的高分辨率屏幕上显示异常。 同时导致字体渲染模糊。在手机上可能显示很小,也无法进行缩放操作。不支持手机竖屏。
- 本程序的点击事件全部错位。其他平台均完全正常,也未见任何异常。
- 当单个物品的关税超过 50 人民币时,将会抛出异常。这是有意的。但是 Compose for Web 会在控制台输出异常,并冻结界面。
- Skiko 如果可以 fork 后删掉这个高达 772 KB 的 Roboto Regular 字体, 或者禁止其加载而使用系统字体、或者使用 Noto Sans CJK 缩减版代替,将会更快加载。
- 右键单击也算作左键单击。没有长按事件。
- STATUS_ACCESS_VIOLATION
仍然会在
Microsoft
Edge
124.0.2478.6
(正式版本)dev
(64 位) 上出现。 官方的 Compose for Web 也出现相同的异常。 - 在最新的 Google Chrome, Mozilla Firefox, Microsoft Edge 上均可能无法正常运行。错误异常是各种各样的,但更换不同版本的浏览器 (如使用相同核心的 Dev 版本,切换到旧版本或 Beta 版本) 会莫名其妙地解决问题。在打开 Microsoft Edge 的严格站点安全性 (对此网站使用增强的安全性) 后无法使用。
- 您可以使用
./gradlew :composeApp:wasmJsBrowserDevelopmentRun
来在浏览器中运行项目。 - 您可以使用
./gradlew :composeApp:run
来在桌面上运行项目。
Common (under main
package) under WTFPL,
and Composable (under ui
package) under Apache 2.0 cuz I copied some code from other projects,
which are also written by me but licensed under Apache 2.0.
© 2077 ChadGPT, CloseAI Global LLC. / Copliliot, MacroHard Corporation. All Rights Reserved.
℗ 2077 G1GαChad, 😭CUNNY😭 & THE I.N.C.E.L.
Code is generated by LLMs with no warranty or unit tests. No human involved.
版本 3 起支持了:
- 自定义包裹内含商品总数最大值。高松灯开始对 任○购, 萌○ 等平台可能感到不安,而其他平台支持塞下更多的商品,即使关税仍然是五十元: 现在,她可以自填商品总数,而不是定死的 5 个。
- 依赖更新。通过
./gradlew refershVersion
查看最新依赖。