Differences

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

Link to this comparison view

pp:24:laboratoare:tda [2026/02/12 14:56]
mihaela.balint [Exemple de gândire]
pp:24:laboratoare:tda [2026/02/12 15:20] (current)
mihaela.balint [Exerciții]
Line 87: Line 87:
 ==== Exemple de gândire ==== ==== Exemple de gândire ====
  
-''​nth'' ​(al n-lea element din listă) ​\\ +<code haskell>​ 
-**Întrebare**: ​\\ Pe ce variabile fac recursivitate?​  +nth (al n-lea element din listă) 
-**Raționament**: ​\\ A identifica al ''​n''​-lea element din ''​L''​ înseamnă a identifica al ''​(n-1)''​-lea element din ''​tail(L)''​. +</​code>​ 
-**Concluzie**: ​\\ Pe numărul ​$nși pe lista $L$. + 
-**Axiome (Cod): ​+**Întrebare**:​ Pe ce variabile fac recursivitate? ​\\ 
 +**Raționament**:​ A identifica al ''​n''​-lea element din ''​L''​ înseamnă a identifica al ''​(n-1)''​-lea element din ''​tail(L)''​. ​\\ 
 +**Concluzie**:​ Pe numărul ​''​n'' ​și pe lista ''​L''​.
  
 <code haskell> <code haskell>
-nth(null, n) = eroare ​(Lista nu are suficiente elemente). ​ +-- Axiome (cod) 
-nth(cons(x, L), zero) = x (Dacă am ajuns la indexul zero, rezultatul este primul element din listă). ​ +nth(null, n)           ​= eroare 
-nth(cons(x, L), succ(n)) = nth(L, n) (Al n+1-lea element din lista curentă este al n-lea element din restul listei).+nth(cons(x, L), zero)    = x 
 +nth(cons(x, L), succ(n)) = nth(L, n)
 </​code>​ </​code>​
  
-''​duplicate''​ (duplicarea fiecărui element al listei) 
-  * **Notă**: \\ Există un singur parametru (''​L''​),​ deci o singură variabilă pe care pot face recursivitate. 
-  * **Întrebare**:​ \\ Cum transform rezultatul pentru ''​tail(L)''?​ 
-  * **Raționament**:​ \\ Dacă am duplicat toate elementele din ''​tail(L)'',​ trebuie doar să adaug de două ori ''​head(L)''​ la început. 
-  * **Axiome (Cod):** \\ ''​duplicate(null) = null''​ (Cazul de bază). \\ ''​duplicate(cons(x,​ L)) = cons(x, cons(x, duplicate(L)))''​ (Implementarea raționamentului anterior). 
  
 +<code haskell>
 +duplicate (duplicarea fiecărui element al listei)
 +</​code>​
 +
 +**Notă**: Există un singur parametru (''​L''​),​ deci o singură variabilă pe care pot face recursivitate. \\
 +**Întrebare**:​ Cum transform rezultatul pentru ''​tail(L)''?​ \\
 +**Raționament**:​ Dacă am duplicat toate elementele din ''​tail(L)'',​ trebuie doar să adaug de două ori ''​head(L)''​ la început.
 +
 +<code haskell>
 +-- Axiome (cod)
 +duplicate(null) ​       = null
 +duplicate(cons(x,​ L))  = cons(x, cons(x, duplicate(L)))
 +</​code>​
 ===== Exerciții ===== ===== Exerciții =====
   * Demonstrați prin inducție structurală proprietatea ''​len(app(A,​ B)) = add(len(A), len(B))''​.   * Demonstrați prin inducție structurală proprietatea ''​len(app(A,​ B)) = add(len(A), len(B))''​.
Line 113: Line 124:
     * **Ștergerea** elementului de la poziția ''​n''​ din listă (ex: ștergerea celui de-al treilea element din $[a, b, c, d, e, f, g]$ produce $[a, b, d, e, f, g]$).     * **Ștergerea** elementului de la poziția ''​n''​ din listă (ex: ștergerea celui de-al treilea element din $[a, b, c, d, e, f, g]$ produce $[a, b, d, e, f, g]$).
     * **Simetria structurală**:​ Verificați dacă doi arbori binari sunt simetrici (ex: un arbore cu structura ''​node(empty,​ x, node(empty, y, empty))''​ este simetric cu unul de forma ''​node(node(empty,​ z, empty), w, empty)''​).     * **Simetria structurală**:​ Verificați dacă doi arbori binari sunt simetrici (ex: un arbore cu structura ''​node(empty,​ x, node(empty, y, empty))''​ este simetric cu unul de forma ''​node(node(empty,​ z, empty), w, empty)''​).
-  * [[https://​ocw.cs.pub.ro/​courses/​_media/​pp/​24/​laboratoare/​tda/​tda-sol.zip|Soluții]]+
  
 ===== Referințe ===== ===== Referințe =====
   * [[https://​www.ic.unicamp.br/​~meidanis/​courses/​mc336/​problemas-lisp/​L-99_Ninety-Nine_Lisp_Problems.html|Probleme de programare funcțională]]   * [[https://​www.ic.unicamp.br/​~meidanis/​courses/​mc336/​problemas-lisp/​L-99_Ninety-Nine_Lisp_Problems.html|Probleme de programare funcțională]]
  
pp/24/laboratoare/tda.1770901014.txt.gz · Last modified: 2026/02/12 14:56 by mihaela.balint
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0