Mic*_*ant 3 ruby arrays combinations tuples
我有一个字符串数组:
["ABC", "GHI"]
Run Code Online (Sandbox Code Playgroud)
ad我希望所有'字母'组合,从左到右读取,即
["AG", "AH", "AI", "BG", "BH", "BI", "CG", "CH", "CI"]
Run Code Online (Sandbox Code Playgroud)
但不是
"GA", "GB", "HA", etc.
Run Code Online (Sandbox Code Playgroud)
同样的,
["ABC", "DEF", "GHI"]
Run Code Online (Sandbox Code Playgroud)
应该生成
["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"]
Run Code Online (Sandbox Code Playgroud)
但不是
"DAG", "GAD" or "GFA"
Run Code Online (Sandbox Code Playgroud)
这就是你需要的:
a = ["ABC","DEF", "GHI"]
a.map(&:chars).reduce(&:product).map(&:join)
Run Code Online (Sandbox Code Playgroud)
顺便说一句,您在示例输出中出现了一些错误,根据您的规范,永远不应该有以E或F开头的字符串.所以我想而不是"ECH", "ECI", "FCG", "FCH", "FCI"你的意思"CEH", "CEI", "CFG", "CFH", "CFI".
编辑:
chars返回一个枚举器,而不是一个数组,在2.0之前的Ruby版本中,它们没有product方法.所以在这些版本中,只需使用to_a如下:
a.map(&:chars).map(&:to_a).reduce(&:product).map(&:join)
Run Code Online (Sandbox Code Playgroud)