diff --git a/README.md b/README.md index e2a51f61461a1700e522d307e1b9b7604c067650..60f2bb630bdd431e22da1dffb87d81da17baaa69 100644 --- a/README.md +++ b/README.md @@ -7,30 +7,31 @@ - Cristian Lazar - Valentin-Razvan Bogdan -Dupa ce si-a facut atatia prieteni in cadrul temei 2, suricata Zoly -a efectuat un audit se securitate al retelelor clanurilor carora -s-a alaturat si si-a dat seama ca nu exista nicio masura adecvata -de securitate. Astfel, ea doreste sa isi creeze propriul sistem -de detectie si prevenire a intruziunilor in retea, si va -roaga sa o ajutati cu implementarea unor componente ale acestuia. +DupÄ ce Či-a fÄcut atâČia prieteni ĂŽn cadrul temei 2, suricata Zoly +a efectuat un audit se securitate al reČelelor clanurilor cÄrora +s-a alÄturat Či Či-a dat seama cÄ nu existÄ nicio mÄsurÄ adecvatÄ +de securitate. Astfel, ea doreČte sÄ ĂŽČi creeze propriul sistem +de detecČie si prevenire a intruziunilor in reČea, si vÄ +roagÄ sÄ o ajutaČi cu implementarea unor componente ale acestuia. ## Task 1 -Sistemul se bazeaza pe anumite reguli care trebuie scrise in fisier. -Un aspect important al verificarii acestor reguli este parantezarea +Sistemul se bazeazÄ pe anumite reguli care trebuie scrise intr-un +fiČier de configurare. +Un aspect important al verificÄrii acestor reguli este parantezarea diferitelor elemente ale regulii. -In acest task va trebui sa implementati o functie care verifica -daca un sir de paranteze formeaza o parantezare corecta, adica -daca toate parantezele deschise sunt inchise corespunator. +Ăn acest task va trebui sÄ implementaČi o funcČie care verificÄ +dacÄ un Čir de paranteze formeazÄ o parantezare corectÄ, adicÄ +dacÄ toate parantezele deschise sunt inchise corespunzÄtor. -De exemplu, sirul "()()" este o parantezare corecta, dar -"{{}" nu este, pentru ca se inchide doar o paranteza, -si nici "{[}]" nu este, pentru ca parantezele nu sunt -inchise corespunzator. +De exemplu, Čirul "()()" este o parantezare corectÄ, dar +"{{}" nu este, pentru ca se ĂŽnchide doar o parantezÄ, +Či nici "{[}]" nu este, pentru cÄ parantezele nu sunt +ĂŽnchise corespunzÄtor. -Functia pe care o veti implementa va returna 0 daca nu sunt probleme -de parantezare (daca sunt parantezele puse bine) si 1 altfel. +FuncČia pe care o veČi implementa va returna 0 daca nu sunt probleme +de parantezare (dacÄ sunt parantezele puse bine) si 1 altfel. ## Task 2 - Divide et impera @@ -150,26 +151,26 @@ Implementarea trebuie sÄ fie recursivÄ, **NU** iterativÄ. ## Bonus -Acum ca Zoly si-a scris sistemul de detectie a intruziunilor -si isi poate apara toti prietenii pe care si i-a facut in tema 2, -se poate intoarce la marea ei pasiune: programarea functionala. +Acum ca Zoly Či-a scris sistemul de detecČie a intruziunilor +Či ĂŽČi poate apÄra toČi prietenii pe care Či i-a facut ĂŽn tema 2, +se poate ĂŽntoarce la marea ei pasiune: programarea funcČionalÄ. -Totodata, spre deosebire de echipa de PCLP2, ea a inteles ca in -prezent se folosesc sisteme pe 64 de biti, iar cele pe 32 de biti -sunt foarte rare. Astfel, ea doreste sa implementeze functiile -`map` si `reduce` in assembly pe 64 de biti si folosin si numere -pe 64 de biti. Stiti de la +TotodatÄ, spre deosebire de echipa de PCLP2, ea a ĂŽnČeles cÄ ĂŽn +prezent se folosesc sisteme pe 64 de biČi, iar cele pe 32 de biČi +sunt foarte rare. Astfel, ea doreČte sÄ implementeze funcČiile +`map` Či `reduce` ĂŽn assembly pe 64 de biČi si folosim Či numere +pe 64 de biČi. StiČi de la [tema 1](https://gitlab.cs.pub.ro/iocla/tema-1-2024) ce sunt fiecare. ## Map Antet map: -``` +```c void map(int64_t *destination_array, int64_t *source_array, int64_t array_size, int64_t(*f)(int64_t)); ``` Antet functie ce poate fi folosita pentru map: -``` +```c int64_t map_func1(int64_t curr_elem); ``` @@ -183,12 +184,12 @@ map(dst, src, n, to_apply): ## Reduce Antet reduce: -``` +```c int64_t reduce(int64_t *destination_array, int64_t *source_array, int64_t array_size, int64_t accumulator_initial_value, int64_t(*f)(int64_t, int64_t)); ``` Antet functie ce poate fi folosita pentru reduce: -``` +```c int64_t reduce_func1(int64_t accumulator, int64_t current_elem); ``` diff --git a/src/task-1/README.md b/src/task-1/README.md index 6658e5a1175e15d121a5a38ec2b9a8ff4650d12a..57ab50ba882c0823baa14eaa71d7b68b3bdec22b 100644 --- a/src/task-1/README.md +++ b/src/task-1/README.md @@ -1,13 +1,18 @@ # Task 1 - Paranthesinator -In acest task va trebui sa implementati o functie care verifica -daca un sir de paranteze formeaza o parantezare corecta, adica -daca toate parantezele deschise sunt inchise corespunator. +Sistemul se bazeazÄ pe anumite reguli care trebuie scrise intr-un +fiČier de configurare. +Un aspect important al verificÄrii acestor reguli este parantezarea +diferitelor elemente ale regulii. -De exemplu, sirul "()()" este o parantezare corecta, dar -"{{}" nu este, pentru ca se inchide doar o paranteza, -si nici "{[}]" nu este, pentru ca parantezele nu sunt -inchise corespunzator. +Ăn acest task va trebui sÄ implementaČi o funcČie care verificÄ +dacÄ un Čir de paranteze formeazÄ o parantezare corectÄ, adicÄ +dacÄ toate parantezele deschise sunt inchise corespunzÄtor. -Functia pe care o veti implementa va returna 0 daca nu sunt probleme -de parantezare (daca sunt parantezele puse bine) si 1 altfel. +De exemplu, Čirul "()()" este o parantezare corectÄ, dar +"{{}" nu este, pentru ca se ĂŽnchide doar o parantezÄ, +Či nici "{[}]" nu este, pentru cÄ parantezele nu sunt +ĂŽnchise corespunzÄtor. + +FuncČia pe care o veČi implementa va returna 0 daca nu sunt probleme +de parantezare (dacÄ sunt parantezele puse bine) si 1 altfel. diff --git a/src/task-1/checker b/src/task-1/checker index 3a1311efa214c0fb231477712814b303441a7f53..736e0356f31d6d5774bc1a0840bdb71e22412a7a 100755 --- a/src/task-1/checker +++ b/src/task-1/checker @@ -3,7 +3,7 @@ mkdir -p out check_one() { ./paranthesinator < in/$1.in > out/$1.out - if cmp --silent -- out/$1.out ref/$1.out; then + if cmp --silent -- out/$1.out ref/$1.ref; then printf "Test %02d ................. PASSED: 2.0p\n" $1 TOTAL_POINTS=$(($TOTAL_POINTS + 2)) else diff --git a/src/task-1/out/1.out b/src/task-1/out/1.out new file mode 100644 index 0000000000000000000000000000000000000000..343bbfb85b2747138ef1c75f483ee46495c7effc --- /dev/null +++ b/src/task-1/out/1.out @@ -0,0 +1 @@ +-7985028 diff --git a/src/task-1/out/10.out b/src/task-1/out/10.out new file mode 100644 index 0000000000000000000000000000000000000000..a6fcc15e5da60d7dee8c4e72ba60cb250822c0cf --- /dev/null +++ b/src/task-1/out/10.out @@ -0,0 +1 @@ +-7571428 diff --git a/src/task-1/out/11.out b/src/task-1/out/11.out new file mode 100644 index 0000000000000000000000000000000000000000..966a87f4eceb92149a5894d396c428051dc43eac --- /dev/null +++ b/src/task-1/out/11.out @@ -0,0 +1 @@ +-230420 diff --git a/src/task-1/out/12.out b/src/task-1/out/12.out new file mode 100644 index 0000000000000000000000000000000000000000..08c97c564aa95f8905cc1a17099823fcaeeb3752 --- /dev/null +++ b/src/task-1/out/12.out @@ -0,0 +1 @@ +-4325012 diff --git a/src/task-1/out/13.out b/src/task-1/out/13.out new file mode 100644 index 0000000000000000000000000000000000000000..f77bd3a97109c2aed2ca7b207aa8f61f36679b1d --- /dev/null +++ b/src/task-1/out/13.out @@ -0,0 +1 @@ +-7924820 diff --git a/src/task-1/out/14.out b/src/task-1/out/14.out new file mode 100644 index 0000000000000000000000000000000000000000..4d319a7fa6b49bc47de410dd431cb2a2f5f1f13d --- /dev/null +++ b/src/task-1/out/14.out @@ -0,0 +1 @@ +-2749476 diff --git a/src/task-1/out/15.out b/src/task-1/out/15.out new file mode 100644 index 0000000000000000000000000000000000000000..0799c1805785b3581519fce60a32f04e7edb11c5 --- /dev/null +++ b/src/task-1/out/15.out @@ -0,0 +1 @@ +-3622676 diff --git a/src/task-1/out/2.out b/src/task-1/out/2.out new file mode 100644 index 0000000000000000000000000000000000000000..d62eb74540eb60c0d822e033635f3414161416d2 --- /dev/null +++ b/src/task-1/out/2.out @@ -0,0 +1 @@ +-1123748 diff --git a/src/task-1/out/3.out b/src/task-1/out/3.out new file mode 100644 index 0000000000000000000000000000000000000000..e1018de3fedd2e81276b41349dfea964da4d7072 --- /dev/null +++ b/src/task-1/out/3.out @@ -0,0 +1 @@ +-5047588 diff --git a/src/task-1/out/4.out b/src/task-1/out/4.out new file mode 100644 index 0000000000000000000000000000000000000000..107d7b2e53f687db27cb6f56f908d9cd702ad7c9 --- /dev/null +++ b/src/task-1/out/4.out @@ -0,0 +1 @@ +-2284820 diff --git a/src/task-1/out/5.out b/src/task-1/out/5.out new file mode 100644 index 0000000000000000000000000000000000000000..cdfa693a66bce6d48e93e44cf69512d657ae26f6 --- /dev/null +++ b/src/task-1/out/5.out @@ -0,0 +1 @@ +-7570532 diff --git a/src/task-1/out/6.out b/src/task-1/out/6.out new file mode 100644 index 0000000000000000000000000000000000000000..967e60fa067d1f5952e1a7b05b6ee58b785bea76 --- /dev/null +++ b/src/task-1/out/6.out @@ -0,0 +1 @@ +-105732 diff --git a/src/task-1/out/7.out b/src/task-1/out/7.out new file mode 100644 index 0000000000000000000000000000000000000000..043cbef78c17b50b7b8964f4b0b859d40295ccb2 --- /dev/null +++ b/src/task-1/out/7.out @@ -0,0 +1 @@ +-5045652 diff --git a/src/task-1/out/8.out b/src/task-1/out/8.out new file mode 100644 index 0000000000000000000000000000000000000000..1c1b60554e11a96077dd8a8558c7e106c8f37940 --- /dev/null +++ b/src/task-1/out/8.out @@ -0,0 +1 @@ +-3716308 diff --git a/src/task-1/out/9.out b/src/task-1/out/9.out new file mode 100644 index 0000000000000000000000000000000000000000..15f8882d3b0b4de5917b34d75e658a60de8ad3e8 --- /dev/null +++ b/src/task-1/out/9.out @@ -0,0 +1 @@ +-2159524 diff --git a/src/task-1/paranthesinator.asm b/src/task-1/paranthesinator.asm index 31c96028e15390eb9c7ce2a9a4b58964a336cfe5..a9235cd41a1666572ff689bfe0eb555c0850bb7f 100644 --- a/src/task-1/paranthesinator.asm +++ b/src/task-1/paranthesinator.asm @@ -1,5 +1,7 @@ [BITS 32] +%include "../include/io.mac" + section .text ; int check_parantheses(char *str) global check_parantheses diff --git a/src/task-1/ref/1.out b/src/task-1/ref/1.ref similarity index 100% rename from src/task-1/ref/1.out rename to src/task-1/ref/1.ref diff --git a/src/task-1/ref/10.out b/src/task-1/ref/10.ref similarity index 100% rename from src/task-1/ref/10.out rename to src/task-1/ref/10.ref diff --git a/src/task-1/ref/11.out b/src/task-1/ref/11.ref similarity index 100% rename from src/task-1/ref/11.out rename to src/task-1/ref/11.ref diff --git a/src/task-1/ref/12.out b/src/task-1/ref/12.ref similarity index 100% rename from src/task-1/ref/12.out rename to src/task-1/ref/12.ref diff --git a/src/task-1/ref/13.out b/src/task-1/ref/13.ref similarity index 100% rename from src/task-1/ref/13.out rename to src/task-1/ref/13.ref diff --git a/src/task-1/ref/14.out b/src/task-1/ref/14.ref similarity index 100% rename from src/task-1/ref/14.out rename to src/task-1/ref/14.ref diff --git a/src/task-1/ref/15.out b/src/task-1/ref/15.ref similarity index 100% rename from src/task-1/ref/15.out rename to src/task-1/ref/15.ref diff --git a/src/task-1/ref/2.out b/src/task-1/ref/2.ref similarity index 100% rename from src/task-1/ref/2.out rename to src/task-1/ref/2.ref diff --git a/src/task-1/ref/3.out b/src/task-1/ref/3.ref similarity index 100% rename from src/task-1/ref/3.out rename to src/task-1/ref/3.ref diff --git a/src/task-1/ref/4.out b/src/task-1/ref/4.ref similarity index 100% rename from src/task-1/ref/4.out rename to src/task-1/ref/4.ref diff --git a/src/task-1/ref/5.out b/src/task-1/ref/5.ref similarity index 100% rename from src/task-1/ref/5.out rename to src/task-1/ref/5.ref diff --git a/src/task-1/ref/6.out b/src/task-1/ref/6.ref similarity index 100% rename from src/task-1/ref/6.out rename to src/task-1/ref/6.ref diff --git a/src/task-1/ref/7.out b/src/task-1/ref/7.ref similarity index 100% rename from src/task-1/ref/7.out rename to src/task-1/ref/7.ref diff --git a/src/task-1/ref/8.out b/src/task-1/ref/8.ref similarity index 100% rename from src/task-1/ref/8.out rename to src/task-1/ref/8.ref diff --git a/src/task-1/ref/9.out b/src/task-1/ref/9.ref similarity index 100% rename from src/task-1/ref/9.out rename to src/task-1/ref/9.ref