Haluaisin opetella käyttämään Prolog-kääntäjiä ja ohjelmoinnin alkeet. Mistä löytyisi apua? Ja suomenkielistä. Englanninkielistä kyllä löytyy, mutta näin alkeet menisivät päähän suomeksi helpommin.
Vai mikä olisi se tekoälykieli jonka hanskaamisella mahdollisuus leventää leipääkin?
Vai mikä olisi se tekoälykieli jonka hanskaamisella mahdollisuus leventää leipääkin?
Vastaukset 4
Vanhimmat
http://www.swi-prolog.org/
SWI-prologilla pääsee ainakin alkuun, itse olen tuolla jonkin verran leikkinyt.
Visual prologista on evaluaatio-versio olemassa, mutta se taas vaikuttaa enemmänkin täysiveriseltä kehitysympäristöltä, ja itse ympäristön opettelu vie huomiota pois itse kieliopista.
Suomenkielisestä kirjallisuudesta olen törmännyt ainoastaan IT-Pressin Java, Prolog ja Python -opukseen, jossa tosin oli vain suhteellisen lyhyt osuus Prologin alkeista.
Kiitoksia. Myös seuraavista linkeistä löytyy jotain:
http://www.cs.tut.fi/~ai/prolog_esimerkkeja/aloitus.html
http://www.ling.helsinki.fi/kurssit/ctl170/1998/
http://www.cs.tut.fi/kurssit/8101905/prolog.html
Imutin GNU-prologin ja nyt en saa suoritettua GNU-prologin mukana tulleita .pl-esimerkkiohjelmia.
Eikös homman pitäisi toimia niin, että | ?- -promptiin kirjoitetaan vain esim [boyer]. ja painetaan enter (ohjelman nimi siis nyt boyer.pl)?
Missä hakemistossa ohjelman on sijaittava? Saan aina seuraavan virheilmoituksen:
uncaught exception: error(existence_error(source_sink,'boyer.pl'),consult/1)
Siis kuinka noita .pl -tiedostoja ladataan? Ei onnistu millään. Missä hakemistossa niiden täytyy olla? Voiko ohjelmassa jotenkin määrittää hakemiston? Nyt kokeilun alla se SWI...
Entäs kuinka niitä .pl -tiedostoja luodaan?
Älä hajauta kysymyksiäsi kovin monelle forumille. Ei näitä vastauksia jaksa joka paikkaan postailla. :)
>...kuinka ladataan .pl -tiedosto tai kuinka sellainen luodaan
Se ladataan gprologissa ihan kuten ensin yritit komennolla:
| ?- [nimi].
jos se tiedosto ei ole siinä hakemistossa missä itse olet sillä hetkellä, pitää laittaa koko polku pikkuhipsuissa:
| ?- ['/home/omat_prologit/nimi'].
Ohjelman voi luoda millä tahansa tekstieditorilla.
Jos Hanoin tornit -ongelma on tuttu niin rekursiivinen Prolog-koodi on äärimmäisen lyhyt sen ratkaisemiseen. Koodi löytyy monelta Prologia käsitteleviltä sivuilta. Javalla animoituna tuolta:
http://www.cut-the-knot.org/recurrence/hanoi.shtml
Tee tiedosto hanoi.pl jossa on seuraavanlainen teksti:
hanoi(N) :- move(N, left, center, right).
move(0, _, _, _) :- !.
move(N, A, B, C) :- M is N-1, move(M, A, C, B), inform(N, A, B), move(M, C, B, A).
inform(I, X, Y) :- write('move disc '), write(I), write(' from '), write(X), write(' to '), write(Y), nl.
lataa se komennolla:
| ?- [hanoi].
sen jälkeen voit kokeilla vaikka 3:lla kiekolla:
| ?- hanoi(3).
joka tulostaa:
move disc 1 from left to center
move disc 2 from left to right
move disc 1 from center to right
move disc 3 from left to center
move disc 1 from right to left
move disc 2 from right to center
move disc 1 from left to center
Huomaa että siirtojen määrä kasvaa räjähdysmäisesti kiekkojen määrän kasvaessa joten kovin isoilla luvuilla ei kannata ainakaan aluksi kokeilla.