Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
3e2d2e4
hello_world solved
lacuentadeadrian57-netizen Mar 10, 2026
21843e3
fibonacci solved
lacuentadeadrian57-netizen Mar 10, 2026
aef7ef6
palindrome solved
lacuentadeadrian57-netizen Mar 10, 2026
2e4d2a2
sum_two_numbers solved
lacuentadeadrian57-netizen Mar 10, 2026
ec834fa
personalized_greeting solved
lacuentadeadrian57-netizen Mar 10, 2026
48e1061
celsius_to_fahrenheit solved
lacuentadeadrian57-netizen Mar 10, 2026
6cd37a0
simple_interest solved
lacuentadeadrian57-netizen Mar 10, 2026
33bae47
variable_swap solved
lacuentadeadrian57-netizen Mar 10, 2026
d5cc553
linear_search solved
lacuentadeadrian57-netizen Mar 10, 2026
0cadcb4
min_max_list solved
lacuentadeadrian57-netizen Mar 10, 2026
ec5056a
list_average solved
lacuentadeadrian57-netizen Mar 10, 2026
a94c88e
factorial_iterative solved
lacuentadeadrian57-netizen Mar 10, 2026
75b6eba
list_mode solved
lacuentadeadrian57-netizen Mar 10, 2026
e0044b3
prefix_sums solved
lacuentadeadrian57-netizen Mar 10, 2026
7313565
prime_check solved
lacuentadeadrian57-netizen Mar 10, 2026
3aecb37
case_inverter solved
lacuentadeadrian57-netizen Mar 10, 2026
277630f
string_reversal solved
lacuentadeadrian57-netizen Mar 10, 2026
e949b9d
word_count solved
lacuentadeadrian57-netizen Mar 10, 2026
8e81a72
char_frequency solved
lacuentadeadrian57-netizen Mar 10, 2026
a69f38c
poly_evaluate solved
lacuentadeadrian57-netizen Mar 10, 2026
aa08c9f
matrix_trace solved
lacuentadeadrian57-netizen Mar 10, 2026
efcd195
poly_add solved
lacuentadeadrian57-netizen Mar 10, 2026
252ebac
matrix_add solved
lacuentadeadrian57-netizen Mar 10, 2026
2c03a11
poly_mul solved
lacuentadeadrian57-netizen Mar 10, 2026
f325b63
factorial_tail solved
lacuentadeadrian57-netizen Mar 10, 2026
0a07b28
fibonacci_tail solved
lacuentadeadrian57-netizen Mar 10, 2026
55f96df
sum_list_recursive solved
lacuentadeadrian57-netizen Mar 10, 2026
06abd2c
binary_search_recursive solved
lacuentadeadrian57-netizen Mar 10, 2026
303f86a
fast_exponentiation solved
lacuentadeadrian57-netizen Mar 10, 2026
08bde1a
recursive_min_max solved
lacuentadeadrian57-netizen Mar 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 14 additions & 3 deletions exercises/binary_search_recursive/solution.py
Original file line number Diff line number Diff line change
@@ -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:
Expand Down
6 changes: 3 additions & 3 deletions exercises/case_inverter/solution.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
SUBMIT = False
SUBMIT = True


def case_inverter(s: str) -> str: # noqa: ARG001
Expand All @@ -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"),
]
Expand Down
4 changes: 2 additions & 2 deletions exercises/celsius_to_fahrenheit/solution.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
SUBMIT = False
SUBMIT = True


def celsius_to_fahrenheit(_celsius: float) -> float:
Expand All @@ -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:
Expand Down
2 changes: 1 addition & 1 deletion exercises/char_frequency/solution.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
SUBMIT = False
SUBMIT = True


def char_frequency(s: str) -> dict[str, int]:
Expand Down
1 change: 1 addition & 0 deletions exercises/count_vowels/solution.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
7 changes: 5 additions & 2 deletions exercises/factorial_iterative/solution.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
SUBMIT = False
SUBMIT = True


def factorial_iterative(_n: int) -> int:
Expand All @@ -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:
Expand Down
7 changes: 4 additions & 3 deletions exercises/factorial_tail/solution.py
Original file line number Diff line number Diff line change
@@ -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:
Expand Down
15 changes: 12 additions & 3 deletions exercises/fast_exponentiation/solution.py
Original file line number Diff line number Diff line change
@@ -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:
Expand Down
23 changes: 9 additions & 14 deletions exercises/fibonacci/solution.py
Original file line number Diff line number Diff line change
@@ -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:
Expand Down
7 changes: 4 additions & 3 deletions exercises/fibonacci_tail/solution.py
Original file line number Diff line number Diff line change
@@ -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:
Expand Down
4 changes: 2 additions & 2 deletions exercises/hello_world/solution.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
SUBMIT = False
SUBMIT = True


def hello_world() -> str:
Expand All @@ -8,7 +8,7 @@ def hello_world() -> str:
>>> hello_world()
'Hello, World!'
"""
return ""
return "Hello, World!"


def test() -> None:
Expand Down
8 changes: 6 additions & 2 deletions exercises/linear_search/solution.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
SUBMIT = False
SUBMIT = True


def linear_search(_items: list[int], _target: int) -> int:
Expand All @@ -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:
Expand Down
9 changes: 7 additions & 2 deletions exercises/list_average/solution.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
SUBMIT = False
SUBMIT = True


def list_average(_numbers: list[float]) -> float:
Expand All @@ -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:
Expand Down
16 changes: 14 additions & 2 deletions exercises/list_mode/solution.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
from typing import Any

SUBMIT = False
SUBMIT = True


def list_mode(_items: list[Any]) -> Any:
Expand All @@ -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:
Expand Down
14 changes: 9 additions & 5 deletions exercises/matrix_add/solution.py
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
2 changes: 1 addition & 1 deletion exercises/matrix_trace/solution.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
SUBMIT = False
SUBMIT = True


def matrix_trace(mat: list[list[int | float]]) -> int | float:
Expand Down
10 changes: 8 additions & 2 deletions exercises/min_max_list/solution.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
SUBMIT = False
SUBMIT = True


def min_max_list(_items: list[int]) -> tuple[int, int] | None:
Expand All @@ -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:
Expand Down
17 changes: 6 additions & 11 deletions exercises/palindrome/solution.py
Original file line number Diff line number Diff line change
@@ -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:
Expand Down
4 changes: 2 additions & 2 deletions exercises/personalized_greeting/solution.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
SUBMIT = False
SUBMIT = True


def personalized_greeting(_name: str, _age: int) -> str:
Expand All @@ -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:
Expand Down
18 changes: 11 additions & 7 deletions exercises/poly_add/solution.py
Original file line number Diff line number Diff line change
@@ -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)
Expand Down
6 changes: 3 additions & 3 deletions exercises/poly_evaluate/solution.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
SUBMIT = False
SUBMIT = True


def poly_evaluate(poly: list[int | float], x: int | float) -> int | float:
Expand All @@ -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}"
)
Expand Down
Loading