""" 0258.1 - Solution 1 - Simulation (Loop) """
#####################################################################################
# Classes
#####################################################################################
class Solution:
"""Solution Class"""
def addDigits(self, num: int) -> int:
"""Add Digits Function"""
while num >= 10:
digit_sum = 0
while num > 0:
digit_sum += num % 10
num //= 10
num = digit_sum
return num
#####################################################################################
# Functions
#####################################################################################
def testcase():
"""Test Function"""
print(Solution().addDigits(38)) # Expected: 2
print(Solution().addDigits(0)) # Expected: 0
print(Solution().addDigits(123)) # Expected: 6
#####################################################################################
# Main
#####################################################################################
if __name__ == "__main__":
testcase()
""" 0258.2 - Solution 2 - Digital Root Formula """
#####################################################################################
# Classes
#####################################################################################
class Solution:
"""Solution Class"""
def addDigits(self, num: int) -> int:
"""Add Digits Function"""
if num == 0:
return 0
return 1 + (num - 1) % 9
#####################################################################################
# Functions
#####################################################################################
def testcase():
"""Test Function"""
print(Solution().addDigits(38)) # Expected: 2
print(Solution().addDigits(0)) # Expected: 0
print(Solution().addDigits(123)) # Expected: 6
#####################################################################################
# Main
#####################################################################################
if __name__ == "__main__":
testcase()