programacion porque libros guia español ejemplos comandos codigo basico aprender lua integer sum add digits

libros - porque aprender lua



Suma de los dígitos de un entero en lua (4)

Vi una pregunta como esta relacionada con Java y C, pero estoy usando LUA. Las respuestas podrían haberse aplicado a mí, pero no las estaba entendiendo.

¿Podría alguien decirme cómo obtendría la suma de los dígitos individuales de un Entero? Por ejemplo.

a = 275 aSum = 2+7+5

Si pudiera explicar cómo lograría esto en LUA y por qué el código hace lo que hace, eso sería muy apreciado.


Puede obtener un mejor rendimiento que gmatch (no verificado) con:

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


Puedes usar esta función:

function sumdigits(n) local sum = 0 while n > 0 do sum = sum + n%10 n = math.floor(n/10) end return sum end

En cada iteración agrega el último dígito de n a la suma y luego la corta desde n, hasta que suma todos los dígitos.


Realmente una función simple. El uso de Gmatch lo llevará a donde necesita ir.

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

Básicamente, estás recorriendo los enteros y jalándolos uno por uno para sumarlos al total. El "% d" significa solo un dígito, por lo que string.gmatch (str, "% d") dice, "Match one digit each time". El "para" es el mecanismo de bucle, por lo que para cada dígito de la cadena, se sumará al total.


aSum = -load((''return''..a):gsub(''%d'',''-%0''))()