0135 - Sablon

De la Universitas MediaWiki

Cerința

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

Programul citeşte de la tastatură cele două șiruri, pe acelaşi rând, separate printr-un spaţiu.

Date de ieșire

Programul afişează pe ecran cel mai bun șablon comun.

Restricții și precizări

  • se consideră vocale caracterele din mulțimea {a, e, i, o, u};

Exemplul 1

Intrare
diamant pierdut
Ieșire
Datele de intrare corespund restricțiilor impuse.
#**#??#

Exemplul 2

Intrare
tttttt mmmmm
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare

#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.")