<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=0635_-_Vecini_1</id>
	<title>0635 - Vecini 1 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=0635_-_Vecini_1"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0635_-_Vecini_1&amp;action=history"/>
	<updated>2026-05-01T03:41:17Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.universitas.ro/index.php?title=0635_-_Vecini_1&amp;diff=4013&amp;oldid=prev</id>
		<title>Andor Giulia: Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/635/vecini1] == Cerinţa == Se dă o matrice cu &#039;&#039;&#039;n&#039;&#039;&#039; linii și &#039;&#039;&#039;m&#039;&#039;&#039; coloane și elemente numere naturale. Determinați pentru câte dintre elementele matricei toți vecinii au valori diferite între ele. == Date de intrare == Fișierul de intrare &#039;&#039;&#039;vecini1.in&#039;&#039;&#039; conține pe prima linie numerele &#039;&#039;&#039;n m&#039;&#039;&#039;; urmează &#039;&#039;&#039;n&#039;&#039;&#039; linii cu câte &#039;&#039;&#039;m&#039;&#039;&#039; numere naturale separate prin spații – elementele matricei. == Date de ieșire == D...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0635_-_Vecini_1&amp;diff=4013&amp;oldid=prev"/>
		<updated>2023-04-22T12:14:39Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Sursă: [https://www.pbinfo.ro/probleme/635/vecini1] == Cerinţa == Se dă o matrice cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii și &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; coloane și elemente numere naturale. Determinați pentru câte dintre elementele matricei toți vecinii au valori diferite între ele. == Date de intrare == Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;vecini1.in&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numerele &amp;#039;&amp;#039;&amp;#039;n m&amp;#039;&amp;#039;&amp;#039;; urmează &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii cu câte &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; numere naturale separate prin spații – elementele matricei. == Date de ieșire == D...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Sursă: [https://www.pbinfo.ro/probleme/635/vecini1]&lt;br /&gt;
== Cerinţa ==&lt;br /&gt;
Se dă o matrice cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii și &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; coloane și elemente numere naturale. Determinați pentru câte dintre elementele matricei toți vecinii au valori diferite între ele.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;vecini1.in&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numerele &amp;#039;&amp;#039;&amp;#039;n m&amp;#039;&amp;#039;&amp;#039;; urmează &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii cu câte &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; numere naturale separate prin spații – elementele matricei.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Dacă datele sunt introduse corect, pe ecran se va afișa: &amp;quot;Datele sunt corecte.&amp;quot;.Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;vecini1.out&amp;#039;&amp;#039;&amp;#039; va conține pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;C&amp;#039;&amp;#039;&amp;#039;, reprezentând valoarea cerută. În caz contrar, se va afișa pe ecran: &amp;quot;Datele nu sunt comform restricțiilor impuse.&amp;quot;. &lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤ n,m ≤ 100&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* elementele matricei vor fi mai mici decât &amp;#039;&amp;#039;&amp;#039;1 000 000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* considerăm că un element al matricei poate avea patru vecini: elementele situate pe aceeași linie și pe coloanele adiacente și elementele aflate pe aceeași coloană și liniile adiacente&lt;br /&gt;
== Exemple ==&lt;br /&gt;
=== Exemplu 1 ===&lt;br /&gt;
; &amp;#039;&amp;#039;&amp;#039;vecini1.in&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:4 5&lt;br /&gt;
: 6 6 4 6 6 &lt;br /&gt;
: 2 2 6 4 6 &lt;br /&gt;
: 1 1 7 3 6 &lt;br /&gt;
: 6 3 6 5 6&lt;br /&gt;
; &amp;#039;&amp;#039;&amp;#039;vecini1.out&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
: 9&lt;br /&gt;
==== Explicatie ====&lt;br /&gt;
Cele &amp;#039;&amp;#039;&amp;#039;9&amp;#039;&amp;#039;&amp;#039; elemente sunt marcate mai jos:&lt;br /&gt;
: &amp;#039;&amp;#039;&amp;#039;6	6&amp;#039;&amp;#039;&amp;#039;	4	6	6&lt;br /&gt;
: &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039;	2	6	4	6&lt;br /&gt;
: &amp;#039;&amp;#039;&amp;#039;1	1&amp;#039;&amp;#039;&amp;#039;	7	&amp;#039;&amp;#039;&amp;#039;3&amp;#039;&amp;#039;&amp;#039;	6&lt;br /&gt;
: &amp;#039;&amp;#039;&amp;#039;6&amp;#039;&amp;#039;&amp;#039;	3	&amp;#039;&amp;#039;&amp;#039;6&amp;#039;&amp;#039;&amp;#039;	5	&amp;#039;&amp;#039;&amp;#039;6&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
==Rezolvare==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def citire_matrice():&lt;br /&gt;
    # Deschide fișierul de intrare și citește n, m și p&lt;br /&gt;
    with open(&amp;quot;vecini1.in&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        line = fin.readline().split()&lt;br /&gt;
        if len(line) != 2:&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
        n, m = map(int, line)&lt;br /&gt;
        if not (1 &amp;lt;= n &amp;lt;= 100 and 1 &amp;lt;= m &amp;lt;= 100):&lt;br /&gt;
            print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
            exit()&lt;br /&gt;
        matrice = []&lt;br /&gt;
        # Citește matricea din fișierul de intrare&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            row = list(map(int, fin.readline().split()))&lt;br /&gt;
            # Verifică dacă elementele matricei sunt conform cerințelor&lt;br /&gt;
            if not all(x &amp;lt;= 1000000 for x in row):&lt;br /&gt;
                print(&amp;quot;Datele nu sunt conform restrictiilor impuse.&amp;quot;)&lt;br /&gt;
                exit()&lt;br /&gt;
&lt;br /&gt;
            matrice.append(row)&lt;br /&gt;
&lt;br /&gt;
        return n, m, matrice&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def vecini1(n, m, matrice):&lt;br /&gt;
    a = [[0] * (m + 2) for i in range(n + 2)]&lt;br /&gt;
    cnt = 0&lt;br /&gt;
&lt;br /&gt;
    # Adăugarea de margini de numere mari în matrice&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        for j in range(1, m + 1):&lt;br /&gt;
            a[i][j] = matrice[i-1][j-1]&lt;br /&gt;
        a[i][0] = 1000001&lt;br /&gt;
        a[i][m + 1] = 1000002&lt;br /&gt;
    for j in range(1, m + 1):&lt;br /&gt;
        a[0][j] = 1000003&lt;br /&gt;
        a[n + 1][j] = 1000004&lt;br /&gt;
&lt;br /&gt;
    # Parcurgerea matricei pentru a verifica vecinii&lt;br /&gt;
    for i in range(1, n + 1):&lt;br /&gt;
        for j in range(1, m + 1):&lt;br /&gt;
            if a[i][j - 1] != a[i][j + 1] and a[i][j - 1] != a[i - 1][j] and a[i][j - 1] != a[i + 1][j] and a[i][j + 1] != a[i - 1][j] and a[i - 1][j] != a[i + 1][j] and a[i][j + 1] != a[i + 1][j]:&lt;br /&gt;
                cnt += 1&lt;br /&gt;
&lt;br /&gt;
    return cnt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if _name_ == &amp;quot;_main_&amp;quot;:&lt;br /&gt;
    n, m, matrice = citire_matrice()&lt;br /&gt;
    col_divizibile = vecini1(n, m, matrice)&lt;br /&gt;
    with open(&amp;quot;vecini1.out&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
        fout.write(str(col_divizibile) + &amp;quot;\n&amp;quot;)&lt;br /&gt;
    print(&amp;quot;Numarul de elemente cu toti vecinii diferiti intre ei este:&amp;quot;, col_divizibile)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Explicații ==&lt;br /&gt;
 Acest cod este scris în limbajul de programare Python și conține două funcții:&lt;br /&gt;
 &lt;br /&gt;
 Funcția citire_matrice():&lt;br /&gt;
&lt;br /&gt;
 Deschide fișierul &amp;quot;vecini1.in&amp;quot; și citește din el două numere întregi, n și m.&lt;br /&gt;
 Verifică dacă valorile citite respectă restricțiile impuse (n și m trebuie să fie între 1 și 100).&lt;br /&gt;
 Citește matricea de dimensiune n x m din fișier, verificând dacă valorile sunt conforme cu restricțiile (toate elementele matricei trebuie să fie mai mici sau egale cu 1000000).&lt;br /&gt;
 Returnează dimensiunile matricei n și m, împreună cu matricea citită.&lt;br /&gt;
 Funcția vecini1(n, m, matrice):&lt;br /&gt;
&lt;br /&gt;
 Inițializează o matrice a cu n+2 rânduri și m+2 coloane, toate inițializate cu valoarea 0.&lt;br /&gt;
 Adaugă o margine de numere mari în jurul matricei matrice, astfel încât să fie mai ușor de verificat vecinii.&lt;br /&gt;
 Parcurge matricea a și verifică dacă fiecare element are toți vecinii diferiți între ei.&lt;br /&gt;
 În caz afirmativ, incrementeză numărul de astfel de elemente.&lt;br /&gt;
 Returnează numărul de elemente cu toți vecinii diferiți între ei.&lt;br /&gt;
 La final, se citește matricea din fișierul &amp;quot;vecini1.in&amp;quot;, se apelează funcția vecini1() cu parametrii corespunzători și se scrie rezultatul în fișierul &amp;quot;vecini1.out&amp;quot;. Rezultatul este afișat și în consolă&lt;/div&gt;</summary>
		<author><name>Andor Giulia</name></author>
	</entry>
</feed>