Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ### Version 2.0 ###
- from collections import defaultdict
- from json import dumps
- from time import perf_counter
- from Session import Session
- def solve(nums: [], target: int):
- diffs = defaultdict(list)
- deltas = defaultdict(list)
- for index, number in enumerate(nums):
- if number > target:
- continue
- diff = target - number
- if diff == number:
- return index, index
- diffs[diff].append(index)
- for index, number in enumerate(nums):
- if number in diffs.keys():
- for n in diffs[number]:
- position = (n, index)
- delta = (position[1] - position[0])
- deltas[abs(delta)].append(position)
- min_key = min(deltas.keys())
- values = deltas[min_key]
- ret_val = min(values, key=lambda x: x[0])
- return ret_val
- def challenge9() -> float:
- session = Session(9)
- json_obj = session.get().json()
- k = json_obj['k']
- nums = json_obj['list']
- t = perf_counter()
- ret = solve(nums, k)
- elapsed = perf_counter() - t
- param = dumps({"token": ret})
- response = session.post(data=param)
- if not response.text.startswith("Success"):
- print(response)
- print(k)
- print(nums)
- print(ret)
- raise ValueError("Inkorrekte Lösung")
- print(f'{response.text:10}: {ret}')
- print(f'Dictionary: {elapsed * 1000:06.5f} ms')
- return elapsed
- if __name__ == '__main__':
- sum: float = 0
- times = 0
- try:
- count = 100
- for n in range(count):
- sum += challenge9()
- times += 1
- finally:
- print(f"Durchschnittlich: {sum / times * 1000:06.5f} ms")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement