### 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")