Wie viele mögliche Schachzüge gibt es?
Wie viele mögliche legale Schachzüge gibt es ausgehend von der Standard-Ausgangsposition in dieser und allen möglichen folgenden Positionen?
Wenn man die Startposition ignoriert, kann sich ein Bischof auf 32 Felder bewegen (der andere deckt die anderen 32 ab), ein Turm auf 64, wenn beide Seiten berücksichtigt werden, können Bauern auch alle 64 Felder erreichen, ein Ritter , ein König und Königin kann auch alle 64 Positionen erreichen.
Insgesamt sollten dies also 384 Kombinationen aus Ziel-Quadrat + Stück sein. Ist das richtig?
Aber wie viele Züge gibt es, wenn die Startposition nicht ignoriert wird?
Dann müssen 16 doppelstufige Bauernvorschüsse plus 4 Rochadenzüge (2, Königin und Königsflügel für jeden Spieler) hinzugefügt werden. Und en passant, das sollte 7 links und 7 rechts sein, mal 2 für beide Spieler. Und alle möglichen Quell-Ziel-Quadrat-Kombinationen aller anderen Teile!
Antworten
Der weiße König kann von den inneren 36 Feldern zu 8 Feldern, von den 4 Eckfeldern zu 4 Feldern und von den verbleibenden 24 Grenzfeldern zu 5 Feldern wechseln. Das sind 420 Züge für den weißen König, addieren Sie 2 für Burgen, um 422 zu erreichen. Wenn Sie Captures unterscheiden, verdoppelt sich dies fast (Castling kann nicht erobern) auf 842. Erlauben Sie nun dem schwarzen König, dies zu verdoppeln (1684)? Oder Bewegungen identifizieren, die beide machen könnten (dh alle außer Rochade - 844)?
Ein Turm kann sich immer (bei freier Sichtlinie) auf 14 Felder bewegen. Das sind 896 Züge. Verdoppeln Sie auf 1792, wenn Sie Captures unterscheiden. Verdoppeln Sie erneut (3584), wenn Sie die Farbe unterscheiden möchten.
Auf einer Diagonale (z. B. NW bis SE) der Länge n kann ein Läufer n ( n -1) Bewegungen ausführen (ein Startfeld und ein bestimmtes Endfeld auswählen). Summe über n = 1,2,3,4,5,6,7,8,7,6,5,4,3,2,1 (dh Ignorieren der Farbe des Bischofs), um 280 Züge zu erhalten, doppelt bis 560, um beide diagonalen Richtungen zu zählen. Verdoppeln Sie (1120), wenn Sie Aufnahmen unterscheiden möchten, verdoppeln Sie noch einmal (2240), wenn Sie nach Farben unterscheiden möchten.
Für die Königin fügen Sie einfach Turm und Bischof hinzu und zählen so 1456, 2912 oder 5824 Züge.
Der Ritter kann normalerweise 8 Züge machen, aber wie beim König müssen wir die nahe Grenze berücksichtigen. Es ist einfacher, nach Richtung zu zählen: Es gibt 42 (6 mal 7) Felder, von denen aus wir zwei nach rechts und eines nach oben gehen können. Wir haben die gleiche Nummer 42 (allerdings mit unterschiedlichen Feldern) für alle acht Richtungen, daher insgesamt 336 Ritterbewegungen. Double (672), wenn Sie Captures unterscheiden. Verdoppeln Sie erneut (1344), wenn Sie nach Farbe unterscheiden.
Ein weißer Bauer kann zwei Felder von seiner Ausgangsposition entfernt sein (8 Züge). Es kann sich von den Reihen 2 bis 6 (40 Züge) vorwärts bewegen. Es kann ab Reihe 7 vorrücken und zur Königin, zum Turm, zum Bischof oder zum Ritter aufsteigen (32 Züge). Für Bauern, wir müssen Aufnahmen unterscheiden: In nur sieben der acht Spalten, können wir auf der rechten Seite erfassen, und in sieben von acht Spalten können wir nach links erfassen. Dies gibt uns 70 Erfassungszüge von den Zeilen 2 bis 6 plus 56 Erfassungszüge mit Beförderung. Bisher 206. Wenn Sie die Gefangennahme en passant von einer normalen Gefangennahme durch dieselbe Bewegung (Start- und Endfeld) des Bauern unterscheiden möchten, addieren Sie 14, um 220 zu erhalten. Auch für Bauern scheint es nützlich, nach Spieler zu unterscheiden und bei 440 ankommen.
Zusammenfassend kann die großzügigste Art, mögliche Züge zu zählen, zu 1684 + 3584 + 2240 + 5824 + 1344 + 440 = 15116 verschiedenen Zügen führen. Man könnte die Zahl noch weiter erhöhen, indem man Bewegungen unterscheidet, die Scheck oder sogar Schachmatt geben, oder indem man Erfassungen nach dem erfassten Stück unterscheidet.
Wenn das Board gegeben ist und nur das Quell- und Zielfeld sowie die Auswahl der Promotion berücksichtigt werden (wie im UCI- Format), scheint es 1968 mögliche Züge zu geben.
# Python
# pip install python-chess
import chess
moves = 0
# Queen, covers all lines and diagonals
for x in range(8):
for y in range(8):
board = chess.Board("8/8/8/8/8/8/8/8")
board.set_piece_at(chess.square(x,y), chess.Piece(chess.QUEEN, chess.WHITE))
moves += len(list(board.generate_legal_moves()))
# Knight jumps
for x in range(8):
for y in range(8):
board = chess.Board("8/8/8/8/8/8/8/8")
board.set_piece_at(chess.square(x,y), chess.Piece(chess.KNIGHT, chess.WHITE))
moves += len(list(board.generate_legal_moves()))
# Straight pawn promotions, 2 players, 8 ranks each, 4 choices (queen, rook, bishop, knight)
moves += 2*8*4
# Diagonal pawn promotions, when capturing a piece
# 2 players, 14 diagonals (12 in the center and 1 each in the first and last ranks), 4 choices
moves += 2*14*4
print(moves)
Es wird angenommen, dass die Rochade angezeigt wird, indem der König zwei Schritte bewegt wird.
Hier sind alle möglichen UCI-Zeichenfolgen und hier ist der Code, um sie zu generieren.