2016-02-24 2 views
0

Вход представляет собой спиральную матрицу, и выход должен быть строкой чисел в порядке возрастания.Как сделать код Scala еще более коротким?

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, хотя я изо всех сил, чтобы записать его в более короткий путь, чем выше.

У кого-нибудь есть идеи? Спасибо заранее.

+5

Я голосую, чтобы закрыть этот вопрос не по теме, потому что она должна быть на http://codegolf.stackexchange.com/ –

+0

Также 'если (х == Nil) println() else {print (x.head.mkString ("") + ""); spiral (x.tail.transpose.reverse)} 'короче. но, как я сказал выше, это просто codegolfing? –

+0

Действительно. Извините за размещение вне темы, я только начал искать свой путь на сайте. – aaxtract

ответ

1

Не совсем короче, но я попытался

def sp(xs: List[List[Int]]): List[Int] = 
    xs.collectFirst { case x => x:::sp(xs.tail.transpose.reverse) }.getOrElse(Nil) 
+0

Спасибо в любом случае, это на самом деле короче. Я попробовал это с совершенно другой точки зрения. – aaxtract