Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
|
aa:tema [2025/12/09 21:06] atoader created |
aa:tema [2025/12/10 01:07] (current) rares_stefan.balcan |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | Deadline: | + | Deadline: 16 ianuarie 2026 |
| - | Schelet de cod: | + | Schelet de cod:{{:aa:text_editor.zip|}} |
| Line 24: | Line 24: | ||
| Trebuie să implementați următoarele funcții care vor face legătura între interfața grafică și structura voastră de date: | Trebuie să implementați următoarele funcții care vor face legătura între interfața grafică și structura voastră de date: | ||
| - | 1. advance_cursor(table, advance) Mută cursorul logic cu un număr de poziții specificat de parametrul advance. Acest parametru poate fi pozitiv (deplasare la dreapta) sau negativ (deplasare la stânga). Trebuie să vă asigurați că nu depășiți limitele textului (0 și lungimea totală). | + | 1. create_table(filename, text, global_cursor) Această funcție inițializează structura de date. |
| - | 2. show_global_cursor(table) Returnează poziția curentă absolută a cursorului (offset-ul față de începutul textului logic). Aceasta este necesară pentru a ști unde va avea loc următoarea operație de editare. | + | 2. advance_cursor(table, advance) Mută cursorul logic cu un număr de poziții specificat de parametrul advance. Acest parametru poate fi pozitiv (deplasare la dreapta) sau negativ (deplasare la stânga). Trebuie să vă asigurați că nu depășiți limitele textului (0 și lungimea totală). |
| - | 3. show_total_len(table) Returnează numărul total de caractere din textul gestionat de editor la momentul curent. | + | 3. show_global_cursor(table) Returnează poziția curentă absolută a cursorului (offset-ul față de începutul textului logic). Aceasta este necesară pentru a ști unde va avea loc următoarea operație de editare. |
| - | 4. add_text(table, text) Inserează șirul de caractere text la poziția curentă a cursorului. Într-o implementare eficientă, textul nou este adăugat la finalul buffer-ului de adăugare, iar structura de date este actualizată pentru a include o nouă referință către acest text între bucățile existente. | + | 4. show_total_len(table) Returnează numărul total de caractere din textul gestionat de editor la momentul curent. |
| - | 5. delete_text(table, length) Șterge un număr de length caractere aflate înainte de cursor (comportament de tip Backspace). Operația nu trebuie să șteargă fizic datele din buffere, ci doar să ajusteze lungimile sau legăturile din structura de date care descrie textul. | + | 5. add_text(table, text) Inserează șirul de caractere text la poziția curentă a cursorului. Într-o implementare eficientă, textul nou este adăugat la finalul buffer-ului de adăugare, iar structura de date este actualizată pentru a include o nouă referință către acest text între bucățile existente. |
| - | 6. extract_current_text(table) Reconstruiește întregul text într-un singur șir de caractere (string) și îl returnează. Această funcție este utilă pentru afișarea textului în interfața editorului. | + | 6. delete_text(table, length) Șterge un număr de length caractere aflate înainte de cursor (comportament de tip Backspace). Operația nu trebuie să șteargă fizic datele din buffere, ci doar să ajusteze lungimile sau legăturile din structura de date care descrie textul. |
| - | 7. save_current_text(table, filename, text, cursor) Salvează starea curentă a textului într-un fișier pe disc, specificat prin filename. | + | 7. extract_current_text(table) Reconstruiește întregul text într-un singur șir de caractere (string) și îl returnează. Această funcție este utilă pentru afișarea textului în interfața editorului. |
| + | |||
| + | 8. save_current_text(table, filename, text, cursor) Salvează starea curentă a textului într-un fișier pe disc, specificat prin filename. | ||
| + | |||
| + | |||
| + | ==== Instrucțiuni de rulare ==== | ||
| + | |||
| + | <code> python3 checker.py</code> | ||
| + | |||
| + | Checkerul va compila automat implementarea și va rula toate testele. | ||
| + | |||
| + | ==== Punctaj ==== | ||
| + | |||
| + | * Testare funcționalitate: 65 puncte | ||
| + | * Testare performanță: 35 puncte | ||
| + | * Total: 100 puncte | ||
| + | <note important>Pentru a primi punctaj, implementarea ta trebuie să aibă complexitate eficientă pentru operațiile de inserare, ștergere și navigare.</note> | ||