El IDE es multiplataforma como también es software libre.
Les dejo algunos ejemplos. Si necesitan más códigos fuentes, pídanme que los alzare. Solo pongo algunos.
Obs: Copien el archivo como esta y guarden como "ejemplosVarios.pl" y hagan doble clic en el código fuente para poder acceder al IDE y poder probar el programa.
Código fuente en Prolog %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Ejercicio 1: % Supongamos que tenemos el siguiente conocimiento sobre % divisibilidad: % " 2 divide a 6" % " 2 divide a 12" % " 3 divide a 6" % " 3 divide a 12" % " Si un número es divisible por 2 y por 3 entonces es % divisible por 6" % % Escribir un programa que represente este conocimiento y usarlo % para responder a las siguientes preguntas: % (1) ¿Existe algún múltiplo de 2? % (2) ¿Cuáles son los divisores de 6? % (3) ¿Conocemos algún múltiplo de 6? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% divide(2,6). divide(2,12). divide(3,6). divide(3,12). divide(6, X):- divide(2, X), divide(3, X). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Ejercicio 2: En este ejercicio y los siguientes vamos a % realizar un ejemplo que describe la carta de un restaurante. % Los objetos que interesan son los platos que se pueden consumir % y una primera clasificación puede ser la siguiente: % * Entradas: paella, gazpacho, consomé % * Carne: filete de cerdo, pollo asado % * Pescado: trucha, bacalao % * Postre: flan, nueces con miel, naranja % % Escribe como programa Prolog la clasificación de comidas % del restaurante. El programa constara de 10 cláusulas y los % predicados a usar son entrada/1, carne/1, pescado/1 y postre/1. % Prueba después el programa con preguntas como % ?- carne(X). % ?- carne(X), postre(X). % ... etc... %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% entrada(paella). entrada(gazpacho). entrada(consome). carne(filete_de_cerdo). carne(pollo_asado). pescado(trucha). pescado(bacalao). postre(flan). postre(nueces_con_miel). postre(naranja). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Ejercicio 3: Definir la relación "plato_principal(X)" que % indicara que un plato principal es un plato de carne o de % pescado. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% plato_principal(X):- carne(X). plato_principal(X):- pescado(X). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Ejercicio 4: Definir la relación "comida(X,Y,Z)" que indicara % que la comida consta de tres platos, una entrada "X", un plato % principal "Y" y un postre "Z". % Pidiéndole respuestas sucesivas a la pregunta ?- comida(X,Y,Z). % podemos generar todas las posibles comidas del restaurante. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% comida(X, Y, Z):- entrada(X), plato_principal(Y), postre(Z). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Ejercicio 5: % (a) ¿Cómo se pregunta por las comidas con pescado sin modificar % el programa? comida(X, Y, Z), pescado(Y). % (b) ¿Cómo se pregunta por las comidas con naranja sin modificar % el programa? comida(X, Y, naranja). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Ejercicio 6: Para completar un poco la información que tenemos % sobre las comidas del restaurante vamos a mirar la lista de las % calorías que aporta cada plato: % * Una ración de paella aporta 200 calorías % * Una ración de gazpacho aporta 150 calorías % * Una ración de consomé aporta 300 calorías % * Una ración de filete de cerdo aporta 400 calorías % * Una ración de pollo asado aporta 280 calorías % * Una ración de trucha aporta 160 calorías % * Una ración de bacalao aporta 300 calorías % * Una ración de flan aporta 200 calorías % * Una ración de nueces con miel aporta 500 calorías % * Una ración de naranja aporta 50 calorías % % Definir la relacion "calorias(X,N)" que indicará que una % ración de "X" tiene "N" calorías. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% calorias(paella, 200). calorias(gazpacho, 150). calorias(consome, 300). calorias(filete_de_cerdo, 300). calorias(pollo_asado, 280). calorias(trucha, 160). calorias(bacalao, 300). calorias(flan, 200). calorias(nueces_con_miel, 500). calorias(naranja, 50). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Ejercicio 7: Definir la relacion "valor_calorico(X,Y,Z,V)" % que indicará que la comida comida(X,Y,Z) suma en total "V" % calorías. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% valor_calorico(X, Y, Z, V):- comida(X, Y, Z), calorias(X, V1), calorias(Y, V2), calorias(Z, V3), V is V1+V2+V3. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Ejercicio 8: Definir la relacion "comida_equilibrada(X,Y,Z)" % que indicará que la comida comida(X,Y,Z) no supera las 800 % calorías. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% comida_equilibrada(X, Y, Z):- valor_calorico(X, Y, Z, V), V<800. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Ejercicio 9: % Considera el siguiente programa que describe algunas relaciones % familiares padre(andres,bernardo). padre(andres,belen). padre(andres,baltasar). padre(baltasar,david). padre(david,emilio). padre(emilio,francisco). madre(ana,bernardo). madre(ana,belen). madre(ana,baltasar). madre(belen,carlos). madre(belen,carmen). % extender el programa para definir las siguientes relaciones % familiares % (9.1) abuelo/2 % (9.2) progenitor/2 % (9.3) nieta/2 % (9.4) antepasado/2 % (9.5) descendiente/2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% abuelo(X, Y):- padre(X, Z), padre(Z, Y). abuelo(X, Y):- padre(X, Z), madre(Z, Y). progenitor(X, Y):- padre(X, Y). progenitor(X, Y):- madre(X, Y). mujer(belen). mujer(ana). mujer(carmen). nieta(X, Y):- mujer(X), progenitor(Y, Z), progenitor(Z, X). antepasado(X, Y):- progenitor(X, Y). antepasado(X, Y):- progenitor(X, Z), antepasado(Z, Y). descendiente(X, Y):- antepasado(Y, X).
19 comentarios:
EXCELEEEEENTE!!! esto me va a servir muchisimo!!! gracias josego!!!
@RomiOmi de nada. Cuando necesites ayuda avisa nomas. Puse algunos ejemplos pero tengo más.
Saludos
Vas a ayudar a planear una comida de tres platos para un Seminario del Departamento de Informática. Los estudiantes y los profesores son de muy diversos países, y al chef le gustaría hacer la comida verdaderamente internacional: los tres platos/comidas (aperitivo, un plato principal y el postre) deberán proceder de países diferentes. Además, aplican las siguientes reglas:
1. La comida debe incluir ya sea un plato chino o egipcio.
2. Si se elige un aperitivo indio, se debe elegir un postre de Corea.
3. Si se elige un plato chileno, no se puede servir ningún plato mexicano.
4. Si se elige un plato vietnamita, el plato principal debe ser chino.
5. Un plato coreano no se puede servir antes de un plato egipcio.
6. El aperitivo no puede ser chino.
7. Los alimentos egipcios y vietnamitas no son seguros juntos.
8. De todos los platos chilenos sólo vale la pena comer postres.
9. La comida de la India es mejor con un aperitivo de Corea. Esto implica que, además, la comida india no puede ser un aperitivo.
10. Los postres mexicanos no son muy grandes.
11. Si los alimentos chinos y coreanos se sirven juntos, más vale que el plato principal sea coreano.
12. Un plato principal mexicano y comida egipcia son los mejores seguido por el postre de Corea. Esto significa que: Un plato principal de México, cuando se sirve con aperitivo egipcio, necesita un postre de Corea.
13. La comida china y chilena debe tener un aperitivo de la India. Esto significa que si los alimentos chinos y chilenos se sirven juntos, se necesita un aperitivo de la India.
14. Un aperitivo de México debe tener un postre de Corea.
15. La comida chilena debe ser servida con un plato principal chino. Esto significa que el alimento chileno se sirve si y sólo si se sirve un plato principal chino. (Aquí hay una doble implicación: el plato principal chino implica un poco de comida chilena, y la comida chilena implica plato principal chino.)
Por favor, asiste a la planificación del chef de esta comida, proporcionando una función/predicado de Prolog comida(A, E, D), que devuelva todas las soluciones posibles a este problema. (Hay tres soluciones.) Podría ser una buena idea descomponer este problema en un conjunto de cláusulas, y probar cada cláusula por separado. Esto es mucho más fácil que tratar de escribir una declaración gigantesca.
El predicado comida(A, E, D) producirá "Sí" si se le da un conjunto correcto de opciones de comida, y "No" para un conjunto que no es deducible o bien que no es correcto.
yo se como se hace ese ejercicio mandame un mail
y te cuento.
se despide Mario B.
Hola Mario B. mi nombre es Francisco, me gustaria la solución del ejercício anterior, es muy importante, porque es muy identico a otro que me encargarron, eso si lo tengo en ingles.
mi correo es fco.h.martinez@gmail.com
estaria bien chido si me ayudaras..
@Mario B. no se si sos mi ex compañero de la facu o eres otro. Podrías facilitarme a mi correo (josego85@gmail.com o al proyectosbeta@gmail.com) o dejarme tus datos y me comunico contigo. Asi le facilito a @franciso o si no hazolo tu mismo.
@francisco: Hace rato no utilizo más prolog por eso no te puedo ayudar pero estoy viendo que últimamente se esta solicitando mucho esta clase de ejercicios.
Si tienes alguna información del ejercicio o la tienes podrías avisarme. Muchas gracias.
saludos, josé
@proyectosbeta, Mario B. al final me respondio y era una joda.. asi que no cuenten con el... pero si alguien sabe porfavor o tu proyectosbeta, comenten el ejercicio..
gracias..
@francisco: que lastima realmente. Claro que si se de algo te aviso si o si..
saludos, josé
Podrian ayudarme a encontrar la pareja ideal en prologe teniendo esta información:
• Elena: muy muy alta, morena, alrededor de 40 años.
• Lola: alta, morena, alrededor de 40 años, tímida.
• Patricia: alta, morena, alrededor de 40 años.
• Sandra: alta, morena, alrededor de 30 años.
• Susana: alta, morena, alrededor de 20 años.
• Julia: alta, morena, alrededor de 18 años, universitaria.
• Cristina: alta, morena, alrededor de 18 años.
• Ana: alta, pelirroja, alrededor de 18 años.
• Silvia: alta, rubia, alrededor de 30 años.
• María: alta, rubia, alrededor de 20 años.
• Adelaida: baja, delgadita, alrededor de 40 años.
• Paloma: baja, delgadita, alrededor de 20 años.
• Alicia: baja, gordita, elegante, alrededor de 40 años.
• Flor: baja, gordita, hippie, alrededor de 40 años.
• África: baja, gordita, hippie, alrededor de 30 años.
• Lorena: baja, gordita, alrededor de 40 años.
• Sonia: baja, gordita, alrededor de 30 años.
Gracias !
copie en el codigo fuente el ejercicio 7,8,9 y no me sale..........marca errores xq???
@Anónimo (17 de mayo de 2011 - 21:15): Especificamente que error te sale?
me gustaria saber donde esta la pestañana para bajar el codigo fuente :D
Me interesa tener el codigo fuente del Ejecicio 2 p0rfaa me urgee; si puedes mandarmelo mi correo es martin_k02@hotmail.com thx ^^
Hola!!...bueno viendo el problema de los errores que te tienes al compilar el ejercicio 7, lo mas seguro es q tanto el 7 en adelante se emplea desde el dos, intenta poner la base de conocimiento desde el problema dos... otra cosa..TUS CODIGOS ME AYUDARON MUXO PROYECTOSBETA!!! ...gracias XD
Existen personas a quienes sus padres fuerzan a elegir una carrera. Es sabido que los buenos padres hacen lo mejor para sus hijos; pero los que fuerzan a elegir una carrera a otros no hacen lo mejor para ellos. Por lo tanto existen malos padres....UN PROBLEMILLA, AYUDA!
Exelente aporte, me va a servir mucho para practicar y entender mejor el tema, apenas estoy entrando en la clase de progrmacion logica, si puedes enlazar mas seria perfecto,bueno y si me los puedes enviar a mi correo tambien x fa, es fausto1mayo@gmail.com
hola podrías explicarme cómo se hacen las inferencias quiero hacer un árbol genealógico
hola el profe de IA nos dejo una practica de encontrar una pareja ideal en prolog pero no se como hacer las regla
si tengo que poner en los hechos
los gustos de los involucrados tiene que ser hombre y mujer y se tienen que relacionar
Tengo que entregar una tarea extra de prolog y no tengo ni la mas minima idea de como se hace aqui les dejo el ejercicio para ver si me ayudan...
De una lista X obtener una lista Y con lo siguiente: la suma de los dos primeros elementos de X seran el primer elemento de Y, los dos elementos siguientes de Y serán sero y el resto los tres últimos elementos de X.
Ejemplo:
X ([5.4.6.7.8.9],Y)
y=[9.0.0.7.8.9]
E_Mail:emilio.duarte@umcc.cu
Publicar un comentario
Expresate y se crítico en tu vida. XD