字符串交叉产品

Gio*_*ino 1 ruby arrays string

使用:

digits   = '123456789'
cols     = 'ABCDEFGHI'
Run Code Online (Sandbox Code Playgroud)

我想要输出:

["1A", "1B", "1C", "1D", "1E", "1F", "1G", "1H", "1I", "2A", "2B", "2C", "2D", "2E", "2F", "2G", "2H", "2I", "3A", "3B", "3C", "3D", "3E", "3F", "3G", "3H", "3I", "4A", "4B", "4C", "4D", "4E", "4F", "4G", "4H", "4I", "5A", "5B", "5C", "5D", "5E", "5F", "5G", "5H", "5I", "6A", "6B", "6C", "6D", "6E", "6F", "6G", "6H", "6I", "7A", "7B", "7C", "7D", "7E", "7F", "7G", "7H", "7I", "8A", "8B", "8C", "8D", "8E", "8F", "8G", "8H", "8I", "9A", "9B", "9C", "9D", "9E", "9F", "9G", "9H", "9I"]

我的代码是:

def cross_prod(str_1 , str_2)
  res = []
  str_1.each_char do |a|
    str_2.each_char do |b|
     res << (a + b)
    end
  end
  return res
end

cross_prod(digits, cols)
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来实现此方法?在Python中,它涉及一行代码[a+b for a in A for b in B].

Ste*_*fan 7

这可行:

digits.chars.product(cols.chars).map(&:join)
#=> ["1A", "1B", "1C", "1D", "1E", "1F", "1G", "1H", "1I",
#    "2A", "2B", "2C", "2D", "2E", "2F", "2G", "2H", "2I",
#    "3A", "3B", "3C", "3D", "3E", "3F", "3G", "3H", "3I",
#    "4A", "4B", "4C", "4D", "4E", "4F", "4G", "4H", "4I",
#    "5A", "5B", "5C", "5D", "5E", "5F", "5G", "5H", "5I",
#    "6A", "6B", "6C", "6D", "6E", "6F", "6G", "6H", "6I",
#    "7A", "7B", "7C", "7D", "7E", "7F", "7G", "7H", "7I",
#    "8A", "8B", "8C", "8D", "8E", "8F", "8G", "8H", "8I",
#    "9A", "9B", "9C", "9D", "9E", "9F", "9G", "9H", "9I"]
Run Code Online (Sandbox Code Playgroud)