Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[APORTE] [Paradigmas] Enunciado Final 15/02/2014
Autor Mensaje
agustinp.metz Sin conexión
Empleado de Fotocopiadora
Sin estado :(
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 33
Agradecimientos dados: 20
Agradecimientos: 72 en 11 posts
Registro en: Apr 2011
Facebook Twitter
Mensaje: #1
[APORTE] [Paradigmas] Enunciado Final 15/02/2014 Finales Paradigmas de Programación
Les dejo el final que tomaron hoy (15/2/14).

Suerte!


Archivo(s) adjuntos
.pdf  final 15-2-14..pdf (Tamaño: 1,04 MB / Descargas: 436)
(Este mensaje fue modificado por última vez en: 21-02-2014 21:57 por rulo.)
15-02-2014 14:17
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] agustinp.metz recibio 8 Gracias por este post
aleixen (15-02-2014), takuma1985 (15-02-2014), reLlene (15-02-2014), alelnro1 (17-02-2014), mpia (19-02-2014), Asfiaah (21-02-2014), lucascla (21-02-2014), gabiser (23-02-2014)
aleixen Sin conexión
Empleado de Fotocopiadora
It begins
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 46
Agradecimientos dados: 120
Agradecimientos: 7 en 3 posts
Registro en: May 2011
Mensaje: #2
RE: [APORTE] Enunciado Final 15/02/2014
Gracias por el aporte ;)

If you're afraid to fall, you fall because you're afraid, everything is choice . . .
15-02-2014 19:34
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
DarkCrazy Sin conexión
Profesor del Modulo A
Howdy ho!
*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 394
Agradecimientos dados: 461
Agradecimientos: 255 en 78 posts
Registro en: Mar 2011
Mensaje: #3
RE: [APORTE] Enunciado Final 15/02/2014
Es final de paradigmas, no? Gracias por el aporte!
15-02-2014 20:03
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
wastomy Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 3
Agradecimientos dados: 0
Agradecimientos: 8 en 2 posts
Registro en: Dec 2012
Mensaje: #4
RE: [APORTE] Enunciado Final 15/02/2014
Yo lo resolví así: (diganme qué opinan o qué cambiarían, en algunos puntos tengo dudas y los dejo en negrita)

Punto 1:
a) ?-tiene(juan,B).
B=auto;
B=moto.
Porque auto y moto matchean y vuelven cierta la afirmación.
?-cuantosTiene(juan,B).
B=2.
Porque juan tiene auto y moto, findall crea una lista con estos, y es de largo 2.
?-envidia(moncho,juan).
True.
Porque juan tiene auto y moncho no, lo que vuelve verdadera a la regla.
?-tiene(A,3).
Devuelve FRUTA.
Porque el primer argumento no es inversible.
?-cuantosTiene(A,B).
A=juan, B=2;
A=pedro, B=1;
A=moncho, B=2.
?-envidia(A,B).
A=pedro,B=juan;
A=moncho,B=juan.

b)?tieneTodoLoQueTiene(A,B):- forall(tiene(B,X),tiene(A,X)).
(conceptos aplicados ??)


Punto 2:
a)Encapsulamiento:
iii)Porque la capsula está buscando dentro de la colección de estrellas que pertenece a la galaxia.
#Capsula
>>escaparA: unaGalaxia
self viajarA: (unaGalaxia buscarEstrellaHabitable) lugarHabitable.
^self.
#Galaxia
>>buscarEstrellaHabitable
^self estrellas do:[:estrella|estrella sosHabitable].

b)Polimorfismo:
ii)Porque las estrellas tratan indistintamente a los asteroides y planetas al mandarles el mensaje de sosHabitable, en cambio a las estrellas sólo les mandan mensaje las capsulas, asi que el mensaje podria llamarse de otra forma.
c)Errores:
iii)Porque no da errores y así funciona, si la galaxia no tuviera estrellas habitables, ya devuelve error. (???)
d)Declaritividad: iii) (???)

Punto 3:
a)En Haskell, mientras haya alguna estrella habitable, funcionaría, ya que al encontrar la primera habitable, se aplica el head, así que no recorre la lista entera de estrellas.
b)i)viajarA (combustible,posicion) unLugar = combustible - (distanciaA posicion unLugar).
ii)El concepto de asignacion destructiva y efecto de lado, que existen en el paradigma de objetos pero no en el funcional. Esto implica que el metodo realiza un cambio en el codigo despues de ser aplicado, cambiando atributos de un objeto (como en este caso, el combustible y la posicion de la capsula).

c)lugarHabitableDeEstrella galaxia = lugarHabitable (head (filter sosHabitable (estrellas galaxia)))
escaparA capsula galaxia= viajarA capsula (lugarHabitableDeEstrella galaxia)
18-02-2014 17:10
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] wastomy recibio 1 Gracias por este post
lucascla (27-02-2014)
matito Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 15
Agradecimientos dados: 3
Agradecimientos: 2 en 2 posts
Registro en: Nov 2010
Mensaje: #5
RE: [APORTE] Enunciado Final 15/02/2014
Buenas, como va?
Pongo solo las que opino diferente, las demás pienso que están bien o me las saltee sin querer, ja.

1)a)
tiene(A,3).
false.
cuantosTiene(A,B).
B = 5.
envidia(A,B).
No sabria exactamente, por el tema del universo cerrado y que no están ligadas las varaibles que entran al not.

b)
tieneTodoLoQueTiene(A,B):- tiene(A,_),tiene(B,_),A\=B,forall(tiene(B,X),tiene(A,X)).

2)
c. errores
Creo que la afirmación de “un buen sistema nunca tira error” no esta bien, porque los errores pueden aparecer siempre, aunque sea un buen sistema.
Elegi la i) porque es verdad que si no hay estrellas habitables la capsula devuelve el objeto que lo llamo, osea self; asi como esta, sea que lo encuentre o no devuelve una instancia de la clase Capsula.

d. declaratividad
No creo que sea la iii) porque esta “preguntando” que si es verdadero, devuelva verdadero; no me gusta mucho eso.
Elegi la i) y pienso que se podría hacer algo asi:
#Estrella
>>sosHabitable
^(self lugaresHabitables) notEmpty
>>lugarHabitable (se podría cambiar el nombre por: primerLugarHabitable)
^(self lugaresHabitables) first
>> lugaresHabitables
lugares sellect:[:lugar|lugar sosHabitable]

3)
b) Yo devolvería la capsula, osea una tupla (combustible,posición), por ejemplo:
viajara (c,p) lugar = (c – distanciaA p lugar,p + distanciaA p lugar)

c) No entiendo bien la pregunta ¿?¿?¿?

Decime, por favor, que opinas porque este sábado rindo.
Saludos,
20-02-2014 00:42
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] matito recibio 1 Gracias por este post
lucascla (27-02-2014)
wastomy Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 3
Agradecimientos dados: 0
Agradecimientos: 8 en 2 posts
Registro en: Dec 2012
Mensaje: #6
RE: [APORTE] Enunciado Final 15/02/2014
yo tambien rindo el sabado, asi que tambien tengo dudas. Pero las cosas q agregaste o modificaste (ahora q las repienso) quedan mejor asi, asi que concuerdo.
En el punto 3)c) te pide que agarres la funcion escaparA capsula galaxia que te dan definida en el punto 3 y la mejores, o sea, que la definas vos y quede mas declarativa.
20-02-2014 13:32
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Matias G Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2
Agradecimientos dados: 0
Agradecimientos: 0 en 0 posts
Registro en: Apr 2011
Mensaje: #7
RE: [APORTE] Enunciado Final 15/02/2014
Buenas, en el punto uno tenía varias dudas también y lo que hice es probar en Prolog y bueno acá pongo las respuestas.

Base de conocimiento:
tiene(juan,moto).
tiene(juan,auto).
tiene(pedro,moto).
tiene(moncho,bondi).
tiene(moncho,moto).

cuantosTiene(X,C):-
findall(Y,tiene(X,Y),L),
length(L,C).

envidia(A,B):-
tiene(B,X),
not(tiene(A,X)).


tieneTodoLoQueTieneElOtro(A,B):-
forall(tiene(A,X),tiene(B,X)).


tieneTodoLoQueTiene(A,B):-
tiene(A,_),
tiene(B,_),
A\=B,
forall(tiene(A,X),tiene(B,X)).


ࠎ1 ?- tiene(juan,B).
B = moto ;
B = auto.

2 ?- cuantosTiene(juan,B).
B = 2.

3 ?- envidia(moncho,juan).
true.

4 ?- tiene(A,3).
false.

5 ?- cuantosTiene(A,B).
B = 5.

6 ?- envidia(A,B).
false.

7 ?- tieneTodoLoQueTiene(A,B).
A = pedro,
B = juan ;
A = pedro,
B = juan ;
A = pedro,
B = moncho ;
A = pedro,
B = moncho ;
false.

Los conceptos que pondría en el predicado, serían los generadores (tiene(A,_) y tiene(B,_) para que sea inversible (para que A y B lleguen ligadas en el forall) y poder hacer la consulta existencial
tieneTodoLoQueTiene(A,B).


Saludos.
(Este mensaje fue modificado por última vez en: 20-02-2014 15:31 por Matias G.)
20-02-2014 15:27
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
matito Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 15
Agradecimientos dados: 3
Agradecimientos: 2 en 2 posts
Registro en: Nov 2010
Mensaje: #8
RE: [APORTE] Enunciado Final 15/02/2014
Gracias por la explicación del 3c.
Consulta sobre el primer punto: porque envidia (A,B) da falso? Se les ocurre algo?
20-02-2014 16:21
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Asfiaah Sin conexión
Empleado de Fotocopiadora
Con Estado :)
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 27
Agradecimientos dados: 11
Agradecimientos: 12 en 3 posts
Registro en: May 2012
Mensaje: #9
RE: [APORTE] Enunciado Final 15/02/2014
(20-02-2014 16:21)matito escribió:  Gracias por la explicación del 3c.
Consulta sobre el primer punto: porque envidia (A,B) da falso? Se les ocurre algo?

CREO, repito, creo, que envidia (A, B) da falso porque, si bien B es inversible (porque tiene un generador), A no lo es, por estar dentro del not (Acordate que la restriccion para que los predicados no sean inversibles son las comparaciones, las operaciones aritmeticas, el operador IS y el operador NOT).

Para que fuese inversible, deberia ser
envidia(A, B):- tiene(B, X), tiene(A, _), not(tiene(A,x)).
(y esta bien porque lo probé en prolog =) ).

lo que yo no entiendo muy bien es por qué cuantosTiene(A,B) devuelve 5. algun alma caritativa que me lo explique?
(Este mensaje fue modificado por última vez en: 21-02-2014 13:26 por Asfiaah.)
21-02-2014 13:25
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Cloud Sin conexión
Empleado de Fotocopiadora
A punto de estallar.
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 42
Agradecimientos dados: 7
Agradecimientos: 7 en 5 posts
Registro en: May 2011
Mensaje: #10
RE: [APORTE] Enunciado Final 15/02/2014
Lei, asi por arriba.
Aporto algunas cosas.

Una correccion, en el punto A.

envidia(moncho,juan).

No de simplemente true. Da: true;false.

La explicación es muy simple, teniendo:

Cita:envidia(A, B):- tiene(B, X),
not(tiene(A,X)).

Lo primero que hace es unificar B con juan, y X con auto, despues tiene(moncho, auto) da false y por ende el predicado es verdadero y da true. Pero el motor de prolog hace la combinacion de posibilidades, tocas ';' y te da los demas resultados posibles, como cuando haces tiene(juan,X). La otra posibilidad es unificar X con moto, y por ende nos queda:
Cita:envidia(moncho, juan):- tiene(juan, moto),
not(tiene(moncho,moto)).

Como moncho SI tiene moto, el predicado no se cumple y da false. Osea nos devuelve, "true;false."



(21-02-2014 13:25)Asfiaah escribió:  lo que yo no entiendo muy bien es por qué cuantosTiene(A,B) devuelve 5. algun alma caritativa que me lo explique?

Es el mismo caso que comente antes, creo que en algun texto lo explican como "explosion combinatoria", aunque en este caso no hace mucha combinatoria.
El punto es que vos le estas diciendo, dame la lista de todas las cosas que son "tenidas" por alguien.
Si no me equivoco para el motor del prolog la evaluacion termina siendo equivalente a esto:

cuantosTiene(_, C):-
findall( Y, tiene(_, Y), L),
length(L,C).

Proque no hay ninguna clausula que referencie el valor de X (underscore aca). Con lo cual lo que estas haciendo es decir que C tiene que haber un X que lo tenga, pero X no me interesa que sea, si es juan, pedro, moncho o tenes un

tiene(juanCarlos(31,tachero,pibes(3)), auto).


Que es un caso que ya se mete con polimorfismo, pero puede dar una idea "didactica"


tiene(juan,auto).
tiene(juan,moto).
tiene(pepe,auto).
tiene(pepe,bici).
tiene(pepe,bondi).
tiene(moncho,moto).

tiene(juanCarlos(31,tachero,pibes(3)), auto).

cuantosTiene(X, C):-
findall( Y, tiene(X, Y), L),
length(L,C).

cuantosTieneAnonim(_, C):-
findall( Y, tiene(_, Y), L),
length(L,C).

envidia(A, B):- tiene(B, X),
not(tiene(A,X)).

tieneTodoLoQueTiene(A, B):-
forall(tiene(A,C), tiene(B,C)).




cuantosTieneAnonim(A,B).

cuantosTiene(A,B).

dan los dos B=7
(Este mensaje fue modificado por última vez en: 21-02-2014 14:09 por Cloud.)
21-02-2014 14:02
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Asfiaah Sin conexión
Empleado de Fotocopiadora
Con Estado :)
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 27
Agradecimientos dados: 11
Agradecimientos: 12 en 3 posts
Registro en: May 2012
Mensaje: #11
Wink RE: [APORTE] Enunciado Final 15/02/2014
buenisimo, gracias!
21-02-2014 15:07
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Cloud Sin conexión
Empleado de Fotocopiadora
A punto de estallar.
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 42
Agradecimientos dados: 7
Agradecimientos: 7 en 5 posts
Registro en: May 2011
Mensaje: #12
RE: [APORTE] Enunciado Final 15/02/2014
(21-02-2014 13:25)Asfiaah escribió:  
(20-02-2014 16:21)matito escribió:  Gracias por la explicación del 3c.
Consulta sobre el primer punto: porque envidia (A,B) da falso? Se les ocurre algo?

CREO, repito, creo, que envidia (A, B) da falso porque, si bien B es inversible (porque tiene un generador), A no lo es, por estar dentro del not (Acordate que la restriccion para que los predicados no sean inversibles son las comparaciones, las operaciones aritmeticas, el operador IS y el operador NOT).

Para que fuese inversible, deberia ser
envidia(A, B):- tiene(B, X), tiene(A, _), not(tiene(A,x)).
(y esta bien porque lo probé en prolog =) ).

lo que yo no entiendo muy bien es por qué cuantosTiene(A,B) devuelve 5. algun alma caritativa que me lo explique?

Sobre el tema de "envidia", es un tema lógico (cuac).
Uno lo lee y entiende que es lo que quiere decir, pero pensemos el predicado.
A envidia B si A tiene X y B no tiene X.
Osea, le estamos diciendo, Armame las combinaciones de los BX y de los A que no tienen X... ahora bien... quienes no tienen X no te lo dicen las reglas Confused osea, tus clausuras te dicen que Si tiene,
Por ejemplo, unifiquemos B con juan y X con auto, con queda un AND con los A que no tienen auto... Quienes son los que no tienen auto? osea, todo el resto del universo no tiene auto segun esta lógica, pero, en prolog el universo es solamente lo que tenes escrito ahi, que tiene sentido, con que unificaria A si no?
El tema es que en realidad lo que queres preguntar es:

"Las personas que tienen algo que no es un auto", pero prolog no "adivina" que tiene que elegir de "los que tienen algo" si no se lo decis.

Entonces vos das la solucion correcta, agregar tiene(A,_) antes de la expresion con el not, que significa, que A es alguien que tiene alguna cosa, que no importa cual sea, esos A los tiene que unificar y probar la expresion siguiente. En la expresion siguiente te va a agarrar a todos los A (tipos que tienen algo) posibles, y se va a fijar si hay una clausula tiene(A,X) y hacer el negativo de eso para el AND.

Obviamente si lo corregis y lo codeas lo que te va a dar es medio choto, porque por cada tiene de de los 2 que generan personas A y B se van a hacer todas las combinaciones posibles, dandote resultados repetidos y va a probar cosas sin sentido como la respuesta a envidia(juan,juan) (que igual va a dar false y no lo va a mostrar como respuesta, pero lo va a probar) que es una de las combinaciones posibles.
(Este mensaje fue modificado por última vez en: 21-02-2014 19:31 por Cloud.)
21-02-2014 19:18
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Desert69 Sin conexión
Presidente del CEIT
Sin estado :( / "Anarquia...
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2.477
Agradecimientos dados: 230
Agradecimientos: 346 en 207 posts
Registro en: Jun 2008
Mensaje: #13
RE: [APORTE] Enunciado Final 15/02/2014
Entro por la ventana zarpado, eh.


Respecto a lo de envidia, leí así por arriba.

(21-02-2014 14:02)Cloud escribió:  Una correccion, en el punto A.

envidia(moncho,juan).

No de simplemente true. Da: true;false.

La explicación es muy simple, teniendo:

Cita:envidia(A, B):- tiene(B, X),
not(tiene(A,X)).

Lo primero que hace es unificar B con juan, y X con auto, despues tiene(moncho, auto) da false y por ende el predicado es verdadero y da true. Pero el motor de prolog hace la combinacion de posibilidades, tocas ';' y te da los demas resultados posibles, como cuando haces tiene(juan,X). La otra posibilidad es unificar X con moto, y por ende nos queda:
Cita:envidia(moncho, juan):- tiene(juan, moto),
not(tiene(moncho,moto)).

Como moncho SI tiene moto, el predicado no se cumple y da false. Osea nos devuelve, "true;false."

MUCHO CUIDADO con esto. Separemos "paradigma" e "implementación", y quedémonos con las ideas importantes.

En cualquier consulta que se haga en lógico, la pregunta SIEMPRE es "¿Existe algún .... tal que ....?", y por eso todas las consultas devuelven true o false. "algún" en el sentido de "por lo menos un". Entonces, si envidia/2 está definido como:

[code="prolog"]envidia(A, B):- tiene(B, X),
not(tiene(A, X)).[/code]

La consulta "?- envidia(moncho, juan)." se leería como "¿Existe algún moncho tal que le tenga envidia a juan?". Y, si traducimos el significado de envidia, podemos decir que "A envidia a B (o 'La envidia relaciona a un A con un B', ponele) si B tiene algún X y, A no tiene a ese X". Como siempre, "algún" es "por lo menos uno": si existe un único X tal que B lo tenga y A no, alcanza. Que SWI Prolog termine tirando false cuando le preguntás si hay algún otro conjunto de valores para los que pasa eso, es anecdótico. Lo importante es que al menos uno hay. Por eso la respuesta es un gran "true".

Ligar las variables y mostrarte los conjuntos de valores que cumplen es otro extra, anecdótico.

[Imagen: a2.php]
[Imagen: 971aa6599664453c05cb3e42d58bbc0eo.jpg]
21-02-2014 19:41
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
rulo Sin conexión
Ultra Nerd Mod
By demons driven!
*********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 4.333
Agradecimientos dados: 51
Agradecimientos: 67 en 37 posts
Registro en: Apr 2009
BlogSpot
Mensaje: #14
RE: [APORTE] [Paradigmas] Enunciado Final 15/02/2014
Buenas, te cambie el título por uno más descriptivo.

Saludos!

Cita:Absolve me, save my reign
Have you forgotten me?
21-02-2014 21:57
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Cloud Sin conexión
Empleado de Fotocopiadora
A punto de estallar.
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 42
Agradecimientos dados: 7
Agradecimientos: 7 en 5 posts
Registro en: May 2011
Mensaje: #15
RE: [APORTE] Enunciado Final 15/02/2014
(21-02-2014 19:41)Desert69 escribió:  Entro por la ventana zarpado, eh.


Respecto a lo de envidia, leí así por arriba.

(21-02-2014 14:02)Cloud escribió:  Una correccion, en el punto A.

envidia(moncho,juan).

No de simplemente true. Da: true;false.

La explicación es muy simple, teniendo:

Cita:envidia(A, B):- tiene(B, X),
not(tiene(A,X)).

Lo primero que hace es unificar B con juan, y X con auto, despues tiene(moncho, auto) da false y por ende el predicado es verdadero y da true. Pero el motor de prolog hace la combinacion de posibilidades, tocas ';' y te da los demas resultados posibles, como cuando haces tiene(juan,X). La otra posibilidad es unificar X con moto, y por ende nos queda:
Cita:envidia(moncho, juan):- tiene(juan, moto),
not(tiene(moncho,moto)).

Como moncho SI tiene moto, el predicado no se cumple y da false. Osea nos devuelve, "true;false."

MUCHO CUIDADO con esto. Separemos "paradigma" e "implementación", y quedémonos con las ideas importantes.

En cualquier consulta que se haga en lógico, la pregunta SIEMPRE es "¿Existe algún .... tal que ....?", y por eso todas las consultas devuelven true o false. "algún" en el sentido de "por lo menos un". Entonces, si envidia/2 está definido como:

[code="prolog"]envidia(A, B):- tiene(B, X),
not(tiene(A, X)).[/code]

La consulta "?- envidia(moncho, juan)." se leería como "¿Existe algún moncho tal que le tenga envidia a juan?". Y, si traducimos el significado de envidia, podemos decir que "A envidia a B (o 'La envidia relaciona a un A con un B', ponele) si B tiene algún X y, A no tiene a ese X". Como siempre, "algún" es "por lo menos uno": si existe un único X tal que B lo tenga y A no, alcanza. Que SWI Prolog termine tirando false cuando le preguntás si hay algún otro conjunto de valores para los que pasa eso, es anecdótico. Lo importante es que al menos uno hay. Por eso la respuesta es un gran "true".

Ligar las variables y mostrarte los conjuntos de valores que cumplen es otro extra, anecdótico.

En los finales te preguntan, "que devuelve la consulta?", y por algunas correcciones en las que estuve me parece que importa la forma en la que se implementa. Igual me parece que es cierto lo que decís, pero yo por las dudas en el examen aclararía el criterio que usé.
22-02-2014 17:31
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: