I saw a question like this relating to Java and C, but I am using LUA. The answers might have applied to me, but I wasn't understanding them.
Could someone please tell me how I would get the sum of the individual digits of an Integer.
For Example.
a = 275
aSum = 2+7+5
If you could explain how I would achieve this in LUA and why the code does what it does, that would be greatly appreciated.
Really a simple function. Using gmatch will get you where you need to go.
function sumdigits(str)
local total = 0
for digit in string.gmatch(str, "%d") do
total = total + digit
end
return total
end
print(sumdigits(1234))
10
Basically, you're looping through the integers and pulling them out one by one to add them to the total. The "%d" means just one digit, so string.gmatch(str, "%d") says, "Match one digit each time". The "for" is the looping mechanism, so for every digit in the string, it will add to the total.
You can use this function:
function sumdigits(n)
local sum = 0
while n > 0 do
sum = sum + n%10
n = math.floor(n/10)
end
return sum
end
On each iteration it adds the last digit of n to the sum and then cuts it from n, until it sums all the digits.
aSum = -load(('return'..a):gsub('%d','-%0'))()
You might get better performance than gmatch (not verified) with:
function sumdigits(str)
local total = 0
for i=1,#str do
total = total + tonumber(string.sub(str, i,i))
end
return total
end
print(sumdigits('1234'))
10