1751 - Icsuri
Cerința
Într-un regat îndepărtat, există un joc popular printre copii numit "X-uri Magice". În acest joc, copiii desenează două matrici pătratice și încearcă să găsească toate valorile comune dintre cele două matrici. Fiecare matrice este formată din numere întregi, iar scopul este de a găsi toate numerele comune (valori identice) din cele două matrici și să le ordoneze într-o listă crescătoare.
Date de intrare
Programul citește de la tastatură două matrici pătratice de numere întregi.
Date de ieșire
Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse." În următorul rând se va afișa pe ecran lista cu valorile comune ale celor două matrici. Dacă nu există valori comune, se va afișa o listă goală.
În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu corespund restricțiilor impuse."
Restricții și precizări
- 1 ⩽ n (dimensiune matrice) ⩽ 1000
Exemplu 1
- Intrare
3
1 2 3
4 5 6
7 8 9
3
7 2 3
4 0 6
7 8 1
- Iesire
Datele de intrare corespund restricțiilor impuse. [1, 2, 3, 4, 6, 7, 8]
Rezolvare
<syntaxhighlight lang="python" line> def citeste_matrice_patratica():
try: n = int(input("Introduceți dimensiunea matricii pătratice (n): ")) matrice = [] for _ in range(n): rand = list(map(int, input().split())) if len(rand) != n: return None matrice.append(rand) return matrice except ValueError: return None
def valideaza_date(matrice1, matrice2):
if matrice1 and matrice2: if len(matrice1) == len(matrice2) and len(matrice1) <= 1000: if all(len(rand) == len(matrice1) for rand in matrice1) and all(len(rand) == len(matrice2) for rand in matrice2): if all(-10**9 <= elem <= 10**9 for rand in matrice1 for elem in rand) and all(-10**9 <= elem <= 10**9 for rand in matrice2 for elem in rand): return True return False
def intersectie_matrici(matrice1, matrice2):
set1 = {elem for rand in matrice1 for elem in rand} set2 = {elem for rand in matrice2 for elem in rand} intersectie = list(set1 & set2) intersectie.sort() return intersectie
def main():
print("Introduceți prima matrice pătratică:") matrice1 = citeste_matrice_patratica() print("Introduceți a doua matrice pătratică:") matrice2 = citeste_matrice_patratica() if matrice1 is None or matrice2 is None: print("Datele de intrare nu corespund restricțiilor impuse.") return if valideaza_date(matrice1, matrice2): print("Datele de intrare corespund restricțiilor impuse.") rezultat = intersectie_matrici(matrice1, matrice2) print(rezultat) else: print("Datele de intrare nu corespund restricțiilor impuse.")
if __name__ == "__main__":
main()
</syntaxhighlight>