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.


def roda_90(imagem):
imagem_aux = list()
# transpõe
for coluna in range(len(imagem[0])):
nova_linha = list()
for linha in imagem:
nova_linha.append(linha[coluna])
imagem_aux.append(nova_linha)
# inverte dentro das linhas
for linha in range(len(imagem_aux)):
imagem_aux[linha] = imagem_aux[linha][::-1]

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