def zigzag(n: Int): Array[Array[Int]] = { val l = for (i <- 0 until n*n) yield (i%n, i/n) val lSorted = l.sortWith { case ((x,y), (u,v)) => if (x+y == u+v) if ((x+y) % 2 == 0) x res(y)(x) = i } res } zigzag(5).foreach{ ar => ar.foreach(x => print("%3d".format(x))) println }