Tag: 组合

ruby – 如何从字符串数组生成可能的顺序字母组合?

我有一个字符串数组: [“ABC”, “GHI”] ad我想要所有’字母’组合,从左到右读取,即 [“AG”, “AH”, “AI”, “BG”, “BH”, “BI”, “CG”, “CH”, “CI”] 但不是 “GA”, “GB”, “HA”, etc. 同样的, [“ABC”, “DEF”, “GHI”] 应该生成 [“ADG”, “ADH”, “ADI”, “AEG”, “AEH”, “AEI”, “AFG”, “AFH”, “AFI”, “BDG”, “BDH”, “BDI”, “BEG”, “BEH”, “BEI”, “BFG”, “BFH”, “BFI”, “CDG”, “CDH”, “CDI”, “CEG”, “CEH”, “CEI”, “CFG”, “CFH” “CFI”] 但不是 “DAG”, “GAD” or “GFA”

使用Ruby在数组中查找大小为N的所有子集

给定一个数组[‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’] ,我如何获得包含两个,三个和四个元素的所有子集的列表? 我是Ruby的新手(从C#转移)并且不确定’Ruby Way’会是什么。

从Ruby中的列表中获取对的所有组合

我有一个元素列表(例如数字),我想检索所有可能的对的列表。 我怎么能用Ruby做到这一点? 例: l1 = [1, 2, 3, 4, 5] 结果: l2 #=> [[1,2], [1,3], [1,4], [1,5], [2,3], [2,4], [2,5], [3,4], [3,5], [4,5]]

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

是)我有的: 假设我有这样的哈希值,各种值属于一个参数。 a = {} a[:bitrate] = [“100”, “500”, “1000”] a[:fps] = [“15”, “30”] a[:qp] = [“20”, “30”] 我需要的: 我需要一些方法来迭代地获得这些值的所有可能组合,因此,使用所有参数/值对: bitrate = 100 , fps = 15 , qp = 20 bitrate = 500 , fps = 15 , qp = 30 … 参数的数量(即键)和值的数量(即值arrays的长度)事先是未知的。 理想情况下,我会做类似的事情: a.foo do |ret| puts ret.keys # => [“bitrate”, “fps”, “qp”] […]

智能地生成组合的组合

假设我有一个30个学生的class级,并希望生成一种可能的方式,将它们划分为5个组(顺序无关紧要)。 我知道如何找到学生的所有组合,分别组成一个小组( http://www.merriampark.com/comb.htm )。 通过使用该迭代器和一些递归,我可以找到可能的组合组合的PERMUTATIONS。 但是,选择组的顺序不相关,我希望最小化执行时间。 那么如何找到可能组的独特组合? 上面的算法使用词典排序来避免生成重复的组合……有没有办法可以在组上而不是在对象上使用这个想法? 我很了解Ruby,Java / Python也不太了解。 提前感谢您的任何建议!

生成具有给定范围内的长度的数组的所有可能组合

如何生成长度在给定范围内的数组元素的所有可能组合? 例如: (‘a’..’f’).to_a.all_possibilities(3, 5) 应该产生如下数组: [‘abc’, ‘abd’, ‘abe’, ‘abf’, …, ‘abcde’, ‘abcdf’, ‘abcda’, …] 包括从”abc” (三个字符)到最后一个可能的组合(‘a’..’f’).to_a ,长度为五个字符。 我不知道该怎么做。 有帮助吗?

像tap这样的组合方法,但能够返回不同的值吗?

我正在经历一个试图避免临时变量和过度使用条件的阶段,我可以使用更流畅的编码风格。 我非常喜欢在我想要获得我需要返回的值的地方使用#tap ,但在返回它之前先做一些事情。 def fluid_method something_complicated(a, b, c).tap do |obj| obj.update(:x => y) end end 比。 程序: def non_fluid_method obj = something_complicated(a, b, c) obj.update(:x => y) obj # <= I don't like this, if it's avoidable end 显然上面的例子很简单,但这仍然是ruby社区中非常常见的编码风格。 我有时会使用#inject通过一系列filter传递一个对象: things.inject(whatever) do |obj, thing| thing.filter(obj) end 比。 程序: obj = whatever things.each do |thing| obj […]

ruby中字符串中所选字符替换的所有可能组合

我想知道是否有一种简单的方法可以用简单的方式在ruby中完成所选字符替换的每个组合。 一个例子: string = “this is a test” subs = [‘a’=>’@’,’i’=>’!’,’s’=>’$’] subs.combination.each { |c| string.gsub c } 会屈服 “this is @ test” “th!s !sa test” “thi$ i$ a te$t” “th!s !s @ test” “thi$ i$ @ te$t” “th!$ !$ a te$t” “th!$ !$ @ te$t” 谢谢您的帮助!

在Ruby中将数组数组合并到只有前向的所有可能组合中

我有一个数组数组,如下所示: [[‘1′,’2’],[‘a’,’b’],[‘x’,’y’]] 我需要将这些数组合并为一个字符串,其中包含所有三个集合的所有可能组合,仅向前。 我已经看到了很多关于任何顺序的所有可能组合的例子,这不是我想要的。 例如,我不希望第一组中的任何元素出现在第二组之后,或者第三组中的任何元素出现在第一组或第二组之前,依此类推。 因此,对于上面的示例,输出将是: [‘1ax’, ‘1ay’, ‘1bx’, ‘1by’, ‘2ax’, ‘2ay’, ‘2bx’, ‘2by’] 数组的数量和每组的长度是动态的。 有人知道如何在Ruby中解决这个问题吗?