algorithms · go · golang · data-structures · data-structure-and-algorithms · algorithms-data-structures

Suma de dígitos en Go: un tutorial de algoritmo sencillo

2 min de lectura

¡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 ser 6 (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