diff --git a/exercises/ex05/ex05a.py b/exercises/ex05/ex05a.py new file mode 100644 index 0000000..d6f16f5 --- /dev/null +++ b/exercises/ex05/ex05a.py @@ -0,0 +1,52 @@ +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") diff --git a/exercises/ex05/ex05b.py b/exercises/ex05/ex05b.py new file mode 100644 index 0000000..e69de29 diff --git a/exercises/ex05/ex05c.py b/exercises/ex05/ex05c.py new file mode 100644 index 0000000..e69de29