From 3e2d2e42d16cce3601a561e30cde7a2063505078 Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 10:42:28 -0400 Subject: [PATCH 01/30] hello_world solved --- exercises/hello_world/solution.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exercises/hello_world/solution.py b/exercises/hello_world/solution.py index 19b776e..42e8983 100644 --- a/exercises/hello_world/solution.py +++ b/exercises/hello_world/solution.py @@ -1,4 +1,4 @@ -SUBMIT = False +SUBMIT = True def hello_world() -> str: @@ -8,7 +8,7 @@ def hello_world() -> str: >>> hello_world() 'Hello, World!' """ - return "" + return "Hello, World!" def test() -> None: From 21843e34a4d7e4efa52e4a51aab394f96474fe09 Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 10:54:28 -0400 Subject: [PATCH 02/30] fibonacci solved --- exercises/fibonacci/solution.py | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/exercises/fibonacci/solution.py b/exercises/fibonacci/solution.py index b85766d..b0226c6 100644 --- a/exercises/fibonacci/solution.py +++ b/exercises/fibonacci/solution.py @@ -1,20 +1,15 @@ -SUBMIT = False +SUBMIT = True def fibonacci(n: int) -> int: - """Calculates the n-th Fibonacci number. - - Example usage: - >>> fibonacci(0) - 0 - >>> fibonacci(1) - 1 - >>> fibonacci(5) - 5 - >>> fibonacci(10) - 55 - """ - return 0 + arr = [0, 1] + if(n < 0): + return 0 + elif(n < 2): + return arr[n] + for i in range(n - 1): + arr[i % 2] = sum(arr) + return arr[n % 2] def test() -> None: From aef7ef6e117d74f25cfd7729f68fe3b583c262ca Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 10:57:42 -0400 Subject: [PATCH 03/30] palindrome solved --- exercises/palindrome/solution.py | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/exercises/palindrome/solution.py b/exercises/palindrome/solution.py index 7664e28..6d913d5 100644 --- a/exercises/palindrome/solution.py +++ b/exercises/palindrome/solution.py @@ -1,17 +1,12 @@ -SUBMIT = False +SUBMIT = True def palindrome(_text: str) -> bool: - # noqa: ARG001 - """Checks if a string is a palindrome. - - Example usage: - >>> palindrome("racecar") - True - >>> palindrome("hello") - False - """ - return False + n = len(_text) + for i in range(n // 2): + if(_text[i] != _text[n - 1 - i]): + return False + return True def test() -> None: From 2e4d2a282dfaafa958d21938e4120f388e6cf7a8 Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 10:59:18 -0400 Subject: [PATCH 04/30] sum_two_numbers solved --- exercises/sum_two_numbers/solution.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exercises/sum_two_numbers/solution.py b/exercises/sum_two_numbers/solution.py index 6bed6c8..a4c44a2 100644 --- a/exercises/sum_two_numbers/solution.py +++ b/exercises/sum_two_numbers/solution.py @@ -1,4 +1,4 @@ -SUBMIT = False +SUBMIT = True def sum_two_numbers(_a: int, _b: int) -> int: @@ -13,7 +13,7 @@ def sum_two_numbers(_a: int, _b: int) -> int: >>> sum_two_numbers(0, 0) 0 """ - return 0 + return _a + _b def test() -> None: From ec834fa26e75a637fba3355e2bdffec01d90eb8b Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 11:00:40 -0400 Subject: [PATCH 05/30] personalized_greeting solved --- exercises/personalized_greeting/solution.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exercises/personalized_greeting/solution.py b/exercises/personalized_greeting/solution.py index aed3a12..1e53057 100644 --- a/exercises/personalized_greeting/solution.py +++ b/exercises/personalized_greeting/solution.py @@ -1,4 +1,4 @@ -SUBMIT = False +SUBMIT = True def personalized_greeting(_name: str, _age: int) -> str: @@ -11,7 +11,7 @@ def personalized_greeting(_name: str, _age: int) -> str: >>> personalized_greeting("Bob", 30) 'Hello Bob, you are 30 years old' """ - return "" + return f"Hello {_name}, you are {_age} years old" def test() -> None: From 48e10612375d4ce3b69173785918345b302d8180 Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 11:01:34 -0400 Subject: [PATCH 06/30] celsius_to_fahrenheit solved --- exercises/celsius_to_fahrenheit/solution.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exercises/celsius_to_fahrenheit/solution.py b/exercises/celsius_to_fahrenheit/solution.py index fedf347..4870e4e 100644 --- a/exercises/celsius_to_fahrenheit/solution.py +++ b/exercises/celsius_to_fahrenheit/solution.py @@ -1,4 +1,4 @@ -SUBMIT = False +SUBMIT = True def celsius_to_fahrenheit(_celsius: float) -> float: @@ -13,7 +13,7 @@ def celsius_to_fahrenheit(_celsius: float) -> float: >>> celsius_to_fahrenheit(-40) -40.0 """ - return 0.0 + return (_celsius * 9/5) + 32 def test() -> None: From 6cd37a0f9a62654120e08be3555a452802d8c23b Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 11:02:49 -0400 Subject: [PATCH 07/30] simple_interest solved --- exercises/simple_interest/solution.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exercises/simple_interest/solution.py b/exercises/simple_interest/solution.py index 944bc7f..8a5fb7e 100644 --- a/exercises/simple_interest/solution.py +++ b/exercises/simple_interest/solution.py @@ -1,4 +1,4 @@ -SUBMIT = False +SUBMIT = True def simple_interest(_principal: float, _rate: float, _time: float) -> float: @@ -11,7 +11,7 @@ def simple_interest(_principal: float, _rate: float, _time: float) -> float: >>> simple_interest(500, 3.5, 1) 17.5 """ - return 0.0 + return (_principal * _rate * _time) / 100 def test() -> None: From 33bae4709f3db3406c6383dd744d4af3c34c6f0e Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 11:03:36 -0400 Subject: [PATCH 08/30] variable_swap solved --- exercises/variable_swap/solution.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exercises/variable_swap/solution.py b/exercises/variable_swap/solution.py index cceb784..9539d3a 100644 --- a/exercises/variable_swap/solution.py +++ b/exercises/variable_swap/solution.py @@ -1,6 +1,6 @@ from typing import Any -SUBMIT = False +SUBMIT = True def variable_swap(a: Any, b: Any) -> tuple[Any, Any]: @@ -12,7 +12,7 @@ def variable_swap(a: Any, b: Any) -> tuple[Any, Any]: >>> variable_swap("hello", "world") ('world', 'hello') """ - return a, b + return b, a def test() -> None: From d5cc5534ea34ddc7411fe708ec6cbe24c5825b24 Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 11:05:47 -0400 Subject: [PATCH 09/30] linear_search solved --- exercises/linear_search/solution.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/exercises/linear_search/solution.py b/exercises/linear_search/solution.py index ad4cb38..20f1825 100644 --- a/exercises/linear_search/solution.py +++ b/exercises/linear_search/solution.py @@ -1,4 +1,4 @@ -SUBMIT = False +SUBMIT = True def linear_search(_items: list[int], _target: int) -> int: @@ -12,7 +12,11 @@ def linear_search(_items: list[int], _target: int) -> int: >>> linear_search([], 5) -1 """ - return 0 + n = len(_items) + for i in range(n): + if(_items[i] == _target): + return i + return -1 def test() -> None: From 0cadcb481c079795ea5ae6ef4cda7f6d58532c25 Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 11:08:32 -0400 Subject: [PATCH 10/30] min_max_list solved --- exercises/min_max_list/solution.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/exercises/min_max_list/solution.py b/exercises/min_max_list/solution.py index fa46d23..3655175 100644 --- a/exercises/min_max_list/solution.py +++ b/exercises/min_max_list/solution.py @@ -1,4 +1,4 @@ -SUBMIT = False +SUBMIT = True def min_max_list(_items: list[int]) -> tuple[int, int] | None: @@ -12,7 +12,13 @@ def min_max_list(_items: list[int]) -> tuple[int, int] | None: >>> min_max_list([]) None """ - return (0, 0) + n = len(_items) + if(n <= 0): return None + _min, _max = _items[0], _items[0] + for i in range(1, n): + _min = min(_items[i], _min) + _max = max(_items[i], _max) + return (_min, _max) def test() -> None: From ec5056a7062e9a58b58e6718685a7711259aabef Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 11:10:47 -0400 Subject: [PATCH 11/30] list_average solved --- exercises/list_average/solution.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/exercises/list_average/solution.py b/exercises/list_average/solution.py index 48fdf47..cbdcff6 100644 --- a/exercises/list_average/solution.py +++ b/exercises/list_average/solution.py @@ -1,4 +1,4 @@ -SUBMIT = False +SUBMIT = True def list_average(_numbers: list[float]) -> float: @@ -10,7 +10,12 @@ def list_average(_numbers: list[float]) -> float: >>> list_average([10, 20, 30]) 20.0 """ - return 0.0 + n = len(_numbers) + if(n <= 0): return 0 + _sum = 0 + for i in range(n): + _sum += _numbers[i] + return _sum / n def test() -> None: From a94c88e58652d4a73dbfb73c101dc32f0010c67f Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 11:12:16 -0400 Subject: [PATCH 12/30] factorial_iterative solved --- exercises/factorial_iterative/solution.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/exercises/factorial_iterative/solution.py b/exercises/factorial_iterative/solution.py index 78bca9d..ff80ccc 100644 --- a/exercises/factorial_iterative/solution.py +++ b/exercises/factorial_iterative/solution.py @@ -1,4 +1,4 @@ -SUBMIT = False +SUBMIT = True def factorial_iterative(_n: int) -> int: @@ -11,7 +11,10 @@ def factorial_iterative(_n: int) -> int: >>> factorial_iterative(5) 120 """ - return 0 + fac = 1 + for i in range(1, _n + 1): + fac *= i + return fac def test() -> None: From 75b6eba1ca4570136d75abab38b8178731a0afb5 Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 11:20:47 -0400 Subject: [PATCH 13/30] list_mode solved --- exercises/list_mode/solution.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/exercises/list_mode/solution.py b/exercises/list_mode/solution.py index 304c15a..6ffc5a2 100644 --- a/exercises/list_mode/solution.py +++ b/exercises/list_mode/solution.py @@ -1,6 +1,6 @@ from typing import Any -SUBMIT = False +SUBMIT = True def list_mode(_items: list[Any]) -> Any: @@ -12,7 +12,19 @@ def list_mode(_items: list[Any]) -> Any: >>> list_mode(['a', 'b', 'a']) 'a' """ - return None + if(_items.__len__() <= 0): + return None + _map = {} + for item in _items: + if item in _map: + _map[item] += 1 + else: + _map[item] = 1 + _item, _num = _items[0], _map[_items[0]] + for item, num in _map.items(): + if(num > _num): + _item, _num = item, num + return _item def test() -> None: From e0044b359ea4ba09fb69e36b21d92a2fa0773fbd Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 11:24:39 -0400 Subject: [PATCH 14/30] prefix_sums solved --- exercises/prefix_sums/solution.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/exercises/prefix_sums/solution.py b/exercises/prefix_sums/solution.py index 1e3d167..17c9af0 100644 --- a/exercises/prefix_sums/solution.py +++ b/exercises/prefix_sums/solution.py @@ -1,4 +1,4 @@ -SUBMIT = False +SUBMIT = True def prefix_sums(_numbers: list[int]) -> list[int]: @@ -10,7 +10,11 @@ def prefix_sums(_numbers: list[int]) -> list[int]: >>> prefix_sums([10, -10, 5]) [10, 0, 5] """ - return [] + arr = _numbers[:] + n = len(arr) + for i in range(1, n): + arr[i] += arr[i - 1] + return arr def test() -> None: From 731356502b25dff8128f90426393a67421c72166 Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 11:32:37 -0400 Subject: [PATCH 15/30] prime_check solved --- exercises/prime_check/solution.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/exercises/prime_check/solution.py b/exercises/prime_check/solution.py index 3cb981b..9964dfe 100644 --- a/exercises/prime_check/solution.py +++ b/exercises/prime_check/solution.py @@ -1,4 +1,4 @@ -SUBMIT = False +SUBMIT = True def prime_check(_n: int) -> bool: @@ -13,12 +13,19 @@ def prime_check(_n: int) -> bool: >>> prime_check(17) True """ - return False + if(_n < 2): + return False + i = 2 + while(i * i <= _n): + if((_n % i) == 0): + return False + i += 1 + return True def test() -> None: """Simple self-test for Primality Test.""" - cases = {2: True, 4: False, 17: True, 1: False, 0: False, 97: True} + cases = {2: True, 4: False, 17: True, 1: False, 0: False, 97: True, 5: True, 15: False} for n, expected in cases.items(): try: res = prime_check(n) From 3aecb3745e8873b345aebad70a45dd37ccae8384 Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 11:46:14 -0400 Subject: [PATCH 16/30] case_inverter solved --- exercises/case_inverter/solution.py | 4 ++-- exercises/count_vowels/solution.py | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/exercises/case_inverter/solution.py b/exercises/case_inverter/solution.py index 4f8a5db..6d61c2e 100644 --- a/exercises/case_inverter/solution.py +++ b/exercises/case_inverter/solution.py @@ -21,8 +21,8 @@ def test() -> None: cases = [ ("Hello World!", "hELLO wORLD!"), ("", ""), - ("all lower", "ALL UPPER"), - ("ALL UPPER", "all lower"), + ("all lower", "ALL LOWER"), + ("ALL UPPER", "all upper"), ("1234567890 !@#$%^&*()", "1234567890 !@#$%^&*()"), ("Python 3.12", "pYTHON 3.12"), ] diff --git a/exercises/count_vowels/solution.py b/exercises/count_vowels/solution.py index e03c7cf..1733318 100644 --- a/exercises/count_vowels/solution.py +++ b/exercises/count_vowels/solution.py @@ -36,6 +36,7 @@ def test_exercise_solutions_have_asserts() -> None: f"test() function in {exercise.name} missing assert statement" ) + # Add a test function with an assert for count_vowels def test(): # Example: assert count_vowels("hello") == 2 From 277630f9b77c4271b5273ba9cb7389d5b42309c1 Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 11:49:11 -0400 Subject: [PATCH 17/30] string_reversal solved --- exercises/case_inverter/solution.py | 2 +- exercises/string_reversal/solution.py | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/exercises/case_inverter/solution.py b/exercises/case_inverter/solution.py index 6d61c2e..ea29b6e 100644 --- a/exercises/case_inverter/solution.py +++ b/exercises/case_inverter/solution.py @@ -1,4 +1,4 @@ -SUBMIT = False +SUBMIT = True def case_inverter(s: str) -> str: # noqa: ARG001 diff --git a/exercises/string_reversal/solution.py b/exercises/string_reversal/solution.py index 9f36e58..2128385 100644 --- a/exercises/string_reversal/solution.py +++ b/exercises/string_reversal/solution.py @@ -1,4 +1,4 @@ -SUBMIT = False +SUBMIT = True def string_reversal(s: str) -> str: # noqa: ARG001 @@ -7,7 +7,10 @@ def string_reversal(s: str) -> str: # noqa: ARG001 """ # Add a basic assert to the stub to satisfy the test assert True, "Placeholder assert for string reversal" # Placeholder assert - return "" + _s = "" + for char in reversed(s): + _s += char + return _s def test() -> None: From e949b9d4d17af58df3c66e68e9ae1ff66555d369 Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 11:50:41 -0400 Subject: [PATCH 18/30] word_count solved --- exercises/word_count/solution.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/word_count/solution.py b/exercises/word_count/solution.py index 41c9a8d..2d5cc9d 100644 --- a/exercises/word_count/solution.py +++ b/exercises/word_count/solution.py @@ -1,4 +1,4 @@ -SUBMIT = False +SUBMIT = True def word_count(s: str) -> int: From 8e81a72cd192aa0f3ca863daa2afc52792a8189e Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 11:51:21 -0400 Subject: [PATCH 19/30] char_frequency solved --- exercises/char_frequency/solution.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/char_frequency/solution.py b/exercises/char_frequency/solution.py index 3a45f7f..3102055 100644 --- a/exercises/char_frequency/solution.py +++ b/exercises/char_frequency/solution.py @@ -1,4 +1,4 @@ -SUBMIT = False +SUBMIT = True def char_frequency(s: str) -> dict[str, int]: From a69f38ceab94c2b2958027e5ef4b99914f8a32b0 Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 11:57:50 -0400 Subject: [PATCH 20/30] poly_evaluate solved --- exercises/poly_evaluate/solution.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/exercises/poly_evaluate/solution.py b/exercises/poly_evaluate/solution.py index b1c4db3..d628ac8 100644 --- a/exercises/poly_evaluate/solution.py +++ b/exercises/poly_evaluate/solution.py @@ -1,4 +1,4 @@ -SUBMIT = False +SUBMIT = True def poly_evaluate(poly: list[int | float], x: int | float) -> int | float: @@ -11,10 +11,10 @@ def poly_evaluate(poly: list[int | float], x: int | float) -> int | float: def test() -> None: """Simple self-test for Polynomial Evaluation.""" - cases = [(([1, 2, 3], 2), 17), (([5], 3), 5), ([], 0), (([1, -1, 1], 1), 1)] + cases = [(([1, 2, 3], 2), 17), (([5], 3), 5), (([], 0), 0), (([1, -1, 1], 1), 1)] for input_data, expected in cases: try: - res = poly_evaluate(*input_data) + res = poly_evaluate(input_data[0], input_data[1]) assert abs(res - expected) < 1e-9, ( f"Failed for input {input_data}: expected {expected}, got {res}" ) From aa08c9fa0f4e6477eb19dd6361c89561fe607052 Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 12:02:13 -0400 Subject: [PATCH 21/30] matrix_trace solved --- exercises/matrix_trace/solution.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/matrix_trace/solution.py b/exercises/matrix_trace/solution.py index 8c1f733..28a2c0f 100644 --- a/exercises/matrix_trace/solution.py +++ b/exercises/matrix_trace/solution.py @@ -1,4 +1,4 @@ -SUBMIT = False +SUBMIT = True def matrix_trace(mat: list[list[int | float]]) -> int | float: From efcd195c0462b3adb7cb8f7fe3048f7dc31b9902 Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 12:20:16 -0400 Subject: [PATCH 22/30] poly_add solved --- exercises/poly_add/solution.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/exercises/poly_add/solution.py b/exercises/poly_add/solution.py index c6932aa..8e21012 100644 --- a/exercises/poly_add/solution.py +++ b/exercises/poly_add/solution.py @@ -1,18 +1,22 @@ -SUBMIT = False +SUBMIT = True def poly_add(poly1: list[int | float], poly2: list[int | float]) -> list[int | float]: """Adds two polynomials.""" - _poly1 = poly1 - _poly2 = poly2 - # Placeholder implementation: Add actual logic here. - # For now, return an empty list to pass initial checks. - return [] + poly_min, poly_max = None, None + if(len(poly1) > len(poly2)): + poly_min, poly_max = poly2, poly1[:] + else: + poly_min, poly_max = poly1, poly2[:] + offset = len(poly_max) - len(poly_min) + for i in range(len(poly_min)): + poly_max[offset + i] += poly_min[i] + return poly_max def test() -> None: """Simple self-test for Polynomial Addition.""" - cases = [(([1, 2], [3, 4]), [4, 6]), (([1, 0, 1], [1, 1]), [1, 1, 1])] + cases = [(([1, 2], [3, 4]), [4, 6]), (([1, 0, 1], [1, 1]), [1, 1, 2])] for input_data, expected in cases: try: res = poly_add(*input_data) From 252ebac7824ea8fa9162d56aaea54276523e7fab Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 12:26:20 -0400 Subject: [PATCH 23/30] matrix_add solved --- exercises/matrix_add/solution.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/exercises/matrix_add/solution.py b/exercises/matrix_add/solution.py index 53deb25..4d7e9e9 100644 --- a/exercises/matrix_add/solution.py +++ b/exercises/matrix_add/solution.py @@ -1,17 +1,21 @@ -SUBMIT = False +SUBMIT = True def matrix_add(mat1: list[list[int | float]], mat2: list[list[int | float]]) -> list[list[int | float]]: """Adds two matrices.""" # Placeholder implementation - _ = mat1 - _ = mat2 - return [] + n = len(mat1) + m = len(mat1[0]) + mat = [[0] * m] * n + for i in range(n): + for j in range(m): + mat[i][j] = mat1[i][j] + mat2[i][j] + return mat def test() -> None: """Simple self-test for Matrix Addition.""" - cases = [(([1, 2], [3, 4]), [4, 6])] # Example matrices + cases = [(([[1, 2]], [[3, 4]]), [[4, 6]])] # Example matrices for input_data, expected in cases: try: res = matrix_add(*input_data) From 2c03a11298d96193a69b78e197dd8e43877da579 Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 12:29:29 -0400 Subject: [PATCH 24/30] poly_mul solved --- exercises/poly_mul/solution.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/exercises/poly_mul/solution.py b/exercises/poly_mul/solution.py index ee4fab3..cc9134a 100644 --- a/exercises/poly_mul/solution.py +++ b/exercises/poly_mul/solution.py @@ -1,12 +1,14 @@ -SUBMIT = False +SUBMIT = True def poly_mul(poly1: list[int | float], poly2: list[int | float]) -> list[int | float]: """Multiplies two polynomials.""" - _poly1 = poly1 - _poly2 = poly2 - # Placeholder implementation - return [] + n1, n2 = len(poly1), len(poly2) + poly = [0] * (n1 + n2 - 1) + for i, v1 in enumerate(poly1): + for j, v2 in enumerate(poly2): + poly[i + j] += v1 * v2 + return poly def test() -> None: From f325b63641d10da2cb85a1d4ac443916ead7b7dd Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 12:32:26 -0400 Subject: [PATCH 25/30] factorial_tail solved --- exercises/factorial_tail/solution.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/exercises/factorial_tail/solution.py b/exercises/factorial_tail/solution.py index e661ccc..b138917 100644 --- a/exercises/factorial_tail/solution.py +++ b/exercises/factorial_tail/solution.py @@ -1,9 +1,10 @@ -SUBMIT = False +SUBMIT = True def factorial_tail(n: int, acc: int = 1) -> int: - """Tail Recursive Factorial""" - pass + if(n <= 0): + return acc + return factorial_tail(n - 1, n * acc) def test() -> None: From 0a07b285532f910d4c7a4a9e452cabd79ee20f2c Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 12:35:14 -0400 Subject: [PATCH 26/30] fibonacci_tail solved --- exercises/fibonacci_tail/solution.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/exercises/fibonacci_tail/solution.py b/exercises/fibonacci_tail/solution.py index 1dbb03b..b559659 100644 --- a/exercises/fibonacci_tail/solution.py +++ b/exercises/fibonacci_tail/solution.py @@ -1,9 +1,10 @@ -SUBMIT = False +SUBMIT = True def fibonacci_tail(n: int, a: int = 0, b: int = 1) -> int: - """Tail Recursive Fibonacci""" - pass + if(n <= 0): + return a + return fibonacci_tail(n - 1, b, a + b) def test() -> None: From 55f96df9b7e5e4b05e8c4b93577397f7fdc3aaee Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 12:36:38 -0400 Subject: [PATCH 27/30] sum_list_recursive solved --- exercises/sum_list_recursive/solution.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/sum_list_recursive/solution.py b/exercises/sum_list_recursive/solution.py index d041b78..07d7759 100644 --- a/exercises/sum_list_recursive/solution.py +++ b/exercises/sum_list_recursive/solution.py @@ -1,4 +1,4 @@ -SUBMIT = False +SUBMIT = True def sum_list_recursive(lst: list[int]) -> int: From 06abd2cf28e1658207d4ad7958a1742716b33858 Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 12:49:31 -0400 Subject: [PATCH 28/30] binary_search_recursive solved --- exercises/binary_search_recursive/solution.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/exercises/binary_search_recursive/solution.py b/exercises/binary_search_recursive/solution.py index c437af8..919835f 100644 --- a/exercises/binary_search_recursive/solution.py +++ b/exercises/binary_search_recursive/solution.py @@ -1,11 +1,22 @@ -SUBMIT = False +SUBMIT = True def binary_search_recursive( lst: list[int], target: int, low: int = 0, high: int | None = None ) -> int: - """Recursive Binary Search""" - pass + if(high is None): + high = len(lst) - 1 + + if(low > high): + return -1 + + mid = (low + high) // 2 + if(lst[mid] == target): + return mid + elif(lst[mid] < target): + return binary_search_recursive(lst, target, low, mid - 1) + else: + return binary_search_recursive(lst, target, mid + 1, high) def test() -> None: From 303f86a4972d700fe3529a07bd3a0783217e7dd2 Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 12:55:48 -0400 Subject: [PATCH 29/30] fast_exponentiation solved --- exercises/fast_exponentiation/solution.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/exercises/fast_exponentiation/solution.py b/exercises/fast_exponentiation/solution.py index 596fd5a..da2ba31 100644 --- a/exercises/fast_exponentiation/solution.py +++ b/exercises/fast_exponentiation/solution.py @@ -1,9 +1,18 @@ -SUBMIT = False +SUBMIT = True def fast_exponentiation(a: int, n: int) -> int: - """Fast Exponentiation""" - pass + if(n < 0): + return 1 / fast_exponentiation(a, -n) + elif(n == 0): + return 1 + elif(n == 1): + return a + last = fast_exponentiation(a, n // 2) + last *= last + if(n % 2 == 1): + last *= a + return last def test() -> None: From 08bde1a5d584cb09c651e35c22455dfcc15e083b Mon Sep 17 00:00:00 2001 From: Adrian Martinez Borrego Date: Tue, 10 Mar 2026 13:02:41 -0400 Subject: [PATCH 30/30] recursive_min_max solved --- exercises/recursive_min_max/solution.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/exercises/recursive_min_max/solution.py b/exercises/recursive_min_max/solution.py index c9fcfce..6065288 100644 --- a/exercises/recursive_min_max/solution.py +++ b/exercises/recursive_min_max/solution.py @@ -1,11 +1,21 @@ -SUBMIT = False +SUBMIT = True def recursive_min_max( lst: list[int], low: int = 0, high: int | None = None ) -> tuple[int, int]: - """Recursive Min/Max""" - pass + if(high is None): + high = len(lst) - 1 + + if(low == high): + return lst[low], lst[low] + + mid = (low + high) // 2 + _min0, _max0 = recursive_min_max(lst, low, mid) + _min1, _max1 = recursive_min_max(lst, mid + 1, high) + + return min(_min0, _min1), max(_max0, _max1) + def test() -> None: