如何让这个Scala代码更短?

时间:2016-02-24 14:48:24

标签: scala matrix functional-programming spiral

输入是一个螺旋矩阵,输出应该是一个数字的字符串,显然是递增的。

 def spiral(x: List[List[Int]]): Unit = x match {
      case List() =>
        println()
      case head :: tail =>
        print(head.mkString(" ") + " ")
        spiral(tail.transpose.reverse)
    }

val matrix = List(List(1, 2, 3), List(4, 5, 6), List(7, 8, 9))
spiral(matrix)

我想在Scala中获得最短的解决方案,尽管我很难以比上面更短的方式编写它。

有没有人有任何想法? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

不是很短,但我试过

def sp(xs: List[List[Int]]): List[Int] =
   xs.collectFirst { case x => x:::sp(xs.tail.transpose.reverse) }.getOrElse(Nil)
相关问题