From 92e372c55b296f2c28c12439965493b4b6e02c49 Mon Sep 17 00:00:00 2001 From: "Stephen M. McQuay" Date: Sat, 8 Sep 2012 12:46:20 -0600 Subject: [PATCH] updated to my failing solution --- clear-the-way/clear_the_way.py | 40 +++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/clear-the-way/clear_the_way.py b/clear-the-way/clear_the_way.py index ad3276e..0ce7e52 100644 --- a/clear-the-way/clear_the_way.py +++ b/clear-the-way/clear_the_way.py @@ -29,16 +29,46 @@ bombs = [] for line in range(K): x, y = [int(i) for i in sys.stdin.readline().strip().split()] board[x][y] = True - bombs.append([x, y]) + bombs.append((x, y)) -click = [int(i) for i in sys.stdin.readline().strip().split()] -print click # XXX +click = tuple(int(i) for i in sys.stdin.readline().strip().split()) +if click in bombs: + sys.exit() -counts = defaultdict(int) +adjacent_to_bombs = defaultdict(int) for bomb in bombs: for ni, nj in around(*bomb): if ni >= 0 and nj >= 0 and ni < N and nj < M and [ni, nj] not in bombs: - counts[ni, nj] += 1 + adjacent_to_bombs[ni, nj] += 1 + +if tuple(click) in adjacent_to_bombs.keys(): + sys.exit() for line in board: print line + +unobscured = {} + +visited = {} + + +def seek_and_destroy(dude, unobscured): + if dude in unobscured: + return + unobscured[dude] = True + to_recurse = {} + for ni, nj in around(*dude): + if (ni >= 0 and nj >= 0 and ni < N and nj < M) and \ + ((ni, nj) not in bombs): + candidate = (ni, nj) + unobscured[candidate] = True + to_recurse[candidate] = True + print ">>>", to_recurse.keys() + for c in to_recurse.keys(): + seek_and_destroy(c, unobscured) + +seek_and_destroy(click, unobscured) + +print "\n\n" + +print "\n".join('{} {}'.format(*i) for i in sorted(unobscured.keys()))