Prolog-ohjeita. Vai mikä?

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?
4482
Äänestä

Muut lukivat myös

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.

Äänestä
  • 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)

    Äänestä

  • Tekoälymies kirjoitti:

    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?

    Äänestä

  • Tekoälymies kirjoitti:

    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.

    Äänestä

Kommentoi aloitusta


Tekoälymies kirjoitti:

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?

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu