重複の可能性:
Scala のゼブラ パズル
この問題は、過去 2 日間、私を悩ませていました。
そのようなパズルを解く Scala の方法は何ですか? 以下の Python で Scala に示されているネストされた for ループを実装しようとしましたが、うまくいきません。ループは、2 番目の制約で既に 0 の結果を返しています。これはおそらく、私が Scala に不慣れで、詳細を見逃しているためです。
誰かが何か考えを持っているなら、私の貧しい魂を助けてください、ありがとう.
ここに私のコード、
val houses = List(1, 2, 3, 4, 5)
val orderings = houses.permutations
val List(first, _, middle, _, _) = houses
def imright(h1: Int, h2: Int) = h1 - h2 == 1
def nextto(h1: Int, h2: Int) = math.abs(h1 - h2) == 1
for (List(red, green, ivory, yellow, blue) <- orderings if imright(green, ivory))
for(List(englishman, spaniard, ukrainian, japanese, norwegian) <- orderings;
if englishman == red;
if norwegian == first) println(orderings.length)