私は 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
にある場合、残りを最小化するという犠牲を払って、せいぜい 2 種類の最大値を持つことができます。次に、その間にすべての可能性があります。パスがすでにそのパスにあるノードによって決定されるグラフの視覚化を開始しました。これは問題について考えるのに役立ちますが、私が望む結果を得る関数を書くのに役立つ方法ではありません。誰かが私を正しい方向に向けることができますか?