Skip to content

Instantly share code, notes, and snippets.

@cubarco
Created November 17, 2015 07:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cubarco/adf322fc08562f705332 to your computer and use it in GitHub Desktop.
Save cubarco/adf322fc08562f705332 to your computer and use it in GitHub Desktop.
#!/usr/bin/env python
# coding=utf8
'''
Copy this file to /tmp, and run it.
'''
import socket
import re
import sys
def wr_socket(sf, line):
sf.write(line)
sf.flush()
ret = sf.readline()
if ret:
print ret.strip()
return ret
else:
sys.exit(1)
def find(line):
print line.strip()
return re.findall('^N=([0-9]*) C=([0-9]*)$', line)
def solve(numbers, chances, sf):
list1 = range(numbers)
list2 = []
try_count = 0
while True:
mid = numbers / 2
for i in range(mid):
list2.append(list1.pop())
req_string = " ".join(map(str, list1)) + '\n'
try_count += 1
line = wr_socket(sf, req_string)
wei = int(line)
if wei == len(list1) * 10:
if len(list2) == 1:
result = list2[0]
break
list1 = list(list2)
elif len(list1) == 1:
result = list1[0]
break
list2 = []
numbers = len(list1)
while try_count <= chances:
try_count += 1
wr_socket(sf, str(result) + '\n')
if __name__ == '__main__':
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('127.0.0.1', 9007))
sf = s.makefile()
while True:
while True:
line = sf.readline()
if line:
pair = find(line)
else:
sys.exit(1)
if pair:
break
n, c = map(int, pair[0])
solve(n, c, sf)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment