Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Pawn Brotherhood by cwahbong
def col_neighbors(col):
if col == "a":
yield "b"
elif col == "h":
yield "g"
else:
for diff in (1, -1):
yield chr(ord(col) + diff)
def guards(place):
col, row = place
if row == "1":
return
for col_neighbor in col_neighbors(col):
yield col_neighbor + chr(ord(row) - 1)
def safe_pawns(pawns):
return sum(bool(set(pawns) & set(guards(pawn))) for pawn in pawns)
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
Aug. 21, 2014