<?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=0969_-_Culori1</id>
	<title>0969 - Culori1 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=0969_-_Culori1"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0969_-_Culori1&amp;action=history"/>
	<updated>2026-05-01T07:47:12Z</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=0969_-_Culori1&amp;diff=8236&amp;oldid=prev</id>
		<title>Vasiliu Costel Andrei: Pagină nouă: == Enunț == Într-o cameră sunt aşezate n*m acvarii identice, pe n rânduri, câte m pe fiecare rând, unul lângă altul. În fiecare acvariu se află un singur peşte. Peştele poate fi de culoare roşie (culoare codificată cu r) sau albastră (codificată cu a). La fiecare moment de timp t=1,2,3,.., peştii îşi modifică simultan culoarea astfel: fiecare peşte se colorează în culoarea pe care au avut-o la momentul t-1 majoritatea peştilor din acvariile învecinat...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0969_-_Culori1&amp;diff=8236&amp;oldid=prev"/>
		<updated>2023-12-18T10:35:01Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Enunț == Într-o cameră sunt aşezate n*m acvarii identice, pe n rânduri, câte m pe fiecare rând, unul lângă altul. În fiecare acvariu se află un singur peşte. Peştele poate fi de culoare roşie (culoare codificată cu r) sau albastră (codificată cu a). La fiecare moment de timp t=1,2,3,.., peştii îşi modifică simultan culoarea astfel: fiecare peşte se colorează în culoarea pe care au avut-o la momentul t-1 majoritatea peştilor din acvariile învecinat...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Enunț ==&lt;br /&gt;
Într-o cameră sunt aşezate n*m acvarii identice, pe n rânduri, câte m pe fiecare rând, unul lângă altul. În fiecare acvariu se află un singur peşte. Peştele poate fi de culoare roşie (culoare codificată cu r) sau albastră (codificată cu a). La fiecare moment de timp t=1,2,3,.., peştii îşi modifică simultan culoarea astfel: fiecare peşte se colorează în culoarea pe care au avut-o la momentul t-1 majoritatea peştilor din acvariile învecinate (ca în desenul de mai jos, sunt cel mult 8 acvarii vecine notate cu V1, V2, V3,…, V8). În cazul în care numărul peştilor vecini roşii este egal cu numărul peştilor vecini albaştrii, peştele studiat îşi va păstra culoarea.&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Scrieţi un program care să citească numerele naturale n, m, t şi cele n*m coduri ale culorilor peştilor (cele de la momentul iniţial t=0) şi care să determine şi să afişeze codurile culorilor peştilor de la momentul t.&lt;br /&gt;
&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare culori1in.txt conține&lt;br /&gt;
&lt;br /&gt;
* pe prima linie numerele naturale n, m şi t, separate printr-un singur spaţiu, cu semnificaţia din enunț&lt;br /&gt;
* pe următoarele n linii se află câte m caractere r sau a, pentru fiecare rând de acvarii, format astfel:&lt;br /&gt;
**dacă peştele din acvariul cu numărul de ordine i (1≤i≤m) din rândul curent este roşu, atunci cel de-al i-lea caracter din linia fişierului de intrare, corespunzătoare rândului curent, este r&lt;br /&gt;
**dacă peştele din acvariul cu numărul de ordine i (1≤i≤m) din rândul curent este albastru atunci cel de-al i-lea caracter din linia fişierului de intrare, corespunzătoare rândului curent, este a&lt;br /&gt;
&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire culori1out.txt va conține n linii, fiecare linie va conţine câte m caractere r sau a, reprezentând codurile culorilor peştilor din rândul corespunzător numărului liniei curente din fişier.&lt;br /&gt;
&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* 2 &amp;amp;les; &amp;#039;&amp;#039;&amp;#039;n, m&amp;#039;&amp;#039;&amp;#039; &amp;amp;les; 49&lt;br /&gt;
* 1 &amp;amp;les; &amp;#039;&amp;#039;&amp;#039;t&amp;#039;&amp;#039;&amp;#039; &amp;amp;les; 2.300.000&lt;br /&gt;
&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; culori1in.txt&lt;br /&gt;
: 3 3 1      &lt;br /&gt;
: rar&lt;br /&gt;
: rra   &lt;br /&gt;
: arr&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; culori1out.txt&lt;br /&gt;
: rra&lt;br /&gt;
: rrr&lt;br /&gt;
: rrr&lt;br /&gt;
&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; culori1in.txt&lt;br /&gt;
: 4 5 3&lt;br /&gt;
: rrara&lt;br /&gt;
: aarra&lt;br /&gt;
: aarrr&lt;br /&gt;
: rrraa&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare corespund restricțiilor impuse&lt;br /&gt;
; culori1out.txt&lt;br /&gt;
: aarrr&lt;br /&gt;
: aarrr&lt;br /&gt;
: rrrrr&lt;br /&gt;
: rrrrr&lt;br /&gt;
&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
; Intrare&lt;br /&gt;
; culori1in.txt&lt;br /&gt;
: 1 5 3&lt;br /&gt;
: rrara&lt;br /&gt;
: aarra&lt;br /&gt;
: aarrr&lt;br /&gt;
: rrraa&lt;br /&gt;
; Ieșire&lt;br /&gt;
: Datele de intrare NU corespund restricțiilor impuse&lt;br /&gt;
&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
#0969 - Culori1&lt;br /&gt;
&lt;br /&gt;
def validare_date_intrare(n, m, t, culori):&lt;br /&gt;
    if not (2 &amp;lt;= n &amp;lt; 50 and 2 &amp;lt;= m &amp;lt; 50):&lt;br /&gt;
        return False&lt;br /&gt;
    if not (1 &amp;lt;= t &amp;lt;= 2300000):&lt;br /&gt;
        return False&lt;br /&gt;
    if len(culori) != n:&lt;br /&gt;
        return False&lt;br /&gt;
    for linie in culori:&lt;br /&gt;
        if len(linie) != m:&lt;br /&gt;
            return False&lt;br /&gt;
        if not all(caracter in {&amp;#039;r&amp;#039;, &amp;#039;a&amp;#039;} for caracter in linie):&lt;br /&gt;
            return False&lt;br /&gt;
    return True&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def modifica_culori(n, m, t, culori):&lt;br /&gt;
    directii = [(-1, 0), (-1, 1), (0, 1), (1, 1), (1, 0), (1, -1), (0, -1), (-1, -1)]&lt;br /&gt;
&lt;br /&gt;
    def numar_vecini(x, y):&lt;br /&gt;
        vecini_rosii = 0&lt;br /&gt;
        vecini_albastri = 0&lt;br /&gt;
        for dx, dy in directii:&lt;br /&gt;
            nx, ny = x + dx, y + dy&lt;br /&gt;
            if 0 &amp;lt;= nx &amp;lt; n and 0 &amp;lt;= ny &amp;lt; m:&lt;br /&gt;
                if culori[nx][ny] == &amp;#039;r&amp;#039;:&lt;br /&gt;
                    vecini_rosii += 1&lt;br /&gt;
                elif culori[nx][ny] == &amp;#039;a&amp;#039;:&lt;br /&gt;
                    vecini_albastri += 1&lt;br /&gt;
        return vecini_rosii, vecini_albastri&lt;br /&gt;
&lt;br /&gt;
    def actualizeaza_culoare(x, y):&lt;br /&gt;
        vecini_rosii, vecini_albastri = numar_vecini(x, y)&lt;br /&gt;
        if vecini_rosii &amp;gt; vecini_albastri:&lt;br /&gt;
            return &amp;#039;r&amp;#039;&lt;br /&gt;
        elif vecini_rosii &amp;lt; vecini_albastri:&lt;br /&gt;
            return &amp;#039;a&amp;#039;&lt;br /&gt;
        else:&lt;br /&gt;
            return culori[x][y]&lt;br /&gt;
&lt;br /&gt;
    for _ in range(t):&lt;br /&gt;
        noua_culoare = [[&amp;#039;&amp;#039;] * m for _ in range(n)]&lt;br /&gt;
        for i in range(n):&lt;br /&gt;
            for j in range(m):&lt;br /&gt;
                noua_culoare[i][j] = actualizeaza_culoare(i, j)&lt;br /&gt;
        culori = [&amp;#039;&amp;#039;.join(row) for row in noua_culoare]&lt;br /&gt;
&lt;br /&gt;
    return culori&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    with open(&amp;quot;culori1in.txt&amp;quot;, &amp;quot;r&amp;quot;) as fin:&lt;br /&gt;
        n, m, t = map(int, fin.readline().split())&lt;br /&gt;
        culori = [fin.readline().strip() for _ in range(n)]&lt;br /&gt;
&lt;br /&gt;
    if validare_date_intrare(n, m, t, culori):&lt;br /&gt;
        print(&amp;quot;Datele de intrare corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        rezultat = modifica_culori(n, m, t, culori)&lt;br /&gt;
        with open(&amp;quot;culori1out.txt&amp;quot;, &amp;quot;w&amp;quot;) as fout:&lt;br /&gt;
            fout.write(&amp;#039;\n&amp;#039;.join(rezultat))&lt;br /&gt;
    else:&lt;br /&gt;
        print(&amp;quot;Datele de intrare NU corespund restricțiilor impuse&amp;quot;)&lt;br /&gt;
        exit(0)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vasiliu Costel Andrei</name></author>
	</entry>
</feed>