Differences

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

Link to this comparison view

pp:26:teme:haskell-graphs-draft [2026/04/26 21:51]
mihnea.muraru [Etapa 1]
pp:26:teme:haskell-graphs-draft [2026/04/26 23:02] (current)
mihnea.muraru [Haskell: Graph Zoo]
Line 1: Line 1:
 ====== Haskell: Graph Zoo ====== ====== Haskell: Graph Zoo ======
  
-  * Data publicării: ​26.04.2026 +  * Data publicării: ​27.04.2026 
-  * Data ultimei modificări: ​26.04.2026+  * Data ultimei modificări: ​27.04.2026
   * Deadline hard: ziua laboratorului 12   * Deadline hard: ziua laboratorului 12
   * Forum temă   * Forum temă
Line 74: Line 74:
 Găsiți detalii despre **funcționalitate** și **implementare**,​ precum și **exemple**,​ direct în codul sursă. Aveți de completat definițiile care încep cu **''​%%*** TODO ***%%''​**. Găsiți detalii despre **funcționalitate** și **implementare**,​ precum și **exemple**,​ direct în codul sursă. Aveți de completat definițiile care încep cu **''​%%*** TODO ***%%''​**.
  
-Se impun următoarele **constrângeri** de implementare:​+Se impun următoarele **constrângeri** de implementare ​asupra funcțiilor din modulul ''​StandardGraph''​:
  
-  * Toate funcțiile din această etapă, cu excepția ''​%%search%%'', ​trebuie implementate **FĂRĂ recursivitate explicită**. +  * Toate trebuie implementate **FĂRĂ recursivitate explicită**. 
-  * Funcțiile ​trebuie să opereze **direct pe mulțimile** de noduri și arce, utilizând funcțiile specifice acestei reprezentări,​ **FĂRĂ conversii** redundante la liste și înapoi la mulțimi.+  * Ele trebuie să opereze **direct pe mulțimile** de noduri și arce, utilizând funcțiile specifice acestei reprezentări,​ **FĂRĂ conversii** redundante la liste și înapoi la mulțimi.
  
 Este suficient ca arhiva pentru **vmchecker** să conțină modulele ''​%%StandardGraph%%''​ și ''​%%Algorithms%%''​. Este suficient ca arhiva pentru **vmchecker** să conțină modulele ''​%%StandardGraph%%''​ și ''​%%Algorithms%%''​.
 +
 +**ATENȚIE!** După ce experimentați în modulul ''​Algorithms''​ cu funcțiile de **debug** din schelet, ''​appendDebug''​ și ''​concatMapDebug'',​ așa cum se precizează în comentarii, **reveniți** la versiunile obișnuite ale acestora, ''​(++)''​ și ''​concatMap'',​ pentru a evita generarea mesajelor stufoase pe vmchecker.
  
 ==== Depunctări ==== ==== Depunctări ====
  
-Funcțiile care nu respectă cele două constrângeri de mai sus vor fi **depunctate total**.+  * Funcțiile ​din modulul ''​StandardGraph'' ​care nu respectă cele două constrângeri de mai sus vor fi **depunctate total**. 
 +  * Funcțiile din modulul ''​Algorithms''​ care nu respectă constrângerile din schelet ​vor fi **depunctate total**.
 ===== Etapa 2 ===== ===== Etapa 2 =====
  
Line 173: Line 176:
     * Tipul ''​%%AlgebraicGraph%%''​ este cel prezentat mai sus.     * Tipul ''​%%AlgebraicGraph%%''​ este cel prezentat mai sus.
     * Mai departe, veți implementa **aceleași funcții** ca în modulul ''​%%StandardGraph%%'',​ cu excepția ''​%%fromComponents%%'',​ dar de data aceasta vor opera pe reprezentarea algebrică.     * Mai departe, veți implementa **aceleași funcții** ca în modulul ''​%%StandardGraph%%'',​ cu excepția ''​%%fromComponents%%'',​ dar de data aceasta vor opera pe reprezentarea algebrică.
-    * Toate funcțiile vor fi implementate **CU recursivitate explicită**. 
     * Veți observa că implementările funcțiilor ''​%%removeNode%%'',​ ''​%%splitNode%%''​ și ''​%%mergeNodes%%''​ respectă un **tipar similar**, pe care vom căuta să îl generalizăm în etapa 3.     * Veți observa că implementările funcțiilor ''​%%removeNode%%'',​ ''​%%splitNode%%''​ și ''​%%mergeNodes%%''​ respectă un **tipar similar**, pe care vom căuta să îl generalizăm în etapa 3.
-    * **ATENȚIE!** Funcțiile de mai sus trebuie să opereze **direct pe reprezentarea algebrică** din această etapă. **NU este permisă** convertirea în reprezentarea din etapa 1 și utilizarea funcțiilor de acolo. 
   * ''​%%Modular%%'':​ conține momentan doar câteva funcții pentru determinarea **descompunerii modulare** a grafului, dar va fi îmbogățit în etapa 3:   * ''​%%Modular%%'':​ conține momentan doar câteva funcții pentru determinarea **descompunerii modulare** a grafului, dar va fi îmbogățit în etapa 3:
     * Funcția ''​%%mapSingle%%''​ este asemănătoare cu ''​%%map%%'',​ în sensul că aplică o funcție asupra fiecărui element al unei liste, dar aplicarea se face asupra unui **singur element** din listă la un moment dat, celelalte rămânând nemodificate.     * Funcția ''​%%mapSingle%%''​ este asemănătoare cu ''​%%map%%'',​ în sensul că aplică o funcție asupra fiecărui element al unei liste, dar aplicarea se face asupra unui **singur element** din listă la un moment dat, celelalte rămânând nemodificate.
     * Funcția ''​%%partitions%%''​ generează toate partițiile unei liste.     * Funcția ''​%%partitions%%''​ generează toate partițiile unei liste.
 +
 +Se impun următoarele **constrângeri** de implementare asupra funcțiilor din modulul ''​AlgebraicGraph'':​
 +
 +  * Toate trebuie implementate **CU recursivitate explicită**.
 +  * Toate trebuie să opereze **direct pe reprezentarea algebrică** din această etapă. **NU este permisă** convertirea în reprezentarea din etapa 1 și utilizarea funcțiilor de acolo.
  
 ==== Depunctări ==== ==== Depunctări ====
  
-Funcțiile care nu respectă constrângerile de mai sus, și cele din scheletvor fi **depunctate total**.+Funcțiile care nu respectă constrângerile de mai sus sau pe cele din schelet vor fi **depunctate total**.
  
 ===== Etapa 3 ===== ===== Etapa 3 =====
pp/26/teme/haskell-graphs-draft.1777229492.txt.gz · Last modified: 2026/04/26 21:51 by mihnea.muraru
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