Deklaratív programozás - Prolog vizsgafeladat: beszúrásos rendezés

A VIK Wikiből
A lap korábbi változatát látod, amilyen Szikszayl (vitalap | szerkesztései) 2014. február 15., 17:13-kor történt szerkesztése után volt. (Szikszayl átnevezte a(z) Kidolgozott Prolog vizsgafeladat: beszúrásos rendezés lapot a következő névre: Deklaratív programozás - Prolog vizsgafeladat: beszúrásos rendezés)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)
Ugrás a navigációhoz Ugrás a kereséshez

Ez az oldal a korábbi SCH wiki-ről lett áthozva. Az eredeti változata itt érhető el.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor kérlek javíts rajta egy rövid szerkesztéssel.

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót


Segédpredikátum

=beszur(Mibe, Mit, Eredm)= -> Mibe rendezett listába beszúrja a Mit elemet és

 ezt visszaadja Eredm-be. pl.
	beszur([], 1, R).
	R = [1] ;
	beszur([2, 3], 7, R).
	R = [2, 3, 7]

Megvalósításra példa (saját logika):

beszur([], B, [B]).
beszur([A1|A],B,C) :-
	(A1>B
	 -> C=[B,A1|A]
	 ;  beszur(A,B,C2),
		 C=[A1|C2]).

Főpredikátum

=rendez(A, B)= - rendezi az A integer-listát B-be. pl.

	rendez([1, 22, 2, 7, 3, 1, 4, 5], B).
	B = [1, 1, 2, 3, 4, 5, 7, 22] ;

Megvalósításra példa:

rendez(A, B) :-
	rendeziter(A, [], B).

rendeziter([A1|A], A2, B) :-
	beszur(A2, A1, A3),
	rendeziter(A, A3, B).

rendeziter([], B, B).

Itt a =rendeziter= segédpredikátum a második paraméterébe gyűjti a már rendezett résztömböt a rekurzív hívások során.