<?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=1229_-_Matrice_Div_Et_Imp</id>
	<title>1229 - Matrice Div Et Imp - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1229_-_Matrice_Div_Et_Imp"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1229_-_Matrice_Div_Et_Imp&amp;action=history"/>
	<updated>2026-05-02T01:22:19Z</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=1229_-_Matrice_Div_Et_Imp&amp;diff=8782&amp;oldid=prev</id>
		<title>Zmicala Narcis: Pagină nouă: == Cerința == Marian a fost foarte interesat de metoda divide et impera și a primit de la profesorul său o problemă: se dă o matrice de dimensiune 2^n și ea trebuie parcursă după o anumită regulă bazată pe divide et impera. Pe baza a trei exemple, el trebuie să descopere regula și s-o aplice . Din păcate, acesta nu reusește și vă cere ajutorul. Vrea o rezolvare foarte eficienta atât din punct de vedere al timpului de execuție cât și a limitei de memorie....</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1229_-_Matrice_Div_Et_Imp&amp;diff=8782&amp;oldid=prev"/>
		<updated>2024-01-02T18:24:22Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerința == Marian a fost foarte interesat de metoda divide et impera și a primit de la profesorul său o problemă: se dă o matrice de dimensiune 2^n și ea trebuie parcursă după o anumită regulă bazată pe divide et impera. Pe baza a trei exemple, el trebuie să descopere regula și s-o aplice . Din păcate, acesta nu reusește și vă cere ajutorul. Vrea o rezolvare foarte eficienta atât din punct de vedere al timpului de execuție cât și a limitei de memorie....&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Cerința ==&lt;br /&gt;
Marian a fost foarte interesat de metoda divide et impera și a primit de la profesorul său o problemă: se dă o matrice de dimensiune 2^n și ea trebuie parcursă după o anumită regulă bazată pe divide et impera. Pe baza a trei exemple, el trebuie să descopere regula și s-o aplice . Din păcate, acesta nu reusește și vă cere ajutorul. Vrea o rezolvare foarte eficienta atât din punct de vedere al timpului de execuție cât și a limitei de memorie.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;matrice_div_et_impin.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, iar pe celelalte &amp;#039;&amp;#039;&amp;#039;2^n&amp;#039;&amp;#039;&amp;#039; linii câte &amp;#039;&amp;#039;&amp;#039;2^n&amp;#039;&amp;#039;&amp;#039; numere naturale nenule separate prin spații.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;matrice_div_et_impout.txt&amp;#039;&amp;#039;&amp;#039; va conține o linie cu cele &amp;#039;&amp;#039;&amp;#039;2^n*2^n&amp;#039;&amp;#039;&amp;#039; numere ale matricei , parcurse după respectiva regulă.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;0 ≤ n ≤ 9&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât &amp;#039;&amp;#039;&amp;#039;1.000.000.000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; matrice_div_et_impin.txt&lt;br /&gt;
: 1&lt;br /&gt;
: 1 2 &lt;br /&gt;
: 3 4&lt;br /&gt;
; matrice_div_et_impout.txt&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 1 4 2 3 &lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; matrice_div_et_impin.txt&lt;br /&gt;
: 2&lt;br /&gt;
: 15 12 13 14&lt;br /&gt;
: 36 56 34 58&lt;br /&gt;
: 98 80 79 11&lt;br /&gt;
: 10 43 47 50&lt;br /&gt;
; matrice_div_et_impout.txt&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 15 56 12 36 79 50 11 47 13 58 14 34 98 43 80 10 &lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
; matrice_div_et_impin.txt&lt;br /&gt;
: 3&lt;br /&gt;
: 1 2 3 4 5 6 7 8&lt;br /&gt;
: 9 10 11 12 13 14 15 16&lt;br /&gt;
: 17 18 19 20 21 22 23 24&lt;br /&gt;
: 25 26 27 28 29 30 31 32&lt;br /&gt;
: 33 34 35 36 37 38 39 40&lt;br /&gt;
: 41 42 43 44 45 46 47 48&lt;br /&gt;
: 49 50 51 52 53 54 55 56&lt;br /&gt;
: 57 58 59 60 61 62 63 64&lt;br /&gt;
; matrice_div_et_impout.txt&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: 1 10 2 9 19 28 20 27 3 12 4 11 17 26 18 25 37 46 38 45 55 64 56 63 39 48 40 47 53 62 54 61 5 14 6 13 23 32 24 31 7 16 8 15 21 30 22 29 33 42 34 41 51 60 52 59 35 44 36 43 49 58 50 57&lt;br /&gt;
== Exemplul 4 ==&lt;br /&gt;
; matrice_div_et_impin.txt&lt;br /&gt;
: 2&lt;br /&gt;
: 1 2 3 4&lt;br /&gt;
: 5 6 7 8&lt;br /&gt;
: 9 10 11 12&lt;br /&gt;
: 13 14 15 1000000001&lt;br /&gt;
; matrice_div_et_impout.txt&lt;br /&gt;
: Datele introduse nu corespund restricțiilor impuse.&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;
# 1229 - Matrice Div Et Imp&lt;br /&gt;
def validare(dimensiune_n, lista_matrice1):           # functia de validare a datelor de intrare&lt;br /&gt;
    if dimensiune_n &amp;lt; 0 or dimensiune_n &amp;gt; 9:&lt;br /&gt;
        raise ValueError&lt;br /&gt;
&lt;br /&gt;
    for linie in lista_matrice1:&lt;br /&gt;
        for numar in linie:&lt;br /&gt;
            if numar &amp;lt; 1 or numar &amp;gt; 1000000000:&lt;br /&gt;
                raise ValueError&lt;br /&gt;
&lt;br /&gt;
    fisier_iesire.write(&amp;quot;Datele de intrare corespund restrictiilor impuse\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def parcurgere(dimensiune_n, lista_matrice1, x, y):  # functia de rezolvare&lt;br /&gt;
    if dimensiune_n == 0:&lt;br /&gt;
        return [lista_matrice1[x][y]]&lt;br /&gt;
    else:&lt;br /&gt;
        dimensiune_n -= 1&lt;br /&gt;
        dim = 2 ** dimensiune_n&lt;br /&gt;
        return (parcurgere(dimensiune_n, lista_matrice1, x, y) +&lt;br /&gt;
                parcurgere(dimensiune_n, lista_matrice1, x + dim, y + dim) +&lt;br /&gt;
                parcurgere(dimensiune_n, lista_matrice1, x, y + dim) +&lt;br /&gt;
                parcurgere(dimensiune_n, lista_matrice1, x + dim, y))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    fisier_intrare = open(&amp;quot;matrice_div_et_impin.txt&amp;quot;, &amp;quot;r&amp;quot;)         # declararea fisierelor&lt;br /&gt;
    fisier_iesire = open(&amp;quot;matrice_div_et_impout.txt&amp;quot;, &amp;quot;w&amp;quot;)       # fisierul out trebuie declarat cu optiunea &amp;quot;w&amp;quot; (write)&lt;br /&gt;
&lt;br /&gt;
    try:&lt;br /&gt;
        dim_n = int(fisier_intrare.readline())&lt;br /&gt;
        lista_matrice = [list(map(int, fisier_intrare.readline().split())) for _ in range(2**dim_n)]&lt;br /&gt;
&lt;br /&gt;
        validare(dim_n, lista_matrice)                 # apelul functiei de validare&lt;br /&gt;
        rezultat = parcurgere(dim_n, lista_matrice, 0, 0)  # apelul functiei de rezolvare&lt;br /&gt;
        fisier_iesire.write(&amp;#039; &amp;#039;.join(map(str, rezultat)) + &amp;#039;\n&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        fisier_iesire.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zmicala Narcis</name></author>
	</entry>
</feed>