Avatar billede doj Nybegynder
20. maj 2002 - 13:52 Der er 5 kommentarer og
1 løsning

Hjælp til lister i PROLOG


HJÆLP
jeg prøver lige at spørge igen, kom til at lægge spørgsmålet forkert.

Jeg sidder og knokler forgæves med et problem i SWI prolog.

Jeg har to lister på to forskellige facts, eks.:
grøntsager([agurk,kartoffel,tomater]). og
opskrift(tomatsuppe,[løg,tomater,gulerødder]).

Der er mange 'opskrift' facts. Jeg skal have defineret et prædikat som tager ingredienserne fra 'grøntsag' ét for ét, tjekker hvilke lister fra 'opskrift' de indgår i og skriver navnet på de fundne opskrifter.
Mit problem er, at jeg kun kan få mit prædikat til at tjekke Hovedet på grøntsagslisten, og det virker også fint, men derefter går det galt. Jeg har prøvet alt muligt, men enten kan den kun tjekke hele Tail'en samtidig eller også sker der ingenting eller out of local stack. Jeg har prøvet at bruge append/3 men ved ikke rigtig hvordan, det skal bruges til dette.
Her er et af mine forsøg, men når Grønt er tjekket igennem, sker der ikke mere. resten af elementerne på grøntsager listen skulle også gerne tjekkes for medlemskab i opskriftlisterne.

find_opskrift(_) :-
    grøntsager([Grønt|Rest]),
    opskrift(Opskrift,Liste),
    member(Grønt,Liste),
    write(Opskrift),nl,nl,
    fail.
    find_opskrift([Rest|_]).

Håber der er nogen, der kan hjælpe.

På forhånd tak
Avatar billede avlund Nybegynder
20. maj 2002 - 14:05 #1
Du kan ikke bruge æ, ø og å i Prolog, så går dit program i høtråd (eller hoetraad). Det skal i hvert fald rettes.
Avatar billede doj Nybegynder
20. maj 2002 - 14:28 #2
Det ved jeg, men det er kun i variabler jeg bruger dem, så det burde ikke være noget problem. Det giver heller ikke problemer andre steder i programmet. Jeg har selvfølgelig også brugt ø i factnavnet her i eksemplet, men det fact hedder noget andet i mit program. :)
Avatar billede jakoba Nybegynder
21. maj 2002 - 07:54 #3
Een erfaring om at det er gået godt at benytte æøå eet sted i prolog er ikke mere værd end en erfaring om at du engang kom over gaden uden at se dig for.
Hvis du ikke specifikt i manualen får at vide det er ok, så lad være. Allevegne.
Avatar billede doj Nybegynder
21. maj 2002 - 11:42 #4
OK! alle æøå er nu slettet, men det er altså ikke der problemet ligger, det er et liste problem. Jeg ved ikke, hvordan jeg definerer prædikatet, så det behandler alle elementer på listen ét ad gangen og ikke kun deler op i hoved og hale som nu.
Avatar billede doj Nybegynder
29. august 2002 - 17:35 #5
Lukker nu, da der ikke kommer flere svar. Har selv løst problemet.
Avatar billede doj Nybegynder
29. august 2002 - 17:35 #6
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester