运维开发网

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

运维开发网 https://www.qedev.com 2020-07-29 19:34 出处:网络 作者:运维开发网整理
我有一个字符串数组: ["ABC", "GHI"] ad我想要所有’字母’组合,从左到右读取,即 ["AG", "AH", "AI", "BG", "BH", "BI", "CG", "CH", "CI"] 但不是 "GA", "GB", "HA", etc. 同样的, ["ABC", "DEF", "GHI"] 应该生成 ["ADG", "ADH", "ADI", "AEG", "AEH", "
我有一个字符串数组:

["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"
这就是你需要的:

a = ["ABC","DEF", "GHI"]
a.map(&:chars).reduce(&:product).map(&:join)

顺便说一句,您在示例输出中出现了一些错误,根据您的规范,永远不应该有以E或F开头的字符串.所以我认为而不是“ECH”,“ECI”,“FCG”,“FCH”,“FCI”,而不是“CEH”,“CEI”,“CFG”,“CFH”,“CFI”.

编辑:

chars返回一个Enumerator,而不是一个数组,而在2.0之前的Ruby版本中,它们没有产品方法.所以在这些版本中,只需像这样使用to_a:

a.map(&:chars).map(&:to_a).reduce(&:product).map(&:join)
0

精彩评论

暂无评论...
验证码 换一张
取 消