automate-boring-stuff/exercises/ex05/ex05a.py

53 lines
1.2 KiB
Python

test1 = {
"1h": "bking",
"6c": "wqueen",
"2g": "bbishop",
"5h": "bqueen",
"3e": "wking",
}
test2 = {
"9h": "bking",
}
test3 = {
"1r": "bking",
}
test4 = {
"8h": "cking",
}
test5 = {
"8h": "wring",
}
test6 = {
"8h": "wking",
"7h": "wking",
}
test7 = None
def isValidChessBoard(board):
pieces = "pawn knight bishop rook queen king".split()
players = {"w": {}, "b": {}}
totals = {"pa": 8, "kn": 2, "bi": 2, "ro": 2, "qu": 1, "ki": 1}
if not isinstance(board, dict):
return False
for k, v in board.items():
if len(k) > 2 or k[0] not in "12345678" or k[1] not in "abcdefgh":
return False
if not isinstance(v, str) or v[0] not in "bw" or v[1:] not in pieces:
return False
players[v[0]].setdefault(v[1:3], 0)
players[v[0]][v[1:3]] += 1
# TODO
for board in players.values():
if board != totals:
return False
return True
for test in [test1, test2, test3, test4, test5, test6, test7]:
print(f"Testing board '{test}': ", end="")
if isValidChessBoard(test):
print("Valid")
else:
print("Invalid")