introalg:taller09_soluciones
¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Soluciones a ejercicios
ejercicios de prolog, 30/03/09
familia
%%%%%%%%%%%% %% HECHOS %% %%%%%%%%%%%% mujer(pepa). mujer(lucía). mujer(blanca). mujer(rosa). mujer(alba). mujer(inés). mujer(irene). hombre(armando). hombre(julián). hombre(esteban). hombre(mario). hombre(alejandro). hombre(martín). hombre(matías). progenitor(pepa,lucía). progenitor(pepa,blanca). progenitor(pepa,mario). progenitor(lucía,rosa). progenitor(lucía,alba). progenitor(blanca,inés). progenitor(blanca,martín). progenitor(irene,matías). progenitor(armando,lucía). progenitor(armando,blanca). progenitor(armando,mario). progenitor(julián,rosa). progenitor(julián,alba). progenitor(alejandro,inés). progenitor(alejandro,martín). progenitor(mario,matías). %%%%%%%%%%%% %% REGLAS %% %%%%%%%%%%%% padre(X,Y) :- hombre(X), progenitor(X,Y). madre(X,Y) :- mujer(X), progenitor(X,Y). hijo(X,Y) :- hombre(X), progenitor(Y,X). hija(X,Y) :- mujer(X), progenitor(Y,X). abuelo(X,Y) :- hombre(X), progenitor(X,Z), progenitor(Z,Y). abuela(X,Y) :- mujer(X), progenitor(X,Z), progenitor(Z,Y). hermano(X,Y) :- hombre(X), progenitor(Z,X), progenitor(Z,Y), not(X=Y). hermana(X,Y) :- mujer(X), progenitor(Z,X), progenitor(Z,Y), not(X=Y). tío(X,Y) :- hermano(X,Z), progenitor(Z,Y). tía(X,Y) :- hermana(X,Z), progenitor(Z,Y). primo(X,Y) :- hijo(X,Z), progenitor(W,Y), ( hermano(Z,W) ; hermana(Z,W) ). prima(X,Y) :- hija(X,Z), progenitor(W,Y), ( hermano(Z,W) ; hermana(Z,W) ). hijoúnico(X) :- not(hermano(_,X) ; hermana(_,X)). % vamos a ver más sobre este problema en la clase
Otra opción para hijo único que funciona mejor, más acorde a nuestras intuiciones sobre el concepto:
hijoúnico(X) :- ( hombre(X) ; mujer(X) ) , ( not(hermano(_,X) ; hermana(_,X)) ).
Esta opción funciona mejor porque el árbol de búsqueda de resultados que se arma y sobre el cual el intérprete hace backtracking es considerablemente distinto.
ejercicios de prolog, 6/04/09
extensión de familia
Incorporamos cuñados, suegras y demás familias políticas. Para ello nos resultará muy útil definir el predicado “pareja”, y podremos escribir el resto de relaciones en función de ella.
pareja(X,Y) :- progenitor(X,Z), progenitor(Y,Z). cuñado(X,Y) :- hermano(X,Z), pareja(Z,Y). cuñada(X,Y) :- hermana(X,Z), pareja(Z,Y). suegra(X,Y) :- hijo(Z,X), madre(Y,Z). suegro(X,Y) :- hijo(Z,X), padre(Y,Z).
Fíjense que no hay que explicitar el sexo del cuñado, suegra, etc. porque ya está implícito en los predicados “hermano” y “madre”, respectivamente.
introalg/taller09_soluciones.1239970021.txt.gz · Última modificación: 2018/08/10 03:03 (editor externo)