# TODO - Track whether a number is happy globally (memoization) def is_happy_number(num, previous_numbers=None): if previous_numbers is None: previous_numbers = [] previous_numbers.append(num) if num == 1: return True digits = list(str(num)) happy_exp = 0 for digit in digits: happy_exp += int(digit)**2 if happy_exp in previous_numbers: return False return is_happy_number(happy_exp, previous_numbers)