Reto: Ordenar Numeros de forma aleatoria

--Originally published at Migue´s Blog

En este reto se tienen que ordenar una lista de números de una forma totalmente aleatoria, python ordena los numeros al azar, si estan en orden los imprime, si no los vuelve a reacomodar al azar, lo cual no es muy conveniente, debido a que puede tardar mucho, pueden darse muchas coombinaciones e incluso repetirse, asi como puede salir al primer intento puede que salga despues de millones de intentos.

captura-de-pantalla-de-2016-10-27-00-00-47

captura-de-pantalla-de-2016-10-27-00-04-39

captura-de-pantalla-de-2016-10-27-00-08-00Primero importamos random, el cual lo utilizaremos más adelante, es lo que utiliza python para ordenar los numeros de una manera aleatoria.

captura-de-pantalla-de-2016-10-27-00-08-15

Aquí se declaran las variables que utilizaremos, “a” se utiliza para salir del ciclo una vez que los numeros estan ordenados, “b” es la variable con la compararemos los numeros para verificar si estan ordenados, “c” es el contador del numero de intentos que le tomó a la computadora para poder ordenar los numeros, “d” también es utilizado para salir del ciclo final, “y” se utiliza como contador para introducir los numeros a la lista, “numeros” es la lista que el usuario introduce y “ordenados” es la lista de los números en orden que se mostrará

captura-de-pantalla-de-2016-10-27-00-08-56

Con este ciclo se introducen los numeros a la lista, su funcionamiento se explica en el post sobre como acomodar los números de una forma mas sencilla.

captura-de-pantalla-de-2016-10-27-00-09-18

Con este ciclo se comienzan a revolver los numeros hasta que quedan en orden,

Como “a” la declaramos con valor de “0” entrará al ciclo.

Cada vez que se entre el ciclo se le añadirá 1 al contador de intentos “c” se volverán a revolver los números y se verificará si están en orden, excepto la primera vez que se entra, no se revuelven, solamente se le suma 1 al contador y se verifican.

con el ciclo “for” de la linea 23 se verifica el

de los numeros, se comparan con “b”, el cual al inicio tiene un valor de “0” y después toma el valor del número verificado, por lo que el siguiente número debe de ser mayor que “b”, si no es así no están en orden y se repite el ciclo, si si están en orden “a” toma el valor de “D*1”, lo que cambia su valor de “0” y evita que se repita el ciclo.

Por último despues de haber salido de este ciclo se impirme la lista ordenada.

Este es un método muy poco efectivo, funcionó con muy pocos numeros, pero cuando se introducían más de 10 cifras se hacían demasiados intentos y la computadora no dejaba de trabajar sin lograr dar con la combinación correcta.