だから私はPythonでn次元配列(それは彼らが何と呼ばれているのですか?)が「対称」であるかどうかをチェックする関数を書くように頼まれました。配列の 1 == 列 1、行 2 == 列 2、行 3 == 列 3 など。目標は、対称の場合はブール値の True を返し、そうでない場合は False を返す関数を持つことです。
私は機能する関数を書くことができましたが、サイズが完全な正方形 (例: 2 x 2、4 x 4) のリストでのみ機能し、テスト ケースのいくつかは「不規則な」サイズ (例: 2 ×5、3×2)。これらのリストの場合、リスト インデックスが範囲外のエラー コードを取得することになります。
def symmetric(square):
final_result = []
x = 0
y = 0
while x < len(square):
row_list = []
col_list = []
while y < len(square[x]):
print "(x, y): %d, %d" % (x, y)
print "(y, x): %d, %d" % (y, x)
row_list.append(square[x][y])
col_list.append(square[y][x])
y = y + 1
if row_list == col_list:
final_result.append(True)
else:
final_result.append(False)
x = x + 1
for x in final_result:
if x == False:
return False
return True
そして、私がここで失敗しているテストケース:
print symmetric([[1, 2, 3, 4],
[2, 3, 4, 5],
[3, 4, 5, 6]])
#Expected result: >>> False
#List index out of range
# This one actually returns the correct result, I'm just including it here
# for reference.
#print symmetric([["cat", "dog", "fish"],
# ["dog", "dog", "fish"],
# ["fish", "fish", "cat"]])
#Expected result: >>> True
#Actual result: >>> True
print symmetric([[1,2,3],
[2,3,1]])
#Expected Result: >>> False
#Actual result: list index out of range
これらの「不規則な形状」の配列で動作するように、誰かがコードを変更するのを手伝ってくれますか?