gpt4 book ai didi

ruby-on-rails - 使用描述字段的大小作为权重将@blogs 拆分为三个 div

转载 作者:太空宇宙 更新时间:2023-11-03 16:38:23 25 4
gpt4 key购买 nike

我有一个博客项目集合。

@blogs = Blog.find(:all)

每个博客都有一个带有一些文本的描述文本字段。我想要做的是将@blogs 对象拆分为 3 个 div,但每列中的字符大致相同。

<div id="left">
#blog1 (653 characters)
</div>

<div id="center">
#blog2 (200 characters)
#blog5 (451 characters)
</div>

<div id="right">
#blog3 (157 characters)
#blog4 (358 characters)
#blog6 (155 characters)
</div>

如果不变得非常复杂并且可能效率低下,我无法弄清楚如何做到这一点。

到目前为止,我考虑过将描述字段(大小)转换为@blogs 集合中总字符数的百分比,但我如何匹配/拆分元素,以便在每列中最接近 33% - 比如一个 super 简单的俄罗斯方 block 游戏:)

有什么想法吗?

最佳答案

这里有一个不完美的快速技巧,但可能会让您非常接近。算法很简单:

  1. 按大小对项目进行排序。
  2. 将元素分成 N 个箱子。
  3. 按日期(或其他字段,根据您想要的展示顺序)对每个 bin 进行排序

这是一个概念的快速证明:

#!/usr/bin/env ruby

# mock out some simple Blog class for this example
class Blog
attr_accessor :size, :date

def initialize
@size = rand(700) + 100
@date = Time.now + rand(1000)
end
end

# create some mocked data for this example
@blogs = Array.new(10) { Blog.new }

# sort by size
sorted = @blogs.sort_by { |b| b.size }

# bin into NumBins
NumBins = 3
bins = Array.new(NumBins) { Array.new }
@blogs.each_slice(NumBins) do |b|
b.each_with_index { |x,i| bins[i] << x }
end

# sort each bin by date
bins.each do |bloglist|
bloglist.sort_by! { |b| b.date }
end

# output
bins.each_with_index do |bloglist,column|
puts
puts "Column Number: #{column+1}"
bloglist.each do |b|
puts "Blog: Size = #{b.size}, Date = #{b.date}"
end
total = bloglist.inject(0) { |sum,b| sum + b.size }
puts "TOTAL SIZE: #{total}"
end

有关更多想法,请查看 multiprocessor scheduling问题。

关于ruby-on-rails - 使用描述字段的大小作为权重将@blogs 拆分为三个 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3907710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com