我试图创建一个随机的团队生成器基于用户的姓名和团队数量的输入均匀。类似于此https://www.jamestease.co.uk/team-generator/
到目前为止,我已经将.split
和.shuffle
输入到names
数组的字符串,但不确定如何进一步进行。
names = gets.split(",").shuffle
names = ["Aaron", "Nick", "Ben", "Bob", "Ted"]
例如:
让我们假设我想要有两个团队(名称不必按照任何特定的顺序/团队):
team_1 = ["Nick", "Bob"]
team_2 = ["Aaron", "Ben", "Ted"]
任何帮助或提示将不胜感激
names = ["Aaron", "Nick", "Ben", "Bob", "Ted", 'shiva', 'hari', 'subash']
number_of_teams = 4
players_per_team = (names.count / number_of_teams.to_f).ceil
teams = []
(1..number_of_teams).each do |num|
teams[num - 1] = names.sample(players_per_team)
names = names - teams[num - 1]
end
> p teams
=> [["hari", "Ben"], ["Bob", "subash"], ["shiva", "Ted"], ["Nick", "Aaron"]]
,
names = ["Aaron", "Nick", "Ben", "Bob", "Ted", 'hari', 'subash']
然后> p teams
[["hari", "subash"], ["Bob", "Aaron"], ["Ben", "Nick"], ["Ted"]]
注意:这将导致随机玩家每次洗牌
使用array# sample从names
数组中随机选取元素:
> names = ["Aaron", "Nick", "Ben", "Bob", "Ted"]
# => ["Aaron", "Nick", "Ben", "Bob", "Ted"]
team_size = names.length/2
# => 2
> team_1 = names.sample(team_size) # pick 2 random team names
# => ["Nick", "Ben"]
> team_2 = names - team_1 # get the remaining team names from the names array
# => ["Aaron", "Bob", "Ted"]
players = %w| Wilma Hector Alfonse Hans Luigi Bo Katz Themal Dotty Billy-Bob |
num_teams = 4
(players.shuffle + ["unfilled"]*(players.size % 4)).each_slice(num_teams).to_a.transpose
#=> [["Katz", "Bo", "Hans"], ["Themal", "Luigi", "Billy-Bob"],
# ["Alfonse", "Hector", "unfilled"], ["Dotty", "Wilma", "unfilled"]]