Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Solution for "Pawn Brotherhood" solution in Clear category for Pawn Brotherhood by Mariusz_Lesniak
def get_pos_tpl(pos: str):
"""
Tranlates "chess-format" pos to tuple of xy coords
"""
x = ord(pos[0]) - 96
y = int(pos[1])
return (x, y)
def check_if_pawn_safe(pawn, positions):
"""
Checks if there are other pawns one the bottom diagonal squares.
Returns True when safe, False when no matching pawn were founds.
"""
return (pawn[0]-1, pawn[1]-1) in positions or (pawn[0]+1, pawn[1]-1) in positions
def safe_pawns(pawns: set) -> int:
positions = []
safe = 0
for pawn in pawns:
positions.append(get_pos_tpl(pawn))
for pos in positions:
if check_if_pawn_safe(pos, positions):
safe = safe + 1
return safe
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert safe_pawns({"b4", "d4", "f4", "c3", "e3", "g5", "d2"}) == 6
assert safe_pawns({"b4", "c4", "d4", "e4", "f4", "g4", "e5"}) == 1
print("Coding complete? Click 'Check' to review your tests and earn cool rewards!")
June 16, 2022
Comments: