.campion
conectare | înregistrare | căutare
Pagina principală » Probleme » clase

ultima problemă
grupă: mică
sursă: OMI 2016
ultimul articol
autor: Prof. Radu Vişinescu
ultimul software
autor: Prof. Emanuela Cerchez
clase


Timp maxim de execuţie / test:
0.1s
Memorie totala disponibilă / stivă:
2MB / 1MB

Lui Gigel îi place să se joace nu numai cu numerele, ci şi cu cuvintele. Astfel, el a citit că anagrama unui cuvânt dat se obţine prin schimbarea ordinii literelor sale. De exemplu având dat cuvântul ′tari′, cuvintele ′trai′ şi ′itar′ reprezintă anagrame ale cuvântului dat. Evident, în cazul în care o literă se repetă într-un cuvânt, prin interschimbarea a două litere egale nu se obţine o anagramă (de exemplu interschimbând cele două litere ′g′ din cuvântul ′gigel′ se va obţine tot ′gigel′).
Prin cuvânt vom înţelege o succesiune de maxim 200 caractere litere mici ale alfabetului englez (de la ′a′ la ′z′).
Să considerăm o listă nevidă de cuvinte. În listă pot să apară cuvinte care sunt anagrame ale altor cuvinte din listă. Prin urmare, se pune problema partiţionării listei în clase de anagrame.
O clasă de anagrame conţine toate anagramele distincte ale unui cuvânt aflate în lista dată, scrise în ordine lexicografică (ordinea cuvintelor din dicţionar). Primul cuvânt dintr-o clasă de anagrame este prin urmare cel mai mic din punct de vedere lexicografic (primul în ordinea cuvintelor din dicţionar) şi va fi numit reprezentantul clasei.

Cerinţă

Dată fiind o listă de cuvinte, determinaţi partiţionarea acesteia în clase de anagrame.

Date de intrare

Fişierul de intrare clase.in conţine cuvintele din listă, câte un cuvânt pe o linie.

Date de ieşire

Fişierul de ieşire clase.out conţine clasele de anagrame, câte o clasă pe o linie. O clasă de anagrame este specificată scriind cuvintele din clasa de anagrame respectivă, în ordine lexicografică, separate prin câte un spaţiu. Clasele sunt specificate în fişier în ordinea lexicografică a reprezentanţilor acestora.

Restricţii

• 0 < lungimea unui cuvânt ≤ 200
• 0 < numărul de cuvinte distincte din listă ≤ 250
• Cuvintele conţin numai litere mici ale alfabetului englez (de la ′a′ la ′z′).
• Cuvintele din listă se pot repeta.

Exemple

clase.inclase.outExplicaţii
tari trai mare rame itar berber atri mare eram rame atri itar tari trai berber eram mare rame Au fost detectate trei clase de anagrame.
Fiecare clasă conţine anagrame în ordine lexicografică. De exemplu pentru prima clasă de anagrame atri<itar<tari<trai, iar atri este reprezentantul clasei.
Clasele sunt specificate în ordinea lexicografică a reprezentanţilor (atri<berber<eram)
Se observă faptul că o clasă poate fi formată dintr-un singur cuvânt.
Cuvintele mare şi rame se repetă în lista de cuvinte.
armata tamara atamar marata armata atamar marata tamara Toate cele patru cuvinte formează o singură clasă de anagrame.

autor: Prof. Marinel Şerban
propunător: Prof. Emanuela Cerchez
Colegiul Naţional ″Emil Racoviţă″
emanuela.cerchez@gmail.com
Articole recomandate
Probleme recomandate
De la StartIT 2014: vot2, tema, pagini
De acelaşi autor: premii, finala, fractii, trei, manevre, nrcuv, an, vopsea, opmat, tramvai, bipal, kpal, sarpe, replace, factori, barca, perechi, grupe, cod, reactii, factura, decript, trenuri, holo, cifre, firma, tribile, mesaj, tricouri, pajura, monede, programs, fry, repeat, red, pavaj, bacan, nrbinar, invest, cutie2, loc, depou, nr3, zid, felinare, sir3, sqr, carte, labirint, stea, count, evaluare, super, schimb, zaruri, vectori, spirala, desen1, rima, ceas1, romane, sms, bac, excursia, joc7, furnici, munte1, cezar, marcare, excursie1, culmi, sume1, schi, nr4, fractie, cod3, medii, tren3, top, sant1, imagine, ocr, perfect, pluton, reforma, alee, ceas2, paritate, borcane, aranjare, comoara1, culmi1, reactivi, submult, sablon1, sir8, sume2, dansatori, smith, tom, matriosca, asociativ, control1, calorii, immortal, concat, mat, cubinvers, mine, divizori, cheie, stelar, joct, minmax, cladire, adunscad, razboi, ore, oras1, sumprod, prisme, operatii1, lgdrum, unupatru, chibrituri, extraprime, prieten, rebus1, grindina, opmult, betisoare, antitero, pagini, ornament, ordine, spioni1
Despre şiruri de caractere: scp, ab, sl, nrcuv, rv, kpal, chimie, reteta, replace, grad, index, cod, text, decript, spam, complex, cifre, anagrame, balbe, criptmat, mesaj, maxim, astre, sablon, formule, ed, balls, vocale, prop, bacan, novel, bitslang, text2, ref, scor2, convert, cod2, compress, pstring, sub, rima, program1, sms, circular, randuri, cezar, bifo, joc9, pal, bare, joc12, fractie, cod3, tunel, csir, top, ratina, cifru1, limbaj, adun, ecuatii, dir, paritate, virus, sir6, mesaj2, text1, sirul, ogorul, rez, sablon1, anag, sir8, seti, secvsir, dp, cuvant, strings, antipatie, fractie1, links, ordonare, text3, concat, codif, cheie, alfabetar, cuvinte2, comp, litere, mxl, mesaj3, expresie2, grad2, antic, zuma, expeval, combcuv, lgdrum, subtitrare, compresie, zigzag, azeval, fraze, subsecvente, showroom, rebus1, agenda, opmult, betisoare, reziston, vot2, ecp, smiley, charlie, cript, scadere, spioni1, sablon3, expand, culori3, virgule
Chestionare recomandate
surse trimise | ajutor