import socket
host = 'grandprix.shallweplayaga.me'
port = 2038
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host,port))
"""
12345
|-----|
|XXXX | 1
|!!! | 2
|!! | 3
|! | 4
| | 5
| | 6
| | 7
| | 8
| u | 9
|-----|
"""
def solve():
msg = s.recv(1024).strip()
print msg
s.send("\n");
while True:
msg = s.recv(8*11).strip()
print msg
if not '-----' in msg:
return
msg.replace('=',' ')
r = msg.strip().split('\n')
m = r[9].find('u')
for y in range(len(r)):
r[y] = list(r[y])
r[9][m] = ' '
op = ''
for z in xrange(1,5):
for y in xrange(1,8):
for x in xrange(1,6):
if r[y][x-1] != ' ' and r[y][x] != ' ' and r[y][x+1] != ' ':
r[y+1][x] = '!'
if r[8][m] == ' ':
op += 'x '
elif r[8][m-1] == ' ':
op += 'l '
m -= 1
elif r[8][m+1] == ' ':
op += 'r '
m += 1
else:
op += '\n\n'
break;
for y in range(8, 1, -1):
r[y] = r[y-1]
r[1] = ['|', ' ', ' ', ' ', ' ', ' ', '|']
#print 'op: "' + op + '"'
s.send(op[:-1] + '\n');
for x in xrange(len(op)/2-1):
msg = s.recv(8*11).strip()
print msg
solve()
aW1wb3J0IHNvY2tldAoKaG9zdCA9ICdncmFuZHByaXguc2hhbGx3ZXBsYXlhZ2EubWUnCnBvcnQgPSAyMDM4CgpzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCwgc29ja2V0LlNPQ0tfU1RSRUFNKQpzLmNvbm5lY3QoKGhvc3QscG9ydCkpCgoiIiIKIDEyMzQ1CnwtLS0tLXwKfFhYWFggfCAxCnwhISEgIHwgMgp8ISEgICB8IDMKfCEgICAgfCA0CnwgICAgIHwgNQp8ICAgICB8IDYKfCAgICAgfCA3CnwgICAgIHwgOAp8ICB1ICB8IDkKfC0tLS0tfAoiIiIKCmRlZiBzb2x2ZSgpOgogICAgICAgIG1zZyA9IHMucmVjdigxMDI0KS5zdHJpcCgpCiAgICAgICAgcHJpbnQgbXNnCiAgICAgICAgcy5zZW5kKCJcbiIpOwogICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICBtc2cgPSBzLnJlY3YoOCoxMSkuc3RyaXAoKQogICAgICAgICAgICAgICAgcHJpbnQgbXNnCiAgICAgICAgICAgICAgICBpZiBub3QgJy0tLS0tJyBpbiBtc2c6CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgICAgbXNnLnJlcGxhY2UoJz0nLCcgJykKICAgICAgICAgICAgICAgIHIgPSBtc2cuc3RyaXAoKS5zcGxpdCgnXG4nKQogICAgICAgICAgICAgICAgbSA9IHJbOV0uZmluZCgndScpCiAgICAgICAgICAgICAgICBmb3IgeSBpbiByYW5nZShsZW4ocikpOgogICAgICAgICAgICAgICAgICAgICAgICByW3ldID0gbGlzdChyW3ldKQogICAgICAgICAgICAgICAgcls5XVttXSA9ICcgJwogICAgICAgICAgICAgICAgb3AgPSAnJwogICAgICAgICAgICAgICAgZm9yIHogaW4geHJhbmdlKDEsNSk6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciB5IGluIHhyYW5nZSgxLDgpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHhyYW5nZSgxLDYpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgclt5XVt4LTFdICE9ICcgJyBhbmQgclt5XVt4XSAhPSAnICcgYW5kIHJbeV1beCsxXSAhPSAnICc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJbeSsxXVt4XSA9ICchJwogICAgICAgICAgICAgICAgICAgICAgICBpZiByWzhdW21dID09ICcgJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCArPSAneCAnCiAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgcls4XVttLTFdID09ICcgJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCArPSAnbCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSAtPSAxCiAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgcls4XVttKzFdID09ICcgJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCArPSAnciAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSArPSAxCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3AgKz0gJ1xuXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciB5IGluIHJhbmdlKDgsIDEsIC0xKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByW3ldID0gclt5LTFdCiAgICAgICAgICAgICAgICAgICAgICAgIHJbMV0gPSBbJ3wnLCAnICcsICcgJywgJyAnLCAnICcsICcgJywgJ3wnXQogICAgICAgICAgICAgICAgI3ByaW50ICdvcDogIicgKyBvcCArICciJwogICAgICAgICAgICAgICAgcy5zZW5kKG9wWzotMV0gKyAnXG4nKTsKICAgICAgICAgICAgICAgIGZvciB4IGluIHhyYW5nZShsZW4ob3ApLzItMSk6CiAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IHMucmVjdig4KjExKS5zdHJpcCgpCiAgICAgICAgICAgICAgICAgICAgICAgIHByaW50IG1zZwoKc29sdmUoKQ==