総当たり戦の日程作成
Posted feedbacks - JavaScript
結果: 1-2 6-3 5-4 1-6 5-2 4-3 1-5 4-6 3-2 1-4 3-5 2-6 1-3 2-4 6-5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>総当たり戦の日程作成</title>
<script type="text/javascript">
/**
* 配列を回転する
*/
function rotateArray(aOld) {
var iLast = aOld.length - 1;
return [aOld[iLast]].concat(aOld.slice(0, iLast));
}
/**
* 総当たり戦のスケジュール作成
*/
function getLeageSchedule(aTeam) {
var aResult = [];
if(aTeam.length%2 != 0) {
aTeam.push('');
}
var vFirst = aTeam[0];
var aCycle = aTeam.slice(1);
var iHalfLen = aTeam.length/2;
for(var i=0; i<aCycle.length; i++) {
var aLeft = [vFirst].concat(aCycle.slice(iHalfLen).reverse());
var aRight = aCycle.slice(0, iHalfLen);
var aGames = [];
for(var j=0; j<aLeft.length; j++) {
if(aLeft[j] != '' && aRight[j] != '') {
aGames.push(aLeft[j] + '-' + aRight[j]);
}
}
aResult.push(aGames);
aCycle = rotateArray(aCycle);
}
return aResult;
}
//テスト
var aTeam = [1,2,3,4,5,6];
var aSchedule = getLeageSchedule(aTeam);
for(var i=0; i<aSchedule.length; i++) {
document.write(aSchedule[i].join(' ') + '<br/>');
}
</script>
</head>
<body>
</body>
</html>
|

ryugate
#5661()
Rating2/2=1.00
see: カークマンの組分け
[ reply ]