Differences

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

Link to this comparison view

pp:24:laboratoare:tda [2026/02/12 15:04]
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>​ 
 +nth (al n-lea element din listă) 
 +</​code>​ 
 **Întrebare**:​ Pe ce variabile fac recursivitate?​ \\ **Î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)''​. \\ **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$\\+**Concluzie**:​ Pe numărul ​''​n'' ​și pe lista ''​L''​.
  
 <code haskell> <code haskell>
-Axiome (cod) +-- Axiome (cod) 
------------- +nth(null, n)           ​= eroare
-nth(null, n)             ​= eroare+
 nth(cons(x, L), zero)    = x nth(cons(x, L), zero)    = x
 nth(cons(x, L), succ(n)) = nth(L, n) nth(cons(x, L), succ(n)) = nth(L, n)
Line 101: Line 103:
  
  
 +<code haskell>
 +duplicate (duplicarea fiecărui element al listei)
 +</​code>​
  
-=== duplicate (duplicarea fiecărui element al listei) === 
 **Notă**: Există un singur parametru (''​L''​),​ deci o singură variabilă pe care pot face recursivitate. \\ **Notă**: Există un singur parametru (''​L''​),​ deci o singură variabilă pe care pot face recursivitate. \\
 **Întrebare**:​ Cum transform rezultatul pentru ''​tail(L)''?​ \\ **Î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. ​\\+**Raționament**:​ Dacă am duplicat toate elementele din ''​tail(L)'',​ trebuie doar să adaug de două ori ''​head(L)''​ la început.
  
 <code haskell> <code haskell>
-Axiome (cod) +-- Axiome (cod)
-------------+
 duplicate(null) ​       = null duplicate(null) ​       = null
 duplicate(cons(x,​ L))  = cons(x, cons(x, duplicate(L))) duplicate(cons(x,​ L))  = cons(x, cons(x, duplicate(L)))
 </​code>​ </​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 122: 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.1770901444.txt.gz · Last modified: 2026/02/12 15:04 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