From 190afd4669c7c4fc3cfe82b7825913b07f27643b Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Mon, 7 Aug 2023 11:56:41 +0000 Subject: [PATCH 1/5] updating DIRECTORY.md --- DIRECTORY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index fdcf0ceedf1f..e6a1ff356143 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -585,6 +585,7 @@ * [Hardy Ramanujanalgo](maths/hardy_ramanujanalgo.py) * [Hexagonal Number](maths/hexagonal_number.py) * [Integration By Simpson Approx](maths/integration_by_simpson_approx.py) + * [Interquartile Range](maths/interquartile_range.py) * [Is Int Palindrome](maths/is_int_palindrome.py) * [Is Ip V4 Address Valid](maths/is_ip_v4_address_valid.py) * [Is Square Free](maths/is_square_free.py) From c48d7cadb6f8dc58f28661ee7ef863ba2707ad0c Mon Sep 17 00:00:00 2001 From: CaedenPH Date: Wed, 16 Aug 2023 16:05:18 +0100 Subject: [PATCH 2/5] types(permuations): Rename permute2 --- data_structures/arrays/permutations.py | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/data_structures/arrays/permutations.py b/data_structures/arrays/permutations.py index 4558bd8d468a..5cbf46f8c1e5 100644 --- a/data_structures/arrays/permutations.py +++ b/data_structures/arrays/permutations.py @@ -1,17 +1,16 @@ -def permute(nums: list[int]) -> list[list[int]]: +def permute_iterative(nums: list[int]) -> list[list[int]]: """ Return all permutations. - >>> from itertools import permutations - >>> numbers= [1,2,3] - >>> all(list(nums) in permute(numbers) for nums in permutations(numbers)) - True + + >>> permute_backtrack([1, 2, 3]) + [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 2, 1], [3, 1, 2]] """ - result = [] + result: list[list[int]] = [] if len(nums) == 1: return [nums.copy()] for _ in range(len(nums)): n = nums.pop(0) - permutations = permute(nums) + permutations = permute_iterative(nums) for perm in permutations: perm.append(n) result.extend(permutations) @@ -19,15 +18,15 @@ def permute(nums: list[int]) -> list[list[int]]: return result -def permute2(nums): +def permute_backtrack(nums: list[int]) -> list[list[int]]: """ Return all permutations of the given list. - >>> permute2([1, 2, 3]) + >>> permute_backtrack([1, 2, 3]) [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 2, 1], [3, 1, 2]] """ - def backtrack(start): + def backtrack(start: int) -> None: if start == len(nums) - 1: output.append(nums[:]) else: @@ -36,7 +35,7 @@ def backtrack(start): backtrack(start + 1) nums[start], nums[i] = nums[i], nums[start] # backtrack - output = [] + output: list[list[int]] = [] backtrack(0) return output @@ -45,6 +44,6 @@ def backtrack(start): import doctest # use res to print the data in permute2 function - res = permute2([1, 2, 3]) + res = permute_backtrack([1, 2, 3]) print(res) doctest.testmod() From 5a420d712c64fdd30c52ada83fb9805de8a663c5 Mon Sep 17 00:00:00 2001 From: Caeden Perelli-Harris Date: Tue, 22 Aug 2023 10:02:02 +0100 Subject: [PATCH 3/5] Apply suggestions from code review Co-authored-by: Tianyi Zheng --- data_structures/arrays/permutations.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/data_structures/arrays/permutations.py b/data_structures/arrays/permutations.py index 5cbf46f8c1e5..aa8912bac900 100644 --- a/data_structures/arrays/permutations.py +++ b/data_structures/arrays/permutations.py @@ -1,4 +1,4 @@ -def permute_iterative(nums: list[int]) -> list[list[int]]: +def permute_recursive(nums: list[int]) -> list[list[int]]: """ Return all permutations. @@ -6,8 +6,8 @@ def permute_iterative(nums: list[int]) -> list[list[int]]: [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 2, 1], [3, 1, 2]] """ result: list[list[int]] = [] - if len(nums) == 1: - return [nums.copy()] + if len(nums) == 0: + return [[]] for _ in range(len(nums)): n = nums.pop(0) permutations = permute_iterative(nums) @@ -43,7 +43,6 @@ def backtrack(start: int) -> None: if __name__ == "__main__": import doctest - # use res to print the data in permute2 function res = permute_backtrack([1, 2, 3]) print(res) doctest.testmod() From ac7c6f3087909badc69613e956ab5f54b407dc46 Mon Sep 17 00:00:00 2001 From: CaedenPH Date: Tue, 22 Aug 2023 10:04:11 +0100 Subject: [PATCH 4/5] fix(permutations): Call permute_recursive --- data_structures/arrays/permutations.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data_structures/arrays/permutations.py b/data_structures/arrays/permutations.py index aa8912bac900..978588d08fa6 100644 --- a/data_structures/arrays/permutations.py +++ b/data_structures/arrays/permutations.py @@ -2,7 +2,7 @@ def permute_recursive(nums: list[int]) -> list[list[int]]: """ Return all permutations. - >>> permute_backtrack([1, 2, 3]) + >>> permute_recursive([1, 2, 3]) [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 2, 1], [3, 1, 2]] """ result: list[list[int]] = [] @@ -10,7 +10,7 @@ def permute_recursive(nums: list[int]) -> list[list[int]]: return [[]] for _ in range(len(nums)): n = nums.pop(0) - permutations = permute_iterative(nums) + permutations = permute_recursive(nums) for perm in permutations: perm.append(n) result.extend(permutations) From 0899a386bf2f4af027ab26c8676e28536d8f6fcf Mon Sep 17 00:00:00 2001 From: Caeden Perelli-Harris Date: Tue, 22 Aug 2023 10:14:04 +0100 Subject: [PATCH 5/5] fix(permutations): Correct permutations order --- data_structures/arrays/permutations.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_structures/arrays/permutations.py b/data_structures/arrays/permutations.py index 978588d08fa6..0f029187b92b 100644 --- a/data_structures/arrays/permutations.py +++ b/data_structures/arrays/permutations.py @@ -3,7 +3,7 @@ def permute_recursive(nums: list[int]) -> list[list[int]]: Return all permutations. >>> permute_recursive([1, 2, 3]) - [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 2, 1], [3, 1, 2]] + [[3, 2, 1], [2, 3, 1], [1, 3, 2], [3, 1, 2], [2, 1, 3], [1, 2, 3]] """ result: list[list[int]] = [] if len(nums) == 0: