我正在整理一个 Traveler 实现,并从定义我的数据结构开始。我在尝试定义Ship
. 我从一些简单的data
定义开始。
data Ship = Ship Cargo Hull Weapons Engines
data Cargo = WholeMagilla
| MostOfIt
| HalfOfIt
| SomeOfIt
data Hull = Heavy
| AboveAverage
| Average
| Meh
data Weapons = WarMonger
| BadMofo
| CautiousCarl
| Pacifist
data Engines = WarpSuperFast
| WarpFairlyFast
| WarpFast
| Turtle
现在这是我的问题。我想根据其他类型的值来限制一个类型可以是什么值。示例:可能Ship
是
Ship WholeMagilla Heavy Pacifist Turtle
Ship WholeMagilla Meh WarMonger Turtle
Ship WholeMagilla Meh Pacifist WarpSuperFast
因此,如果 aPlayer
有足够Credits
的值,它们最多可以有两种类型的最大值,代价是最小化其余的值。那么,在这两者之间有所有的可能性。我开始可视化一个图形,其路径由该路径中已有的节点决定。这有助于我思考问题,但不能帮助我编写一个能够得到我想要的结果的函数。有人能指出我正确的方向吗?