在Scala中重新排序序列

Zur*_*iar 2 scala

我有一个具有以下数据顺序的序列:

A, B, C, D, E, F, G, H, I, J, K, L, M, N, O
Run Code Online (Sandbox Code Playgroud)

我需要对它进行排序,使它看起来像这样:

A, F, K, B, G, L, C, H, M, D, I, N, E, J, O
Run Code Online (Sandbox Code Playgroud)

它基本上将第一个序列分组为三个组,将它们堆叠在彼此的顶部,然后读取第一列,然后读取下一个序列以形成新序列.

ABCDE

FGHIJ

KLMNO
Run Code Online (Sandbox Code Playgroud)

我有一个概念性的理解,这可能涉及映射和压缩.我可以用命令式的方式在短时间内实现它,但我希望它作为一种功能风格.

感谢任何帮助/指针,谢谢!

om-*_*nom 8

干得好:

val xs = Seq('A, 'B, 'C, 'D, 'E, 'F, 'G, 'H, 'I, 'J, 'K, 'L, 'M, 'N, 'O)
val grouped = xs.grouped(5).toList
// List(List('A, 'B, 'C, 'D, 'E), List('F, 'G, 'H, 'I, 'J), List('K, 'L, 'M, 'N, 'O))
val result = grouped.transpose.flatten
// List('A, 'F, 'K, 'B, 'G, 'L, 'C, 'H, 'M, 'D, 'I, 'N, 'E, 'J, 'O)
Run Code Online (Sandbox Code Playgroud)