![]() |
Ejercicio dificil en Prolog Tenemos 4 regalos (coche, casa, viaje, barco) a repartir entre 6 personas (Pepe, Juan, Rafael, Ana, Concha, Eva). Entre los 6, hay parejas que son incompatibles y nunca aceptarían tener el mismo regalo. La lista de parejas incompatibles es la siguiente: v Pepe es incompatible con las otras 5 personas v Juan es incompatible con Rafael, Ana y Concha v Rafael es incompatible con Concha y Eva v Ana es incompatible con Concha v Concha es incompatible con Eva. Escribir un programa PROLOG y el objetivo adecuado para obtener las asignaciones de regalos aceptables por las 6 personas. |
Re: Ejercicio dificil en Prolog Buscando me encontre un pdf que trata sobre ese tema, Programacion Logica basada en restriciones y dan una solucion a ese ejercicio es la siguiente ?-use_module(library(fd)). asigregalos(Lista):- Lista = [Pepe,Juan,Rafael,Ana,Concha,Eva], Lista :: [coche,casa,viaje,barco], Pepe ## Juan, Pepe ## Rafael, Pepe ## Ana, Pepe ## Concha, Pepe ## Eva, Juan ## Rafael, Juan ## Ana, Juan ## Concha, Rafael ## Concha, Rafael ## Eva, Ana ## Concha, Concha ## Eva, labeling(Lista). labeling([]). labeling([X|Y]):- indomain(X), labeling(Y). pero esta un poco ambiguo y no entiendo bien lo que significa, si te encuentras una solucion mejor escribeme |
Respuesta: Ejercicio dificil en Prolog Mira ya lo programé y aqui te va el código, pégalo íntegro en un nuevo archivo *.pl, compila y listo, n o utilize nada del lenguage sái que si quieres puedes hasta reducir más el código para correrlo solo invoca: asignaciondeRegalos(X) y listo, espero que te sea de provecho, si encuentras por ahí alguna otra respuésta más óptima me la mandas por favor mi email es [email protected]. %% Autor: Enrique Almeida Maldonado incompatibles(pepe,[juan, rafael, ana, concha, eva]). incompatibles(juan,[pepe, rafael, ana, concha]). incompatibles(rafael,[pepe, juan, concha, eva]). incompatibles(ana,[pepe, juan, concha]). incompatibles(concha,[pepe, juan, rafael, ana, eva]). incompatibles(eva,[pepe, rafael, concha]). regalos([coche, casa, viaje, barco]). personas([eva, juan, concha, ana, pepe, rafael]). asignaciondeRegalos(Asignaciones):- personas(ListaPersonas), regalos(ListaRegalos), asignacionPersonas(ListaPersonas,ListaRegalos,Asig naciones), largo(Asignaciones,Largo), Largo ==6 . asignacionPersonas([],_,[]). % Acá recursivamente comienzo la asignación de los regalos y la comprobación de compatibilidad asignacionPersonas([Primero|Restante],Regalos,Listado):- asignacionPersonas(Restante,Regalos,Prov),asignaci onRegalos(Primero,Regalos,Prov,Listado). asignacionRegalos(_,[],Provicional,Provicional). asignacionRegalos(Persona,[PR|_],Provicional,[[Persona,PR]|Provicional]):-validacionRegalos(Persona,PR,Provicional). asignacionRegalos(Persona,[_|Regalos],Provicional,Restante):-asignacionRegalos(Persona,Regalos,Provicional,Rest ante). validacionRegalos(_,Regalo,Lista):- not(miembro([_,Regalo],Lista)), !. validacionRegalos(Persona,Regalo,Lista):- listadoCompatible(Lista,Regalo,Persona), cont(Regalo,Lista,Veces), Veces<2 . listadoCompatible(Lista,Regalo,Persona):- miembro([X,Regalo],Lista),not(incompatible(Persona,X)). incompatible(Persona,X):- incompatibles(Persona,Lista), miembro(X,Lista). largo([],0). largo([_|Y],R):- largo(Y,R1), R is R1+1. miembro(X,[X|_]). miembro(X,[_|L]):- miembro(X,L). cont(_,[],0). cont(X,[[_,Z]|Y],R):- X==Z, cont(X,Y,R1), R is R1+1, ! . cont(X,[_|Y],R):- cont(X,Y,R). |
Ejercicio dificil en Prolog Hola me pueden ayudar con este problema en prolog: Toda persona tiene diferentes gustos, cuando un hombre o una mujer descubra que de su lista de gustos comparten al menos uno, puede ser una pareja ideal No lo puedo hacer porfa alguien que me ayude |
| La zona horaria es GMT -6. Ahora son las 22:15. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.