Coding Dojo #16 Descobrindo Anagramas

Último Dojo de Python, deixando saudade, e estimulo para estudar mais e se aprimorar.O encontro foi muito tranquilo, escolhemos um kata menos matemático o que diminuiu o “stress” e tempo no planejamento. Em alguns momentos tivemos dificuldades na sintaxe mas foram resolvidas pelo uso do “help” do Python através do Terminal.
Após a Retrospectiva, tivemos que escolher, por votação, a linguagem que irá nos acompanhar durante os próximos dois meses, o escolhido então foi “Ruby + Cucumber”. O desafio vai ser grande, mas estamos dispostos a compartilhar dúvidas e conhecimentos, o que vêm acontecendo, não só com os dojos mas na prática dos métodos ageis.
Pensando sempre em inovar os Dojos, tivemos um mini lanchinho durante a Retrospectiva.

Origem do kata :  http://www.dcc.fc.up.pt/oni/problemas/2005/qualificacao/probC.html

Código fonte do encontro: https://gist.github.com/713616

anagrama.py

#@author Rafael Salomao 
#@author Natalia Marcondes 
#@author Marco Moura 
#@author Carlos Eduardo 
#@author Patricia Carvalho

class Anagrama:
@staticmethod
def comparar(palavra1, palavra2):
lista_palavra1 = Anagrama.palavra_2_lista_and_sort(palavra1)
lista_palavra2 = Anagrama.palavra_2_lista_and_sort(palavra2)

return lista_palavra1 == lista_palavra2

@staticmethod
def palavra_2_lista_and_sort(palavra):
lista = []
lista2 = []
for i in palavra:
lista.append(i)

return sorted(lista)

if __name__ == "__main__":
print "Hello World"

new_test.py

#@author Rafael Salomao 
#@author Natalia Marcondes 
#@author Marco Moura 
#@author Carlos Eduardo 
#@author Patricia Carvalho

import unittest
from Anagrama import Anagrama

class New_TestCase(unittest.TestCase):
def test_identificar_anagrama_duas_palavras_fio_foi(self):
self.assertTrue(Anagrama.comparar("fio", "foi"))

def test_identificar_anagrama_duas_palavras_fui_foi(self):
self.assertFalse(Anagrama.comparar("fui", "foi"))

def test_lista_palavra_casa_c_a_s_a(self):
self.assertEquals(["a","a","c","s"],Anagrama.palavra_2_lista_and_sort("casa"))

if __name__ == '__main__':
unittest.main()

Retrospectiva:

Bom:

– Katas menos matemáticos
– pontualidade nos horários
– Lanchinho final
– uso do terminal para consulta
– planejamento rápido

Ruim:

– Falta de um especialista na linguagem
– Falta de conhecimento aprofundado na linguagem
– uso da internet como forma de pesquisa
– Parar o tempo para pesquisar solução, deveria fazer parte do tempo do piloto
– último dojo do python

Próximos:

– experimentar método ping pong
– Opções: Java + JUnit , JavaScript + JSUnit, Ruby + Cucumber, .Net, Android
– Escolhido: Ruby + Cucumber

Fotos do encontro