目标
想象一下,有许多人必须创建两人团队。每个人都必须调用R函数并输入两个参数; 1)他们自己的名字和2)其他人的名字按照他们的偏好顺序。当每个人投票选出一个功能时,就会提取最佳的团队组合。目标是构建这个功能。
示例
约翰,彼得,玛丽和杰西卡需要建立两个人的团队。约翰优先想和彼得一起,与玛丽谦虚,不愿与杰西卡在一起。因此,John输入以下代码行:
Create_binom(MyName ='John',Preferences = c('Peter','Mary','Jessica'))
其他三个玩家也这样做,他们输入他们的名字和他们的偏好:
Create_binom(MyName ='Mary',Preferences = c('Peter','Jessica','John'))
Create_binom(MyName ='Peter',Preferences = c('John','Jessica','Mary'))
Create_binom(MyName ='Jessica',Preferences = c('Mary','John','Peter'))
在最后一次通话时(当最后一位玩家调用该功能输入其名称和偏好时),该功能会识别出所有玩家都表明了他们的偏好,并且该功能创建了2人团队的最佳组合并打印出来。 最佳组合被定义为最小化队友在所有球员偏好中的位置总和的组合。我们将此总和称为组合的“索引”。
组合索引
组合(约翰和玛丽)和(彼得和杰西卡)的关联指数2 + 3 + 2 + 3 = 10.
组合(玛丽与杰西卡)和(彼得与约翰)有关联索引1 + 1 + 2 + 1 = 5.这个组合只有一个玩家(玛丽)不会和她最好的朋友一起玩!这是我的例子中最好的解决方案。
当然,在一个完美的世界中,每个人都会与他/她最好的朋友联系在一起,而完美组合的指数将等于玩家的数量,但这通常是不可能的。
示例的输出(示例的最佳组合)
这是函数应打印出来的内容:
列表(c(“彼得”,“约翰”),c(“玛丽”,“杰西卡”))
...或8个等效结果中的任何一个。
特殊情况
当然,如果有几种最佳组合,那么该功能应该随机选择一种最佳组合。