Ruby on rails rails中对象的动态组数组
我正试图找到最快的方式来组织要在我的视图中显示的内容集合 我有两种内容:小的和大的。小字体的大小是一个块,大字体的大小是两个块 我的页面宽度可以保持3个总块的空间,我不想要空闲空间 我试着展示一下情况Ruby on rails rails中对象的动态组数组,ruby-on-rails,arrays,Ruby On Rails,Arrays,我正试图找到最快的方式来组织要在我的视图中显示的内容集合 我有两种内容:小的和大的。小字体的大小是一个块,大字体的大小是两个块 我的页面宽度可以保持3个总块的空间,我不想要空闲空间 我试着展示一下情况 [--,-,--,-,-,-,--,-,-,--,--,-] 这是我的数组,-是一个大类型,-是一个小类型 我需要获得这个可视化 --|- --|- -|-|- --|- --|- -- 第一排很简单,我有一个大的和一个小的,所以没关系,我可以去第二排。 第二行我有2+1,所以没问题。 第三排
[--,-,--,-,-,-,--,-,-,--,--,-]
这是我的数组,-
是一个大类型,-
是一个小类型
我需要获得这个可视化
--|-
--|-
-|-|-
--|-
--|-
--
第一排很简单,我有一个大的和一个小的,所以没关系,我可以去第二排。
第二行我有2+1,所以没问题。
第三排我有小的,小的和大的。哎呀,我只有3个区块的空间,所以我必须跳过大的(最后一个),而取我在阵列中找到的第一个小的。
我跳过的大的和第一个小的一起排在第四排
逻辑是这样的,有没有办法快速有效地重新排列我的数组?当然,数组中的每个对象都有一个类型为的属性。一种方法可以是:
ari=%w(-----------)
行=[]]
直到空了?
row_length=rows.last.join.length
案例行长度
当3
排
ary = %w(-- - -- - - - -- - - -- -- - -- -- -- -- --)
rows = [[]]
until ary.empty?
row_length = rows.last.join.length
case row_length
when 3
rows << []
when 2
if ary.first == '--'
# peak ahead and consume next small element
n = ary.index { |each| each == '-' }
next rows << [] unless n
next rows.last << ary.delete_at(n)
end
end
rows.last << ary.shift
end
p rows