For project purpose, I need to create a chat with the user, then save a music genre based on an emotion the user will type. I came up with this simple solution:
%suggested musical genre based on emotions genre(['jazz,classical'],M) :- M = sad. genre(['pop,rock'],M) :- M = happy. genre(['haevy metal,hard rock'],M) :- M = angry. chat(G) :- write('How do you feel?'), read(M), genre(G,M).
Idea: the predicate genre simply tells what kind of genre is suggested based on an emotion (i.e, if the user types ‘sad’, the variable
G must be equal to
Having said this, I need also to include the
chat(G) predicate in a loop. Now, I tired to do the classical solution using this peace of code:
loop(0,G). loop(N,G) :- chat(G), loop(N1,G1), N1 is N-1, not(G1=G).
but in this case I came up with errors and, if working, the values of G are not saved somewhere. I don’t know if I explained the problem correctly, I hope so. In short, I need to loop
N times, over the
chat(G) predicate and save all the values that the predicate
genre(_,_) tells me. All for consult the prolog file with python, call the
chat(G) predicate and save the values on a python list.