User Tools

Site Tools


codeq:prolog:naloge

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
codeq:prolog:naloge [2015/03/28 11:59]
timmy created
codeq:prolog:naloge [2016/04/06 13:30] (current)
timotej
Line 7: Line 7:
   * 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:
Line 19: Line 20:
 ===== 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:
Line 47: Line 48:
 ===== 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.
codeq/prolog/naloge.1427540383.txt.gz · Last modified: 2015/03/28 11:59 by timmy