Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- from time import perf_counter
- class Server:
- def __init__(self):
- self.numbers = list()
- def __init_numbers(self, max_numbers: int, max_value: int):
- self.numbers.clear()
- for n in range(random.randint(4, max(4, max_numbers))):
- rnd = random.randint(0, max(0, max_value))
- self.numbers.append(rnd)
- def __get_random_index(self) -> int:
- return random.randint(0, len(self.numbers) - 1)
- def __get_target(self, c: []) -> int:
- return sum(map(lambda n: (self.numbers[n]), c))
- def __get_candidate(self) -> []:
- return [self.__get_random_index() for _ in range(4)]
- def generate(self, max_numbers: int, max_value: int):
- self.__init_numbers(max_numbers, max_value)
- candidate = self.__get_candidate()
- target = self.__get_target(candidate)
- solution = self.__get_solution(target)
- return [target, self.numbers, solution]
- def __get_solution(self, target: int):
- diffs = dict()
- for idx_i, i in enumerate(self.numbers):
- for idx_j, j in enumerate(self.numbers):
- sum = i + j
- if sum not in diffs:
- diffs[sum] = (idx_i, idx_j)
- if (target - sum) in diffs:
- return (idx_i, idx_j) + diffs[target - sum]
- return -1, -1, -1, -1
- server = Server()
- time = 0
- count = 1000
- for i in range(count):
- t = perf_counter()
- challenge = server.generate(1000, 10000)
- candidate_sum = challenge[0]
- candidate_first = challenge[2]
- time += perf_counter() - t
- print(f'Durchläufe: {count}')
- print(f'Gesamtzeit: {time:06.5f} s')
- print(f'Time: {(time / count) * 1000:06.5f} ms')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement