diff --git a/part-1.py b/part-1.py index b7dd7b6..8746f41 100644 --- a/part-1.py +++ b/part-1.py @@ -4,17 +4,39 @@ # the appropriate comment. # factorial - +def factorial(n): + if n < 0: + raise ValueError("Factorial is not defined for negative numbers") + if n == 0: + return 1 + return n * factorial(n - 1) # reverse +def reverse(text): + return text[::-1] # bunny - +def bunny(count): + if count < 0: + raise ValueError("Number of bunnies cannot be negative") + if count == 0: + return 0 + return 2 + bunny(count - 1) # is_nested_parens - +def is_nested_parens(parens): + count = 0 + for ch in parens: + if ch == "(": + count += 1 + else: + count -= 1 + if count < 0: + return False + + return (count == 0) diff --git a/part-2.py b/part-2.py index b3b77fc..363894b 100644 --- a/part-2.py +++ b/part-2.py @@ -5,12 +5,32 @@ # search - +def search(array, query): + if not array: + return False + + if array[0] == query: + return True + + return search(array[1:], query) + # is_palindrome +def is_palindrome(text): + if len(text) <= 1: + return True + if text[0] != text[-1]: + return False + + return(is_palindrome(text[1:-1])) + # digit_match - +def digit_match(a: int, b: int): + match = 1 if (a % 10) == (b % 10) else 0 + if a < 10 or b < 10: + return match + return match + digit_match(a // 10, b // 10)