# python 3.4.3
# c960 - print out all 960 starting positions for Bobby Fischer's chess variant called Chess960.
from itertools import permutations
counter = 0
board = "BBNNQRKR" #first valid position starting from BBKNNQRR
possible_board = ""
##########################################################################
# test if king is between the rooks
def rkr_test(pb):
pb = pb.replace("B", "")
pb = pb.replace("N", "")
pb = pb.replace("Q", "")
if(pb == "RKR"):
return(True)
else:
return(False)
##########################################################################
# test if bishops are on opposite colors
def bishop_test(pb):
first_bishop = pb.find("B")
second_bishop = pb.find("B", first_bishop + 1)
if ((second_bishop - first_bishop) % 2 == 1):
return(True)
else:
return(False)
##########################################################################
perms = [''.join(i) for i in permutations(board)]
sorted_unique_perms = sorted(set(perms))
print()
for i in range(0, len(sorted_unique_perms)):
possible_board = sorted_unique_perms[i]
if(rkr_test(possible_board)):
if(bishop_test(possible_board)):
counter += 1
print(counter, "\t", possible_board)
print()
Comments