Binary Search, Pharo y el juego mas triste del mundo

Binary Search

Binary search, en español búsqueda binaria, es una forma de solucionar un problema en la que se deba hacer una búsqueda. Este algoritmo es muy común de usarse cuando tenemos un arreglo de objetos que siguen una regla de mayor a menor valor. Básicamente tomamos dos pivotes y un apuntador, usaremos números para que sea mas sencillo de entender, digamos que tengo un arreglo de números desde el 0 hasta el 10 y busco el numero 7, mis pivotes siempre comienzan en el principio y final del arreglo y mi apuntador en el centro. Comienzo revisando si el objeto y mi apuntador son iguales, sabemos que el apuntador esta en 5 y no es igual a 7 entonces revisamos si es mayor o menor, en este caso 5 es menor que siete por lo que el pivote se mueve a 5 y volvemos a poner el apuntador en la parte central de los dos pivotes. Digamos que ahora nuestro apuntador queda en 8 y entonces repetimos el proceso pero ahora nuestro pivote en 10 se mueve a 8 y el otro pivote se mueve a 5. El proceso anterior se repite hasta llegar a 7, si eres un poco observador pudiste darte cuenta del peor defecto de este algoritmo, nuestro arreglo siempre debe estar ordenado. Dejando esto de lado es muy eficiente y muy usado en el mundo de la programación.

Haciendo el juego mas triste del mundo en Pharo

Si alguna vez haz pasado por una clase de programación, por lo común en las clases de estructuras de datos, te habrás topado con el algoritmo que mencione antes y el juego con que lo explican, pero si no aquí explicare como hacerlo y sobre todo como se puede hacer en Pharo. NO PONDRÉ CÓDIGO me parece mejor simplemente escribirlo como si lo estuviera platicando y si alguien quiere ver código puede ir a ver las fuentes de información hasta abajo del Blog.

El juego con el cual la búsqueda binaria es explicada es básicamente tomar un numero y “adivinar” cual es mediante búsqueda binaria. No debe de ser muy difícil entender como se encuentra el numero sabiendo la explicación de hace rato. Si lo has programado en algún otro lenguaje básicamente también lo programaste en Pharo, al igual que otros lenguajes hay una función de random la cual toma un numero al azar dependiendo del rango que le des. Funciona igual que otro lenguaje, iniciamos por tomar un numero al azar el cual es almacenado y nunca cambiamos, una vez tenemos nuestro numero le decimos al usuario que ponga su numero y de ahí le diremos si el número es mas grande o mas chico que el nuestro hasta que gane el juego. Este es un juego muy básico pero ayuda para entender el lenguaje que trabajas y sin darte cuenta tener un acercamiento a los algoritmos, lo mejor es siempre agregar mas cosas como poder volver a iniciar el juego o un numero de intentos finitos pero por lo mientras se entendió a lo que me refiero. Finalmente ya hablando de Pharo me parece curioso el funcionamiento del lenguaje, tiene muchas cosas en común con lenguajes mas comunes y ademas tiene ventajas y desventajas sobre otros, es de esos lenguajes en los que por ejemplo puedes seleccionar una linea y dar click derecho para hacerla funcionar o si le pides el factorial de 1000 lo hace instantáneo, es una cosa divertida de explorar y si no tienes idea de que es Pharo descargalo y exploralo no es difícil instalar y viene con un tutorial, a mi en lo personal cada vez que abro la maquina virtual de Pharo me termino divirtiendo bastante.

Fuentes de información:

https://en.wikipedia.org/wiki/Binary_search_algorithm

https://www.geeksforgeeks.org/binary-search/

https://www.mathwarehouse.com/programming/gifs/binary-vs-linear-search.php

http://magaloma.seasidehosting.st/Collections

https://en.wikibooks.org/wiki/Smalltalk_the_fun_way/Number_Guessing_Game

http://pharo.gforge.inria.fr/PBE1/PBE1ch2.html#x8-100001

Advertisements

Leave a comment

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Create your website at WordPress.com
Get started
%d bloggers like this: