Implementación del desafío gaussiano en Python

Carl Gauss era un matemático y astrónomo alemán, también conocido como el “Príncipe de las Matemáticas”. Es ampliamente reconocido por sus contribuciones en los campos de la ciencia y las matemáticas, como la teoría de números, la geometría, el álgebra, la astronomía, el magnetismo, etc. Incluso hoy en día, varios conceptos matemáticos y científicos llevan su nombre. ¡Uno de esos conceptos es la adición gaussiana, que exploraremos hoy!

No es conocimiento, sino el acto de aprender, no posesión, sino el acto de llegar allí, que otorga el mayor disfrute.

– Carl Friedrich Gauss

Adición gaussiana

El desafío de adición gaussiano es un ejemplo interesante de pensar fuera de la caja en lugar de realizar tareas de manera predeterminada.

Cuando Carl Gauss era un niño, su maestro le dio una tarea para agregar los números del 1 al 100. Ahora esa tarea, realizada un paso a la vez, agregando los primeros 2 números, luego el siguiente, luego el siguiente, habría tomado horas.

Serie de adición de números (imagen del autor)

Pero a Carl Gauss se le ocurrió una manera más rápida e inteligente de hacer su tarea. Entendió que la adición de números de 1 a 100 es la misma que la adición de 50 pares que sumarían 101, es decir, el primero y el último 1 + 100 = 101, de manera similar la segunda y la segunda última 2 + 99 = 101, la nth y luegoth El último elemento de la serie equivaldría a 101, y se harían 50 de estos pares. Esto significa que el total de 5050 se puede calcular fácilmente sin ningún cálculo tedioso.

Adición de enésimo con el enésimo último número que resulta en 101 (imagen del autor)

Carl Gauss era inteligente; Pudo encontrar una técnica inteligente para calcular la suma, pero seamos honestos. Ninguno de nosotros es tan inteligente: p. Si bien no tenemos el cerebro de Gauss, seguramente tenemos la ventaja de la programación y las computadoras que hacen cálculos complejos para nosotros. Codifiquemos el problema anterior en Python.

Código

Resolvamos el desafío gaussiano mientras comprendemos los empotrados de Python que se utilizarán:

Rango

Lo primero que debemos entender es la pitón range función. Esta función se utiliza para crear una secuencia de números que se pueden usar más adelante en otras funciones, como la for bucle.

La sintaxis para el range La función es la siguiente.

rango = (número en el que comienza la secuencia, número en el que se detiene la secuencia, paso)

Supongamos que tenemos que generar una secuencia de números del 1 al 10, con un paso o diferencia de 1, por lo que usaremos esta función de rango de la siguiente manera:

numbers = range(1,11)
for i in numbers:
    print(i)
Impresión de los números utilizando la función de rango (imagen por autor)

Observe que hemos especificado ’11’ como el número en el que se detiene la secuencia. Esto se debe a que, según la sintaxis, el último número estaría dentro del rango, es decir, en el ejemplo anterior, menos de 11 = 10.

Si queremos imprimir la variable numbersno obtendremos una lista de estos números en la secuencia particular. Sin embargo, obtendremos un tipo de datos de rango. Esto se debe a que el tipo de datos de rango no almacena la secuencia en la memoria de la computadora de la manera en que una lista almacena sus elementos. No podemos equiparar el rango de números con una lista.

numbers = range(1,11)
print(numbers)
Impresión de la gama (imagen por autor)

Para bucle

A continuación, necesitamos iterar a través de estos números. Los bucles de Python son nuestra opción para cualquier tipo de iteración. En este tutorial, aprenderemos sobre los dos bucles y lograremos el resultado anterior utilizando ambos.

Ahora, dado que estamos iterando sobre el rango, hemos definido anteriormente, lo que en nuestro caso sería de 1 a 100, con el paso predeterminado de 1 (podemos omitir que mencionar eso), usaremos el for bucle y proporcionarle esto range. Pero primero, definiremos una variable llamada total que almacenará la suma de la secuencia de números después de cada iteración. El valor de total será 0 inicialmente y se incrementará con cada iteración. Entonces, en la primera iteración, cuando estemos en bucle de 1 a 100, el total será 1. En la segunda iteración, será 1 + 2 = 3. En la tercera iteración, será 3 + 3 = 6, y así sucesivamente.

Imprimiremos el valor total al final. Vea, asciende a 5050, el mismo valor que Gauss.

numbers = range(1,101)
total = 0
for i in numbers:
    total = total + i
print("Total: ", total)
Totak usando para bucle (imagen por autor)

Mientras que el bucle

Otra forma de hacer la tarea anterior es usar Python while bucle. El while El bucle funciona hasta que una condición particular se vuelve falsa. En nuestro caso, tendremos que inicializar una variable idale el valor inicial de 1 y lo incrementa solo por 1, de modo que se dispare a través de la lista hasta que alcanza 101. A I = 101, el while La condición de Loop se volverá falsa, por lo que se detendrá. El valor total se imprimirá.

numbers = range(1,101)
total = 0
i = 1
while i in numbers:
    total = total + i
    i = i + 1
print("Total: ", total)
Salida con While Loop (imagen por autor)

Conclusión

En este breve artículo, utilizamos el range funcionar como una forma más rápida de superar nuestra tarea de definir números del 1 al 100. Luego usamos ambos for y el while bucles para resolver el problema de suma, y ​​ambos pudieron darnos el resultado correcto.

Sin embargo, como se puede ver en tales opciones, una técnica funciona mejor que la otra. ¿Qué crees que ha sido mejor para resolver el desafío gaussiano, el while bucle o el for ¿bucle? Piense en términos de complejidad, tiempo, memoria utilizada y claridad. Claramente, uno es mejor que el otro. Comparta cuál crees que es mejor que el otro y por qué. ¡Esperaré sus comentarios!