„Deklaratív programozás - Prolog vizsgafeladat: merőleges vektorok” változatai közötti eltérés
Ugrás a navigációhoz
Ugrás a kereséshez
(vitalap) (Új oldal, tartalma: „{{GlobalTemplate|Infoalap|DeklapoVizsgaMeroleges}} ==Feladat== '''Segédpredikátum''' =skalar(A, B, C)=: A és B bemenő vektorok skalár szorzatát adja C-ben pl.…”) |
(Nincs különbség)
|
A lap 2012. október 21., 19:55-kori változata
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
Feladat
Segédpredikátum
=skalar(A, B, C)=: A és B bemenő vektorok skalár szorzatát adja C-ben pl.
skalar([1,2,3], [0,1,0], C). C=[0,2,0]
Főpredikátum
=meroleges(A,B,V1,V2)=: A és B bemenő vektorlisták közötti egymásra merőleges párokat adja ki V1-ben és V2-ben. pl.
meroleges([[0,1,0], [1,2,0]], [[1,0,0], [0,0,1]], A, B). A = [0, 1, 0] B = [1, 0, 0] ; A = [0, 1, 0] B = [0, 0, 1] ; A = [1, 2, 0] B = [0, 0, 1] ;
Megoldás
(biztos nem így kell, de ez müxik):
skalar([A1|A], [B1|B], [C1|C]) :- integer(A1), integer(B1), C1 is A1*B1, skalar(A, B, C). skalar([], [], []). meroleges([A1|A], B, V1, V2) :- merolegiter(A1, B, V1, V2) ; meroleges(A, B, V1, V2). merolegiter(A, [B1|B], V1, V2) :- skalar(A, B1, C), csaknulla(C), V1=A, V2=B1; merolegiter(A,B,V1,V2). csaknulla([A1|A]) :- number(A1), A1 =:= 0, csaknulla(A). csaknulla([]).