<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments on: DV. Dealing with Chaos</title>
	<atom:link href="http://mathfactor.uark.edu/2008/05/05/dw-dealing-with-chaos/feed/" rel="self" type="application/rss+xml" />
	<link>http://mathfactor.uark.edu/2008/05/05/dw-dealing-with-chaos/</link>
	<description>The Math Factor Podcast Site</description>
	<pubDate>Wed, 20 Aug 2008 12:59:33 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>By: trivial34</title>
		<link>http://mathfactor.uark.edu/2008/05/05/dw-dealing-with-chaos/#comment-355</link>
		<dc:creator>trivial34</dc:creator>
		<pubDate>Sun, 13 Jul 2008 20:24:43 +0000</pubDate>
		<guid isPermaLink="false">http://mathfactor.uark.edu/2008/05/05/dw-dealing-with-chaos/#comment-355</guid>
		<description>For the past three months I have working on the problem of finding a formula for the number of deals it takes for the cards to cycle. As of early this morning I have found a formula for any game with p&#62;=c-1 where p is the number of players and c is the number of cards. The formula is far from simple and has to do with the sum of the digits of binary numbers. For now, the validity of my formula rests solely on my intuition and passing any abitrary test, however I will begin to prove every step of my derivation soon. Any game with p&#60;c-1 seems to be far too random to formulate but I will not say it is impossible.</description>
		<content:encoded><![CDATA[<p>For the past three months I have working on the problem of finding a formula for the number of deals it takes for the cards to cycle. As of early this morning I have found a formula for any game with p&gt;=c-1 where p is the number of players and c is the number of cards. The formula is far from simple and has to do with the sum of the digits of binary numbers. For now, the validity of my formula rests solely on my intuition and passing any abitrary test, however I will begin to prove every step of my derivation soon. Any game with p&lt;c-1 seems to be far too random to formulate but I will not say it is impossible.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mkudzin</title>
		<link>http://mathfactor.uark.edu/2008/05/05/dw-dealing-with-chaos/#comment-349</link>
		<dc:creator>mkudzin</dc:creator>
		<pubDate>Sun, 01 Jun 2008 18:26:19 +0000</pubDate>
		<guid isPermaLink="false">http://mathfactor.uark.edu/2008/05/05/dw-dealing-with-chaos/#comment-349</guid>
		<description>Perhaps this will help.  It is the key part of my program, written in C, 
to count the number of deals for a given number of players and cards.  
The code is not particularly intuitive, but it is VERY fast.  Here is a 
brief description of how it works:

1.) The key observation is that as the cards are dealt out in round after 
rounds, each player will be given the same number of cards.  (Although 
some will have received ONE more than others if the number of cards dealt 
is not divisible by the number of players.)  Therefore, it is NOT NECESSARY
to add the number of cards given to each players hand on each deal.  All 
you have to do is keep track of how many cards each player is "owed" if you 
HAD added them.

2.) The key variables are: "stacks", "offset", "dealer", and "hand".  

"stacks" is an array of integers that STARTS as the number of cards in each 
players hand.  The first step in every round is for the new dealer to pick 
up all the cards in his hand.  Therefore, the dealer's stack is decreased 
by the number of cards he has.  IF we wanted to KEEP "stacks" as the number 
of cards in each player's hand, we would then have to add to EACH stack 
the number of cards that EACH player is dealt.  We don't bother doing that. 
Instead, we increase a single variable, "offset", by the number of cards 
that each player should receive.  Thus, in general, the number of cards 
in player i's hand is "stacks[i] + offset".  (Actually, this may be off by 
one, depending on whether player i has gotten the one extra card as a result 
of a partial deal.)

"dealer" is the index of the current dealer.  "hand" is the number of cards 
in the dealer's hand.  

3.) In general, each player will receive hand/players cards, rounded down.
The dealer's position will advance by the remainder hand%players.  Since this 
division is time-consuming, I use two lookup tables, "qtable" and "rtable", 
to store the precomputed quotients and remainders.

4.) According to my description in (2), it seems like the number stacks[0] 
should be initialized to cards, since at the beginning, the first player 
has all the cards, and offset should be initialized to zero.  If that were 
the case, then the code to compute the number of cards in the dealer's hand
would be:

&lt;code&gt;
	hand = offset + stacks[dealer];
	if (dealer != 0) 
&#160;&#160;&#160;&#160;&#160;	   hand++;
&lt;/code&gt;

This is because, most of the time, the dealer will be one of the players 
who has received one additional card from the fact that the number of cards 
dealt is not divisible by the number of players.  The one exception is when 
the current dealer is the same as the original dealer, in which case, the 
total number of cards dealt IS divisible by the number of players, and all 
the players, including the current dealer, has received exactly the same 
number of cards.  

In order to simplify and speed up the computation of the number of
cards in the dealer's hand, I initialize offset to one, so that the
increment is automatically performed.  However, that would give the
initial dealer one too many cards, so I initialize his stack to
cards-1.
  
5.)  "count" keeps track of the number of deals.  I have not given you a 
definition for the counter datatype.  What you choose to use will depend 
on your application.  For small examples, count can just be an integer.  
However, on my computer, I go through approximately 135,000,000 deals 
per second.  At that rate, you will overflow a 32-bit integer in less 
than a minute.  Of course, your milage may vary.  

6.)  I have also included a routine to print out the number of cards in 
each player's hand.  It is not used in the main program, but I hope it 
will be helpful in understanding the code.  If anyone wants, I will be 
happy to send them the complete, working code.  

----------

&lt;code&gt;
int qtable[MAX_CARDS], rtable[MAX_CARDS]; 

counter *play_game(int players, int cards)
{
&#160;&#160;&#160;&#160;&#160;     int loop, offset, dealer, hand, *stacks;
&#160;&#160;&#160;&#160;&#160;     counter *count;

&#160;&#160;&#160;&#160;&#160;     // Initialize lookup tables used to avoid performing 
&#160;&#160;&#160;&#160;&#160;     // divisions on each iteration.
&#160;&#160;&#160;&#160;&#160;     for (loop=0; loop&#60;=cards; loop++) {
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;	  qtable[loop] = loop/players;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;	  rtable[loop] = loop%players;
&#160;&#160;&#160;&#160;&#160;     }

&#160;&#160;&#160;&#160;&#160;     // Initialize stacks.
&#160;&#160;&#160;&#160;&#160;     stacks = malloc(players*sizeof(int));
&#160;&#160;&#160;&#160;&#160;     stacks[0] = cards - 1;
&#160;&#160;&#160;&#160;&#160;     for(loop=1; loop&#60;players; loop++)
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;	  stacks[loop] = 0;
 &#160;&#160;&#160;&#160;&#160;    offset = 1;
&#160;&#160;&#160;&#160;&#160;     dealer = 0;
&#160;&#160;&#160;&#160;&#160;     hand = cards;
&#160;&#160;&#160;&#160;&#160;     initialize_counter(count);

&#160;&#160;&#160;&#160;&#160;     // main loop
&#160;&#160;&#160;&#160;&#160;     do {
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;	  increment_counter(count);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;	  stacks[dealer] -= hand;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;	  offset += qtable[hand];
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;	  dealer += rtable[hand];
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;	  if (dealer &#62;= players) {
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;	       dealer -= players;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;	       offset++;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;  	  }
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;	  hand = offset + stacks[dealer];
&#160;&#160;&#160;&#160;&#160;     } while (hand &#60; cards);

&#160;&#160;&#160;&#160;&#160;     free(stacks);
&#160;&#160;&#160;&#160;&#160;     return count;
}

void print_stacks(int players, int *stacks, int offset, int dealer)
{
&#160;&#160;&#160;&#160;&#160;     int i, hand;

&#160;&#160;&#160;&#160;&#160;     printf("( ");
&#160;&#160;&#160;&#160;&#160;     for(i=0; i&#60;players; i++) {
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;	  hand = offset + stacks[i];
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;	  if (i &#62; dealer)
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;	       hand--;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;	  printf("%d ", hand);
&#160;&#160;&#160;&#160;&#160;     }
&#160;&#160;&#160;&#160;&#160;     printf(")\n");
}
&lt;/code&gt;</description>
		<content:encoded><![CDATA[<p>Perhaps this will help.  It is the key part of my program, written in C,<br />
to count the number of deals for a given number of players and cards.<br />
The code is not particularly intuitive, but it is VERY fast.  Here is a<br />
brief description of how it works:</p>
<p>1.) The key observation is that as the cards are dealt out in round after<br />
rounds, each player will be given the same number of cards.  (Although<br />
some will have received ONE more than others if the number of cards dealt<br />
is not divisible by the number of players.)  Therefore, it is NOT NECESSARY<br />
to add the number of cards given to each players hand on each deal.  All<br />
you have to do is keep track of how many cards each player is &#8220;owed&#8221; if you<br />
HAD added them.</p>
<p>2.) The key variables are: &#8220;stacks&#8221;, &#8220;offset&#8221;, &#8220;dealer&#8221;, and &#8220;hand&#8221;.  </p>
<p>&#8220;stacks&#8221; is an array of integers that STARTS as the number of cards in each<br />
players hand.  The first step in every round is for the new dealer to pick<br />
up all the cards in his hand.  Therefore, the dealer&#8217;s stack is decreased<br />
by the number of cards he has.  IF we wanted to KEEP &#8220;stacks&#8221; as the number<br />
of cards in each player&#8217;s hand, we would then have to add to EACH stack<br />
the number of cards that EACH player is dealt.  We don&#8217;t bother doing that.<br />
Instead, we increase a single variable, &#8220;offset&#8221;, by the number of cards<br />
that each player should receive.  Thus, in general, the number of cards<br />
in player i&#8217;s hand is &#8220;stacks[i] + offset&#8221;.  (Actually, this may be off by<br />
one, depending on whether player i has gotten the one extra card as a result<br />
of a partial deal.)</p>
<p>&#8220;dealer&#8221; is the index of the current dealer.  &#8220;hand&#8221; is the number of cards<br />
in the dealer&#8217;s hand.  </p>
<p>3.) In general, each player will receive hand/players cards, rounded down.<br />
The dealer&#8217;s position will advance by the remainder hand%players.  Since this<br />
division is time-consuming, I use two lookup tables, &#8220;qtable&#8221; and &#8220;rtable&#8221;,<br />
to store the precomputed quotients and remainders.</p>
<p>4.) According to my description in (2), it seems like the number stacks[0]<br />
should be initialized to cards, since at the beginning, the first player<br />
has all the cards, and offset should be initialized to zero.  If that were<br />
the case, then the code to compute the number of cards in the dealer&#8217;s hand<br />
would be:</p>
<p><code><br />
	hand = offset + stacks[dealer];<br />
	if (dealer != 0)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	   hand++;<br />
</code></p>
<p>This is because, most of the time, the dealer will be one of the players<br />
who has received one additional card from the fact that the number of cards<br />
dealt is not divisible by the number of players.  The one exception is when<br />
the current dealer is the same as the original dealer, in which case, the<br />
total number of cards dealt IS divisible by the number of players, and all<br />
the players, including the current dealer, has received exactly the same<br />
number of cards.  </p>
<p>In order to simplify and speed up the computation of the number of<br />
cards in the dealer&#8217;s hand, I initialize offset to one, so that the<br />
increment is automatically performed.  However, that would give the<br />
initial dealer one too many cards, so I initialize his stack to<br />
cards-1.</p>
<p>5.)  &#8220;count&#8221; keeps track of the number of deals.  I have not given you a<br />
definition for the counter datatype.  What you choose to use will depend<br />
on your application.  For small examples, count can just be an integer.<br />
However, on my computer, I go through approximately 135,000,000 deals<br />
per second.  At that rate, you will overflow a 32-bit integer in less<br />
than a minute.  Of course, your milage may vary.  </p>
<p>6.)  I have also included a routine to print out the number of cards in<br />
each player&#8217;s hand.  It is not used in the main program, but I hope it<br />
will be helpful in understanding the code.  If anyone wants, I will be<br />
happy to send them the complete, working code.  </p>
<p>&#8212;&#8212;&#8212;-</p>
<p><code><br />
int qtable[MAX_CARDS], rtable[MAX_CARDS]; </p>
<p>counter *play_game(int players, int cards)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     int loop, offset, dealer, hand, *stacks;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     counter *count;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     // Initialize lookup tables used to avoid performing<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     // divisions on each iteration.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     for (loop=0; loop&lt;=cards; loop++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	  qtable[loop] = loop/players;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	  rtable[loop] = loop%players;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     // Initialize stacks.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     stacks = malloc(players*sizeof(int));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     stacks[0] = cards - 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     for(loop=1; loop&lt;players; loop++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	  stacks[loop] = 0;<br />
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    offset = 1;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     dealer = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     hand = cards;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     initialize_counter(count);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     // main loop<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     do {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	  increment_counter(count);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	  stacks[dealer] -= hand;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	  offset += qtable[hand];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	  dealer += rtable[hand];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	  if (dealer &gt;= players) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	       dealer -= players;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	       offset++;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  	  }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	  hand = offset + stacks[dealer];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     } while (hand &lt; cards);</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     free(stacks);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     return count;<br />
}</p>
<p>void print_stacks(int players, int *stacks, int offset, int dealer)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     int i, hand;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     printf(&#8221;( &#8220;);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     for(i=0; i&lt;players; i++) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	  hand = offset + stacks[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	  if (i &gt; dealer)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	       hand&#8211;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;	  printf(&#8221;%d &#8220;, hand);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     printf(&#8221;)\n&#8221;);<br />
}<br />
</code></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: tydie1</title>
		<link>http://mathfactor.uark.edu/2008/05/05/dw-dealing-with-chaos/#comment-346</link>
		<dc:creator>tydie1</dc:creator>
		<pubDate>Thu, 29 May 2008 18:45:18 +0000</pubDate>
		<guid isPermaLink="false">http://mathfactor.uark.edu/2008/05/05/dw-dealing-with-chaos/#comment-346</guid>
		<description>I kind of figured that out after I started that it would take a very long time. I guess it is a good thing I stopped it because if it is orders of magnitude more than 500 billion it could have taken over my computer for the rest of my life and probably still not gotten to the end.</description>
		<content:encoded><![CDATA[<p>I kind of figured that out after I started that it would take a very long time. I guess it is a good thing I stopped it because if it is orders of magnitude more than 500 billion it could have taken over my computer for the rest of my life and probably still not gotten to the end.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: mkudzin</title>
		<link>http://mathfactor.uark.edu/2008/05/05/dw-dealing-with-chaos/#comment-340</link>
		<dc:creator>mkudzin</dc:creator>
		<pubDate>Wed, 21 May 2008 22:56:45 +0000</pubDate>
		<guid isPermaLink="false">http://mathfactor.uark.edu/2008/05/05/dw-dealing-with-chaos/#comment-340</guid>
		<description>Tydie1, 

I suspect (but cannot prove, of course) that this configuration cannot be brute forced in any reasonable amount of time.  I ran through approximately 500 billion iterations this morning and did not reach the end.  Based on experiments with 500 cards and fewer players (7 or 8 players are manageable), I would not be suprised if (20,500) requires many orders of magnitude more iterations.</description>
		<content:encoded><![CDATA[<p>Tydie1, </p>
<p>I suspect (but cannot prove, of course) that this configuration cannot be brute forced in any reasonable amount of time.  I ran through approximately 500 billion iterations this morning and did not reach the end.  Based on experiments with 500 cards and fewer players (7 or 8 players are manageable), I would not be suprised if (20,500) requires many orders of magnitude more iterations.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: tydie1</title>
		<link>http://mathfactor.uark.edu/2008/05/05/dw-dealing-with-chaos/#comment-338</link>
		<dc:creator>tydie1</dc:creator>
		<pubDate>Mon, 19 May 2008 21:35:21 +0000</pubDate>
		<guid isPermaLink="false">http://mathfactor.uark.edu/2008/05/05/dw-dealing-with-chaos/#comment-338</guid>
		<description>I made a program to find out total deals for different scenarios.  I thought that it would be fun to see exactly how long it would take to do the extreme case mentioned in the podcast, 20 players and 500 cards. After 2 weeks of running this most of the time on my computer I have found that it will take more than 845,108,046 rounds and I would heed the advice not to try this at home.
For anyone who might want to continue this calculation the last round I calculated was as stated above round 845,108,046 and the players had these amounts of cards 1:83  2:15  3:13  4:60  5:67  6:44  7:11  8:41  9:5  10:30 11:23  12:9  13:41  14:6  15:17(DEALER)  16:10  17:13  18:4  19:5  20:3</description>
		<content:encoded><![CDATA[<p>I made a program to find out total deals for different scenarios.  I thought that it would be fun to see exactly how long it would take to do the extreme case mentioned in the podcast, 20 players and 500 cards. After 2 weeks of running this most of the time on my computer I have found that it will take more than 845,108,046 rounds and I would heed the advice not to try this at home.<br />
For anyone who might want to continue this calculation the last round I calculated was as stated above round 845,108,046 and the players had these amounts of cards 1:83  2:15  3:13  4:60  5:67  6:44  7:11  8:41  9:5  10:30 11:23  12:9  13:41  14:6  15:17(DEALER)  16:10  17:13  18:4  19:5  20:3</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: djogon</title>
		<link>http://mathfactor.uark.edu/2008/05/05/dw-dealing-with-chaos/#comment-314</link>
		<dc:creator>djogon</dc:creator>
		<pubDate>Fri, 09 May 2008 16:38:20 +0000</pubDate>
		<guid isPermaLink="false">http://mathfactor.uark.edu/2008/05/05/dw-dealing-with-chaos/#comment-314</guid>
		<description>I created a little program that calculates the tags, saves the states of each player and the graphically represents them. It may help, but it is highly amusing to see how the number of required tag varies with different number of players/cards.

I planned to create more graphical representations that may help "discover" a patter or at least look pretty :)

Anyway...
You can pick it up from
http://www.softwareriver.com/download/orderlychaos.zip

You only need to have .NET 2.x on your computer and it should run. Select the number of cards, players and select start.
You will then see a graphical representation of each tag as a line for each player. 
The player with no cards will have an empty line - the player with all cards will have the full line for that tag (row).
Starting player is colored blue.

If the "graph" cannot fit in your window a red line will show up indicating that there is more so try to resize your window.

Have fun!</description>
		<content:encoded><![CDATA[<p>I created a little program that calculates the tags, saves the states of each player and the graphically represents them. It may help, but it is highly amusing to see how the number of required tag varies with different number of players/cards.</p>
<p>I planned to create more graphical representations that may help &#8220;discover&#8221; a patter or at least look pretty :)</p>
<p>Anyway&#8230;<br />
You can pick it up from<br />
<a href="http://www.softwareriver.com/download/orderlychaos.zip" rel="nofollow">http://www.softwareriver.com/download/orderlychaos.zip</a></p>
<p>You only need to have .NET 2.x on your computer and it should run. Select the number of cards, players and select start.<br />
You will then see a graphical representation of each tag as a line for each player.<br />
The player with no cards will have an empty line - the player with all cards will have the full line for that tag (row).<br />
Starting player is colored blue.</p>
<p>If the &#8220;graph&#8221; cannot fit in your window a red line will show up indicating that there is more so try to resize your window.</p>
<p>Have fun!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: nklein</title>
		<link>http://mathfactor.uark.edu/2008/05/05/dw-dealing-with-chaos/#comment-312</link>
		<dc:creator>nklein</dc:creator>
		<pubDate>Thu, 08 May 2008 00:45:54 +0000</pubDate>
		<guid isPermaLink="false">http://mathfactor.uark.edu/2008/05/05/dw-dealing-with-chaos/#comment-312</guid>
		<description>Ugh.  I cannot figure out how to put an image inline here in the comments.
So, I'm just going to point you to &lt;a href="http://patrickwonders.livejournal.com/31362.html" rel="nofollow"&gt;my LiveJournal&lt;/a&gt;.</description>
		<content:encoded><![CDATA[<p>Ugh.  I cannot figure out how to put an image inline here in the comments.<br />
So, I&#8217;m just going to point you to <a href="http://patrickwonders.livejournal.com/31362.html" rel="nofollow">my LiveJournal</a>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: trivial34</title>
		<link>http://mathfactor.uark.edu/2008/05/05/dw-dealing-with-chaos/#comment-311</link>
		<dc:creator>trivial34</dc:creator>
		<pubDate>Tue, 06 May 2008 03:07:23 +0000</pubDate>
		<guid isPermaLink="false">http://mathfactor.uark.edu/2008/05/05/dw-dealing-with-chaos/#comment-311</guid>
		<description>I have been working on this problem daily since I heard the first  show on the wonderful game of Tag Deal. I have a few interesting observations to report along with my progress. I noticed on the show and in the comments that people are trying to find a pattern for a given number of players with a varying number of cards. I do not believe this is the right way to look at this. If we look at a  given number of cards and vary the number of players, the cycle length is much more  orderly. In fact, for k cards and p&#62;=k-1 players the cycle lengths form an arithmetic sequence with a common difference that is always a power of 2. This common difference will be 2^Ceiling(log_2 k) where k is the number of  cards. This has given me hope that a formula for at least all cycle lengths of k  cards and p&#62;=k-1 players exists. Since we can calculate these differences we  almost have a formula. All we need to find is a formula which gives us the cycle length for k cards and k-1 players (which I call the stabilized values) and  then add the correct number of differences. The sequence of stabilized values is even more surprising. Making a table of differences between these values (and  then a table of the differences between those!) shows a really nice pattern forming. I don't have the proper notation or typeset to display the differences here but I'm sure if you make a table you'll see the pattern. The patterns are recursive which is giving me trouble but I think I am getting very close to a formula. Let me know what anyone can make of these patterns.</description>
		<content:encoded><![CDATA[<p>I have been working on this problem daily since I heard the first  show on the wonderful game of Tag Deal. I have a few interesting observations to report along with my progress. I noticed on the show and in the comments that people are trying to find a pattern for a given number of players with a varying number of cards. I do not believe this is the right way to look at this. If we look at a  given number of cards and vary the number of players, the cycle length is much more  orderly. In fact, for k cards and p&gt;=k-1 players the cycle lengths form an arithmetic sequence with a common difference that is always a power of 2. This common difference will be 2^Ceiling(log_2 k) where k is the number of  cards. This has given me hope that a formula for at least all cycle lengths of k  cards and p&gt;=k-1 players exists. Since we can calculate these differences we  almost have a formula. All we need to find is a formula which gives us the cycle length for k cards and k-1 players (which I call the stabilized values) and  then add the correct number of differences. The sequence of stabilized values is even more surprising. Making a table of differences between these values (and  then a table of the differences between those!) shows a really nice pattern forming. I don&#8217;t have the proper notation or typeset to display the differences here but I&#8217;m sure if you make a table you&#8217;ll see the pattern. The patterns are recursive which is giving me trouble but I think I am getting very close to a formula. Let me know what anyone can make of these patterns.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: nklein</title>
		<link>http://mathfactor.uark.edu/2008/05/05/dw-dealing-with-chaos/#comment-310</link>
		<dc:creator>nklein</dc:creator>
		<pubDate>Mon, 05 May 2008 22:29:31 +0000</pubDate>
		<guid isPermaLink="false">http://mathfactor.uark.edu/2008/05/05/dw-dealing-with-chaos/#comment-310</guid>
		<description>I just wanted to add another reason this makes a very bad bar bet:  any misdeal gets you out of the good circuit. Chaim said two players with 52 cards takes 7 deals. But, if two cards stick together unnoticed on deal five, you've got to hope for some very special misdeals in the future to get you back on track.

There are 53 ways to divide the cards between two people. Only 7 of those ways are on the good loop. You don't want to end up in the other 46.

(It is only 7 and not 14, right? because it matters who is dealing...)</description>
		<content:encoded><![CDATA[<p>I just wanted to add another reason this makes a very bad bar bet:  any misdeal gets you out of the good circuit. Chaim said two players with 52 cards takes 7 deals. But, if two cards stick together unnoticed on deal five, you&#8217;ve got to hope for some very special misdeals in the future to get you back on track.</p>
<p>There are 53 ways to divide the cards between two people. Only 7 of those ways are on the good loop. You don&#8217;t want to end up in the other 46.</p>
<p>(It is only 7 and not 14, right? because it matters who is dealing&#8230;)</p>
]]></content:encoded>
	</item>
</channel>
</rss>
