私はプログラミングとPythonを約1か月間、Udacityを使用して学んでいます。質問の1つとして、渡された数独リストが有効かどうかをチェックする関数を作成することになっています。
以下のforループでは、元のリストと転置されたリストの両方を使用して繰り返し処理するrow
とcol
同時に、ステートメントの後半にzip()
誤って残してしまいました。私はそれを実行しました、そして、驚いたことに、それはまだ正しい答えを返し続けました。row
or
def check_sudoku(array):
is_sudoku = True
reference = range(1, len(array) + 1)
transposed = zip(array)
for row, col in zip(array, transposed):
if sorted(row) != reference or sorted(row) != reference:
is_sudoku = False
break
return is_sudoku
私の推測では、これはis_sudoku = True
デフォルトで定義したためrows
であり、参照リストと比較しているため、転置が機能しなかった場合でも無効な値をキャッチします。row
しかし、2番目を置き換えたときcol
、それは壊れました。
私の質問は、私の推測は正しいですか?そうでない場合、なぜこのコードが機能するのでしょうか。また、どうすればこれをより適切に記述できますか?
ありがとう!(私が渡したリストを確認したい場合は、コードパッドにも貼り付けます-http: //codepad.org/IXDlZuUu)