<?xml version="1.0" encoding="UTF-8"?>
<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.html&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.html&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 -- &lt;/span&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;fica vivo&lt;/span&gt;
		&lt;/div&gt;
		</desc>
    </topico>
	<topico> 
       	<titulo>Simplificando a &lt;a href=&quot;TabelaDecisoes.html&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 -- &lt;/span&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;fica vivo&lt;/span&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>
	