给出一个4 x 4网格的类型
List[List[Int]]
,我需要创建4块(2 x 2)网格,我无法理解如何递归地执行此操作。
例如,如果给出块0,我需要显示第0列和第1列的第0行和第1行的值。但是如何在不打印其余列的情况下选择前2列的前2行的列。
有人可以帮忙吗?
由于
答案 0 :(得分:0)
您可以使用take
,drop
,grouped
和splitAt
等方法将行和列分成两半。
然后,递归地执行此操作,在递归的每个步骤将每个网格划分为四分之一,直到达到所需的最小网格(可能是2x2)。
当然,如果您只需要将4x4划分为2x2,则根本不需要递归。
答案 1 :(得分:0)
以下可以作为开头,
scala> val m = (1 to 16).toList.grouped(4).toList
m: List[List[Int]] = List(List(1, 2, 3, 4), List(5, 6, 7, 8), List(9, 10, 11, 12), List(13, 14, 15, 16))
scala> def takeQuod(r:Int, c:Int) = m.grouped(2).toList(r).map(_.grouped(2).toList(c))
takeQuod: (r: Int, c: Int)List[List[Int]]
scala> takeQuod(0,0)
res26: List[List[Int]] = List(List(1, 2), List(5, 6))