我有一个具有以下数据顺序的序列:
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)
我有一个概念性的理解,这可能涉及映射和压缩.我可以用命令式的方式在短时间内实现它,但我希望它作为一种功能风格.
感谢任何帮助/指针,谢谢!
干得好:
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)