Advertisement
Guest User

Untitled

a guest
Oct 20th, 2016
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.43 KB | None | 0 0
  1. import socket
  2.  
  3. sock = socket.socket()
  4. sock.connect(("hackyou-ppc300.ctf.su", 11111))
  5.  
  6. data = sock.recv(10000).decode()
  7. data = sock.recv(10000).decode()
  8. map = data.split('\r\n')[4:-2]
  9.  
  10. while True:
  11.     queue = [(19, 1)]
  12.     visited = {(19, 1)}
  13.     prev = dict()
  14.     start = (19, 1)
  15.     finish = (1,39)
  16.     delta = [(-1, 0), (1, 0), (0, 1), (0, -1)]
  17.  
  18.     print(data)
  19.     while len(queue) > 0:
  20.         cur = queue.pop(0)
  21.         if (cur == finish):
  22.             break
  23.         x, y = cur
  24.         #print(x, y)
  25.         for d in delta:
  26.             dx, dy = d
  27.             if map[x + dx][y + dy] == ' ' and (x + dx, y + dy) not in visited:
  28.                 visited.add((x + dx, y + dy))
  29.                 prev[(x + dx, y + dy)] = cur
  30.                 queue.append((x + dx, y + dy))
  31.  
  32.     ans = []
  33.     cur = finish
  34.     while cur != start:
  35.         ans.append(cur)
  36.         cur = prev[cur]
  37.  
  38.     ans.reverse()
  39.     prev_cur = start
  40.     directions = {
  41.         (0, 1):'d',
  42.         (0, -1): 'a',
  43.         (1, 0): 's',
  44.         (-1, 0): 'w',
  45.     }
  46.     ans_dir = []
  47.     for cur in ans:
  48.         x2, y2 = cur
  49.         x1, y1 = prev_cur
  50.         dx, dy = x2 - x1, y2 - y1
  51.         ans_dir.append(directions[(dx, dy)])
  52.         prev_cur = cur
  53.  
  54.     for direction in ans_dir:
  55.         sock.send(direction.encode())
  56.         data = sock.recv(10000).decode()
  57.  
  58.     data = sock.recv(10000).decode()
  59.     print(data)
  60.     map = data.split('\r\n')[7:-2]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement