0135 - Sablon
Cerința[edit | edit source]
Un șir de caractere s este șablon pentru un șir de caractere x dacă are aceeași lungime cu x și este alcătuit numai din caractere ale mulțimii {*, #, ?}, iar pe fiecare poziție din s în care apare * în x apare vocală, pe fiecare poziție din s în care apare # în x apare consoană, iar pe fiecare poziție din s în care apare ? în x putem avea orice caracter. Scrieți un program care citește de tastatură două șiruri de cel mult 30 caractere de aceeași lungime care conțin doar litere mici ale alfabetului englez și construiește în memorie și apoi afișează pe ecran un cel mai bun șablon comun al lor, adică șablonul comun cu număr minim de caractere ?.
Date de intrare[edit | edit source]
Programul citeşte de la tastatură cele două șiruri, pe acelaşi rând, separate printr-un spaţiu.
Date de ieșire[edit | edit source]
Programul afişează pe ecran cel mai bun șablon comun.
Restricții și precizări[edit | edit source]
- se consideră vocale caracterele din mulțimea {a, e, i, o, u};
Exemplul 1[edit | edit source]
- Intrare
- diamant pierdut
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- #**#??#
Exemplul 2[edit | edit source]
- Intrare
- tttttt mmmmm
- Ieșire
- Datele de intrare nu corespund restricțiilor impuse.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line="1">
- 0135 - Sablon
def compare_strings(a, b):
result = for i in range(len(a)): if (a[i] in ['a', 'e', 'i', 'o', 'u']) and (b[i] in ['a', 'e', 'i', 'o', 'u']): result += '*' # daca ambele caractere sunt vocale, adaugam un asterisc elif (a[i] in ['a', 'e', 'i', 'o', 'u']) and (b[i] not in ['a', 'e', 'i', 'o', 'u']): result += '?' #daca primul caracter este vocala, iar al doilea nu este, adaugam un semn de intrebare elif (a[i] not in ['a', 'e', 'i', 'o', 'u']) and (b[i] in ['a', 'e', 'i', 'o', 'u']): result += '?' #daca primul caracter nu este vocala, iar al doilea este vocala, adaugam un semn de intrebare else: result += '#' #daca ambele caractere nu sunt vocale, adaugam un diez return result
if __name__ == '__main__':
a, b = input().split() #verificarea restrictiilor if len(a) <= 30 and len(b) <= 30 and any(char in ['a', 'e', 'i', 'o', 'u'] for char in a + b): print("Datele de intrare corespund restricțiilor impuse.") result = compare_strings(a, b) print(result) else: print("Datele de intrare nu corespund restricțiilor impuse.")
</syntaxhighlight>