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

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


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

Una dintre cele mai importante operaţii în timpul procesării unui text este operaţia find&replace, de găsire a unui şir şi de înlocuire a acestuia cu un alt şir specificat. Vom considera pentru problema noastră un caz special: acela în care dorim să facem o serie de înlocuiri într-o linie de text, utilizând un set de reguli. Fiecare regulă specifică şirul care trebuie găsit şi şirul cu care se va înlocui acesta. Se porneşte cu prima regulă, căutându-se şirul de înlocuit şi înlocuindu-se cu cel precizat. Se continuă cu prima regulă până nu se mai poate aplica deoarece şirul de înlocuit nu mai este găsit. Se procedează la fel cu celelalte reguli în ordinea în care sunt date. În plus se precizează următoarele:

  • pentru detectarea şirului de înlocuit se pleacă de fiecare dată de la începutul textului;
  • după terminarea aplicării unei reguli, nu se mai revine la ea;
  • operaţiile se desfăşoară considerând diferite literele mari de literele mici (case-sensitive).

Cerinţă

Dat un set de reguli şi textul în care trebuie realizate înlocuirile, să se determine forma finală a textului.

Date de intrare

Fişierul de intrare replace.in conţine pe prima linie un număr natural N reprezentând numărul de reguli. Următoarele 2N linii conţin perechi de şiruri, primul şir din pereche fiind şirul care se caută, iar pe rândul imediat următor şirul cu care trebuie înlocuit acesta. Ultimul rând al fişierului de intrare conţine textul în care se vor face înlocuirile.

Date de ieşire

Fişierul de ieşire replace.out va conţine o singură linie pe care va fi scris textul obţinut după aplicarea celor N reguli de înlocuire.

Restricţii

  • 0 ≤ N ≤ 10
  • textul conţine caractere cu codul ASCII cuprins în intervalul [32, 127];
  • textul iniţial şi cel final au maxim 255 caractere;
  • lungimea maximă a şirului în timpul transformărilor nu va depăşi 30000 caractere;
  • şirurile care se caută precum şi cele care le vor înlocui au maxim 80 caractere;
  • şirul căutat are cel puţin un caracter;
  • şirul cu care se înlocuieşte poate fi şirul vid (indicat prin linie goală în fişierul de intrare).

Exemple

replace.in replace.out Explicaţii
3
esti
este
joi
vineri

_
azi esti joi si esti vesel
azi_este_vineri_si_este_vesel

Se aplică 3 reguli:
esti se înlocuieşte cu este
joi se înlocuieşte cu vineri
spaţiu se înlocuieşte cu underscore
Transformările succesive:
'azi esti joi si esti vesel' devine 'azi este joi si este vesel' (esti s-a înlocuit cu este)
'azi este joi si este vesel' devine 'azi este vineri si este vesel' (joi s-a înlocuit cu vineri)
'azi este vineri si este vesel' devine 'azi_este_vineri_si_este_vesel' (spaţiu s-a înlocuit cu underscore)


prof. Marinel Serban
Liceul de Informatica "Grigore Moisil" Iasi
marinel_serban@yahoo.com
propunător: Prof. Emanuela Cerchez
emanuela.cerchez@gmail.com
Articole recomandate
Probleme recomandate
De la OMI Iaşi 2009: piticot, roci, petrol, barca
De acelaşi autor: premii, finala, fractii, trei, manevre, nrcuv, an, vopsea, opmat, tramvai, bipal, kpal, sarpe, 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, clase, pagini, ornament, ordine, spioni1
Despre şiruri de caractere: scp, ab, sl, nrcuv, rv, kpal, chimie, reteta, 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, clase, vot2, ecp, smiley, charlie, cript, scadere, spioni1, sablon3, expand, culori3, virgule
Chestionare recomandate
surse trimise | ajutor