根据玩家的喜好创建2人团队

时间:2014-05-17 14:20:07

标签: r function combinations

目标

想象一下,有许多人必须创建两人团队。每个人都必须调用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个等效结果中的任何一个。

特殊情况

当然,如果有几种最佳组合,那么该功能应该随机选择一种最佳组合。

0 个答案:

没有答案