algorithms · go · golang · data-structures · data-structure-and-algorithms · algorithms-data-structures
Suma de dígitos en Go: un tutorial de algoritmo sencillo
¡Hola, entusiasta de Go! Seguimos avanzando en el roadmap hacia ese trabajo soñado. Hoy toca otro algoritmo sencillo para practicar el manejo de tipos de datos y los loops básicos en Go.
Sigamos resolviendo juntos el clásico algoritmo de Suma de Dígitos, un paso más hacia ese trabajo soñado.
Planteamiento del problema
Dado un número entero, devolver la suma de sus dígitos. Por ejemplo, si la entrada es
123, la salida debería ser6(1+2+3).
Desglosemos el planteamiento: se tiene un número entero como entrada, hace falta procesar cada uno de sus dígitos, y devolver un número entero como salida.
Ahora que quedaron establecidos la entrada, el proceso y la salida, definamos el algoritmo para resolverlo.
Algoritmo para resolverlo
Primero, hace falta comprobar si la entrada es negativa. Si lo es, se convierte a un valor positivo.
if n < 0 {
n = -n
}
Inicializar una variable sum en 0 para llevar el total acumulado
sum := 0
Ahora, implementar un loop que continúe mientras n no sea cero. En Go, este for loop funciona como un while loop, comprobando si n es mayor que 0
for n != 0 {}
En cada iteración, sumar el último dígito del número a la variable sum usando el operador modulo.
sum += n % 10
Luego, usar el operador de asignación de división para eliminar el último dígito del número.
n /= 10
Finalmente, devolver la suma acumulada.
return sum
Implementación completa de la función
func sumDigits(n int) int {
if n < 0 {
n = -n
}
sum := 0
for n != 0 {
sum += n % 10
n /= 10
}
return sum
}
Reflexiones finales
Go es un lenguaje hermoso. Esta función simple pero eficiente demuestra la mentalidad minimalista del lenguaje. Con la demanda de desarrolladores de Go creciendo rápidamente, reforzar los fundamentos es esencial para conseguir ese trabajo deseado.
No hay que olvidarlo: lo importante es seguir aprendiendo. La mejora es una maratón, no una carrera de velocidad. Como siempre, el código de este y otros ejemplos está disponible en mi repositorio de GitHub: https://github.com/RubenOAlvarado/algorithms
La foto de portada pertenece a Bekky Bekks en Unsplash