簡體   English   中英

如何從 ruby 中的數組/哈希中獲取所有可能的字符串組合?

[英]How to get every possible combination of string from array/hash in ruby?

我是初級后端嘗試 ruby。我有這些數據:

people = ["Andy", "Budi", "Charles"]
vehicles = ["Bicycle", "Car", "Bajaj"]
destinations = ["USA", "Bali", "Paradise"]


string_format = %{person} ride %{vehicle} to %{destination}

如何使用 ruby 獲取字符串的所有可能組合? 預計 output 共 27 項(3 x 3 x 3):

1. Andy ride Bicycle to USA
2. Andy ride Bicycle to Bali
3. Andy ride Bicycle to Paradise
4. Andy ride Car to USA

...

27. Charles ride Bajaj to Paradise

代碼應該是可擴展的,因為稍后我們將添加更多數組,例如:

adjectives = ["happily", "sadly"]

string_format = %{destination} has been visited by %{person} using %{his_or_her} %{vehicle} %{adjectives}

您可以使用Array#product返回包含所有組合的數組:

people.product(vehicles, destinations)
# => [["Andy", "Bicycle", "USA"], ["Andy", "Bicycle", "Bali"], ["Andy", "Bicycle", "Paradise"], ["Andy", "Car", "USA"], ["Andy", "Car", "Bali"], ["Andy", "Car", "Paradise"], ["Andy", "Bajaj", "USA"], ["Andy", "Bajaj", "Bali"], ["Andy", "Bajaj", "Paradise"], ["Budi", "Bicycle", "USA"], ["Budi", "Bicycle", "Bali"], ["Budi", "Bicycle", "Paradise"], ["Budi", "Car", "USA"], ["Budi", "Car", "Bali"], ["Budi", "Car", "Paradise"],["Budi", "Bajaj", "USA"],["Budi", "Bajaj", "Bali"],["Budi", "Bajaj", "Paradise"],["Charles", "Bicycle", "USA"],["Charles", "Bicycle", "Bali"],["Charles", "Bicycle", "Paradise"],["Charles", "Car", "USA"],["Charles", "Car", "Bali"],["Charles", "Car", "Paradise"],["Charles", "Bajaj", "USA"],["Charles", "Bajaj", "Bali"],["Charles", "Bajaj", "Paradise"]]

這可以像這樣用於 output 你的列表:

people.product(vehicles, destinations).each do |person, vehicle, destination|
  puts "#{person} ride #{vehicle} to #{destination}"
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM