User Tools

Site Tools


codeq:prolog:naloge

This is an old revision of the document!


Naloge za prolog

sister/2

sister(X,Y)X is a sister of Y.

  • Manjka cilj X \== Y, ali pa je postavljen na napačno mesto (preden sta X in Y instancirana).
  • female(Y) namesto female(X), ali pa oba hkrati (relacija ni simetrična).

connected/3

connected(X, Y, N)X and Y are connected with a series of (no more than N) parent/child relations.

  • En korak naredimo s (parent(X,Z) ; parent(Z,X)). Nekaj nepravilnih verzij:
    • parent(X,Z) , parent(Z,X): oboje hkrati ne more veljati.
    • parent(X,Z) ; parent(Y,Z): ne najde povezave med X in Y, če je kateri brez otrok.
  • N is N-1: N ne more biti hkrati npr. 3 in 2.

conc/3

conc(L1, L2, L) ⇔ the list L is obtained by appending the elements of L2 to L1.

  • Študent prvi element H v izhodnem seznamu doda v rekurzivnem cilju, namesto v glavi pravila:
    • conc([H|T], L2, L) :- conc(T, L2, [H|L]).

del/3

del(X, L1, L2) ⇔ the list L2 is obtained from L1 by deleting element X.

  • Robni primer je brisanje iz začetka seznama – del(X, [X|T], T) – in ne iz seznama z enim elementom – del(X, [X], []).
  • Študent pozabi na prvi element, ko briše iz repa seznama: del(X,[H|T],NewT):- namesto del(X,[H|T],[H|NewT]):-.

insert/3

insert(X, L1, L2) ⇔ the list L2 is obtained from L1 by inserting the element X at arbitrary position.

  • Robni primer je vstavljanje na začetek seznama – insert(X, L, [X|L]) – in ne v prazen seznam – insert(X, [], [X]).

min/2

min(L, Min)Min is the smallest element in the list L.

  • Pravilno: (MinT < H, Min = MinT ; MinT >= H, Min = H). Napake:
    • Obe neenakosti sta strogi: program ne dela na [1,1].
    • Manjka pogoj v eni veji: program poleg pravilne rešitve vrača še nepravilne.

count/3

count(X, L, N)N is the number of times the element X appears in the list L.

  • Manjka rekurzivno pravilo za primer, ko X ni enak prvemu elementu seznama L = [H|T].
codeq/prolog/naloge.1427540383.txt.gz · Last modified: 2015/03/28 11:59 by timmy