Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
I think it's clear :) solution in Clear category for Pawn Brotherhood by peter_parada
FILES = ["a", "b", "c", "d", "e", "f", "g", "h"]
def safe_pawns(pawns):
safe = 0
for pawn in pawns:
PAWN_FILE = pawn[0]
PAWN_RANK = int(pawn[1])
PAWN_INDEX = FILES[FILES.index(PAWN_FILE)]
INDEX_LOWER = -1
INDEX_HIGHER = 1
first_guard = None
second_guard = None
if PAWN_RANK == 1:
pass
elif PAWN_INDEX != "a" and PAWN_INDEX != "h":
first_guard = FILES[FILES.index(PAWN_FILE) + INDEX_LOWER] + str(PAWN_RANK + INDEX_LOWER)
second_guard = FILES[FILES.index(PAWN_FILE) + INDEX_HIGHER] + str(PAWN_RANK + INDEX_LOWER)
elif PAWN_INDEX == "a":
second_guard = FILES[FILES.index(PAWN_FILE) + INDEX_HIGHER] + str(PAWN_RANK + INDEX_LOWER)
elif PAWN_INDEX == "h":
first_guard = FILES[FILES.index(PAWN_FILE) + INDEX_LOWER] + str(PAWN_RANK + INDEX_LOWER)
if first_guard in pawns or second_guard in pawns:
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
Dec. 2, 2014