1

ゲームのリストをロードする配列があります。現在、次のようにソートされています。

A   B    C
D   E    F

ここで、次のように並べ替えたいと思います。

A  D
B  E
C  F

どうすればこれを行うことができますか? チャンクとスライスを使用してみましたが、成功しませんでした。

4

2 に答える 2

6

シンプルなスライスと転置:

a = %w{A B C D E F}
p a.each_slice(3).to_a.transpose

# => [["A", "D"], ["B", "E"], ["C", "F"]]

each_slice(3) は、ソース配列と最終行列の次元に合わせて調整する必要があります。

于 2012-10-15T13:00:27.713 に答える
3

@Jan のコメントにスポットを当てる

input = "A   B    C\nD   E    F"
output = input.split(/\n+/).map{|e| e.split(/\s+/)}.transpose
p output

出力:

[["A", "D"], ["B", "E"], ["C", "F"]]

そして、あなたが述べたように提供されたものが単なる配列である場合、それはさらに簡単です

input = [ ["A", "B", "C"], ["D", "E", "F"] ]
output = input.transpose
p output
于 2012-10-15T13:07:22.630 に答える