Outra versão funcional, falta uma otimização.