Next revision
|
Previous revision
|
codeq:prolog:naloge [2015/03/28 11:59] timmy created |
codeq:prolog:naloge [2016/04/06 13:30] (current) timotej |
* Manjka cilj ''X \== Y'', ali pa je postavljen na napačno mesto (preden sta ''X'' in ''Y'' instancirana). | * 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). | * ''female(Y)'' namesto ''female(X)'', ali pa oba hkrati (relacija ni simetrična). |
| * [[.naloge:sister/2|Več namigov]] |
| |
===== connected/3 ===== | ===== connected/3 ===== |
| |
''connected(X, Y, N)'' ⇔ ''X'' and ''Y'' are connected with a series of (no more than ''N'') parent/child relations. | ''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: | * En korak naredimo s ''(parent(X,Z) ; parent(Z,X))''. Nekaj nepravilnih verzij: |
===== conc/3 ===== | ===== conc/3 ===== |
| |
''conc(L1, L2, L)'' ⇔ the list ''L'' is obtained by appending the elements of ''L2'' to ''L1''. | ''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: | * Š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]).'' | * ''conc([H|T],L2,L) :- conc(T,L2,[H|L]).'' |
| |
===== del/3 ===== | ===== del/3 ===== |
| |
''del(X, L1, L2)'' ⇔ the list ''L2'' is obtained from ''L1'' by deleting element ''X''. | ''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], [])''. | * 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]):-''. | * Š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/3 ===== |
| |
''insert(X, L1, L2)'' ⇔ the list ''L2'' is obtained from ''L1'' by inserting the element ''X'' at arbitrary position. | ''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])''. | * Robni primer je vstavljanje na začetek seznama -- ''insert(X,L,[X|L])'' -- in ne v prazen seznam -- ''insert(X,[],[X])''. |
| |
===== min/2 ===== | ===== min/2 ===== |
| |
''min(L, Min)'' ⇔ ''Min'' is the smallest element in the list ''L''. | ''min(L,Min)'' ⇔ ''Min'' is the smallest element in the list ''L''. |
| |
* Pravilno: ''(MinT < H, Min = MinT ; MinT >= H, Min = H)''. Napake: | * Pravilno: ''(MinT < H, Min = MinT ; MinT >= H, Min = H)''. Napake: |
===== count/3 ===== | ===== count/3 ===== |
| |
''count(X, L, N)'' ⇔ ''N'' is the number of times the element ''X'' appears in the list ''L''. | ''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]''. | * Manjka rekurzivno pravilo za primer, ko ''X'' ni enak prvemu elementu seznama ''L = [H|T]''. |
| |
| ===== sins/3 ===== |
| |
| * [[.naloge:sins/3|Namigi]] |
| |
| ===== quick_sort/2 ===== |
| |
| ''quick_sort(L,SL)'' ⇔ the list ''SL'' contains the elements of ''L'' sorted in non-decreasing order. Use the predicate ''pivoting/4'' to implement quicksort. |
| |
| * Če ''pivoting'' kličemo na celem seznamu ''L=[H|T]'', se prolog zacikla, ko pride do klica ''quick_sort([H],SL)'', saj velja ''pivoting(H,[H],[H],[])''. Rešitev: pivoting kličemo na ''T'', ''H'' pa dodamo na koncu med sortirana podseznama. |