From d8fadfce927ded515784f96676111b3c1f93ec37 Mon Sep 17 00:00:00 2001 From: Lubos Kolouch Date: Sat, 19 Mar 2022 10:10:20 +0100 Subject: feat(challenge-156/lubos-kolouch/ch-1.py): Challenge 156 Task 1 Python LK --- challenge-156/lubos-kolouch/python/ch-1.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 challenge-156/lubos-kolouch/python/ch-1.py diff --git a/challenge-156/lubos-kolouch/python/ch-1.py b/challenge-156/lubos-kolouch/python/ch-1.py new file mode 100644 index 0000000000..66576b2f52 --- /dev/null +++ b/challenge-156/lubos-kolouch/python/ch-1.py @@ -0,0 +1,22 @@ +""" Challenge 156 Task 1 LK """ +import re + +from sympy import isprime + + +def get_pernicious(what: int) -> list: + """Get the pernicious numbers""" + + nums: list[int] = [] + + num = 0 + while len(nums) < what: + num += 1 + bin_num = f"{num:b}" + bin_num = re.sub("0", "", bin_num) + if isprime(len(bin_num)): + nums.append(num) + return nums + + +assert get_pernicious(10) == [3, 5, 6, 7, 9, 10, 11, 12, 13, 14] -- cgit From b9ec2195aa1d4d05416d73c4c4dcdfa6b54f0262 Mon Sep 17 00:00:00 2001 From: Lubos Kolouch Date: Sat, 19 Mar 2022 10:17:40 +0100 Subject: feat(challenge-156/lubos-kolouch/python/ch-2.py): Challenge 156 Task 2 Python LK --- challenge-156/lubos-kolouch/python/ch-2.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 challenge-156/lubos-kolouch/python/ch-2.py diff --git a/challenge-156/lubos-kolouch/python/ch-2.py b/challenge-156/lubos-kolouch/python/ch-2.py new file mode 100644 index 0000000000..aa62e4cbe1 --- /dev/null +++ b/challenge-156/lubos-kolouch/python/ch-2.py @@ -0,0 +1,27 @@ +""" Challenge 156 Task 2 LK """ +from itertools import combinations + +from sympy import divisors + + +def is_weird(what: int) -> bool: + """Check if the number is weird""" + + all_divisors = divisors(what) + + # remove the number itself from the list + del all_divisors[-1] + + if sum(all_divisors) <= what: + return False + + for i in range(1, len(all_divisors) + 1): + all_combs = combinations(all_divisors, i) + for comb in all_combs: + if sum(comb) == what: + return False + return True + + +assert is_weird(12) == 0 +assert is_weird(70) == 1 -- cgit