我正在Ruby中实现团队分配算法,并且必须要实现以下功能:在提供功能的情况下,这些学生的ID对应该将这些学生分组在一起。
最有效的结构是什么?
我想到的是哈希,其中的键是学生ID,值是一个数组,其中包含无法将特定学生分组的所有学生的ID。例如,如果CSV文件具有以下内容:
3,4
3,6
3,8
4,7
4,1
5,2
我想获得以下哈希:
{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) }