From ae96d363310c70a72048d9b7848fcd3d0c32cabe Mon Sep 17 00:00:00 2001 From: labrocadabro Date: Tue, 6 May 2025 11:58:28 -0300 Subject: [PATCH 1/4] Start draft PR From 7c8461eb59f46f89348cb072deedf1804e09fba2 Mon Sep 17 00:00:00 2001 From: labrocadabro Date: Tue, 6 May 2025 11:58:46 -0300 Subject: [PATCH 2/4] Add array flattening function with recursive implementation --- src/array_flattener.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/array_flattener.py diff --git a/src/array_flattener.py b/src/array_flattener.py new file mode 100644 index 00000000..8f0a9a36 --- /dev/null +++ b/src/array_flattener.py @@ -0,0 +1,31 @@ +from typing import List, Union, Any + +def flatten_array(nested_list: List[Any]) -> List[Any]: + """ + Recursively flatten a nested list of arbitrary depth. + + Args: + nested_list (List[Any]): A potentially nested list to be flattened. + + Returns: + List[Any]: A flattened list with all nested elements extracted. + + Examples: + >>> flatten_array([1, [2, 3], [4, [5, 6]]]) + [1, 2, 3, 4, 5, 6] + >>> flatten_array([]) + [] + >>> flatten_array([1, 2, 3]) + [1, 2, 3] + """ + flattened = [] + + for item in nested_list: + # If the item is a list, recursively flatten it + if isinstance(item, list): + flattened.extend(flatten_array(item)) + else: + # If not a list, add the item directly + flattened.append(item) + + return flattened \ No newline at end of file From 2a2bb35732ba8ae62c91c90b85ed5bf849814a64 Mon Sep 17 00:00:00 2001 From: labrocadabro Date: Tue, 6 May 2025 11:58:54 -0300 Subject: [PATCH 3/4] Add comprehensive tests for array flattening function --- tests/test_array_flattener.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 tests/test_array_flattener.py diff --git a/tests/test_array_flattener.py b/tests/test_array_flattener.py new file mode 100644 index 00000000..9966b9b0 --- /dev/null +++ b/tests/test_array_flattener.py @@ -0,0 +1,31 @@ +import pytest +from src.array_flattener import flatten_array + +def test_flatten_simple_nested_list(): + """Test flattening a simple nested list.""" + input_list = [1, [2, 3], 4] + assert flatten_array(input_list) == [1, 2, 3, 4] + +def test_flatten_deeply_nested_list(): + """Test flattening a deeply nested list.""" + input_list = [1, [2, [3, 4]], [5, [6, 7]]] + assert flatten_array(input_list) == [1, 2, 3, 4, 5, 6, 7] + +def test_flatten_empty_list(): + """Test flattening an empty list.""" + assert flatten_array([]) == [] + +def test_flatten_no_nesting(): + """Test flattening a list with no nesting.""" + input_list = [1, 2, 3, 4, 5] + assert flatten_array(input_list) == [1, 2, 3, 4, 5] + +def test_flatten_mixed_types(): + """Test flattening a list with mixed types and nesting.""" + input_list = [1, 'a', [2, 'b'], [3, [4, 'c']]] + assert flatten_array(input_list) == [1, 'a', 2, 'b', 3, 4, 'c'] + +def test_flatten_single_element_lists(): + """Test flattening lists with single-element nested lists.""" + input_list = [[1], [2], [3]] + assert flatten_array(input_list) == [1, 2, 3] \ No newline at end of file From e130e256dcaee4b3a2662f8e0c86be0229e57f0d Mon Sep 17 00:00:00 2001 From: momstrosity Date: Tue, 6 May 2025 12:37:25 -0300 Subject: [PATCH 4/4] Start draft PR