私は[[player1, 10], [player2, 8]]
のように見えるが、約12人のプレーヤーのような2次元アレイをとる。私はこのメソッドを除いて、私が聞いたソートで十分満足していますteamAは常により良いプレーヤーの "最初の選択"を取得します。私はteamBに一度おいてより良い選手を与える方法を見つけ出すのに苦労しています。以下は、「十分に」機能するコードです。numの配列を2つの平衡した配列に分割する
data = [["player1", 10]. ["player2", 8], ["player3", 7], ["player4", 9]];
var teamA = [];
var teamB = [];
var remaining = [];
for (item in data) {
remaining.push(data[item].slice());
}
for (i in data) {
var max = 0;
var selection = [,];
var index = -1;
for (k in remaining) {
if (remaining[k][1] > max) {
selection = remaining[k];
max = remaining[k][1];
index = k;
}
}
remaining.splice(index, 1);
if (i % 2 == 0) {
teamA.push(selection);
} else {
teamB.push(selection);
}
}
これは私がplayer2とplayer3スイッチチームである好む何teamA: [["player1, 10],["player2", 8]]
とteamB: [["player4", 9],["player3", 7]]
になります。ここで私が試したことがあります。私の脳で
// inside my first for loop
if (3 % i == 0) {
i++;
} else if (4 % i == 0) {
i--;
}
、これはうまく働いたが、すごいことをしませんでしたしている必要があります!私はチームBで9人、チームAで3人で終わった。私は運がないこのアプローチのさまざまなバリエーションを手に入れました。
任意のポインタ?
EDIT:明確にするため、データセットはソートされず、データセットの長さは常に偶数であると仮定できます。他のチームより多くの選手を持つチームは存在しません。
はあなたのプレイヤーデータはソートされた順序で到着していますか? (プレイヤーポイントでソート) – thenormalsquid
プレイヤー数の点でもチームは正確に_すべきですか?チームAが3人、チームBが4人でも問題ありませんか? – thenormalsquid
@ Thien-BachHuynh答えの編集を参照してください。 – jtsmith1287