-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathpalindrome.py
53 lines (49 loc) · 1.59 KB
/
palindrome.py
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 socket, copy
words = ['tzztxgumeg', 'zfiqo', 'xdgemugx', 'dx', 'oqifz']
def palindrome(words, left, right, sl, sr, i):
#print i, left + ' ' + right
if len(words) > 1:
for i in range(0,len(words)):
for j in range(0,len(words)):
l = words[i]
r = words[j]
if i != j:
right_p = r + right
left_p = left + l
sl_p = sl + ' ' + l
sr_p = r + ' ' + sr
p = min(len(right_p), len(left_p))
if left_p[:p] == right_p[::-1][:p]:
M = copy.copy(words)
M.remove(l)
M.remove(r)
y = palindrome(M, left_p, right_p, sl_p, sr_p, i+1)
if y != False:
return y
elif len(words) == 1:
print "HHHHHHHH", words
y = left + words[0] + right
if y == y[::-1]:
return sl + ' ' + words[0] + ' ' + sr
else:
return False
else:
y = (left + right)
if y == y[::-1]:
return (sl + ' ' + sr)
else:
return False
return False
s = socket.create_connection(('ppc1.chal.ctf.westerns.tokyo', 31111))
print s.recv(1024)
data = s.recv(1024)
while True:
for line in data.split('\n'):
ll = line.split(' ')
if ll[0] == 'Input:':
uu = palindrome(ll[2:],'','','','',0)
s.send(uu + '\n')
data = s.recv(1024)
print data
if data == '':
break