我正在尝试使用Scala在Udacity的CS212上工作但是在使用Zebra Puzzle时遇到了麻烦,
python中的一些概念并不容易转换为Scala,特别是对于像我这样的初学者。
这些是我目前管理的代码,
val houses = List(1, 2, 3, 4, 5)
val orderings = houses.permutations
def imright(h1: Int, h2: Int): Boolean = {
if (h1 - h2 == 1) true
else false
}
def nextto(h1: Int, h2: Int): Boolean = {
if (math.abs(h1 - h2) == 1) true
else false
}
the houses = [first, _, middle, _. _] = [1, 2, 3, 4, 5]
难倒我。
此外,我如何在Scala中表达for (red, green, ivory, yellow, blue) in orderings
?请帮助我,谢谢。
答案 0 :(得分:6)
你想要
val houses = List(1, 2, 3, 4, 5)
val List(first, _, middle, _, _) = houses
和
for (List(red, green, ivory, yellow, blue) <- orderings)
分别。另请注意,在Scala中,必须将这些类型的解构分配给以小写字母开头的变量;大写表示它应该匹配现有变量(如果没有,则抛出异常!)。