Dojo 18 – Jornadas de um Cavaleiro

Aconteceu na quarta-feira, dia 24/11/2010 o Coding Dojo de número 18 do PET Computação. Nesse Dojo o problema escolhido foi o seguinte: Knight’s Travails

A objetivo do problema é levar um cavalo (do xadrez) de uma casa do tabuleiro a outra. Pra quem não sabe, o cavalo só pode se movimentar “em L”, ou seja, uma casa em uma direção (horizontal ou vertical) e mais 2 em outra.
Levando isso em conta, o programa deve retornar uma lista das posições pelas quais o cavalo deve passar para chegar na posição objetivo.
Essa lista só pode conter posições válidas, obviamente, então não valem posições fora do tabuleiro ou inalcançáveis pelo cavalo.

Exemplo:
Entrada:

  • Origem: (0, 0)
  • Destino: (4, 2)

Saída = [(2, 1), (4, 2)]

O problema é bastante interessante, e nos manteve ocupados por um bom tempo. =)
Como de costume, depois do Dojo fizemos uma pequena lista dos pontos bons e ruins:

Bom:

  • Problema desafiador
  • Bastante gente
  • Teve novatos

Ruim:

  • Não terminamos
  • Problema “fica complicado de repente”
  • Não explicamos as fases
  • Conversas paralelas
  • Teclado de Gameboy do João

O código gerado foi esse:
Dojo 26/11/2010

É isso, galerinha. Daqui a duas semana, no dia 08/12/2010, acontecerá nosso último Dojo do ano. Não perca a chance de ir. =)
Pra quem usa Google Calendar, vocês podem adicionar o calendário do Dojo à sua agenda clicando no link abaixo:

1 Comment Posted in Dojos
Dojo 17 – Contando Palitos

Mais um Dojo aconteceu ontem, dia 11 de Novembro de 2010. O problema escolhido dessa vez foi o seguinte: http://www.rubyquiz.com/quiz111.html
A idéia é que o programa receba um número natural qualquer e retorne uma string de “palitos de dente” que forme uma soma ou multiplicação capaz de expressar o número. É claro que a string deve ser do menor tamanho possível, leia-se: usar o menor número de palitos possível.
A string deve estar na forma NON, onde os N são números quaisquer, representados por uma sequência de N “|”s (N palitos) e O é um operador de soma (+) ou multiplicação (X). Os operadores precisam de 2 palitos para serem representados.
Um exemplo:
Entrada = 9

  • saida1 = | | | | | | | | |
  • saida2 = | | | | | + | | | |
  • saida3 = | | | X | | |

Todas as saídas representam o número 9 da entrada, mas a 3 é a que usa menos palitos, então a saída do programa deve ser a 3.

Esse foi um daqueles raros Dojos em que conseguimos terminar de resolver o problema, e ainda sobrou um tempinho pra tentar fatorar o código. =)
A retrospectiva, escrita pelos participantes, e o código:

Dojo 11/11/2010

Pontos bons:

  • Problema rápido de resolver
  • Terminamos o problema (com tempo de sobra)
  • Trabalho em grupo bom
  • Todo mundo entendia a linguagem
  • Pouca gente (fluiu bem por causa disso)

Pontos ruins:

  • Problema não muito fatorável (ficou com muitos if’s)

É isso. Daqui a duas semanas, dia 24/11/2010, tem Dojo de novo. Será um dos últimos do ano, então não deixe de ir. =)
Pra quem usa Google Calendar, vocês podem adicionar o calendário do Dojo à sua agenda clicando no link abaixo:

1 Comment Posted in Dojos
Dojo 16 – Matriz Espiral

Depois de um mês de recesso forçado, voltamos com o Dojo nessa quarta-feira. O problema escolhido foi esse: http://www.rubyquiz.com/quiz109.html.
O objetivo é montar uma matriz contendo um espiral que cresce no sentido horário, começando no meio. Como sempre, nos primeiros testes, as coisas não foram muito bem, mas elas engrenaram depois que conseguimos descobrir uma padrão interessante no crescimento da matriz.

Contamos com a presença de apenas 4 pessoas, mas no caso do Dojo, isso não é uma coisa ruim. O número ideal de participantes é de 4 a 7 pessoas. Mais do que isso e a reunião começa a ficar desorganizada.

Segue o código:
Coding Dojo 27-10-2010 – Matriz Espiral

A retrospectiva feita pelos participantes após o Dojo destacou os seguintes pontos:

Bom:

  • Bruno veio.
  • 1a participação da Glaucia.
  • Aprendendo Python.
  • Problema bom de testar.
  • Interação boa na resolução.

Ruim:

  • Pouco conhecimento de Python.
  • Problema mais difícil do que o esperado.
  • Não conseguimos terminar o problema.
  • Atraso pra começar (porque só tinha PETianos)

O próximo Dojo é daqui a duas semanas, quarta-feira, dia 10 de Novembro. Mandaremos um lembrete por email confirmando o local da reunião. Pra quem usa Google Calendar, vocês podem adicionar o calendário do Dojo à sua agenda clicando no link abaixo:

1 Comment Posted in Dojos
Dojo 14: Autômatos Celulares

Na última quinta-feira, dia 2 de setembro, aconteceu o 14º encontro do nosso Coding Dojo UFSC. Tem gente que diz que o número 13 traz coisas boas, outras dizem que traz coisas ruins… Pro caso do Coding Dojo tal místico número trouxe AMBOS os efeitos :)

Primeiro, o ruim: como sempre, nós, responsáveis organizadores, providenciamos a reserva de uma sala de aula no CTC para o Dojo, com uma semana de antecedência. A secretaria do centro assinou em baixo da requisição – literalmente – dizendo que a sala estava livre e era nossa. Qual foi a surpresa ao ver, NO MEIO DO DOJO, a entrada de um inocente professor desavisado, pronto a dar aula naquela sala, como SEMPRE FEZ… Errar é humano, você pode dizer. Sim, é mesmo; mas como esse erro já é quase uma “tradição” eu acho que falta um pouquinho de treinamento pro “reservador” de salas. Como diria Jerry Seinfeld: “O importante não é FAZER uma reserva. Qualquer um pode fazer reservas… O importante é SEGURAR uma reserva” What is a reservation

A parte boa foi maior, o problema que escolhemos pra resolver nesse dojo foi legal, a interação entre os participantes foi boa e o código ficou bonito (fantasticamente bonito). O nosso problema escolhido foi o Cellular Automata, do Ruby Quiz. Um autômato celular é uma espécie de “tabuleiro”, onde cada casa possui um estado, e tal estado muda de acordo com poucas regras bem simples. Mesmo assim a evolução de um autômato pode ser muito interessante – e bonita :)

No caso específico do problema que escolhemos resolver, tratava-se de autômatos unidimensionais; o tabuleiro que evolui é linear. A entrada do nosso algoritmo é um estado inicial desse tabuleiro, junto com uma string binária que descreve a regra de evolução do autômato. A tarefa que nosso algoritmo devia fazer é bem simples: executar um passo do autômato, de acordo com a regra dada, e colocar na saída o “novo” tabuleiro. Na verdade o problema foi até simples demais… Conseguimos terminá-lo e ainda sobrou tempo para fatorar e incrementar a solução. Nossa solução pode fazer não apenas um, mas n passos de execução do autômato. Veja com os próprios olhos, aí vai o código:

Coding Dojo 2010-09-02: Autômatos Celulares

A retrospectiva teve os seguintes pontos identificados:

Bons:

  • Problema bom/legal
  • Conseguimos acabar a resolução
  • Código ficou legível e conciso
  • Boa interação entre os participantes

Ruins:

  • Reserva da sala não funcionou direito (mais uma vez)
  • Problema ficou pouco definido antes de começar a programação
  • Problema muito curto/fácil
  • Python reclamou muito das indentações :]

Até o próximo Dojo então! Já está marcado pra quinta-feira, 16 de setembro, às 18h. Ainda falta definir melhor o lugar, de preferência um que esteja REALMENTE livre, então iremos comunicar o local quando chegar mais perto da data, através de todas as listas de e-mails possíveis. Também através do site do PET Computação, claro. Se você usa o Google Calendar, e quer acompanhar tranquilo quando e onde vão acontecer todos os nossos encontros, pode adicionar o calendário dos Dojos na sua agenda, é só clicar aí embaixo:

57 Comments Posted in Dojos