Skip to content

Latest commit

 

History

History
110 lines (87 loc) · 4.53 KB

README.md

File metadata and controls

110 lines (87 loc) · 4.53 KB

Replici de agatat

Kevin si Nazz au fost admisi la Facultatea de Automatica si Calculatoare. Nazz si-a gasit un anturaj de oameni inteligenti cu care discuta subiecte avansate de care Kevin nu are habar. El doreste sa se integreze (si sa o cucereasca pe Nazz) asa ca s-a pus pe citit articole stiintifice. Intr-o conversatie uzuala el aude fragmente din cuvinte dar nu isi aminteste si articole pentru a se baga in vorba. El va roaga pe voi sa faceti un program care primeste toate articolele citite de Kevin pentru ca apoi el sa introduca fragmente de cuvinte si sa i se ofere sugestii despre cuvintele despre care ar putea vorbi impreuna cu articolele din care provin. Cum articolele pe care le-a citit Kevin sunt tehnice, acestea contin si foarte multe cuvinte compuse. El vrea sa primeasca sugestii si daca introduce inceputul unui cuvant din interiorul unui cuvant compus. Consideram un cuvant compus orice sir de caractere despartit prin cratima.

Cerintele lui Kevin

  • Nu doreste sa ii fie sugerate toate cuvintele ci doar primele 5 din sortarea lexicografica a tuturor optiunilor valide.
  • Vrea sa ii fie sugerate si cuvintele compuse ce contin fragmentul introdus.
  • El va introduce mereu primele litere de la inceputul unui cuvant.
  • Considera cuvant compus orice set de litere din alfabet despartite prin cratima.
  • Vrea ca articolele cuvintelor sugerate sa fie afisate in ordinea in care sunt introduse.
  • Cuvintele cu majuscule nu ar trebui sa ii schimbe sugestiile si trebuie sa aiba aceeasi sansa de a aparea ca si cuvintele scrise cu litera mica.
  • Daca nu exista sugestii pentru cuvantul respectiv, vrea sa fie notificat prin textul No suggestions…

Date de intrare

  • Numele fisierelor din care se vor citi articolele se vor da ca parametrii liniei de comanda.
  • Toate fisierele contin text ASCII.
./kevin file1.txt file2.jpg file3.in
  • Se vor citi de la stdin inceputurile unor cuvinte.
  • Daca se citeste de la stdin /exit programul se va termina.

Date de iesire

  • Dupa citirea fiecarui cuvant se va afisa la stdout pe cate o linie cuvantele sugerate urmate de stringul (:) si apoi de numerele de ordine ale articolelor din care provin cuvintele sugerate.
  • Daca cuvantul nu este recunoscut, se va afisa la stdout sintagma No suggestions...

Exemplu

ML.txt :

Machine-learning algorithms are used in a wide variety of applications, such as email-filtering, detection of network-intruders, and computer-vision, where it is infeasible to develop an algorithm of specific instructions for performing the task.

quicksort.paint :

Like Merge-Sort, Quick-Sort is a Divide-and-Conquer algorithm. It picks an element as pivot and partitions the given array around the picked pivot. There are many different versions of quick-Sort that pick pivot in different ways.

youtube.database :

Pew-Die-Pie
Alguma-Coisa
Universal-Pictures
SORTEDfood
Algorithm

randomwords.org.4d :

different
algorithm
goodsort
quick-algebra
sorting

./kevin ML.txt quicksort.paint youtube.database randomwords.org.4d

Input stdin :

sort
alg
di
pi
food
/exit

Output stdout :

merge-sort : 2
quick-sort : 2
sortedfood : 3
sorting : 4

algorithm : 1 2 3 4
algorithms : 1
alguma-coisa : 3
quick-algebra : 4

different : 2 4
divide-and-conquer : 2
pew-die-pie : 3

pew-die-pie : 3
pick : 2
picked : 2
picks : 2
pivot : 2

No suggestions...

Rulare checker

Pentru a rula checkerul, trebuie creat un fisier MAKEFILE cu reguli de build, clean si run.

ATENTIE: Regula de run trebuie sa execute programul cu parametrii din linia de comanda, prin intermediul variabilei $(var). Un exemplu de fisier MAKEFILE pentru o solutie implementata in C++ se afla in arhiva.

Trimitere solutii

Solutiile se evalueaza automat. Ele vor fi trimise pe vmchecker la sectiunea CDL 2019.

Limbaje suportate:

  • C/C++
  • python2/python3
  • Java (8)
  • Javascript (Node.js)
  • Ruby
  • Perl

NOTA: Pentru includerea altor limbaje de programare, pentru neclaritati sau sugestii, puteti deschide un Issue de aici sau de la sectiunea Issues.