Pr.1
- Due Oct 22, 2021 by 7pm
- Points 9
- Submitting a file upload
- File Types pl
A programkód minősége is fontos. A programokat kommentáljuk, adjunk értelmes neveket a változóknak. Gondolkodjunk a specifikáción.
Írjunk Prolog programokat a következő feladatok megoldására:
-
Adjuk össze egy lista elemeit (megoldásnál nem kell ellenőrizni a lista numerikus voltát, a Prolog csak a numerikus listákra ad eredményt).
1 -
Sokszorozzunk meg egy listát - hasonlóan a duplázáshoz - ahol mindegyik elem 'K'-szor jelenjen meg.
Például a kszor(3,[bu,ek],L) kiértékelés az L=[bu,bu,bu,ek,ek,ek] eredményt adja.
1 -
Generáljuk a számok listáját 'a' és 'b' között.
1 -
Invertáljunk egy listát. Használjuk a lista-invertálást az 1-18000 lista inverzének a kiszámítására.
1 -
Töröljük egy lista minden K-adik elemét, azaz legyen igaz a torolk([1,2,3,4,5,6,7,8],2,[1,3,5,7]) predikátum.
1 - Alakítsunk át egy listát
kompakt
formába: az ismétlődő egymásutáni atomokat helyettesítsük egy olyan kételemű listával, melyben az első az atom, a második az atom sokszorossága faktora. Amennyiben az atom számossága 1, akkor egyszerűen másoljuk át az elemet a "kimenet"-be. Például akompakt([a,a,a,b,a,a,c,c,b,d,d,d,d],[[a,3],b,[a,2],[c,2],b,[d,4]]).
predikátum igaz kell, hogy legyen. (kezeljük az összes esetet)
2 - Tekintsük az alábbi logikai feladatot:
S E N D +
M O R E =
----------
M O N E Y
Tudva, hogy a fenti betűk különböző számjegyeket kódolnak úgy, hogy egyik első számjegy sem nulla, találjuk meg a megoldásokat.
1 - Adott a filmek adatbázis (movies.zip). Az adatbázist be tudjuk olvasni a Prolog-ba (a rendszer indítása után) a
?- consult(movies), paranccsal (figyeljünk arra, hogy a movies.pl az aktuális könyvtárban legyen)(rövid formában ez: [movies]. )
A tudásbázisban az alábbi típusok tények vannak (% - komment):% movie(M,Y) -- movie M came out in year Y
movie(american_beauty, 1999). % director(M,D) -- movie M was directed by director D
director(american_beauty, sam_mendes).% actor(M,A,R) -- actor A played role R in movie M
actor(american_beauty, kevin_spacey, lester_burnham).% actress(M,A,R) -- actress A played role R in movie M
actress(american_beauty, annette_bening, carolyn_burnham).
b.) Írjunk prediukátumot, mely teszteli , hogy egy Film adott Év-nél régebbi-e.
c.) Keressük meg azon színészeket (actor vagy actress), akik csak egy filmben játszanak.
1