generosQueToca(Musico,Generos) :- findall(Genero,cancion(_,Musico,Genero,_),Generos).
?- generosQueToca(beto,Generos).
Generos = [pop, pop, pop].
Quiero que me "devuelva"
Generos = [pop].
Con un setof en lugar del findall andaría pero en el caso:
?- generosQueToca(mozart,Generos).
con setof me "devuelve"
Generos = [clasico]
Generos = [rock]
y quiero que me devuelva:
Generos =[clasico, rock].
No se como hacerlo por favor es urgente xD
Gracias
No recuerdo muy bien pero no tenias que hacer algo asi como :
generosQueToca(Musico,Generos) :-
esMusico(Musico),
findall(Genero,cancion(_,Musico,Genero,_),Generos).
??
Fijate eso, espero no haber mandado fruta
esMusico(M):- "aca fijate tu base de conocimientos, ponele qe sea algo asi como musico(M). "
(07-10-2011 14:08)gusti89 escribió: [ -> ]No recuerdo muy bien pero no tenias que hacer algo asi como :
generosQueToca(Musico,Generos) :-
esMusico(Musico),
findall(Genero,cancion(_,Musico,Genero,_),Generos).
??
Fijate eso, espero no haber mandado fruta
esMusico(M):- "aca fijate tu base de conocimientos, ponele qe sea algo asi como musico(M). "
No me refiero a eso... eso es un predicado generador, pero no me sirve para que la lista Generos, no tenga elementos repetidos.
Te sirve esto?
sinRepeticion([X],[X]).
sinRepeticion([X|XS],[X|ListaSinRepetidos]):- not(member(X,XS)),sinRepeticion(XS,ListaSinRepetidos).
sinRepeticion([X|XS],ListaSinRepetidos):- member(X,XS),sinRepeticion(XS,ListaSinRepetidos).
generosQueToca(Musico,GenerosSinRepetidos) :- findall(Genero,cancion(_,Musico,Genero,_),Generos),sinRepeticion(Generos,GenerosSinRepetidos).
Si anirus gracias, pude hacerlo pero tu solucion es mas simple!
Ahh cierto, era con sinRepetidos! lo primero qe se me vino a la mente era eso qe te dije, perdon!!