This shows you the differences between two versions of the page.
|
pp:26:teme:haskell-graphs-draft [2026/04/26 22:01] 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 85: | Line 85: | ||
| ==== 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 175: | 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 schelet, vor 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 ===== | ||