2017-12-20 7 views
-5

私はこのコードのしくみについてちょっと混乱します。それがしているのは、ルークピースが別のルートによって攻撃されることなくどこかに移動できるかどうかをチェックすることです。 コード:このコードはどのように地球上で動作するのですか

def rooks_are_safe(chessboard): 
    n = len(chessboard) 

    for row_i in range(n): 
     row_count = 0 
     for col_i in range(n): 
      row_count += chessboard[row_i][col_i] 
     if row_count > 1: 
      return False 

    for col_i in range(n): 
     col_count = 0 
     for row_i in range(n): 
      col_count += chessboard[row_i][col_i] 
     if col_count > 1: 
      return False 

    return True 
+2

入力とは何ですか?チェス盤にはどのようなデータがありますか? – khelwood

+0

このコードは役に立たないようです。 – IMCoins

+0

私はまだ学んでいます、IMCoins – Rayyan

答えて

1

ルークは水平または垂直に移動できます。したがって、ルークはチェス盤の同じ行または列にある場合、つまり同じ行または列に少なくとも2つのルークがある場合、別のルークを攻撃することができます。

このコードは、チェス盤の唯一の部分がルークであると仮定しているようです。正方形にピースがある場合、リスト要素の値は1、それ以外の場合は0です。

最初のforループはチェス盤の各行を通過し、その行にピースがある四角の数を数えます。カウントが1より大きい場合、ルークは安全ではなく、falseを返します。

第2のforループは同じことを行いますが、行ではなく列で表示されます。

いずれのループもfalseを返していない場合は、すべてのルークが安全であることを意味し、最後にtrueを返します。

関連する問題