Tag: 排列

在Ruby中查找数组的每个排列,包括子数组的排列

考虑一个数组: [4, 6, 9] 要求所有排列:(一,二和三位数) [[9], [6], [4], [9, 6], [9, 4], [6, 9], [6, 4], [4, 9], [4, 6], [9, 6, 4], [9, 4, 6], [6, 9, 4], [6, 4, 9], [4, 9, 6], [4, 6, 9]]

在构建排列时如何保持哈希关联

更新:最后可能的解决方案,但肯定不是高性能或理想的。 我创建了以下方法,让我接近我想要的。 def multi_permutations(collection) case collection.length when 1 return collection.shift[1] when 0 raise “You must pass in a multidimensional collection.” end a = collection.shift[1] b = multi_permutations(collection) return_value = [] a.each do |a_value| b.each do |b_value| return_value << [a_value] + [b_value] end end return return_value end 当我传入一个嵌套数组的哈希,看起来像这样…… my_collection[“item_9”] = [152] my_collection[“item_2”] = [139, 143, 145] […]

数组排列和比较:此数组是否包含任何这些数组?

我已经到处寻找答案了,虽然我发现了一些类似的问题,但我还是无法解决问题。 我正在构建一个Mastermind游戏。 现在我正在研究智能计算机猜测的算法。 我已经读了很多这个,但作为一个相当新的编程人员,开发这个算法(我正在使用TDD)是一个挑战。 secret_code = %w(blue blue orange orange) guess = %w(orange blue red yellow) valid_colors = %w(blue green orange purple red yellow) possible_secret_codes = valid_colors.repeated_permutation(4).to_a 我想根据我猜测后收到的反馈(得分)消除尽可能多的possible_secret_codes。 一种可能的方法(简单,尽管不是最有效)是首先关注找到正确的四种颜色,无论位置如何。 score = {exact: 1, close: 1} total_score = score[:exact] + score[:close] parts_of_secret_code = guess.repeated_permutation(total_score).to_a.uniq parts_of_secret_code将返回一个数组数组。 我们可以确定密码包括至少一个这样的arrays。 我想从possible_secret_codes中删除任何不包含至少一个这些数组的代码。 使用我提供的示例信息(假设我提供的密码,我提供的猜测,我提供的分数等),这就是parts_of_secret_code: parts_of_secret_code = [[“orange”, “orange”], [“orange”, “blue”], [“orange”, “red”], […]

理解Ruby的repeated_permutation方法的源代码

我一直在用Ruby构建一个智能的Mastermind游戏。 在我的游戏中,如果您选择让计算机扮演代码破坏者的角色,那么计算机会对代码制作者的代码进行有根据的猜测。 作为我算法的一部分,计算机首先查看所有可能代码的完整列表。 例如,如果有6种颜色可供选择(红橙蓝绿紫黄),代码由4种颜色组成(允许重复),那么要查看所有可能的代码,您可以这样做: valid_colors = %w(red orange blue green purple yellow) all_possible_codes = valid_colors.repeated_permutation(4).to_a 而且all_possible_codes将是一个填充代表每个可能代码的数组的数组。 然后计算机从该列表中删除代码,因为它从每个猜测中获得反馈。 然而,我正在做的下一件事要求我使用JRuby 1.6.6,它使用Ruby 1.8.7,它没有repeat_permutation方法。 我需要用相同的function编写自己的方法。 所以我去了这里找到的源代码: http : //www.ruby-doc.org/core-1.9.3/Array.html#method-i-repeated_permutation 不幸的是,我不明白他们在做什么,或者我怎么能通过编写自己的方法来解决这个问题。 我对编程很新,但却无法解决这个问题。 任何帮助理解源代码将不胜感激!

为什么Array#每个都返回一个具有相同元素的数组?

我正在学习each如何在ruby中工作的细节,我尝试了以下代码行: p [1,2,3,4,5].each { |element| el } 结果是一个数组 [1,2,3,4,5] 但我不认为我完全理解为什么。 为什么each相同数组的返回值? 难道每个都不提供迭代方法吗? 或者, each方法返回原始值只是通常的做法?