| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 | import sys
import subprocess
class BotWrapper(object):
    def __init__(self, process):
        self.process = process
        self.__name__ = process
    def __call__(self, board, (x, y)):
        height = len(board)
        width = len(board[0])
        letter = board[y][x].lower()
        proc = subprocess.Popen(
            [self.process],
            stdin=subprocess.PIPE,
            stdout=subprocess.PIPE,
        )
        board = '\n'.join([''.join(row) for row in board])
        print>>proc.stdin, width, height, letter
        print>>proc.stdin, board
        proc.stdin.close()
        proc.wait()
        assert proc.returncode == 0, 'Snake died.'
        output = proc.stdout.read()
        return output.strip()
def process_input(fp=sys.stdin):
    width, height, letter = fp.readline().split()
    width = int(width)
    height = int(height)
    letter = letter.upper()
    position = None
    board = []
    for i in xrange(height):
        row = fp.readline()[:-1]
        assert len(row) == width
        pos = row.find(letter)
        if pos >= 0:
            position = (pos, i)
        board.append(list(row))
    return board, position
 |