6 个版本
0.3.1 | 2021 年 11 月 7 日 |
---|---|
0.3.0 | 2021 年 11 月 3 日 |
0.2.8 | 2021 年 11 月 1 日 |
0.2.7 | 2021 年 10 月 31 日 |
#37 in #board-game
45KB
899 行
Ticket2ride 项目
目的
这个项目最初是一个思维练习,当我问自己这个游戏的理论最高分是多少。在我开始之前,我在几个地方看到了关于高分路线的看法,但没有证据表明这些是最佳解决方案。所以我告诉自己,这是一个很好的项目,可以用来提高我在 Rust 中编程技能和探索解决这个问题的算法。
架构
这是第一次尝试,没有使用特定的算法逻辑,基本上只用了暴力搜索。
用户在执行命令行程序时,可以使用 -c
或 --city
选项为算法提供起始城市。如果没有提供城市或提供的城市不存在,则默认使用爱丁堡。
程序执行包含两个步骤。第一步,从起始城市开始探索所有可能的路线。第二步,对所有的这些可能路线进行评分,然后找到评分最高的路线。
程序的正确性尚未确定。它似乎可以创建有效的路线,并且在修复一个逻辑错误后,评分是正确的,考虑到
- 一张大票
- 所有覆盖的小票
- 连接路线使用的火车的分数
- 10 分的特快列车加分
- 3 个未使用的车站的 12 分
此外,我猜由于使用了 HashMap,每次计算的路线数量不同。我的推理是,由于 HashMap 不是有序的,每次存储在内存中的方式都是任意的一种,因此计算的路线也有所不同。也许我的逻辑中存在一些错误,需要检查。
一个最后的考虑是,所有路线都从起始城市开始,没有创建起始城市位于路线中间的路线。
未来的考虑
我将来可以做的事情
- 添加路线的颜色
- 尝试不同的算法遍历网络
- 使用车站来满足更多的票
依赖项
~3.5MB
~55K SLoC