0887 - Nr Anagrame

De la Universitas MediaWiki

Cerinţa

Se dă un şir de caractere ce conţine cuvinte formate din litere mici ale alfabetului englez, separate prin unul sau mai multe spații. Să se determine câte cuvinte din sir sunt anagrame ale ultimului cuvânt, fără a fi identice cu acesta

Date de intrare

Programul va citi de la tastatură şirul dat.

Date de ieșire

Programul va afişa pe ecran un număr C, reprezentând valoarea cerută.

Restricţii şi precizări

  • șirul dat va conține cel mult 255 caractere, litere mici ale alfabetului englez și spații

Exemplul 1

Intrare
arc ingrat din granit car argint arc rating rac argint
Iesire
Datele de intrare corespund restrictiilor impuse
3


Exemplul 2

Intrare
ARC ingrat din granit car argint arc rating rac argint
Iesire
Datele de intrare nu corespund restrictiilor impuse


Rezolvare

def main():
    # Citirea șirului de la tastatură
    sir = input().strip()

    # Verifică dacă șirul respectă restricțiile
    if len(sir) > 255 or not all(c.islower() or c.isspace() for c in sir):
        print("Datele de intrare nu corespund restrictiilor impuse")
        return

    print("Datele de intrare corespund restrictiilor impuse")

    # Separarea șirului în cuvinte
    cuvinte = sir.split()

    # Obținerea ultimului cuvânt și a anagramei sale
    ultimul_cuvant = cuvinte[-1]
    anagrama = sorted(ultimul_cuvant)

    # Calcularea numărului de cuvinte care sunt anagrame ale ultimului cuvânt, dar nu sunt identice cu acesta
    numar_cuvinte = sum(sorted(cuvant) == anagrama and cuvant != ultimul_cuvant for cuvant in cuvinte[:-1])

    # Afișarea numărului de cuvinte
    print(numar_cuvinte)


if __name__ == "__main__":
    main()