我一直在用 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,它使用没有repeated_permutation
方法的 Ruby 1.8.7。我需要编写具有相同功能的自己的方法。
所以我去了这里找到的源代码:http ://www.ruby-doc.org/core-1.9.3/Array.html#method-i-repeated_permutation
不幸的是,我不明白他们在做什么,也不明白如何通过编写自己的方法来解决这个问题。我对编程很陌生,无法弄清楚这一点。任何有助于理解源代码的帮助将不胜感激!