アイテムを繰り返さずにアレイからn個のユニークペアを生成しようとすると、アレイ内のすべてのアイテムを一度しか使用しないペアが生成されます。アレイからユニークペアのn個のセットを生成する
私はjavascriptで作業しています。 、
arrPlayers = [1,2,3,4,5,6,7,8,9,10]
matchups-week-1 = [[1,2],[3,4],[5,6],[7,8],[9,10]]
対戦週2 = [[1,3]:
私が使用していたコードは次のようにアップつまずいます:私は、の配列が、私は次のように生成する必要がある10個の項目が言ってい[2,4]、[5,7]、[6,8]、[ooops !! ]は[9,10]をもう一度行うことができないので、このセットは機能しません。
9,10ペアでコードがコーナーにどのように塗りつぶされているのを確認できますか? 9,10は一意ではないので、4ペアしか生成できません。
これはうまくいくと思いましたが、私は立ち往生しています。この "4つのコーナー"のコーナーに自分自身を塗りつぶしていないコードに関するアイディアですか?
私が使用しているコード。 ...確かに私はストローで握っている。だから私はその質問をしている。
function CreateMatchups(player_ids){
//Create array of PLAYER IDs where checkbox = checked
arrPlayers = player_ids.split(", ");
arrOpponents = arrPlayers;
arrPrevUsed = GetPrevUsedPairs();
var arrUsed = [];
var arrTempMatchups = [];
var intNumPlayers = arrPlayers.length;
var blnOddNumberOfPlayers = isOdd(intNumPlayers);
if(blnOddNumberOfPlayers){
arrPlayers.push(9999); //bogus id for placeholder player - fix this
}
for (var i = 0; i < arrPlayers.length; i++) {
player_id = arrPlayers[i];
if(!arrUsed.contains(player_id)){
for (var j = 0; j < arrOpponents.length; j++) {
opponent_id = arrOpponents[j];
if((!arrUsed.contains(opponent_id)) && (!arrUsed.contains(player_id)) && (player_id != opponent_id)){
matchup = player_id + "vs" + opponent_id;
if(!arrPrevUsed.contains(matchup)) {
arrTempMatchups.push(matchup);
arrUsed.push(player_id);
arrUsed.push(opponent_id);
}
}
}
}
}
return arrTempMatchups;
}
どのように一致するのかわかりません。 これは「奇妙で」「偶数」ですか? – John
あなたが試したことを示すために使用しているコードを投稿することをお勧めします。 – jmugz3
すべてのペアは一意でなければなりません。 [9,10]は、結果全体に一度しか現れません。 – rgalpin