Skew-symmetric matrix (Mine) - 交代行列
どんな問題?
Skew-symmetric matrix
http://www.checkio.org/mission/skew-symmetric-matrix/
交代行列かどうかを判断せよ。
交代行列って何?
交代行列とは、正方行列 A であってその転置が自身の −1倍となるものをいう。
交代行列 A は等式 AT = -A を満足する。
だそうだ。
AT とは、前にやった転置行列のこと。
例題:
checkio([ [ 0, 1, 2], [-1, 0, 1], [-2, -1, 0]]) == True checkio([ [ 0, 1, 2], [-1, 1, 1], [-2, -1, 0]]) == False checkio([ [ 0, 1, 2], [-1, 0, 1], [-3, -1, 0]]) == False
どうやって解く?
転置行列の問題は、zipを使って簡単に書いている人がいたっけ。
def checkio(data): # 転置行列を求める return [list(r) for r in zip(*data)]
ATの各要素をマイナスにすれば、-ATになり、それがAと一致すれば交代行列だと判断できる。
まとめ
def checkio(matrix): return [[-e for e in r] for r in zip(*matrix)] == matrix
http://www.checkio.org/mission/skew-symmetric-matrix/publications/natsuki/python-3/first/
簡単簡単♪