2016-04-28 10 views
-1

Ich brauche Hilfe konzeptionell zu verstehen, wie die "#" in jeder Zeile hinzugefügt werden. Wenn dieser Code ausgeführt wird, erhalten Sie eine Breite von 5 # und eine Länge von 10 #. Woher weiß es, mir die Breite von 5 und die Länge von 10 zu geben?Schachbrett Maker in Javascript. Der Code funktioniert. Aber wie funktioniert es?

Hier ist mein Code:

var board = ""; 
var size = 10; 
for(var y = 0; y < size; y++){ 
    for(var x = 0; x < size; x++){ 
     if((x+y) % 2 == 0){ 
      board += " "; 
     } else { 
      board += "#"; 
     } 
    } 
    board += "\n"; 
} 
console.log(board); 
+1

Es erstellt ein 10x10 Board, Platz ist ein weißes Quadrat, # ist ein schwarzes Quadrat. Verfolgen Sie den Code ein paar Mal, um dem Muster zu folgen. (y, x): (0,0), (0, 1), (0, 2) .... (0, 9) (1, 0), (1, 1) .... (9 , 9) –

+0

auch, es ist wichtig, Modulo zu verwenden, um das Leerzeichen und das # -Zeichen umzudrehen. Siehe http://stackoverflow.com/questions/2664301/how-does-modulus-divison-work – Radio

+0

Die Schleife icrementing 'y' erstellt die Zeilen (10 Zeilen, wie in der Variablen' size' festgelegt) und die Schleife Innerhalb von ihm (inkrementierend "x") erzeugt 10 Zellen innerhalb jeder Reihe. Diese Schleife fügt abwechselnd '#' und Leerzeichen hinzu, indem '% 2' (Modulo2) verwendet wird, mit dem bestimmt wird, ob ein Wert ungerade oder gerade ist. Zum Beispiel "3% 2 = 1" (der Rest), was bedeutet, dass "3" ungerade ist, und "4% 2 = 0", was bedeutet, dass "4" gerade ist. – blex

Antwort

0

So ist es mit einigen einfachen mathematischer Addition Eigenschaften mit dem Modulo-Operator hier kombiniert zu tun.

Zuerst einige Regeln:

1) Wenn wir eine ungerade Zahl mit einer anderen ungeraden Zahl addieren erhalten Sie eine gerade Zahl bekommen.

2) Wenn ein sogar noch zu einem hinzugefügt wird, bekommen wir eine gerade Anzahl

3) Wenn eine ungerade und sogar hinzugefügt werden, werden Sie eine ungerade Zahl bekommen.

Jetzt starten wir in Zeile 0 (die erste Zeile im Array).

Durch Hinzufügen von x + y wäre x in der ersten Zeile 0 (der Array-Index). Also ist 0 + eine ungerade Zahl immer ungerade, und 0 plus eine gerade Zahl ist immer gerade. Wenn wir dann mod 2 mit dieser Summe verwenden, wird es für jeden Wert von y, der ungerade ist, einen Rest haben, und wenn es gerade ist, wird es 0 Rest sein, weil 2 immer perfekt in eine gerade Zahl aufteilt. So erzeugt das Muster "# # # # #"

In der zweiten Zeile, die Zeile 1 im Array-Index ist, ist der Index ungerade, so ein ungerades Plus ist ungerade, ungerade plus ungerade ist sogar usw. Also, wenn wir das Ergebnis mod 2 ist es das genaue Gegenteil in "# # # # #"

Dies wiederholt sich dann für jede ungerade und gerade Reihe, um das Schachbrettmuster zu erzeugen, die Sie in der Konsole sehen .

0

Es gibt Ihnen eine 10 x 10-Matrix. Sie können es besser sehen, wenn Sie in Zeile 6 durch ein anderes Zeichen ersetzen, wie -.

Wenn Sie eine bessere Erklärung für den Code möchten, können wir mit den Schleifen beginnen. Der y ist der Zeilenindex und der x der Spaltenindex, so dass Sie in der ersten Iteration auf (0,0) sind, also befinden Sie sich an der ersten Position.

Im nächsten Schritt sind Sie in der (0,1), dann (0,2) und so weiter, bis Sie bei (0, size) ankommen. In diesem Fall wird der nächste Schritt (1,0) sein und den Vorgang wiederholen. Dies bedeutet, dass Sie von der Zeile 0 in die Zeile 1 wechseln.

In diesem Punkt wissen Sie, wie Sie sich am Tisch bewegen. Sie müssen also nur lernen zu entscheiden, ob Sie ein "" oder ein "#" setzen müssen. Aus diesem Grund wird der Moduloperator verwendet (%).

Sie können in Google sehen, wie % funktioniert. Für Ihr Beispiel reicht es zu wissen, dass number % 2 immer 0 oder 1 ist, abhängig davon, ob die Zahl gerade oder ungerade ist.

Zusammenfassend prüft dieser Code für jede der Zellen in der Tabelle, ob sie gerade oder ungerade sind, und setzen je nach Fall eine # oder eine .

0

Der Modulo-Operator gibt den Rest zurück, so dass% von 2 immer 1 oder 0 ist. Wenn es 0 ist, gibt es "" und "#" für 1 aus und wechselt so die Quadrate für das Schachbrett.

Verwandte Themen