BME Villamosmérnöki és Informatikai Kar
Műszaki informatika szak
Nappali tagozat
2001/2002. tanév, őszi félév

Deklaratív programozás

1. Prolog kis házi feladat

2001. november 19.

A kis házi feladat beadása nem kötelező.

A programot tömörítve, elektronikus levélben kell beküldeni. A beküldéshez egy bash szkriptet kell használni. A szkriptet futtatni a

bash dpkhfbe.01a
paranccsal lehet (feltéve, hogy ezen a néven mentettük el).

Figyelem! Az ural2 szerveren a /usr/local/bin könyvtárban található a bash program.

A szkript elindulaskor elmagyarázza a teendőket (mi legyen az adott könyvtárban, milyen néven stb.). Mielőtt valaki hibára panaszkodna, győződjön meg róla, hogy a hiba az ural2.hszk.bme.hu szerveren is reprodukálható.

A programok készülhetnek MS DOS vagy MS Windows alatt is, de Unix (linux) operációs rendszer alatt is működniük kell.

A feladat

Írjon egy olyan lathatoak/2 Prolog-eljárást, amelynek első argumentumaként egy egész számokból álló, rendezetlen listát adva második argumentumában visszaadja e lista azon elemeinek (az eredeti sorrendet megőrző) listáját, amelyek nagyobbak az eredeti listában őket megelőző elemeknél.

A segédeljárásokat feltétlenül lássa el fejkommenttel!

Törekedjék arra, hogy a megoldás hatékony legyen! Vigyázzon arra is, hogy a megoldás ne sikerüljön többszörösen!


% :- lista == list(int).
% lathatoak(Bemenet, Kimenet): a Kimenet lista a Bemenet lista azon elemeiből
%   áll, amelyek nagyobbak az őket megelőzőknél
% :- pred lathatoak(lista::in, lista::out).

Példák


| ?- lathatoak([], L).
L = [] ? ;
no

| ?- lathatoak([1,2,3], L).
L = [1,2,3] ? ;
no

| ?- lathatoak([3,2,1], L).
L = [3] ? ;
no

| ?- lathatoak(3,1,4,2], L).
L = [3,4] ? ;
no

Egyéb követelmények és tudnivalók

Ez az első Prolog kis házi feladat, ezért khf-pl1.pl néven kell beküldeni a megoldást. A beadási határidő 2001. november 30., 24:00.

A vizsgaosztályzat megállapításakor a határidőre beadott, helyesen megoldott kis házi feladatért plusz 1 pont jár (a 100 pontból).