Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4

    Esercizio Prolog

    Ciao a tutti!
    Ho un problema con un programmino prolog...(prime esperienze)...
    Ho dichiarati come fatti:

    boughtSongs(mario,[bella,ciaoMamma]).
    boughtSongs(anna,[ciaoMamma,happy]).
    boughtSongs(marco,[happy,ciaoMamma]).

    In pratica l'utente mario ha acquistato 2 canzoni (bella e ciaoMamma)..stesso vale per gli altri utenti...
    Data la funzione:

    distance(X,N) dove X è il nome dell'utente, devo trovare l'utente che ha meno acquisti differenti da X e restituire questo numero in N, come se fosse una distanza delle preferenze dei due utenti.

    per farmi capire:
    distance(marco,N) restituirà 0 in quanto anna ha acquistato le sue stesse canzoni;
    distance(mario,N) resituirà 1 in quanto l'utente con meno canzoni diverse dalle sue ne ha 1 diversa.

    se un utente non ha acquistato alcuna canzone sarà restituito 0.
    distance(X,0) :- boughtSongs(X,[]).

    Spero qualcuno ne capisca più di me....nn ci vuole poi molto..
    Grazie anticipatamente.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    Re: Esercizio Prolog

    Hai del codice da postare di quello che hai svolto?
    Dove è che riscontri problemi?

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4
    Guarda per ora ho fatto la dichiarazione dei fatti e avevo abbozzato una funzione ma nn mi porta a nulla..
    ho provato così..ma so che è sbagliato..se hai qualche idea te ne sarei grato...

    /************************************************** ******/
    lunghezza([],0).
    lunghezza([_|Coda],N):- lunghezza(Coda,Ncoda), N is Ncoda + 1.

    intersection([],S2,[]).
    intersection([H|T],S2,[H|T3]):- member(H,S2), intersection(T,S2,T3).
    intersection([H|T],S2,S3):- intersection(T,S2,S3).

    distance(X,0) :- boughtSongs(X,[]).

    distance(X,N) :- boughtSongs(X,L), lunghezza(L,N1), boughtSongs(Y,L1), not(X=Y), intersection(L,L1,L2), lunghezza(L2,N2), N is (N1-N2).
    /************************************************** ******/

    lunghezza ed intersection funzionano le ho provate...distance invece fa un po quello che vuole lei..!
    Grazie dell'aiuto cmq..

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4
    Forse ho trovato il modo di implementare questa funzione..solo vorrei sapere come si fa per inserire i valori restituiti da prolog (quelli che si scorrono con il ";" per capirci) all'interno di una lista!
    Qualcuno lo sa?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.