我想将数字和输出格式化为四组,这样看起来如下:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16我做了:
def convert_to_array(str)
arr = str.split(' ')
new_arr = arr.sort_by(&:to_i)
#format(new_arr.to_s)
end
def str
string = <<-_END_
4 6 2 14
15 8 13 1
10 5 9 12
7 11 16 3
_END_
convert_to_array(string)
end这方面的产出如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16我使用pp作为format方法:
require 'pp'
def format(input)
string = input.to_s
pp string
end但是,它的输出如下:
"[\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\", \"12\
", \"13\", \"14\", \"15\", \"16\"]"如何修改格式,以便将其分成四组,如上面的示例所示?
发布于 2016-05-12 18:43:06
只需将切片添加到您的方法中即可。因为这会返回一个枚举数,所以您需要对一个进行调整。
def convert_to_array(str)
str.split.sort_by(&:to_i).each_slice(4).to_a
end
convert_to_array(string)
#=> [["1", "2", "3", "4"],
# ["5", "6", "7", "8"],
# ["9", "10", "11", "12"],
# ["13", "14", "15", "16"]] 请注意,没有参数的String#split与split(/\s+/)相同。
要显示结果:
convert_to_array(string).each { |a| puts a.join(' ') }
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16为
string
#=> " 4 6 2 14\n 15 8 13 1\n 10 5 9 12\n 7 11 16 3\n"我们计算
a = string.split
#=> ["4", "6", "2", "14", "15", "8", "13", "1",
# "10", "5", "9", "12", "7", "11", "16", "3"]
b = a.sort_by(&:to_i)
#=> ["1", "2", "3", "4", "5", "6", "7", "8", "9",
# "10", "11", "12", "13", "14", "15", "16"]
c = b.each_slice(4)
#=> #<Enumerator: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10",
# "11", "12", "13", "14", "15", "16"]:each_slice(4)>
c.to_a
#=> [["1", "2", "3", "4"],
# ["5", "6", "7", "8"],
# ["9", "10", "11", "12"],
# ["13", "14", "15", "16"]] 发布于 2016-05-12 18:25:58
您可以使用each_slice
def put_slices(array)
array.each_slice(4) do |slice|
puts slice.join(' ')
end
end
put_slices(str)https://stackoverflow.com/questions/37194478
复制相似问题