Mostrando entradas con la etiqueta lógico. Mostrar todas las entradas
Mostrando entradas con la etiqueta lógico. Mostrar todas las entradas

3 dic 2010

Problema lógico

El problema lógico que elegí no lo pude resolver mediante algún programa lógico, pero aquí trataré de dar una explicación de la solución.

Elevador

"Un hombre trabaja en el piso 10 y siempre toma el ascensor hasta el nivel del suelo al final del día. Sin embargo, cada mañana, sólo toma el ascensor hasta el 7º piso y sube las escaleras hasta el piso 10, incluso cuando se tiene prisa."


Bueno, para empezar analicemos lo que nos dice la redacción.

Si el hombre trabaja en el piso 10, y cuando termina de trabajar baja por el elevador desde ese mismo piso 10 hasta la planta baja. Con esto sabemos que si existe elevador que llegue hasta el piso 10.

Lo extraño es que cuando él sube, solo llega hasta el piso 7, y de ahí sube por las escaleras.

Propondré razones por las que probablemente no pueda subir por el elevador a partir del piso 7.

1) Podría ser que los botones para los pisos 8, 9 y 10 no funcionen correctamente.

2) Tal vez el hombre tenga un problema psicológico y le tenga temor a presionar los botones del piso 8 en adelante. La verdad no creo.

3) El número 7 es el de la suerte y pese a lo que pese se baja en ese piso para tener suerte todo el día. Yo ni por tanta creencia haría eso.

4) Los botones de los pisos 8, 9 y 10, los pusieron tan arriba que nadie los alcanza.

5) Y junto con el anterior deducimos también que el problema podría estar en la estatura del hombre.

Como no había forma de saber la razón real por la que el hombre hace eso todos los días, no me quedó otra más que ver la respuesta del problema, la cual fue:

El hombre es de muy baja estatura, y solo alcanza hasta el piso 7.

Así de simple fue la respuesta.

Pero y si lo hubiera intentado crear en algún lenguaje lógico como prolog, tendría que haber incluido muchas expresiones de las cosas posibles y no posibles.

El hombre tendría que subir todos los días solo en el elevador, ya que si subiera con otra persona, podría pedir que presionen por el el botón del piso 10.
Contemplar que una persona bajita no alcanzará todos los botones, y una persona alta sí.

Y me puse a pensar en que hombre podrá ser tan pequeño que ni saltando alcance el piso 10, y encontré el probable hombre trabajador del piso 10.


Estoy casi seguro que es Mini-Me.

Enlace: Elevator

17 ago 2010

Un poco sobre paradigmas...

Con respecto a las ciencias de la computación, Robert Floyd, fue quien por primera vez habló del concepto de Paradigma de Programación y lo define como: "Un proceso de diseño que va más allá de una gramática, reglas semánticas y algoritmos, sino que es un conjunto de métodos sistemáticos aplicables en todos los niveles de diseño de programas".

En nuestra época es muy diverso el uso de la programación. Podemos programar desde un simple control de un televisor, hasta un robot que se mandará a la luna con fines de expedición. Para cada una de las necesidades se han creado diferentes lenguajes de programación, cada uno de ellos difiere en lo fácil que resulta realizar determinadas tareas que con otro lenguaje, cada uno tiene ventajas y desventajas según lo que se desea hacer.

En la actualidad existen muchos paradigmas de programación, pero los mas esenciales son los siguientes, de los que trataré de explicar en pocas palabras en que consiste cada uno de ellos.

Paradigma imperativo: Consiste en una serie de comandos que una computadora ejecutará. Estos comandos detallan de forma clara y específica el cómo hacer las cosas y llevarán al programa a través de los distintos estados. En otras palabras son instrucciones que le dicen a la computadora como realizar determinada tarea.
Los elementos importantes del paradigma son las variables, tipos de datos, expresiones y estructuras de control.

Paradigma funcional: Considera al programa como una función matemática donde el dominio representaría el conjunto de todas las entradas posibles y el rango sería el conjunto de salidas posibles. Esto se podría entender mejor como una secuencia:
Entrada de parámetros >> Subrutina o función >> Salida de valores.
Algo importante es aclarar que en un lenguaje funcional no existe el concepto de variables y tampoco operaciones de asignación.

Paradigma lógico: Este consiste en el uso del conocimiento de la lógica para los lenguajes de programación. Se basa en reglas lógicas que luego, a través de un motor de inferencias lógicas, responder preguntas planteadas al sistema y así resolver los problemas. El mejor ejemplo de esto sería Prolog.

Paradigma orientado a objetos: Basado en la idea de encapsular estado y operaciones en objetos. Programar con este paradigma es como tratar de simular o modelar los objetos del mundo real. Las propiedades generales de este paradigma son: a) El encapsulamiento: Se refiere a que el código o datos de un objeto podrían estar ocultos para cualquier objeto externo a él. b) Herencia: Es crear nuevos objetos a partir de otros.

*Esta información la obtuve principalmente de una página que encontré en Internet que me pareció muy buen texto con ejemplos claros, aunque con conceptos un poco difusos, así que recurrí a Wikipedia para comparar los conceptos y lograr dar una explicación un poco mas entendible.

Referencia: Paradigmas de Programación.