3923 - back abc2

From Bitnami MediaWiki
Revision as of 21:46, 9 December 2023 by Gabii (talk | contribs) (am adaugat explicatia)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința

Se citesc două numere naturale n și m. Afișați în ordine lexicografică toate cuvintele care sunt formate din m litere distincte folosind primele n litere mari din alfabet.

Date de intrare

Programul citește de la tastatură numerele n și m, separate prin spații.

Date de ieșire

Programul va afișa pe ecran pe linii separate cuvintele cerute. În cazul în care restricțiile nu sunt îndeplinite, se va afișa mesajul "Nu corespunde restricțiilor".

Restricții și precizări

  • 0 ≤ n ≤ 26, 0 ≤ m ≤ 5
  • m ≤ n

Exemplul 1

Intrare

4 3

Ieșire

ABC
ABD
ACB
ACD
ADB
ADC
BAC
BAD
BCA
BCD
BDA
BDC
CAB
CAD
CBA
CBD
CDA
CDB
DAB
DAC
DBA
DBC
DCA
DCB

Explicație

Primele 4 litere mari sunt {A,B,C,D} și se formează cuvinte cu 3 litere distincte.

Exemplul 2

Intrare

4 3

consola

Nu corespunde restricțiilor.

Rezolvare

<syntaxhighlight lang="python3" line="1"> import itertools

def check_restrictions(n, m):

   if 0 <= n <= 26 and 0 <= m <= 5 and m <= n:
       return True
   else:
       print("Nu corespunde restricțiilor.")
       return False

def generate_words(n, m):

   alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
   letters = alphabet[:n]
   # Generăm toate permutările posibile de lungime m folosind literele primele n din alfabet
   permutations = itertools.permutations(letters, m)
   # Afisăm cuvintele în ordine lexicografică
   for word in sorted(permutations):
       print(.join(word))
  1. Citim numerele n și m de la tastatură

n, m = map(int, input("Introduceți valorile lui n și m (separate prin spațiu): ").split())

  1. Verificăm restricțiile folosind funcția check_restrictions

if check_restrictions(n, m):

   generate_words(n, m)

</syntaxhighlight>