ブルーブリッジカップ大会試験:画像回転問題

画像の画像回転は、画像を時計回りに90度回転させる必要がある、この問題では、最も簡単な方法の一つです。nで×画像のMの二次元アレイは、例えば、3×4の画像は例を示し、表される:
1. 3 5 7
9 8 6 7
3 5 9 7
の画像は、以下のように90度画像を時計回りに回転します。
9. 1. 3
5 8 3
9 7 5
。7 6 7
与えられた初期画像、回転画像を計算します。
[入力フォーマット
入力の最初の行の行と列の数を表し、二つの整数nおよびmが含ま。次のN Mの整数の行は、所与の画像です。各画素(ピクセル)が(0と255を含む)は、0と255の間の整数値です。
[]出力フォーマット
出力m行n列、回転画像を表します。

[サンプル入力]
。3. 4
。1. 3 5 7
9 8 6 7
3 5 9 7
[サンプル]出力
3 9 1
5 8 3
9 7 5
。7 6 7

私たちは、道路の問題を解決するためのpythonを使用して、次のように答えてください。

n,m = map(int ,input().split())       #map的作用是把输入的str映射成int
lst = []                              
for i in range(n):
	#先用split把输入的字符串转换成字符串列表,然后用int映射成整形map,最后再转换成整形list
	lst.append(list(map(int,input().split())))   

# print(lst)
n_list =[]
for i in range(m):
	n_line = [ lst[n-1-j][i] for j in range(n) ]
	n_list.append(n_line)

for x in n_list:
	for y in x:
		print(y,end=' ')
	print('')

結果は次の通りされています。
ここに画像を挿入説明
知識は、この問題が関与している:
1. INPUT()関数を生成し、ユーザーのキーボード入力文字列を取得するには、
2列のリストに分割された文字列を分割する方法;
文字列リストの3.map()メソッドマッピングされた地図オブジェクトを整形、
強制的にリストオブジェクトマップにオブジェクトをターン4.list方法は、
リストを成形する新しい式のリストを生成するための方法; 6
...エレメントのリストを追加するためにappendメソッドと、
関数パラメータ7.printの端部とそして、空の文字列ラップ技法を出力し、

このアルゴリズムの核心の問題:
我々は法律開始座標変換、変換マッピング座標のような、観察することができる
新たな座標古い座標(3,1)から(1,1)に対応する
座標古いに新しい座標(1,2)に対応する(2,1 )
)1,1(新しい座標(1,3)対応古い座標
古い座標(3,2)に対応する新たな座標(2,1)
古い座標(2,2)に対応する新たな座標(2,2)
新しい座標(2 3)古い)1,2(座標に対応
...
我々はすぐに我々ができるように、横軸の新しい座標である法律、縦軸座標新旧垂直座標れるが、古い座標の補数であることを見出しをコアアルゴリズムを記述します。

n_list = [ [ lst[n-1-j][i] for j in range(n) ] for i in range(m)]

それは、ネストされたリストの式を使用して、2サイクルのソースコードを簡素化することに注意してください。

公開された207元の記事 ウォン称賛16 ビュー9952

おすすめ

転載: blog.csdn.net/weixin_41855010/article/details/104569185