使用Scala返回列表中行的元素

时间:2013-11-23 13:03:55

标签: list scala set row

我需要编写一个返回特定行内容的方法(它的索引作为方法参数输入)。我必须使用递归而不使用循环。

到目前为止,我已经尝试了这个未完成的代码(我不知道如何继续它):

class Sudoku(val grid: List[List[Int]]) {

   def r(r: Int): Set[Int] = {
   if (grid.isEmpty) Set()
   else 

  }
}

我也不知道Set是如何工作的。任何帮助将非常感激。 PS:我不是要求完整的代码,算法解释就足够了!

1 个答案:

答案 0 :(得分:1)

这是对问题的字面解释的答案:

class Sudoku(val grid: List[List[Int]]) {
  def row(n: Int): List[Int] =
    if (grid.size > n) grid(n) else Nil
}

List上的应用方法,此处应用于值grid,可以写成grid apply n,或简单地grid(n)返回第n个元素名单。如果该元素不存在(例如grid(1000000)),则抛出异常,因此我们首先检查列表的大小。

我不知道你为什么要返回一个Set,但你可以简单地在结果上调用.toSet。 Set是一个具有不同元素的集合(每个元素只出现一次),不保证排序。

我也不知道你为什么需要递归,所以我认为这个问题是一个更大问题的一部分。