Arrays Ruby中的有序数组连接
我有以下形式的3个数组: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 您可以注意到,元素编号中的第一个数字表示数组编号。第二个数字是数组中元素的标识符
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-随机文本