| 123456789101112131415161718192021222324 |
- #!/usr/bin/env python3
- import sys
- def remove_accessible(papers):
- for x, y in papers:
- neighbors = {(x - 1, y - 1), (x, y - 1), (x + 1, y - 1),
- (x - 1, y ), (x + 1, y ),
- (x - 1, y + 1), (x, y + 1), (x + 1, y + 1)}
- if len(papers & neighbors) >= 4:
- yield x, y
- def find_inaccessible(papers):
- new = set(remove_accessible(papers))
- while len(new) != len(papers):
- papers = new
- new = set(remove_accessible(papers))
- return papers
- papers = {(x, y) for y, line in enumerate(sys.stdin)
- for x, char in enumerate(line)
- if char == '@'}
- remains = set(remove_accessible(papers))
- print(len(papers) - len(remains))
- print(len(papers) - len(find_inaccessible(remains)))
|