From f97cda971ba8f079dc1fe51db5e773989c3386c6 Mon Sep 17 00:00:00 2001 From: Margaret <62753112+meg-1@users.noreply.github.com> Date: Wed, 5 Oct 2022 17:11:21 +0300 Subject: [PATCH 01/10] adding the remove digit algorithm --- maths/remove_digit.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 maths/remove_digit.py diff --git a/maths/remove_digit.py b/maths/remove_digit.py new file mode 100644 index 000000000000..f27d7ad48c11 --- /dev/null +++ b/maths/remove_digit.py @@ -0,0 +1,32 @@ +def remove_digit(num: int)->int: + """ + + returns the biggest possible result + that can be achieved by removing + one digit from the given number + + >>> remove_digit(152) + 52 + >>> remove_digit(6385) + 685 + >>> remove_digit(-11) + 1 + >>> remove_digit(2222222) + 222222 + >>> remove_digit("2222222") + 0 + >>> remove_digit("string input") + 0 + """ + + try: + num_str = str(abs(num)) + num_list = [[c for c in num_str] for c in range(len(num_str))] + for c in range(len(num_str)): + num_list[c].pop(c) + return sorted([int("".join([a for a in c])) for c in num_list])[-1] + except TypeError: + return 0 + +if __name__ == "__main__": + __import__("doctest").testmod() \ No newline at end of file From b9013e5826efc1bd018d9cfed91abcf0e597ff93 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 5 Oct 2022 14:43:59 +0000 Subject: [PATCH 02/10] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- maths/remove_digit.py | 55 ++++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/maths/remove_digit.py b/maths/remove_digit.py index f27d7ad48c11..f4fa6aa553bb 100644 --- a/maths/remove_digit.py +++ b/maths/remove_digit.py @@ -1,32 +1,33 @@ -def remove_digit(num: int)->int: - """ +def remove_digit(num: int) -> int: + """ - returns the biggest possible result - that can be achieved by removing - one digit from the given number + returns the biggest possible result + that can be achieved by removing + one digit from the given number - >>> remove_digit(152) - 52 - >>> remove_digit(6385) - 685 - >>> remove_digit(-11) - 1 - >>> remove_digit(2222222) - 222222 - >>> remove_digit("2222222") - 0 - >>> remove_digit("string input") - 0 - """ + >>> remove_digit(152) + 52 + >>> remove_digit(6385) + 685 + >>> remove_digit(-11) + 1 + >>> remove_digit(2222222) + 222222 + >>> remove_digit("2222222") + 0 + >>> remove_digit("string input") + 0 + """ + + try: + num_str = str(abs(num)) + num_list = [[c for c in num_str] for c in range(len(num_str))] + for c in range(len(num_str)): + num_list[c].pop(c) + return sorted([int("".join([a for a in c])) for c in num_list])[-1] + except TypeError: + return 0 - try: - num_str = str(abs(num)) - num_list = [[c for c in num_str] for c in range(len(num_str))] - for c in range(len(num_str)): - num_list[c].pop(c) - return sorted([int("".join([a for a in c])) for c in num_list])[-1] - except TypeError: - return 0 if __name__ == "__main__": - __import__("doctest").testmod() \ No newline at end of file + __import__("doctest").testmod() From d4d1ef8d5f3d8a22a7b9dd44d74ca4df2bfeeece Mon Sep 17 00:00:00 2001 From: Margaret <62753112+meg-1@users.noreply.github.com> Date: Wed, 12 Oct 2022 17:30:44 +0300 Subject: [PATCH 03/10] refactoring code --- maths/remove_digit.py | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/maths/remove_digit.py b/maths/remove_digit.py index f4fa6aa553bb..f78d6c44ea17 100644 --- a/maths/remove_digit.py +++ b/maths/remove_digit.py @@ -14,19 +14,28 @@ def remove_digit(num: int) -> int: >>> remove_digit(2222222) 222222 >>> remove_digit("2222222") - 0 + Traceback (most recent call last): + TypeError: only integers accepted as input >>> remove_digit("string input") - 0 + Traceback (most recent call last): + TypeError: only integers accepted as input """ - try: + if type(num) == int: num_str = str(abs(num)) - num_list = [[c for c in num_str] for c in range(len(num_str))] - for c in range(len(num_str)): - num_list[c].pop(c) - return sorted([int("".join([a for a in c])) for c in num_list])[-1] - except TypeError: - return 0 + num_transpositions = [ + [char for char in num_str] for char in range(len(num_str)) + ] + for index in range(len(num_str)): + num_transpositions[index].pop(index) + return sorted( + [ + int("".join([char for char in transposition])) + for transposition in num_transpositions + ] + )[-1] + else: + raise TypeError("only integers accepted as input") if __name__ == "__main__": From c4b81c20e0716484c18329acadefd52ba840d0e1 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Sun, 30 Oct 2022 13:55:54 +0100 Subject: [PATCH 04/10] Apply suggestions from code review Co-authored-by: Caeden Perelli-Harris --- maths/remove_digit.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/maths/remove_digit.py b/maths/remove_digit.py index f78d6c44ea17..d1ce43a85220 100644 --- a/maths/remove_digit.py +++ b/maths/remove_digit.py @@ -21,7 +21,7 @@ def remove_digit(num: int) -> int: TypeError: only integers accepted as input """ - if type(num) == int: + if isinstance(num, int): num_str = str(abs(num)) num_transpositions = [ [char for char in num_str] for char in range(len(num_str)) @@ -29,11 +29,11 @@ def remove_digit(num: int) -> int: for index in range(len(num_str)): num_transpositions[index].pop(index) return sorted( - [ - int("".join([char for char in transposition])) - for transposition in num_transpositions + int("".join([char for char in transposition])) + for transposition in num_transpositions, + reverse=True ] - )[-1] + )[0] else: raise TypeError("only integers accepted as input") From a4a47ab688adc4bb3d1c92095744981d77f04dc7 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Sun, 30 Oct 2022 14:09:05 +0100 Subject: [PATCH 05/10] Update remove_digit.py --- maths/remove_digit.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/maths/remove_digit.py b/maths/remove_digit.py index d1ce43a85220..772b89687025 100644 --- a/maths/remove_digit.py +++ b/maths/remove_digit.py @@ -29,10 +29,8 @@ def remove_digit(num: int) -> int: for index in range(len(num_str)): num_transpositions[index].pop(index) return sorted( - int("".join([char for char in transposition])) - for transposition in num_transpositions, - reverse=True - ] + int("".join([char for char in transposition])) for transposition in num_transpositions, + reverse=True )[0] else: raise TypeError("only integers accepted as input") From 2e1aa1ae234a719d78ef2c5b77a2d495d4d06074 Mon Sep 17 00:00:00 2001 From: Margaret <62753112+meg-1@users.noreply.github.com> Date: Wed, 16 Nov 2022 17:20:23 +0200 Subject: [PATCH 06/10] fixing errors --- maths/remove_digit.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/maths/remove_digit.py b/maths/remove_digit.py index 772b89687025..45d5a5bf7f80 100644 --- a/maths/remove_digit.py +++ b/maths/remove_digit.py @@ -29,8 +29,11 @@ def remove_digit(num: int) -> int: for index in range(len(num_str)): num_transpositions[index].pop(index) return sorted( - int("".join([char for char in transposition])) for transposition in num_transpositions, - reverse=True + ( + int("".join([char for char in transposition])) + for transposition in num_transpositions + ), + reverse=True, )[0] else: raise TypeError("only integers accepted as input") From a493d79cc45e42b3729ddac6feadda187ae56a3e Mon Sep 17 00:00:00 2001 From: Margaret <62753112+meg-1@users.noreply.github.com> Date: Wed, 16 Nov 2022 17:30:55 +0200 Subject: [PATCH 07/10] fixing error C416 --- maths/remove_digit.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maths/remove_digit.py b/maths/remove_digit.py index 45d5a5bf7f80..a20fe5e07f3f 100644 --- a/maths/remove_digit.py +++ b/maths/remove_digit.py @@ -24,13 +24,13 @@ def remove_digit(num: int) -> int: if isinstance(num, int): num_str = str(abs(num)) num_transpositions = [ - [char for char in num_str] for char in range(len(num_str)) + list(num_str) for char in range(len(num_str)) ] for index in range(len(num_str)): num_transpositions[index].pop(index) return sorted( ( - int("".join([char for char in transposition])) + int("".join(list(transposition))) for transposition in num_transpositions ), reverse=True, From 80372daabaaddc76a3666f44b850adc00a8b4dfb Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 16 Nov 2022 15:32:12 +0000 Subject: [PATCH 08/10] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- maths/remove_digit.py | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/maths/remove_digit.py b/maths/remove_digit.py index a20fe5e07f3f..6cec01945d94 100644 --- a/maths/remove_digit.py +++ b/maths/remove_digit.py @@ -23,16 +23,11 @@ def remove_digit(num: int) -> int: if isinstance(num, int): num_str = str(abs(num)) - num_transpositions = [ - list(num_str) for char in range(len(num_str)) - ] + num_transpositions = [list(num_str) for char in range(len(num_str))] for index in range(len(num_str)): num_transpositions[index].pop(index) return sorted( - ( - int("".join(list(transposition))) - for transposition in num_transpositions - ), + (int("".join(list(transposition))) for transposition in num_transpositions), reverse=True, )[0] else: From 96c317a89da45a3c8b2db5a885ca944eb2540362 Mon Sep 17 00:00:00 2001 From: Margaret <62753112+meg-1@users.noreply.github.com> Date: Wed, 23 Nov 2022 17:34:31 +0200 Subject: [PATCH 09/10] implementing contributors suggestions --- maths/remove_digit.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/maths/remove_digit.py b/maths/remove_digit.py index 6cec01945d94..5b5c5e4d45f0 100644 --- a/maths/remove_digit.py +++ b/maths/remove_digit.py @@ -21,17 +21,16 @@ def remove_digit(num: int) -> int: TypeError: only integers accepted as input """ - if isinstance(num, int): + if not isinstance(num, int): + raise TypeError("only integers accepted as input") + else: num_str = str(abs(num)) num_transpositions = [list(num_str) for char in range(len(num_str))] for index in range(len(num_str)): num_transpositions[index].pop(index) - return sorted( - (int("".join(list(transposition))) for transposition in num_transpositions), - reverse=True, - )[0] - else: - raise TypeError("only integers accepted as input") + return max( + (int("".join(list(transposition))) for transposition in num_transpositions) + ) if __name__ == "__main__": From 05f4d710548e5578737e5828c520e2589794688f Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 23 Nov 2022 15:38:07 +0000 Subject: [PATCH 10/10] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- maths/remove_digit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maths/remove_digit.py b/maths/remove_digit.py index 5b5c5e4d45f0..db14ac902a6f 100644 --- a/maths/remove_digit.py +++ b/maths/remove_digit.py @@ -29,7 +29,7 @@ def remove_digit(num: int) -> int: for index in range(len(num_str)): num_transpositions[index].pop(index) return max( - (int("".join(list(transposition))) for transposition in num_transpositions) + int("".join(list(transposition))) for transposition in num_transpositions )