Differences

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

Link to this comparison view

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(tableadvanceMută 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(filenametext, global_cursorAceastă 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, advanceMută 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, textInserează ș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ăde length ​caractere ​aflate înainte de cursor (comportament de tip Backspace). Operația nu trebuie să șteargă fizic datele din buffereci doar să ajusteze lungimile sau legăturile din structura de date care descrie textul.+5. add_text(table, ​textInserează ș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>​