ruby html加减算法,确定有效的HTML结构的Ruby算法

input.group_by { |h| h[:start_p] }.

values.

flat_map do |a|

x = 1.0

a.flat_map do |h|

x /= 2.0

[[h[:start_p] += x, h[:start_t]], [h[:end_p] -= x, h[:end_t]]]

end

end.sort_by(&:first).map(&:last).join

#=> ""

的步骤如下。

b = input.group_by { |h| h[:start_p] }

#=> { 0=>[{:start_p=>0, :end_p=>100, :start_t=>"

", :end_t=>"

"},

# {:start_p=>0, :end_p=>100, :start_t=>"", :end_t=>""}],

# 10=>[{:start_p=>10, :end_p=>50, :start_t=>"

", :end_t=>"

"}],

# 20=>[{:start_p=>20, :end_p=>30, :start_t=>"", :end_t=>""}],

# 40=>[{:start_p=>40, :end_p=>50, :start_t=>"", :end_t=>""}],

# 50=>[{:start_p=>50, :end_p=>60, :start_t=>"", :end_t=>""}],

# 70=>[{:start_p=>70, :end_p=>80, :start_t=>"", :end_t=>""}],

# 8=>[{:start_p=> 8, :end_p=>99, :start_t=>"", :end_t=>""}]}

c = b.values

#=> [[{:start_p=>0, :end_p=>100, :start_t=>"

", :end_t=>"

"},

# {:start_p=>0, :end_p=>100, :start_t=>"", :end_t=>""}],

# [{:start_p=>10, :end_p=>50, :start_t=>"

", :end_t=>"

"}],

# ...

# [{:start_p=>8, :end_p=>99, :start_t=>"", :end_t=>""}]]

d = c.flat_map do |a|

x = 1.0

a.flat_map do |h|

x /= 2.0

[[h[:start_p] += x, h[:start_t]], [h[:end_p] -= x, h[:end_t]]]

end

end

#=> [[0.5, "

"], [99.5, "

"], [0.25, " "], [99.75, ""],

# [10.5, "

"], [49.5, "

"], [20.5, " "], [29.5, ""],

# [40.5, ""], [49.5, ""], [50.5, ""], [59.5, ""],

# [70.5, ""], [79.5, ""], [8.5, ""], [98.5, ""]]

的d(元组)前四个要素是理解我所采取的做法最重要的。

e = d.sort_by(&:first)

#=> [[0.25, ""], [0.5, "

"], [8.5, ""], [10.5, "

"],

# [20.5, ""], [29.5, ""], [40.5, ""], [49.5, "

"],

# [49.5, ""], [50.5, ""], [59.5, ""], [70.5, ""],

# [79.5, ""], [98.5, ""], [99.5, "

"], [99.75, ""]]

f = e.map(&:last)

#=> ["", "

", "", "

", "", "", "", "

",

# "", "", "", "", "", "", "

", ""]

f.join

#=> ""

我会详细说明上述计算d如果要求这样做。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值