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