|
[Date Index]
[Thread Index]
[Author Index]
Re: Ten chess-players...
- To: mathgroup at smc.vnet.net
- Subject: [mg104296] Re: [mg104219] Ten chess-players...
- From: John Fultz <jfultz at wolfram.com>
- Date: Sun, 25 Oct 2009 23:26:42 -0500 (EST)
- Reply-to: jfultz at wolfram.com
On Sat, 24 Oct 2009 02:38:47 -0400 (EDT), cmpbrn at gmail.com wrote:
> Given 10 (1 to 10) chess-players, in one day they play 5 games (1-2,
> 6-10, 5-7, 4-8, 3-9).
> Then they need 8 more days to complete the championship (one gamer
> must play one time against any other player):
> 1-3, 2-10, 6-7, 5-8, 4-9
> 1-4, 2-3, 7-10, 6-8, 5-9
> 1-5, 2-4, 3-10, 7-8, 6-9
> 1-6, 2-5, 3-4, 7-9, 8-10
> 1-7, 2-6, 3-5, 4-10, 8-9
> 1-8, 2-7, 3-6, 4-5, 9-10
> 1-9, 2-8, 3-7, 4-6, 5-10
> 1-10, 2-9, 3-8, 4-7, 5-6
>
> How can I get the 10*(10-1)/2 = 45 pairs distributed in the 9x5
> matrix?
> What's about any other even number of players?
>
> Bruno
I've done quite the same thing for Scrabble competitions. Here's an=
algorithm
for round robin pairing for any number of players:
http://en.wikipedia.org/wiki/Round-robin_tournament#Scheduling_algorithm
And here's a simple function which implements the algorithm for a complete=
round
robin. For an odd number of players, just invent a "bye" player (bye's=
opponent
gets that round off) and pair as for even players.
Pair[n_Integer?EvenQ] := Table[
Prepend[RotateRight[Range[n - 1] + 1, round - 1],
1][[{couple, -couple}]],
{round, n - 1},
{couple, n/2}]
An example output:
In[28]:= Pair[8] // Grid
Out[28]=
{1,8}=09{2,7}=09{3,6}=09{4,5}
{1,7}=09{8,6}=09{2,5}=09{3,4}
{1,6}=09{7,5}=09{8,4}=09{2,3}
{1,5}=09{6,4}=09{7,3}=09{8,2}
{1,4}=09{5,3}=09{6,2}=09{7,8}
{1,3}=09{4,2}=09{5,8}=09{6,7}
{1,2}=09{3,8}=09{4,7}=09{5,6}
Sincerely,
John Fultz
jfultz at wolfram.com
User Interface Group
Wolfram Research, Inc.
Prev by Date:
Re: Mathematica blogs
Next by Date:
Re: Mathematica7 doesn't copy/paste metafile in vector format
Previous by thread:
Re: Re: Ten chess-players...
Next by thread:
Symbolic matrix algebra - Sumopack
|