miércoles, 20 de octubre de 2010

Tarea # 5 Problema Lógico

Caníbales y Misioneros
Tres misioneros y  tres canibales se encuentran juntos, con un bote, en  el mismo lado del rio, el bote puede transportar como maximo 2  personas . La unica manera segura de hacerlo es que en cada orilla del  río nunca puedan haber mas canibales que misioneros, ¿Como podemos trasladar a las 6 personas de un lado del rio al otro? 


En seguida pondré los pasos que realice para encontrara la solución al problema.
Comencé con los 3 misioneros y los 3 caníbales del lado derecho y tendrán que cruzar al lado izquierdo del río : 
C= caníbales
M=misioneros


Estado inicial 
Lado Izquierdo                                                   Lado derecho
0M; 0C                                                                  3M; 3C
2C                                                                         3M; 1C
1C                                                                         3M; 2C
3C                                                                         3M
2C                                                                         3M; 1C
2C; 2M                                                                  1M; 1C
1C; 1M                                                                  2M; 2C
1C; 3M                                                                  2C
3M                                                                         3C
3M;  2C                                                                 1C
3M; 1C                                                                  2C
3M; 3C


Este es un link del problema de "caníbales y misioneros" en el que podrán probar mi solución o encontrar alguna otra: http://www.plastelina.net/games/game2.html


Prolog


Y aquí el código  en Prolog



% predicado a llamar desde la consola (esto lo usaremos para mostrar el resultado)
resolverCanMis(S):- busquedaProf(estado(3,3,0,0,0),[estado(3,3,0,0,0)],S).




miércoles, 13 de octubre de 2010

Reporte #4 Lenguajes Funcionales (CORREGIDO)

Los lenguajes que elegí fueron R y Haskell:




Primero declare las matrices que utilizare "x" y "y" : 
Hice que "x" tomo los valores de 1 a 15, y después di las dimensiones de la matriz que es 5x3
Después declare la matriz "y" con una secuencia de números a partir del 2 hasta el 30 de 2 en 2, y le di las dimensiones 5x3.

Después use la función sum( ) para sumar los elementos de cada matriz:

También hice operaciones con las matrices:
Suma
 Producto
  Y use las funciones para obtener el mínimo y el máximo valor de cada matriz:



*** Les dejo una tarjeta de referencia para R por si la necesitan:
http://cran.r-project.org/doc/contrib/Short-refcard.pdf

                Haskell

Programa que calcula la serie de Fibonacci:


fib :: Integer -> Integer
fib 0 = 1
fib 1 = 1
fib n = fib (n-1) + fib (n-2)