domingo, 18 de outubro de 2009

Problema 3.12

Queremos rodar uma imagem 90 graus no sentido dos ponteiros do relógio. Atendendo à representação matricial, o que sabemos é que a coluna 1 passa linha 1, a coluna 2 a linha 2, e assim sucessivamente. É essa questão que o problema seguinte resolve.

01.def roda_90(imagem):
02.imagem_aux = list()
03.# transpõe
04.for coluna in range(len(imagem[0])):
05. nova_linha = list()
06. for linha in imagem:
07.  nova_linha.append(linha[coluna])
08. imagem_aux.append(nova_linha)
09.# inverte dentro das linhas
10.for linha in range(len(imagem_aux)):
11. imagem_aux[linha] = imagem_aux[linha][::-1]
12. 
13.return imagem_aux


A estratégia utilizada consistiu em dois passos: primeiro, transpusemos a matriz (linhas 4 a 8), de seguida invertemos os elementos em cada linha (linhas 10 e 11). Transpor uma matriz significa que o elemento na posição (i,j) passa para a posição (j,i).

Sem comentários:

Enviar um comentário