相关疑难解决方法(0)

Ruby中数组哈希的所有可能组合

是)我有的:

假设我有这样的哈希值,各种值属于一个参数.

a = {}
a[:bitrate] = ["100", "500", "1000"]
a[:fps] = ["15", "30"]
a[:qp] = ["20", "30"]
Run Code Online (Sandbox Code Playgroud)

我需要的:

我需要一些方法来迭代地获得这些值的所有可能组合,因此,使用所有参数/值对:

  • bitrate = 100,fps = 15,qp = 20
  • bitrate = 500,fps = 15,qp = 30
  • ...

参数的数量(即键)和值的数量(即值阵列的长度)事先是未知的.理想情况下,我会做以下事情:

a.foo do |ret|
  puts ret.keys   # => ["bitrate", "fps", "qp"]
  puts ret.values # => ["100", "15", "20"]
end
Run Code Online (Sandbox Code Playgroud)

...为每个可能的组合调用块.我该如何定义foo


我(可能)不需要的东西:

现在,我知道这一点:将数组数组合成所有可能的组合,仅在Ruby中转发,建议类似于:

a.first.product(*a[1..-1]).map(&:join)
Run Code Online (Sandbox Code Playgroud)

但是这只对数组中的值和数组进行操作,我需要对参数名称的原始引用.

ruby hash combinations

19
推荐指数
1
解决办法
2666
查看次数

从Ruby中的多维数组创建排列

我在Ruby中有以下多维数组:

[[1,2], [3], [4,5,6]]
Run Code Online (Sandbox Code Playgroud)

我需要输出以下内容:

[[1,3,4], [1,3,5], [1,3,6], [2,3,4], [2,3,5], [2,3,6]]
Run Code Online (Sandbox Code Playgroud)

我试过创建一个递归函数,但我运气不好.

是否有任何Ruby功能可以帮助解决这个问题?或者是递归执行它的唯一选择?

谢谢

ruby arrays

13
推荐指数
1
解决办法
2113
查看次数

多次迭代

是否有一种更简单,更清晰的方式来编写这样的代码:

(1..10).each do |i| 
  (1..10).each do |j|
    (1..10).each do |k|
      (1..10).each do |l|
         puts "#{i} #{j} #{k} #{l}"
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

理想情况下,我可以做...

(1..10).magic(4) { |i, j, k, l| puts "#{i} #{j} #{k} #{l}" }
Run Code Online (Sandbox Code Playgroud)

甚至更好......

magic(10, 4) { |i, j, k, l| puts "#{i} #{j} #{k} #{l}" }
Run Code Online (Sandbox Code Playgroud)

如果没有内置的东西,我怎么写一个类似上一个的方法?

ruby iteration loops coding-style

7
推荐指数
1
解决办法
366
查看次数

标签 统计

ruby ×3

arrays ×1

coding-style ×1

combinations ×1

hash ×1

iteration ×1

loops ×1