Arrays Ruby中的有序数组连接

Arrays Ruby中的有序数组连接,arrays,ruby,parsing,hash,Arrays,Ruby,Parsing,Hash,我有以下形式的3个数组: arr1 = [11a,12b,13c,14d,15e,16f] arr2 = [21g,22h,23i,24j,25k,26l] arr3 = [31m,31n,32o,32p,33q,34r,35s,36t,36u] 11a 21g 31m 31n 12b 22h 32o 32p 13c 23i 33q 14d 24j 34r 15e 25k 35s 16f 26l 36t 36u 您可以注意到,元素编号中的第一个数字表示数组编号。第二个数字是数组中元素的标识符

我有以下形式的3个数组:

arr1 = [11a,12b,13c,14d,15e,16f]
arr2 = [21g,22h,23i,24j,25k,26l]
arr3 = [31m,31n,32o,32p,33q,34r,35s,36t,36u]
11a
21g
31m
31n
12b
22h
32o
32p
13c
23i
33q
14d
24j
34r
15e
25k
35s
16f
26l
36t
36u
您可以注意到,元素编号中的第一个数字表示数组编号。第二个数字是数组中元素的标识符

我需要以以下形式连接这些数组的元素:

arr1 = [11a,12b,13c,14d,15e,16f]
arr2 = [21g,22h,23i,24j,25k,26l]
arr3 = [31m,31n,32o,32p,33q,34r,35s,36t,36u]
11a
21g
31m
31n
12b
22h
32o
32p
13c
23i
33q
14d
24j
34r
15e
25k
35s
16f
26l
36t
36u
我试图通过将数据连接到一个数组来组织数据。我是这样做的:

res_array=[]
last_element = res3.index(res3.last)
i=-1
loop do
i+=1
res_array<<arr1[i]
res_array<<arr2[i]
res_array<<arr3[i]
break if i >= last_element
end
我的代码不好,因为从3开始的元素没有写入正确的块

我想我需要创建一个额外的循环来执行res_array试试这个

[*arr1, *arr2, *arr3].sort_by { |item| [item[1], item[-1], item[0]]  }
[
    [ 0] "11a",
    [ 1] "21g",
    [ 2] "31m",
    [ 3] "31n",
    [ 4] "12b",
    [ 5] "22h",
    [ 6] "32o",
    [ 7] "32p",
    [ 8] "13c",
    [ 9] "23i",
    [10] "33q",
    [11] "14d",
    [12] "24j",
    [13] "34r",
    [14] "15e",
    [15] "25k",
    [16] "35s",
    [17] "16f",
    [18] "26l",
    [19] "36t",
    [20] "36u"
]

您的代码很糟糕,因为您正在使用数组和字符串的疯狂组合来表示复杂的数据类型!为您的数据定义一个类,并使用适当的对象。“我需要以以下形式连接元素”-好的,但规则是什么?我想得到一些按块号和位置号排序的块。块的序列号由第二位数字定义。块中的位置由第一个字符确定。例如“32o”元素。3-位置号2-块号o-随机文本