【发布时间】:2018-11-23 00:04:10
【问题描述】:
我有一个包含布尔键的哈希数组,例如
[{"n"=>"img01", "h"=>1},
{"n"=>"img02", "h"=>1},
{"n"=>"img03", "h"=>0},
{"n"=>"img04", "h"=>1}]
我的目标是拆分具有以下 h 键条件之一的组:
[1,1,1] 或 [1,0] 或 [0,1] 或 [1,1] 或单个值,如果这些条件中的任何一个都不可能。在此示例中,拆分数组的唯一方法是
[{"n"=>"img01", "h"=>1},{"n"=>"img02", "h"=>1}]
和
[{"n"=>"img03", "h"=>0},{"n"=>"img04", "h"=>1}]
但首先它应该搜索以这种方式完成的数组
[{"n"=>"img01", "h"=>1},
{"n"=>"img02", "h"=>1},
{"n"=>"img03", "h"=>1}]
然后寻找其他组合
我尝试将原始数组拼接成 3 个一组(在测试中只使用了 1 和 0 的数组)
irb(main):030:0> b=a.each_slice(3).to_a => [[0, 1, 1], [1, 1, 0], [0, 0, 0], [0]]
然后将结果先对抗最大数组[1,1,1],如果不是则再尝试拆分
irb(main):055:0> (b[0] - [1,1,1]).count => 1
所以将最后一个值移动到下一个子数组
irb(main):060:0> b[1].push(b[0].pop)=> [1, 1, 0, 1]
在第一个二元数组中重复搜索
(irb(main):061:0> b[0] - [1,0]).count
(irb(main):061:0> b[0] - [1,1]).count
(irb(main):061:0> b[0] - [0,1]).count
然后合并另一个子数组,再次拆分,重复搜索,但肯定是 搞砸了
【问题讨论】:
-
很不清楚你在问什么。 [1,1,1] 是什么?数组表示什么/
-
我已经编辑了这个问题,希望更清楚。它是一组图片,我必须根据这些组是否包含水平或垂直图片来组成某些组
-
连续3个零应该怎么办?
-
它应该被分成 3 个不同的子数组,每个子数组只有一个哈希
-
1.告诉我们你尝试了什么。 SO 不是要求他人免费为您编写代码的服务。 2.如果保证输入有4个元素,使用暴力破解会更容易。