Coding Dojo Rio #7

No dia 18 de Fevereiro de 2009 tivemos dojo pré-carnaval.

Tivemos algumas novidades, como a presença do Denilson (conhecido da UFRJ e da PythOnRio) e graças a ele e ao Flávio usamos o GVim Portable! Antes de mais nada, fica a dica do vimrc do Denilson.

Mais uma vez o dojo começou com atraso… E eu fui um dos atrasados.

Chegando lá na PUC o pessoal estava escolhendo o problema, que no fim das contas foi o Minesweeper (Campo Minado).

E que pessoal foi esse?

  • Denilson
  • Flávio Amieiro
  • Mariana Bedran
  • Raphael Almeida
  • Rodolfo Carvalho

Com sua grande experiência em maratonas de programação, Denilson teve a oportunidade de, dessa vez, abordar um problema “velho conhecido” de uma forma diferente, guiado por testes. Desenvolvemos nosso campo minado de forma incremental, atacando um aspecto do problema de cada vez.

O objetivo do problema do campo minado é, dado como entrada um tabuleiro com informação sobre a posição das minas, retornar o tabuleiro preenchido como no fim de um jogo, indicando em cada célula a quantidade de minas adjacentes a esta célula.

Tudo foi muito bem, nosso código evoluiu para resolver boa parte das entradas, até que paramos em problemas de fronteira, quando por exemplo estavamos analisando uma célula da borda do tabuleiro, onde não podemos erroneamente contar minas do lado oposto do tabuleiro. Mais ou menos como isso aqui:

Errado

Para cada célula, nós olhamos seus vizinhos e contamos o número de minas. Porém, neste caso o correto é exibir o valor “1”, contabilizando apenas a mina inferior esquerda:

Certo

Nós discutimos e chegamos a uma solução para isto, porém, como já era tarde, ficamos satisfeitos em não implementar (faz parecer como Fermat e seu Último Teorema).

O código gerado pode ser encontrado aqui:

http://code.google.com/p/dojo-rio/source/browse/#svn/trunk/20090218

Até a próxima!

Anúncios

Comentários encerrados.

%d blogueiros gostam disto: