From c0d0be8013c950ec5e3ef92ed7c6038fb608b2e4 Mon Sep 17 00:00:00 2001 From: Anderson Date: Sat, 11 Jul 2026 19:22:08 -0300 Subject: [PATCH 1/2] Py Split Integer --- app/split_integer.py | 12 ++++++------ app/test_split_integer.py | 36 ++++++++++++++++++++++++++---------- 2 files changed, 32 insertions(+), 16 deletions(-) diff --git a/app/split_integer.py b/app/split_integer.py index 28c99c9b0..bbca2dcc6 100644 --- a/app/split_integer.py +++ b/app/split_integer.py @@ -1,7 +1,7 @@ def split_integer(value: int, number_of_parts: int) -> list: - parts = [] - for parts_left in range(number_of_parts, 0, -1): - next_number = value // parts_left - parts.append(value // parts_left) - value -= next_number - return parts + base = value // number_of_parts + remainder = value % number_of_parts + + parts_without_remainder = number_of_parts - remainder + + return [base] * parts_without_remainder + [base + 1] * remainder diff --git a/app/test_split_integer.py b/app/test_split_integer.py index ef3aa668a..b3b0e323d 100644 --- a/app/test_split_integer.py +++ b/app/test_split_integer.py @@ -1,21 +1,37 @@ from app.split_integer import split_integer -def test_sum_of_the_parts_should_be_equal_to_value() -> None: - pass +def test_example_from_description(): + assert split_integer(8, 1) == [8] + assert split_integer(6, 2) == [3, 3] + assert split_integer(17, 4) == [4, 4, 4, 5] + assert split_integer(32, 6) == [5, 5, 5, 5, 6, 6] -def test_should_split_into_equal_parts_when_value_divisible_by_parts() -> None: - pass +def test_correct_number_of_elements(): + assert len(split_integer(10, 3)) == 3 + assert len(split_integer(100, 10)) == 10 + assert len(split_integer(2, 2)) == 2 + assert len(split_integer(11, 4)) == 4 -def test_should_return_part_equals_to_value_when_split_into_one_part() -> None: - pass +def test_sorted_ascending(): + result1 = split_integer(17, 4) + assert result1 == sorted(result1) + result2 = split_integer(32, 6) + assert result2 == sorted(result2) -def test_parts_should_be_sorted_when_they_are_not_equal() -> None: - pass + result3 = split_integer(11, 4) + assert result3 == sorted(result3) -def test_should_add_zeros_when_value_is_less_than_number_of_parts() -> None: - pass +def test_max_min_difference(): + for v, p in [(17, 4), (32, 6), (11, 4), (6, 2), (8, 3)]: + result = split_integer(v, p) + assert max(result) - min(result) <= 1 + + +def test_sum_equals_value(): + for v, p in [(17, 4), (32, 6), (11, 4), (6, 2), (8, 3), (100, 9)]: + assert sum(split_integer(v, p)) == v From f9ff871b4ea0ce9ba4e1db72b831ed93ef294d43 Mon Sep 17 00:00:00 2001 From: Anderson Date: Sat, 11 Jul 2026 19:26:58 -0300 Subject: [PATCH 2/2] Py Split Integer 2 --- app/test_split_integer.py | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/app/test_split_integer.py b/app/test_split_integer.py index b3b0e323d..edf43e39b 100644 --- a/app/test_split_integer.py +++ b/app/test_split_integer.py @@ -1,37 +1,34 @@ from app.split_integer import split_integer -def test_example_from_description(): +def test_example_from_description() -> None: assert split_integer(8, 1) == [8] assert split_integer(6, 2) == [3, 3] assert split_integer(17, 4) == [4, 4, 4, 5] assert split_integer(32, 6) == [5, 5, 5, 5, 6, 6] -def test_correct_number_of_elements(): +def test_correct_number_of_elements() -> None: assert len(split_integer(10, 3)) == 3 assert len(split_integer(100, 10)) == 10 assert len(split_integer(2, 2)) == 2 assert len(split_integer(11, 4)) == 4 -def test_sorted_ascending(): - result1 = split_integer(17, 4) - assert result1 == sorted(result1) +def test_sorted_ascending() -> None: + assert split_integer(17, 4) == sorted(split_integer(17, 4)) + assert split_integer(32, 6) == sorted(split_integer(32, 6)) + assert split_integer(11, 4) == sorted(split_integer(11, 4)) - result2 = split_integer(32, 6) - assert result2 == sorted(result2) - result3 = split_integer(11, 4) - assert result3 == sorted(result3) - - -def test_max_min_difference(): - for v, p in [(17, 4), (32, 6), (11, 4), (6, 2), (8, 3)]: - result = split_integer(v, p) +def test_max_min_difference() -> None: + cases = [(17, 4), (32, 6), (11, 4), (6, 2), (8, 3)] + for value, parts in cases: + result = split_integer(value, parts) assert max(result) - min(result) <= 1 -def test_sum_equals_value(): - for v, p in [(17, 4), (32, 6), (11, 4), (6, 2), (8, 3), (100, 9)]: - assert sum(split_integer(v, p)) == v +def test_sum_equals_value() -> None: + cases = [(17, 4), (32, 6), (11, 4), (6, 2), (8, 3), (100, 9)] + for value, parts in cases: + assert sum(split_integer(value, parts)) == value