„Deklaratív programozás - Prolog vizsgafeladat: transzponált” változatai közötti eltérés

A VIK Wikiből
Új oldal, tartalma: „{{GlobalTemplate|Infoalap|DeklapoVizsgaTranszponalt}} ==Segédpredikátum== Állítsuk elő egy sorainak listájával megadott mátrix transzponáltját. Segédpred…”
 
Szikszayl (vitalap | szerkesztései)
 
(Nincs különbség)

A lap jelenlegi, 2014. február 15., 18:13-kori változata

Ez az oldal a korábbi SCH wikiről lett áthozva.

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

Állítsuk elő egy sorainak listájával megadott mátrix transzponáltját.

Segédpredikátum: =elsok(Listak, Elsok, Marad)= -> számlisták listájából előállít egy új listát, mely az első elemeket tartalmazza és egy maradék számlisták listáját, pl.

	elsok([[1,2,3],[4,5,6],[7,8,9]],A,B).
	A = [1, 4, 7]
	B = [[2, 3], [5, 6], [8, 9]]

Egy megvalósítás (jelzem nem értek prologhoz, de elvileg működik):

	elsok([],[],[]).
	elsok([A|M], [A1|EL], [M1|MAR]) :-  
		A=[A1|M1],
		elsok(M, EL, MAR).

Főpredikátum

=tr(Matrix, Transzp)= -> előállítja a mátrix transzponáltját, pl.

	tr([[1,2,3],[4,5,6],[7,8,9]],B).
	B = [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

Egy megvalósítás:

	tr([[]|_], ER) :- !, ER=[].
	tr(A, ER):-
		elsok(A, EL, MAR),
		tr(MAR, B),
		ER=[EL|B].

eSzeL