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

Deklaratív programozás

1. Prolog kis házi feladat

2003. október 13.

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

A feladat

Adott egy lista, amelynek elemei egész számok.

A lista n. elemét szimmetrikus elemnek nevezzük, ha megegyezik a hátulról vett n. elemmel (azaz a (len+1-n). elemmel, ahol len a lista hossza). Pl. az [1,2,3,2,4] lista szimmetrikus elemei: 2 (2. és 4. elem), 3 (3. és 3. elem), 2 (4, és 2. elem).

Írjon egy olyan szimmeleme/2 Prolog eljárást, amely balról jobbra felsorolja egy adott lista szimmetrikus elemeit. Feltételezheti, hogy az eljárás első argumentumként egy változót, második argumentumként pedig egy egészekből álló listát kap. Ha definiál segédeljárásokat, akkor azokat feltétlenül lássa el fejkommenttel!
% szimmeleme(X, L): X az L számlistának szimmetrikus eleme.
% :- pred szimmeleme(int::out, list(int)::in).

Példák

| ?- szimmeleme(X, [1,2,3,1]).
X = 1 ? ;
X = 1 ? ;
no

| ?- szimmeleme(X, [1,2,5,3,1]).
X = 1 ? ;
X = 5 ? ;
X = 1 ? ;
no

| ?- szimmeleme(X, [1,2,5]).
X = 2 ? ;
no

| ?- szimmeleme(X, [1,2,5,6]).
no

| ?- szimmeleme(X, [1,2,3,3,2,1]).
X = 1 ? ;
X = 2 ? ;
X = 3 ? ;
X = 3 ? ;
X = 2 ? ;
X = 1 ? ;
no

Beadás, tudnivalók

A programot az Elektronikus Tanársegéd segítségével Weben keresztül lehet majd hamarosan beadni, a HF beadás menüpont alatt. Ez az első Prolog kis házi feladat, ezért khf-pl1.pl néven kell beküldeni a megoldást. A névben meg kell különböztetni a kis- és nagybetűket.

A programok készülhetnek MS DOS vagy MS Windows alatt is, de Linux operációs rendszer alatt is működniük kell. A beadási határidő október 28., kedd 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).