问题
我在 Ruby 中实现了一个团队分配算法,我必须实现一些功能,当给定学生的 id 对列表时,应该将学生分组在一起。
实现这一目标的最有效结构是什么?
我正在考虑一个散列,其中键是学生 ID,值是某个学生无法分组的所有学生 ID 的数组。
例如,如果 CSV 文件包含以下内容:
我想得到以下哈希:
{3=>[4,6,8], 4 =>[7,1], 5 =>[2]}
但是,我想不出一种用 CSV 文件中的信息填充散列的有效方法。该文件每行有两个值。
之后最重复的操作是检查给定 ID 是否存在于给定学生的禁止配偶名单中。
回答
这应该适合你:
- require 'CSV'
- csv_string = %q(3,4
- 3,6
- 3,8
- 4,7
- 4,1
- 5,2 )
- CSV.parse(csv_string, converters: :numeric)
- .group_by(&:first)
- .transform_values { |values| values.map(&:last) }
复制代码
|