Advertisement
MBrendecke

Challenge 8 - Python

Sep 22nd, 2018
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.35 KB | None | 0 0
  1. from json import dumps
  2. from time import perf_counter
  3.  
  4. from Session import Session  # https://pastebin.com/XbikUKu2
  5.  
  6.  
  7. def solve(nums: [], target: int):
  8.     diffs = dict()
  9.  
  10.     for idx_i, i in enumerate(nums):
  11.         for idx_j, j in enumerate(nums):
  12.             sum = i + j
  13.  
  14.             if sum not in diffs:
  15.                 diffs[sum] = [idx_i, idx_j]
  16.  
  17.             if (target - sum) in diffs:
  18.                 return sorted([idx_i, idx_j] + diffs[target - sum])
  19.  
  20.     return [-1, -1, -1, -1]
  21.  
  22.  
  23. def challenge8():
  24.     session = Session(8)
  25.     json_obj = session.get().json()
  26.     k = json_obj['k']
  27.     nums = json_obj['list']
  28.  
  29.     t = perf_counter()
  30.     ret = solve(nums, k)
  31.     elapsed = perf_counter() - t
  32.  
  33.     param = dumps({"token": ret})
  34.     response = session.post(data=param)
  35.  
  36.     if not response.text.startswith("Success"):
  37.         print(response)
  38.         print(k)
  39.         print(nums)
  40.         print(ret)
  41.         raise ValueError("Inkorrekte Lösung")
  42.  
  43.     print(f'{response.text:10}: {ret}')
  44.     print(f'Dictionary: {elapsed * 1000:06.5f} ms')
  45.     return elapsed
  46.  
  47.  
  48. if __name__ == '__main__':
  49.     try:
  50.         count = 100
  51.         sum = 0
  52.         times = 0
  53.         for n in range(count):
  54.             sum += challenge8()
  55.             times += 1
  56.     finally:
  57.         print(f'Durchschnittlich: {(sum / times) * 1000:06.5f} ms')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement