package Ġcom . h se . r pp Ċ Ċ const Ġval ĠNO _ V OTE Ġ= Ġ 0 Ċ Ċ class ĠRank ed Poll Ġ( val Ġvariants : ĠList < String > ){ ĊĊĠĠĠ Ġprivate Ġval Ġvotes : ĠMutable List < List < Int >> Ġ= Ġmutable ListOf () ĊĊĠĠĠ Ġconstructor ( var arg Ġargs : ĠString ): Ġthis ( listOf < String >(* args )) ĊĊĠĠĠ Ġfun Ġadd Vote ( indexes : ĠList < Int > ){ ĊĠĠĠĠĠĠĠ Ġvotes . add ( indexes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Vote ( ind : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġval Ġvote Ġ= ĠMutable List ( variants . size ) Ġ{ ĠNO _ V OTE Ġ} ĊĠĠĠĠĠĠĠ Ġvote [ ind ] Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġthis . add Vote ( vote ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// https :// en . wikipedia . org / wiki / Cop el and % 2 7 s _ method ĊĠĠĠ Ġfun Ġwinner (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscores Ġ= ĠMutable List ( variants . size ) Ġ{ Ġ 0 Ġ} ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. variants . last Index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( j Ġin Ġ( i Ġ+ Ġ 1 ) .. variants . last Index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwinner Ġ= Ġpair wise Winner ( i , Ġj ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwinner Ġ< Ġ 0 Ġ-> Ġscores [ i ] Ġ+= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwinner Ġ== Ġ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscores [ i ] Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscores [ j ] Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwinner Ġ> Ġ 0 Ġ-> Ġscores [ j ] Ġ+= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġm Ġ= Ġscores . max OrNull () !! ĊĠĠĠĠĠĠĠ Ġif Ġ( scores . filter Ġ{ Ġit Ġ== Ġm Ġ}. size Ġ!= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġvariants [ scores . indexOf ( m )] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpair wise Winner ( i : ĠInt , Ġj : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġscore Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( vote Ġin Ġvotes ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġix Ġ= Ġvote [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġj x Ġ= Ġvote [ j ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġix Ġ== ĠNO _ V OTE Ġ|| Ġ( jx Ġ!= ĠNO _ V OTE Ġ&& Ġix Ġ> Ġj x ) Ġ-> Ġscore Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġj x Ġ== ĠNO _ V OTE Ġ|| Ġ( ix Ġ!= ĠNO _ V OTE Ġ&& Ġix Ġ< Ġj x ) Ġ-> Ġscore Ġ-= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġscore ĊĠĠĠ Ġ} Ċ }