Search code examples
luaintegersumadditiondigits

Sum of the digits of an integer in lua


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.


Solution

  • 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.