sexta-feira, 7 de outubro de 2011

Problema 2.2

Neste problema é-nos pedido para apresentar todos os prefixos de uma cadeia de caracteres, um por linha. Podemos apresentar o de comprimento 1 primeiro, o de comprimento 2 a seguir, e assim sucessivamente. Temos pois uma acção repetitiva, o que indica que necessitamos de recorrer a um ciclo. Em cada etapa do ciclo é preciso saber onde termina o prefixo, visto sabermos que o início é sempre na primeira posição. Existem duas questões então a resolver: a contagem do número de vezes que vamos andar a repetir e, outra questão, controlar a cada momento o fim do prefixo. Acontece que estas duas questões se podem resolver de modo articulado. Olhemos então para uma solução possível.

1.def prefixos(cadeia):
2.   """Determina todos os prefixos de uma cadeia de caracteres.
3.   """
4.   conta = 0
5.   while conta < len(cadeia):        
6.        print cadeia[:conta+1]        
7.        conta = conta + 1 

Este padrão de contagem é tão comum que pode ser substituído de modo muito simples recorrendo à instrução de controlo for.

1.def pref(cadeia):
2.   for conta in range(len(cadeia)):
3.       print cadeia[:len(cadeia) - conta]

Mas também podemos apresentar os prefixos por ordem decrescente do seu tamanho.

Podemos, finalmente, mudar o problema, porv forma a que o resultado sejam os sufixos
1.def sufixos(cadeia):
2.   for conta in range(len(cadeia)):
3.       print cadeia[- (conta + 1):]

Sem comentários:

Enviar um comentário