diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..811965a --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "editor.fontSize": 12, + "files.autoSave": "afterDelay" +} \ No newline at end of file diff --git a/exercises/binary_search_recursive/solution.py b/exercises/binary_search_recursive/solution.py index c437af8..e887933 100644 --- a/exercises/binary_search_recursive/solution.py +++ b/exercises/binary_search_recursive/solution.py @@ -1,11 +1,21 @@ -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 + medio = (low + high) //2 + if lst[medio] == target : + return medio + else : + if lst[medio] < target : + return binary_search_recursive(lst, target, medio + 1, high) + elif lst[medio] > target : + return binary_search_recursive(lst, target,low, medio - 1) def test() -> None: 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]: diff --git a/exercises/count_vowels/solution.py b/exercises/count_vowels/solution.py index e03c7cf..0c498ad 100644 --- a/exercises/count_vowels/solution.py +++ b/exercises/count_vowels/solution.py @@ -1,6 +1,21 @@ import ast from pathlib import Path + +def count_vowels(s: str) -> int : + a = 0 + if len(str) == 0 : + return 0 + + + + s = s.lower() + if s[0] == 'a' or s[0] == 'e' or s[0] == 'i' or s[0] == 'o' or s[0] == 'u' : + a +=1 + return s[1::] + + + def test_exercise_solutions_have_asserts() -> None: """Verify that all exercise solution stubs have a test() function with asserts.""" root = Path(__file__).parent.parent diff --git a/exercises/factorial_tail/solution.py b/exercises/factorial_tail/solution.py index e661ccc..e3a57ea 100644 --- a/exercises/factorial_tail/solution.py +++ b/exercises/factorial_tail/solution.py @@ -1,10 +1,11 @@ -SUBMIT = False +SUBMIT = True def factorial_tail(n: int, acc: int = 1) -> int: - """Tail Recursive Factorial""" - pass - + if n == 0 : + return 1 + else : + return factorial_tail(n-1, 1) * n def test() -> None: """Simple self-test for Factorial Tail.""" diff --git a/exercises/fast_exponentiation/solution.py b/exercises/fast_exponentiation/solution.py index 596fd5a..0c57976 100644 --- a/exercises/fast_exponentiation/solution.py +++ b/exercises/fast_exponentiation/solution.py @@ -1,9 +1,11 @@ -SUBMIT = False +SUBMIT = True def fast_exponentiation(a: int, n: int) -> int: - """Fast Exponentiation""" - pass + if n == 0 : + return 1 + else : + return a * fast_exponentiation(a,n-1) def test() -> None: diff --git a/exercises/fibonacci_tail/solution.py b/exercises/fibonacci_tail/solution.py index 1dbb03b..ca0b1ee 100644 --- a/exercises/fibonacci_tail/solution.py +++ b/exercises/fibonacci_tail/solution.py @@ -1,10 +1,13 @@ -SUBMIT = False +SUBMIT = True def fibonacci_tail(n: int, a: int = 0, b: int = 1) -> int: - """Tail Recursive Fibonacci""" - pass - + if n <= 0 : + return 0 + if n == 1 : + return 1 + else : + return fibonacci_tail(n-1) + fibonacci_tail(n-2) def test() -> None: """Simple self-test for Fibonacci Tail.""" diff --git a/exercises/linear_search/solution.py b/exercises/linear_search/solution.py index ad4cb38..41d54bd 100644 --- a/exercises/linear_search/solution.py +++ b/exercises/linear_search/solution.py @@ -12,7 +12,12 @@ def linear_search(_items: list[int], _target: int) -> int: >>> linear_search([], 5) -1 """ - return 0 + + for i in range(len(_items)) : + if _items[i] == _target : + return i + return -1 + def test() -> None: diff --git a/exercises/list_average/solution.py b/exercises/list_average/solution.py index 48fdf47..3331988 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 + promedio = 0 + for c in _numbers : + promedio +=c + + resultado = promedio / len(_numbers) + return resultado def test() -> None: diff --git a/exercises/list_mode/solution.py b/exercises/list_mode/solution.py index 304c15a..5797352 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,10 +12,14 @@ def list_mode(_items: list[Any]) -> Any: >>> list_mode(['a', 'b', 'a']) 'a' """ - return None + conteo = {} + for c in _items : + conteo[c] = conteo.get(c, 0) + 1 + moda = max(conteo, key = conteo.get) + return moda -def test() -> None: +def test() -> None : """Simple self-test for Most Common Element.""" cases: list[tuple[list[Any], Any]] = [ ([1, 2, 2, 3, 3, 3], 3), diff --git a/exercises/matrix_add/solution.py b/exercises/matrix_add/solution.py index 53deb25..8930edd 100644 --- a/exercises/matrix_add/solution.py +++ b/exercises/matrix_add/solution.py @@ -1,4 +1,4 @@ -SUBMIT = False +SUBMIT = True def matrix_add(mat1: list[list[int | float]], mat2: list[list[int | float]]) -> list[list[int | float]]: @@ -6,7 +6,11 @@ def matrix_add(mat1: list[list[int | float]], mat2: list[list[int | float]]) -> # Placeholder implementation _ = mat1 _ = mat2 - return [] + + for i in range (len(mat2)): + mat1[i] += mat2[i] + + return mat1 def test() -> None: diff --git a/exercises/matrix_trace/solution.py b/exercises/matrix_trace/solution.py index 8c1f733..f30bd32 100644 --- a/exercises/matrix_trace/solution.py +++ b/exercises/matrix_trace/solution.py @@ -1,12 +1,12 @@ -SUBMIT = False +SUBMIT = True def matrix_trace(mat: list[list[int | float]]) -> int | float: """Calculates the trace of a square matrix.""" - trace = 0 + traza = 0 for i in range(len(mat)): - trace += mat[i][i] - return trace + traza += mat[i][i] + return traza def test() -> None: diff --git a/exercises/min_max_list/solution.py b/exercises/min_max_list/solution.py index fa46d23..e7c7173 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,21 @@ def min_max_list(_items: list[int]) -> tuple[int, int] | None: >>> min_max_list([]) None """ - return (0, 0) + if not _items : + return None + max = min = _items[0] + + for i in range(len(_items)) : + if _items[i] > max : + max = _items[i] + if _items[i] < min : + min = _items[i] + + + + + + return (min, max) def test() -> None: diff --git a/exercises/palindrome/solution.py b/exercises/palindrome/solution.py index 7664e28..1d40953 100644 --- a/exercises/palindrome/solution.py +++ b/exercises/palindrome/solution.py @@ -1,4 +1,4 @@ -SUBMIT = False +SUBMIT = True def palindrome(_text: str) -> bool: @@ -11,6 +11,8 @@ def palindrome(_text: str) -> bool: >>> palindrome("hello") False """ + if _text == _text[::-1] : + return True return False diff --git a/exercises/personalized_greeting/solution.py b/exercises/personalized_greeting/solution.py index aed3a12..e18005b 100644 --- a/exercises/personalized_greeting/solution.py +++ b/exercises/personalized_greeting/solution.py @@ -11,7 +11,8 @@ 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: diff --git a/exercises/poly_add/solution.py b/exercises/poly_add/solution.py index c6932aa..5e28b5d 100644 --- a/exercises/poly_add/solution.py +++ b/exercises/poly_add/solution.py @@ -1,18 +1,31 @@ -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 + maxima_longitud = max(len(poly1), len(poly2)) + + + final = [0 for j in range(maxima_longitud)] + for i in range(len(poly1)) : + final[i] += poly1[i] + for j in range(len(poly2)) : + final[j] += poly2[j] + + + + if final[-1] == 0 : + final.pop() # Placeholder implementation: Add actual logic here. # For now, return an empty list to pass initial checks. - return [] + return final 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]), [2, 1, 1])] for input_data, expected in cases: try: res = poly_add(*input_data) diff --git a/exercises/poly_evaluate/solution.py b/exercises/poly_evaluate/solution.py index b1c4db3..334193c 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,7 +11,7 @@ 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) diff --git a/exercises/poly_mul/README.es.md b/exercises/poly_mul/README.es.md index 0c3e03e..cfe10e2 100644 --- a/exercises/poly_mul/README.es.md +++ b/exercises/poly_mul/README.es.md @@ -1,3 +1,4 @@ + # Multiplicación de Polinomios ## Contexto diff --git a/exercises/prefix_sums/solution.py b/exercises/prefix_sums/solution.py index 1e3d167..7f48342 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,15 @@ def prefix_sums(_numbers: list[int]) -> list[int]: >>> prefix_sums([10, -10, 5]) [10, 0, 5] """ - return [] + if not _numbers : + return [] + nueva_referencia = [_numbers[0]] + for i in range(1, len(_numbers)) : + nueva_referencia.append(nueva_referencia[i-1]+_numbers[i]) + + return nueva_referencia + + def test() -> None: diff --git a/exercises/prime_check/solution.py b/exercises/prime_check/solution.py index 3cb981b..299a038 100644 --- a/exercises/prime_check/solution.py +++ b/exercises/prime_check/solution.py @@ -1,5 +1,5 @@ -SUBMIT = False - +SUBMIT = True +import math def prime_check(_n: int) -> bool: # noqa: ARG001 @@ -13,7 +13,14 @@ def prime_check(_n: int) -> bool: >>> prime_check(17) True """ - return False + if _n < 2 : + return False + raice = math.sqrt(_n) + + for i in range(2, int(raice)+1) : + if _n % i == 0 : + return False + return True def test() -> None: diff --git a/exercises/recursive_min_max/solution.py b/exercises/recursive_min_max/solution.py index c9fcfce..cf3e8c2 100644 --- a/exercises/recursive_min_max/solution.py +++ b/exercises/recursive_min_max/solution.py @@ -1,11 +1,23 @@ -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 len(lst) == 0 : + return None, None + + if len(lst) == 1 : + return lst[0], lst[0] + + medio = len(lst) // 2 + mins, maxs = recursive_min_max(lst[:medio]) + mink, mas = recursive_min_max(lst[medio:]) + maximo = max(maxs, mas) + minimo = min(mins, mink) + return minimo, maximo + + def test() -> None: diff --git a/exercises/simple_interest/__init__.py b/exercises/simple_interest/__init__.py index e69de29..2d12bf2 100644 --- a/exercises/simple_interest/__init__.py +++ b/exercises/simple_interest/__init__.py @@ -0,0 +1,3 @@ +def simple_interest(_principal: float, _rate: float, _time: float) -> float: + a= _principal* _rate * _time / 100 + return a \ No newline at end of file diff --git a/exercises/simple_interest/solution.py b/exercises/simple_interest/solution.py index 944bc7f..8081222 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,8 @@ 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: diff --git a/exercises/string_reversal/solution.py b/exercises/string_reversal/solution.py index 9f36e58..18e1178 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 @@ -6,8 +6,8 @@ def string_reversal(s: str) -> str: # noqa: ARG001 Reverses a string. """ # Add a basic assert to the stub to satisfy the test - assert True, "Placeholder assert for string reversal" # Placeholder assert - return "" + + return s[::-1] def test() -> None: 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: 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: diff --git a/exercises/word_count/solution.py b/exercises/word_count/solution.py index 41c9a8d..11d7034 100644 --- a/exercises/word_count/solution.py +++ b/exercises/word_count/solution.py @@ -1,9 +1,14 @@ -SUBMIT = False +SUBMIT = True def word_count(s: str) -> int: """Counts the number of words in a string.""" - return len(s.split()) + + palabra = s.split() + elemento = 0 + for c in palabra : + elemento +=1 + return elemento def test() -> None: