hw_checker 0.4.0

An interactive checker built for the homeworks
Documentation

Tema 3 SD

Responsabili:

  • Robert Grancsa
  • Baldovin Razvan-Mihai-Marian
  • Chitan Rafael

Actualizări

Obiective

In urma realizari acestei teme veti:

  • Invata cum se folosesc grafurile in task-uri de zi cu zi
  • Exersa implementarea structurilor de date arborescente
  • Intelege cum se implementeaza o platforma de social media

Introducere

Task 1

Adauga prieten

Creeaza o legatura intre doi utilizatori. Aceasta este o legatura bi-directionala, adica ambele persoane se vor trece unul pe altul ca prieteni.

add <nume-1> <nume-2>

Exemplu:

> add Mihai Andrei
< Added connection Mihai - Andrei

!Info Pentru fiecare input, se garanteaza ca nu se vor folosi useri care sa nu existe in lista.

!Warning Nu aveti voie sa hardcodati marimea grafului

Elimina prieten

Elimina legatura intre doi utilizatori.

remove <nume-1> <nume-2>

Afla distanta

distance <nume-1> <nume-2>

Calculeaza distanta intre 2 persoane de pe platforma. Distanta se considera 1 pentru fiecare prietenie.

Exemplu:

> add Mihai Andrei
> add Andrei Alex
> add Alex Mihnea
> distance Mihai Mihnea
< Distanta Mihai - Mihnea este de 3

Suggestii

Gaseste si afiseaza toti prietenii prieteniilor, care nu sunt deja prieteni cu tine. Prietenii vor fi afisati crescator dupa id-ul utilizatorul.

suggestions <nume-1>

Prieteni comuni

common <nume-1> <nume-2>

Trebuie sa gasiti prietenii comuni ai doi utilizatori. Un prieten comun este o persoana care il are ca prieten si pe <nume-1> si pe <nume-2>. Veti afisa lista de prieteni, sortata crescator dupa id-ul utilizatorul.

Exemplu:

> common Alex Ana
< Andrei
< Maria
< Ioana

!Info Daca nu exista nici un prieten comun, se va afisa: "No common friends for and "

Numar de prieteni

friends <nume-1>

> friends Andrei
< 10

Trebuie sa afisati numarul de prieteni al unei persoane.

Cel mai popular

popular <nume-1>

Trebuie sa afisati prietenul cu cei mai multe conexiuni dintre <nume-1> si prietenii lui.

Exemplu (se presupune ca Andrei - Mihai - Ana sunt toti prieteni):

> friends Andrei
< 10
> friends Mihai
< 15
> friends Ana
< 9
> popular Ana
< Mihai - 15

Clică

common-group <nume-1>

Gasiti si afisati cel mai mare grup de prieteni care îl conține pe un anumit utilizator.

Un grup de prieteni se defineste ca toti oamenii dintr-un grup care se au la prieteni unii pe altii. Lista de nume afisata va fi afisata crescator dupa id-ul utilizatorului.

Exemplu:

> common-group Alex
< Alex
< Ana
< Ioana
< Mihai
> common-group Luca
< Alex
< Mihai
< Luca

Din graful acesta, se poate vedea cum Ana - Alex - Ioana - Mihai alcatuiesc un grup complet, iar Luca nu face parte din acest grup, fiindca are doar 2 prieteni comuni.

!Info O clică poate fi formata si dintr-un singur utilizator, caz in care afisam doar numele lui la output

Task 2

struct {
    id: number,
    titlu: string,
    user_id: number,
    events: tree,
}

Creeaza o postare

create <nume> <titlu>

Mentiuni

Titlul maxim 280 Se pot tine intr-un vector pentru fiecare utilizator in parte

Fiecare postare o sa fie o structura - are un post id

Repost

repost <nume> <post-id> [<repost-id>]

Mentiuni

Fiecare postare o sa fie o structura - are un post id In arbore tinem cine a facut repost-ul

LCA - Primul repost comun

common-repost <post> <repost-id-1> <repost-id-2>

Like

like <nume> <post-id> [<repost-id>]

Ratio

ratio <repost-id>

Delete Post/Repost

delete <post/repost-id>

Get likes

get-likes <post-id> [<repost-id>]

Get reposts

get-reposts <post/repost-id>

Task 3

Feed

feed <nume>

Friends that reposted

friends-repost <post-id>

Mentiune

Distanta este 3, returneaza numarul de prieteni care au repostat postarea

Referinte

Punctaj

  • Task 1 -
  • Task 2 -
  • Task 3 -

FAQ

Q: Putem implementa tema în C++? A: Nu.

Q: Putem folosi variabile globale? A: Nu.

Q: Putem modifica scheletul / adăuga funcţii? A: Da.

Checker

TODO:

Robert - checker, skel Baldo - task 1 Rafa - task 2

In rest: cerinta, moodle, checker

Deadline: 3 mai