2017-12-20 3 views
-5

Ich bin ein wenig verwirrt, wie dieser Code funktioniert. Was es tut, ist zu überprüfen, ob das Turmstück sich irgendwo bewegen kann, ohne von einer anderen Wurzel angegriffen zu werden. Hier ist der Code:Wie auf der Erde funktioniert dieser Code

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

Was ist der Eingang? Welche Daten haben Sie in "Schachbrett"? – khelwood

+0

Dieser Code scheint imho nutzlos zu sein. – IMCoins

+0

Ich lerne immer noch, IMCoins – Rayyan

Antwort

1

Rook A kann horizontal oder vertikal bewegen. So kann ein Turm einen anderen Turm angreifen, wenn er sich in derselben Reihe oder Spalte des Schachbretts befindet, d. H. Es sind mindestens zwei Türme in derselben Reihe oder Spalte.

Dieser Code scheint davon auszugehen, dass die einzigen Teile im Schachbrett Rooks sind. Wenn ein Quadrat ein Stück hat, ist der Wert des Listenelements 1, ansonsten ist es 0.

Die erste for Schleife durchläuft jede Reihe des Schachbretts und zählt die Anzahl der Quadrate, die ein Stück in dieser Reihe haben. Wenn die Anzahl mehr als 1 ist, sind die Türme nicht sicher, und es gibt false zurück.

Die zweite for Schleife macht das gleiche, aber geht nach Spalte statt Zeile.

Wenn keine Schleife false zurückgibt, bedeutet dies, dass alle Türme sicher sind und am Ende true zurückgegeben wird.