<?xml version="1.0" encoding="ISO-8859-1"?>
<linguagem>
    <topico>
		<nome>Dojo #28: Jogo da Vida</nome>
		<titulo>Jogo da Vida</titulo>
 		<descritor>apoie, apoie.org, Dojo, Dojo Rio, Coding Dojo, Kata, Tabela de Decisões, programa, simplificar, método, LDC, Jogo da Vida</descritor>
		<lead>Exemplo de uso de &lt;a href=&quot;TabelaDecisoes.htm&quot; target=&quot;_blank&quot;&gt;Tabela de Decisões&lt;/a&gt; para o &lt;a href=&quot;http://www.codingdojo.org/cgi-bin/wiki.pl?KataGameOfLife&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Kata Jogo da Vida&lt;/span&gt;&lt;/a&gt; realizado em 12 de agosto de 2009 na &lt;a href=&quot;http://dojorio.wordpress.com/2009/08/17/coding-dojo-rio-28/#more-340&quot; target=&quot;_blank&quot;&gt;Reunião #28&lt;/a&gt; do &lt;a href=&quot;http://dojorio.wordpress.com/&quot; target=&quot;_blank&quot;&gt;Dojo Rio&lt;/a&gt;
		</lead>		
		<origem>DojoJogoVida.xml</origem>
		<fonte></fonte>
    </topico>
	<topico> 
       	<titulo>Problema</titulo>
		<desc>
&lt;p&gt;You start with a two dimensional grid of cells, where each cell is either alive or dead. In this version of the problem, the grid is finite, and no life can exist off the edges. When calculating the next generation of the grid, follow these rules: &lt;/p&gt; &lt;ol&gt; &lt;li&gt;Any live cell with fewer than two live neighbours dies, as if caused by underpopulation.&lt;/li&gt; &lt;li&gt;Any live cell with more than three live neighbours dies, as if by overcrowding.&lt;/li&gt; &lt;li&gt;Any live cell with two or three live neighbours lives on to the next generation.&lt;/li&gt; &lt;li&gt;Any dead cell with exactly three live neighbours becomes a live cell.&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;You should write a program that can accept an arbitrary grid of cells, and will output a similar grid showing the next generation.&lt;/p&gt;
		</desc>
    </topico>	<topico>        	<titulo>Solução</titulo>		<desc>			Repetir para cada célula:&lt;br&gt;			&lt;div style=&quot;margin-left: 40px;&quot;&gt;tem 3 vizinhos ou&lt;br&gt;			(está vivo e tem 2 vizinhos):&amp;nbsp; fica vivo&lt;br&gt;			&lt;/div&gt;		</desc>    </topico>
	<topico> 
       	<titulo>Solução usando &lt;a href=&quot;TabelaDecisoes.htm&quot;
 target=&quot;_blank&quot;&gt;Tabela de Decisões&lt;/a&gt;
</titulo>
		<desc>
		Repetir para cada linha e coluna:&lt;br&gt;
		&lt;div style=&quot;margin-left: 40px;&quot;&gt;&lt;span
		 style=&quot;font-family: monospace;&quot;&gt;Está vivo?&lt;/span&gt;&lt;br
		 style=&quot;font-family: monospace;&quot;&gt;
		&lt;span style=&quot;font-family: monospace;&quot;&gt;|&amp;nbsp;Tem
		menos de 2
		vizinhos?&lt;/span&gt;&lt;br style=&quot;font-family: monospace;&quot;&gt;
		&lt;span style=&quot;font-family: monospace;&quot;&gt;|&amp;nbsp;|
		Tem mais de 3 vizinhos?&lt;/span&gt;&lt;br
		 style=&quot;font-family: monospace;&quot;&gt;
		&lt;span style=&quot;font-family: monospace;&quot;&gt;| |
		|&amp;nbsp;Tem 2 vizinhos?&lt;/span&gt;&lt;br
		 style=&quot;font-family: monospace;&quot;&gt;
		&lt;span style=&quot;font-family: monospace;&quot;&gt;| | | | Tem 3
		vizinhos?&lt;/span&gt;&lt;br style=&quot;font-family: monospace;&quot;&gt;
		&lt;span style=&quot;font-family: monospace;&quot;&gt;1 1&amp;nbsp;-
		- - * célula = 0 -- morre&lt;/span&gt;&lt;br
		 style=&quot;font-family: monospace;&quot;&gt;
		&lt;span style=&quot;font-family: monospace;&quot;&gt;1&amp;nbsp;- 1
		- - * célula = 0 -- morre&lt;/span&gt;&lt;br
		 style=&quot;font-family: monospace;&quot;&gt;
		&lt;span style=&quot;font-family: monospace;&quot;&gt;1&amp;nbsp;- -
		1 -&amp;nbsp;* célula = 1 -- fica
		vivo&lt;/span&gt;&lt;br style=&quot;font-family: monospace;&quot;&gt;
		&lt;span style=&quot;font-family: monospace;&quot;&gt;1&amp;nbsp;- -
		- 1 * célula = 1 -- fica vivo&lt;/span&gt;&lt;br
		 style=&quot;font-family: monospace;&quot;&gt;
		&lt;span style=&quot;font-family: monospace;&quot;&gt;0&amp;nbsp;- -
		- 1 * célula = 1 -- nasce&lt;/span&gt;&lt;br&gt;
		&lt;/div&gt;
		</desc>
    </topico>
	<topico> 
       	<titulo>Simplificando a &lt;a href=&quot;TabelaDecisoes.htm&quot;
 target=&quot;_blank&quot;&gt;Tabela de Decisões&lt;/a&gt;</titulo>
		<desc>
Repetir para cada linha e coluna:&lt;br&gt; &lt;div style=&quot;font-family: monospace; margin-left: 40px;&quot;&gt;Está vivo?&lt;br&gt; |&amp;nbsp;Tem 2 vizinhos?&lt;br&gt; | | Tem 3 vizinhos?&lt;br&gt;-&amp;nbsp;- 1&lt;br&gt;1&amp;nbsp;1 -&amp;nbsp; * célula = 1 -- fica vivo&lt;/div&gt;
		</desc>
    </topico>
	<topico> 
       	<titulo>Esticando a prosa</titulo>
		<desc>
			O componente &quot;gerar&quot; transforma a matriz &quot;grid&quot; na matriz &quot;next&quot;&lt;br&gt;
			gerar (grid(linhas, colunas)) =&amp;gt; next(linhas, colunas):&lt;br&gt;
			&lt;div style=&quot;margin-left: 40px;&quot;&gt;Repetir para cada
			linha e coluna:&lt;/div&gt;
			&lt;div style=&quot;margin-left: 80px;&quot;&gt;&lt;span
			 style=&quot;font-family: monospace;&quot;&gt;Está vivo?&lt;/span&gt;&lt;br
			 style=&quot;font-family: monospace;&quot;&gt;
			&lt;span style=&quot;font-family: monospace;&quot;&gt;|&amp;nbsp;Tem
			menos de 2
			vizinhos?&lt;/span&gt;&lt;br style=&quot;font-family: monospace;&quot;&gt;
			&lt;span style=&quot;font-family: monospace;&quot;&gt;|&amp;nbsp;|
			Tem mais de 3 vizinhos?&lt;/span&gt;&lt;br
			 style=&quot;font-family: monospace;&quot;&gt;
			&lt;span style=&quot;font-family: monospace;&quot;&gt;| |
			|&amp;nbsp;Tem 2 vizinhos?&lt;/span&gt;&lt;br
			 style=&quot;font-family: monospace;&quot;&gt;
			&lt;span style=&quot;font-family: monospace;&quot;&gt;| | | | Tem 3
			vizinhos?&lt;/span&gt;&lt;br style=&quot;font-family: monospace;&quot;&gt;
			&lt;span style=&quot;font-family: monospace;&quot;&gt;1 1&amp;nbsp;-
			- - * célula = 0 -- morre&lt;/span&gt;&lt;br
			 style=&quot;font-family: monospace;&quot;&gt;
			&lt;span style=&quot;font-family: monospace;&quot;&gt;1&amp;nbsp;- 1
			- - * célula = 0 -- morre&lt;/span&gt;&lt;br
			 style=&quot;font-family: monospace;&quot;&gt;
			&lt;span style=&quot;font-family: monospace;&quot;&gt;1&amp;nbsp;- -
			1 -&amp;nbsp;* célula = 1 -- fica
			vivo&lt;/span&gt;&lt;br style=&quot;font-family: monospace;&quot;&gt;
			&lt;span style=&quot;font-family: monospace;&quot;&gt;1&amp;nbsp;- -
			- 1 * célula = 1 -- fica vivo&lt;/span&gt;&lt;br
			 style=&quot;font-family: monospace;&quot;&gt;
			&lt;span style=&quot;font-family: monospace;&quot;&gt;0&amp;nbsp;- -
			- 1 * célula = 1 -- nasce&lt;/span&gt;&lt;br&gt;
			&lt;/div&gt;
			&lt;div style=&quot;margin-left: 80px;&quot;&gt;&lt;span
			 style=&quot;font-family: monospace;&quot;&gt;---- regras impossíveis&lt;/span&gt;&lt;br
			 style=&quot;font-family: monospace;&quot;&gt;
			&lt;span style=&quot;font-family: monospace;&quot;&gt;- 1 1 -&lt;/span&gt;
			&amp;nbsp;- &lt;br style=&quot;font-family: monospace;&quot;&gt;
			&lt;span style=&quot;font-family: monospace;&quot;&gt;- 1 - 1&lt;/span&gt;&amp;nbsp;
			- &lt;br style=&quot;font-family: monospace;&quot;&gt;
			&lt;span style=&quot;font-family: monospace;&quot;&gt;- 1 - - 1&lt;br&gt;
			- - 1 1 -&lt;br&gt;
			- - 1 - 1&lt;br&gt;
			- - - 1 1 &lt;br&gt;
			-&amp;nbsp;0 0 0 0 * ?!&lt;br style=&quot;font-family: monospace;&quot;&gt;
			&lt;/span&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;----
			regras que faltam&lt;/span&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;/span&gt;&lt;span
			 style=&quot;font-family: monospace;&quot;&gt;&lt;/span&gt;&lt;br
			 style=&quot;font-family: monospace;&quot;&gt;
			&lt;span style=&quot;font-family: monospace;&quot;&gt;0 1 0 0 0 * célula =
			0 -- fica igual&lt;/span&gt;&lt;br style=&quot;font-family: monospace;&quot;&gt;
			&lt;span style=&quot;font-family: monospace;&quot;&gt;0 0 1
			0&amp;nbsp;0 * célula = 0 -- fica igual&lt;/span&gt;&lt;br
			 style=&quot;font-family: monospace;&quot;&gt;
			&lt;span style=&quot;font-family: monospace;&quot;&gt;0 0 0
			1&amp;nbsp;0 * célula = 0 -- fica igual&lt;/span&gt;&lt;span
			 style=&quot;font-family: monospace;&quot;&gt;&lt;/span&gt;&lt;/div&gt;
		</desc>
    </topico>
</linguagem>