Here is the interview question prompt, presented for reference.
We're provided a positive integer num
. Can you write a method to repeatedly add all of its digits until the result has only one digit?
Here's an example: if the input was 49
, we'd go through the following steps:
``` // start with 49 4 + 9 = 13
// move onto 13 1 + 3 = 4 ```
We would then return 4
.
-2147483648
and 2147483647
O(log n)
O(1)
You can see the full challenge with visuals at this link.
Challenges • Asked 11 months ago by Danaila Marian
This is called the digital room problem or This is called the digital **root* problem?Great job on this site by the way, I am enjoying it! thank you!!
Definitely digital root :-) Glad you're enjoying it!
Hi, guys!
I have a question about "Sum Digits Until One" problem. When I run the code for all the test cases everything is perfect, but when I click 'RUN TESTS' button, it gives me an error:
4
('An error occurred!', NameError("name 'assertEqual' is not defined",))
('An error occurred!', NameError("name 'assertEqual' is not defined",))
('An error occurred!', NameError("name 'assertEqual' is not defined",))
Here is the code:
def sumDigits(n):
if n < 10:
return n
else :
s = 0
while (n > 0):
s += n % 10
n //= 10
return sumDigits(s)
print(sumDigits(49))
Some thoughts about what is wrong?
Same problem here
The assertions in the tests for this are incorrect. For example, I am seeing the following: assert sum_digits(49) == 4
It should be sum_digits(49) == 13
This is incorrect. The question states "write a method to REPEATEDLY add all of its digits until the result has only one digit". You can see in the example that we later add 1 + 3 from 13 to get 4.