sábado, 25 de agosto de 2007

Musika

Powered by eSnips.com

domingo, 6 de mayo de 2007

Karel el robot

Bueno gente bienvenidos al maravilloso mundo de karel...

Primero que todo aclaremos que es Karel, Este es un robot que se maneja gracias a un lenguaje de programación, el lenguaje de programacion es muy sencillo, basico y con instrucciones bien definidas.
Este simulador es comunmente usado para dar introduccion a los temas de programacion, personalmente considero que es una muy buena herramienta para empezar a programar, ya que hace que nuestra mente vaya mas alla que un simple problema porque nos lleva a verlo desde otros puntos de vista, lo que nos lleva a considerar varios tipos de soluciones a estos problemas.
Aunque el lenguaje de programacion utilizada aqui no es la real, es muy importante para empezar a conocer este mundo, porque a traves de sus problemas nos hace razonar demasiado de una manera didactica para la solucion de problemas de nuestra vida cotidiana, la practica de este, nos puede ayudar bastante como lo dije anteriormente en el solucionamiento de problemas pero lo mas importante es que estos problemas tenemos que aprender a solucionarlos en el menor tiempo posible.
Existen diferentes versiones de simuladores de karel, pero este blog esta basado en la version de la escuela colombiana de ingenieria... (version de linux)

El mundo de karel

Hablemos ahora de su mundo, este esta conformado por calles (horizontales) y avenidas (verticales), por las cuales se puede desplazar en busca de zumbadores (beeper) o depende del objetivo que tenga que cumplir... A continuacion una imagen del mundo de karel...



Las unicas instrucciones que le podemos dar a este robot son:
-Move (se mueve una esquina hacia la direccion que esta mirando)
-Turnleft (voltea 90º hacia la izquierda)
-Pickbeeper (recoge un beeper en la esquina sobre la que se encuentra)
-Putbeeper(Coloca un beeper sobre la esquina en la que se encuentra.
-Turnoff (instruccion para apagar la ejecucion del robot)

Mire las condiciones que podemos utilizar con este robot AQUI

Para mas informacion descargue el tutorial de karel AQUI
tutorial tomado de http://www.cimat.mx/oieg

Ejercicios Karel

Bueno aqui hay algunos de los problemas de karel.

1.OBSTACULOS: Karel, ubicado en el origen y mirando al este, debe saltar diferentes obstáculos de paredes, hasta encontrar un zumbador que le
indica el final de su carrera de obstáculos.
Vea la solucion del primer problema AQUI

2.PAR O IMPAR: Karel parado en una cuadra cualquiera, debe indicar con la dirección, si la cantidad de zumbadores sobre dicha esquina es par o
impar. Para este caso Karel no podrá moverse de la cuadra en la que
esta ubicado.
Vea la solucion del segundo problema AQUI

Bueno aqui les mostre unos ejemplos muy sencillos, pero ahora voy a colocar unos ejercicios como reto para la gente que visita mi blog...
Los retos son los siguientes

Reto 1 Historia

En Beeperópolis han construido su primera autopista. La autopista esta delimitada por paredes y atraviesa la ciudad de norte a sur, debido a las irregularidades del terreno, el ancho de la autopista varía a lo largo de la misma.

Sin embargo, los habitantes tienen un grave problema ya que no cuentan con la línea central que divide los carriles de ida y de vuelta. Afortunadamente Karel es jefe de tránsito y siempre esta dispuesto a resolver los problemas de Beeperopolis, por lo que se ha dado a la tarea de dibujar dicha línea.

Problema

Ayuda a Karel a poner la línea divisoria en la autopista, esta será formada por zumbadores y deberá dividir por la mitad la autopista desde el norte hasta el sur.

No debe de quedar ningún zumbador en una posición que no pertenezca a la línea divisoria. En cada posición de la línea divisoria, deberá haber únicamente un zumbador.

Consideraciones

Karel lleva un número INFINITO de zumbadores en su mochila.
Karel inicia en cualquier lugar del extremo norte de la autopista con dirección al sur.
No hay paredes ni zumbadores dentro de la autopista.
En cualquier fila de la autopista, el espacio entre ambas paredes es un número impar desconocido.
La línea deberá estar formada por montones de 1 zumbador y deberá ser de ancho 1 y no deberá haber zumbadores en ningún otro lugar de la autopista.
No importa la posición ni orientación final de Karel.

Mirar posicion de ejemplo y final de Karel

Reto 2 Historia

Como era costumbre Gretel salió desde temprano (como a la 6 a.m.) al bosque en busca de beeperleñas. Un poco más tarde (por eso de las 10 a.m.) salio Karel con el mismo propósito. Conociendo a Karel, Gretel tiene la sana costumbre de dejar beepers por donde ha pasado. Para la mala suerte de Karel, una beeperave (un pájaro que come beepers) ha comido muchos beepers del camino aunque dejó los suficientes para que Karel pueda reconstruir el camino y encontrar a Gretel (era buena onda la beeperave).

El camino que dejo Gretel (antes que pasara la beeperave) esta hecho de manera que cada beeper está a sólo un paso del anterior y del siguiente (más no se sabe en que dirección) y no hay caminos que se cruzan. Además, no hay paredes sobre el camino y si se da un paso en la dirección equivocada, nunca habrá un beeper ahí. No hay pared a un paso del camino.

Problema

Debes encontrar un algoritmo para que Karel reconstruya el camino de beepers que dejo Gretel, es decir, debes rellenar de nuevo el camino donde falten beepers.

Consideraciones

Inicialmente Karel se encuentra sobre el primer beeper.
Las discontinuidades, en el camino de beepers, siempre están entre un par de beepers alineados del camino y no se sabe el largo de la discontinuidad.
Karel topará con Pared si equivoca la dirección.
Karel termina si se topa con pared antes de un beeper, en cualesquiera de las direcciones disponibles (sin contar de donde viene) que tiene.
Karel debe terminar en el último beeper del camino con cualquier orientación.
Karel tiene suficientes beepers para colocar. Al menos, los que requiere el camino.
Karel está dando la espalda a un lugar donde no hay camino.

Vea el mapa aqui

Reto 3 Historia

El Kapitán Karel Sparrow en su última aventura a bordo de su barco llamado beeper Negra, encontró un mapa de un tesoro. El mapa estaba codificado de manera que en cada posición había un señalamiento con un determinado número de beepers. Ningún beeper significa que debe dar un paso al norte, un beeper significa un paso al oeste, dos beepers significan un paso al sur y por último 3 beepers significan un paso al este.

El tesoro se encuentra en una cruz de paredes. Si el mapa indica avanzar hacia una pared, significa que el tesoro se encuentra en ese lugar.

Problema

Escribe un programa que lleve a Karel hasta la cruz de paredes en la que se encuentra el tesoro. Tu paso por el camino indicado no debe dejar rastro. Es decir, no debes dejar beepers.

Consideraciones

Debes seguir los señalamientos del mapa para encontrar la cruz apropiada, ya que puede haber varias cruces en la isla, y sólo una tiene el tesoro.
Inicias sobre la primera instrucción del mapa.
No sabes la orientación inicial de Karel.
Cada señal debe ser removida después de pasar por ella.
Debes terminar frente a la cruz sin importar la orientación de Karel.

Vea los mapas de ejemplo aqui

Quien es el "duro" que va a resolver los retos???
Espero respuestas a los retos...

La maquina de turing


Bueno ya hablamos un poco de lo que es karel el robot, y le abrimos un campo a una de las grandes invenciones de la historia, la maquina de turing realizada por Alan Turing y se puede decir que fue el primer modelo del computador, aunque muy basico, fue muy importante para el desarrollo de las actuales tecnologias.

En realidad la máquina de Turing es más una abstracción matemática que un dispositivo físico o mecánico. El hecho que se le denomine "máquina" se debe a que su funcionamiento puede ser descrito en términos de operaciones individuales muy sencillas que sugieren una implementación real muy simple, lo que ha motivado que existan muchas versiones prácticas del mismo.

Existen diversas "variedades" de una máquina de Turing, pero la más simple puede ser descrita diciendo que es cualquier dispositivo que cumple las siguientes condiciones:

Tiene una cinta sobre la que puede desplazarse a izquierda y derecha un cabezal de lectura/escritura. La cinta contiene una serie de celdas, y en cada una de ellas puede escribirse un símbolo de un conjunto finito; este conjunto de símbolos se denomina el alfabeto de la máquina. En principio todas las celdas que no se hayan escrito antes contienen un carácter especial nulo o vacío (que se representa por 0 o #). La cinta puede contener tantas celdas a derecha e izquierda del cabezal como sean necesarias para el funcionamiento de la máquina.

El cabezal puede moverse a derecha a izquierda de su posición actual, así como leer el contenido de una celda o escribir en ella cualquier carácter de su alfabeto.

Existe un registro de estado que almacena el estado de la máquina. El número de estados posibles es finito, y no se exige ningún estado especial con el que sea iniciada la máquina.

Existe una tabla de acción, que contiene las instrucciones de lo que hará el autómata. Estas instrucciones representan en cierta forma el "programa" de la máquina. Las ejecución de cada instrucción de la tabla de acción incluye cuatro pasos:

Leer un carácter en la posición actual.

Escribir un nuevo símbolo en esta posición (puede ser el mismo que había). El símbolo a escribir es alguno del alfabeto de la máquina, y depende del carácter leído y del estado actual.

Desplazar el cabezal una celda a derecha o izquierda; en algunos modelos el desplazamiento puede ser nulo.

Decidir cual será el nuevo estado en función del carácter que se acaba de leer y del estado actual. Si la tabla de acción no contiene ninguna correspondencia con el estado actual y el símbolo leído, entonces la máquina detiene su funcionamiento.

informacion tomada de http://www.zator.com/Cpp/E0_1_1.htm#[2]

Es increible como apartir de esta maquina, atravez del tiempo las cosas hayan venido evolucionando tanto, que hoy en dia utilizamos computadores de tan alto rendimiento, y todo estas tecnologias, gracias a la invencion de la maquina de Turing, por eso es que esta es tan importante actualmente, y que hace parte de la historia.

A continuación se muestra el modelo del software desarrollado en la Escuela Colombiana De Ingenieria por el ingeniero Raul Chaparro.

Ejercicios maquina de turing

Aca les dejo unos ejercicios de la maquina de Turing muy simples

1.Conversor: dada una cinta inicial con colores amarillo, azul y rojo, el problema consiste en dejar la cinta con colores rojo, amarillo y azul. Se
ilustrará en la siguiente gráfica un caso particular:

Cinta inicial


Cinta final e instrucciones para el desarrollo del problema 1


2.Desplazador-3: Dada una cinta inicial con colores azules. Se trata de correr los colores hacia la derecha tres lugares. Veamos un ejemplo:

Cinta inicial


Cinta final e instrucciones para el desarrollo del problema 2


Los problemas que les dejo para las personas que les gusta los retos son los siguientes:

1. Ordenador: Dada una cinta con celdas de colores amarillas, azules y rojas, mezcladas en cualquier orden, dejar primero las amarillas, luego las azules y al final las rojas. La cantidad de fichas de cada color NO cambia.

2. Validador: Dada una cinta inicial con celdas amarillas, azules y rojas, como cinta de salida debe aparecer una celda verde (las demás de color gris) en caso de que haya la misma cantidad de celdas azules, rojas y amarillas, en
la cinta inicial; en caso de que esta condición no se cumpla, en la cinta final
debe aparecer únicamente una celda magenta (el resto de celdas grises).

Opine

El blog queda abierto para todos los interesados en el tema, aqui podremos discutir, opinar y dejar comentarios, recuerden que pueden dejar sus sugerencias, sus problemas de programación, entre otros...