BME Villamosm�rn�ki �s Informatikai Kar
M�szaki informatika szak
Nappali tagozat
2006/2007. tan�v, �szi f�l�v

Deklarat�v programoz�s

1. Prolog kis h�zi feladat

V1.0, 2006. november 26.

A feladat

�rjon olyan Prolog elj�r�st binoms/2 n�ven, amely meghat�rozza az n-ed rend� binomi�lis egy�tthat�kat! (Az n-ed rend� binomi�lis egy�tthat�k a Pascal-h�romsz�g n-edik sor�nak elemei.)

A binoms/2 elj�r�s specifik�ci�ja a k�vetkez�:

% binoms(+N,?L): Az L lista az N-edrend� binomi�lis egy�tthat�kat tartalmazza,
%                azaz N+1 elem� �s (0-t�l sz�mozva) I-edik elem�nek �rt�ke "N alatt az I".

A jobbrekurz�v elj�r�sok kevesebb mem�ri�t ig�nyelnek, mint az egy�b rekurz�v elj�r�sok, ez�rt a feladat megold�sa sor�n jobbrekurz�v elj�r�sok �r�sa aj�nlott, �m ez nem k�telez�, a pontoz�sba nem sz�m�t bele.

A feladat megold�sa sor�n a gyors�t�s �rdek�ben szabad v�g�t �s felt�teles szerkezetet haszn�lni, �m ez sem k�telez�, a pontoz�sba nem sz�m�t bele.

P�ld�k

| ?- set_prolog_flag(toplevel_print_options,
     [quoted(true),numbervars(true),portrayed(true),max_depth(20)]).
yes /* a list�k mutat�sa 20 hossz�s�gig */
| ?- binoms(0, L).
L = [1] ? ;
no
| ?- binoms(1, L).
L = [1,1] ? ;
no
| ?- binoms(4, L).
L = [1,4,6,4,1] ? ;
no

Otthoni tesztk�rnyezet

A fejleszt�s k�zbeni tesztel�sre a SICStus Prolog vagy az SWI-Prolog aj�nlott. Hasznos lehet m�g az al�bbi seg�dprogram (m�solja ki �s mentse el binomstest.pl n�ven):
:- consult('binoms').
:- \+ binoms(-1, L).
:- findall(L, binoms(0, L), S), S == [[1]].
:- findall(L, binoms(1, L), S), S == [[1,1]].
:- findall(L, binoms(4, L), S), S == [[1,4,6,4,1]].
:- findall(L, binoms(10, L), S), S == [[1,10,45,120,210,252,210,120,45,10,1]].
:- findall(L, binoms(16, L), S), S == [[1,16,120,560,1820,4368,8008,11440,12870,11440,8008,4368,1820,560,120,16,1]].

Ha a binomstest.pl programot a k�rnyezet hiba n�lk�l bet�lti (pl. a sicstus -l binomstest.pl vagy az swipl -s binomstest.pl parancs hat�s�ra), akkor a binoms.pl-ben nincs szintaktikai hiba, �s a binomstest.pl-ben le�rt tesztesetek is hib�tlanul futottak le.

Tudnival�k a bead�sr�l

A kis h�zi feladat bead�s�t, j�llehet nem k�telez�, a t�rgy minden hallgat�j�nak nagyon aj�nljuk.

A programot az Elektronikus Tan�rseg�d seg�ts�g�vel weben kereszt�l lehet beadni, a HF bead�s men�pont alatt. A m�dos�tott bead�si hat�rid� 2006. december 12., kedd 24:00 (eredetileg dec. 8. volt).

A vizsgaoszt�lyzat meg�llap�t�sakor a hat�rid�re beadott, helyesen megoldott kis h�zi feladat�rt plusz 1 pont j�r.