From ad0cd08228ece0f851b253531f4e369240ebdcab Mon Sep 17 00:00:00 2001 From: daviddoji Date: Sat, 16 Jul 2022 17:50:22 +0200 Subject: [PATCH] Better naming and mypy adoption --- src/Python/Problem061.py | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/Python/Problem061.py b/src/Python/Problem061.py index a68ad54..da8e11a 100644 --- a/src/Python/Problem061.py +++ b/src/Python/Problem061.py @@ -43,33 +43,38 @@ def compute(): heptagonal, and octagonal, is represented by a different number in the set. """ - def F(k, n): - return (n * (n - 1) * (k - 2) // 2) + n + def get_numbers(order: int, number: int) -> int: + return (number * (number - 1) * (order - 2) // 2) + number - P = {k: set(str(F(k, n)) for n in range(150)) for k in range(3, 9)} + poligonals: dict[int, set[int]] = { + o: set(str(get_numbers(o, n)) for n in range(150)) for o in range(3, 9) + } - four_digits_numbers = {str(n) for n in range(10**3, 10**4)} + four_digits_numbers: set[str] = {str(n) for n in range(10**3, 10**4)} - dic = {k: list(v & four_digits_numbers) for k, v in P.items()} + eligibles: dict[int, list[str]] = { + k: list(v & four_digits_numbers) for k, v in poligonals.items() + } - perms = permutations(dic.keys(), 6) + perms = permutations(eligibles.keys(), 6) for perm in perms: - for a in dic.get(perm[0]): - lst = [] + for a in eligibles.get(perm[0]): + ans = [] a1, a2 = a[:2], a[2:] - for b in filter(lambda n: n[:2] == a2, dic.get(perm[1])): + for b in filter(lambda n: n[:2] == a2, eligibles.get(perm[1])): b2 = b[2:] - for c in filter(lambda n: n[:2] == b2, dic.get(perm[2])): + for c in filter(lambda n: n[:2] == b2, eligibles.get(perm[2])): c2 = c[2:] - for d in filter(lambda n: n[:2] == c2, dic.get(perm[3])): + for d in filter(lambda n: n[:2] == c2, eligibles.get(perm[3])): d2 = d[2:] - for e in filter(lambda n: n[:2] == d2, dic.get(perm[4])): + for e in filter(lambda n: n[:2] == d2, eligibles.get(perm[4])): e2 = e[2:] for f in filter( - lambda n: n[:2] == e2 and n[2:] == a1, dic.get(perm[5]) + lambda n: n[:2] == e2 and n[2:] == a1, + eligibles.get(perm[5]), ): - lst.append([a, b, c, d, e, f]) - return sum(map(int, lst[0])) + ans.append([a, b, c, d, e, f]) + return sum(map(int, ans[0])) if __name__ == "__main__":