<?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=0726_-_Acoperire_1</id>
	<title>0726 - Acoperire 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=0726_-_Acoperire_1"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0726_-_Acoperire_1&amp;action=history"/>
	<updated>2026-05-01T06:49:00Z</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=0726_-_Acoperire_1&amp;diff=10202&amp;oldid=prev</id>
		<title>RaulOtet: Pagină nouă: Dintr-o suprafaţă pătrată cu latura de &lt;code&gt;N&lt;/code&gt; unităţi care este formată din &lt;code&gt;N*N&lt;/code&gt; pătrăţele cu latura de o unitate se decupează cele &lt;code&gt;4&lt;/code&gt; pătrăţele din colţuri.  = Cerința = Determinaţi o modalitate de a acoperi suprafaţa în întregime cu piese de arie &lt;code&gt;4&lt;/code&gt; unităţi care au forma următoare:  Piesele pot fi si rotite sau întoarse putând astfel să folosim toate cele &lt;code&gt;8&lt;/code&gt; moduri de a le aşeza.  = Date de i...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=0726_-_Acoperire_1&amp;diff=10202&amp;oldid=prev"/>
		<updated>2024-07-31T05:47:36Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Dintr-o suprafaţă pătrată cu latura de &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; unităţi care este formată din &amp;lt;code&amp;gt;N*N&amp;lt;/code&amp;gt; pătrăţele cu latura de o unitate se decupează cele &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; pătrăţele din colţuri.  = Cerința = Determinaţi o modalitate de a acoperi suprafaţa în întregime cu piese de arie &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; unităţi care au forma următoare:  Piesele pot fi si rotite sau întoarse putând astfel să folosim toate cele &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; moduri de a le aşeza.  = Date de i...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Dintr-o suprafaţă pătrată cu latura de &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; unităţi care este formată din &amp;lt;code&amp;gt;N*N&amp;lt;/code&amp;gt; pătrăţele cu latura de o unitate se decupează cele &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; pătrăţele din colţuri.&lt;br /&gt;
&lt;br /&gt;
= Cerința =&lt;br /&gt;
Determinaţi o modalitate de a acoperi suprafaţa în întregime cu piese de arie &amp;lt;code&amp;gt;4&amp;lt;/code&amp;gt; unităţi care au forma următoare:&lt;br /&gt;
&lt;br /&gt;
Piesele pot fi si rotite sau întoarse putând astfel să folosim toate cele &amp;lt;code&amp;gt;8&amp;lt;/code&amp;gt; moduri de a le aşeza.&lt;br /&gt;
&lt;br /&gt;
= Date de intrare =&lt;br /&gt;
Fișierul de intrare &amp;lt;code&amp;gt;acoperire1.in&amp;lt;/code&amp;gt; conține pe prima linie un număr natural &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt;, cu semnificaţia din enunţ.&lt;br /&gt;
&lt;br /&gt;
= Date de ieșire =&lt;br /&gt;
Fișierul de ieșire &amp;lt;code&amp;gt;acoperire1.out&amp;lt;/code&amp;gt; va conține valoarea &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt; pe prima linie dacă problema nu are soluţie, iar în caz contrar va avea următoarea structură: &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; linii cu câte &amp;lt;code&amp;gt;N&amp;lt;/code&amp;gt; valori fiecare reprezentând codificarea suprafeţei. Numerele de pe aceeaşi linie sunt separate prin câte un spaţiu. Poziţiile ocupate de prima piesă aşezată se vor codifica cu &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;, poziţiile ocupate de a doua piesă aşezată se vor codifica cu &amp;lt;code&amp;gt;2&amp;lt;/code&amp;gt; etc. Corespunzător colţurilor lipsă se va scrie valoarea &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= Restricții și precizări =&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;6 ≤ n ≤ 200&amp;lt;/code&amp;gt;&lt;br /&gt;
* Piesele trebuie să fie complet în interiorul zonei;&lt;br /&gt;
* Zona trebuie acoperită integral;&lt;br /&gt;
* Două piese nu se pot suprapune complet sau parţial;&lt;br /&gt;
&lt;br /&gt;
= Exemplu: =&lt;br /&gt;
&amp;lt;code&amp;gt;acoperire1.in&amp;lt;/code&amp;gt;&lt;br /&gt;
 6&lt;br /&gt;
&amp;lt;code&amp;gt;acoperire1.out&amp;lt;/code&amp;gt;&lt;br /&gt;
 0 7 2 2 2 0 &lt;br /&gt;
 3 7 2 4 4 4 &lt;br /&gt;
 3 7 7 4 5 5 &lt;br /&gt;
 3 3 6 1 1 5 &lt;br /&gt;
 6 6 6 8 1 5 &lt;br /&gt;
 0 8 8 8 1 0&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
def place_l_tiles(board, n, top_left_row, top_left_col):&lt;br /&gt;
    # n - dimension of the current board (n x n)&lt;br /&gt;
    if n == 2:&lt;br /&gt;
        # Base case: only one tile can fit, as 4 cells are considered and one corner is missing&lt;br /&gt;
        for i in range(2):&lt;br /&gt;
            for j in range(2):&lt;br /&gt;
                if board[top_left_row + i][top_left_col + j] == 0:&lt;br /&gt;
                    board[top_left_row + i][top_left_col + j] = 1&lt;br /&gt;
        return&lt;br /&gt;
    &lt;br /&gt;
    half = n // 2&lt;br /&gt;
    # Find the center tile to place the L-shaped tromino around&lt;br /&gt;
    # (middle of the top-left, top-right, bottom-left, bottom-right quarters)&lt;br /&gt;
    center_r, center_c = top_left_row + half - 1, top_left_col + half - 1&lt;br /&gt;
&lt;br /&gt;
    # Determine which quadrant is missing the corner cell&lt;br /&gt;
    if board[top_left_row][top_left_col] == -1:&lt;br /&gt;
        missing_quad = 0&lt;br /&gt;
    elif board[top_left_row][top_left_col + n - 1] == -1:&lt;br /&gt;
        missing_quad = 1&lt;br /&gt;
    elif board[top_left_row + n - 1][top_left_col] == -1:&lt;br /&gt;
        missing_quad = 2&lt;br /&gt;
    elif board[top_left_row + n - 1][top_left_col + n - 1] == -1:&lt;br /&gt;
        missing_quad = 3&lt;br /&gt;
    &lt;br /&gt;
    # Fill the center of the current board with a L-shaped tromino&lt;br /&gt;
    tiles = [(center_r, center_c), (center_r, center_c + 1), (center_r + 1, center_c), (center_r + 1, center_c + 1)]&lt;br /&gt;
    # We have four quadrants (0: top-left, 1: top-right, 2: bottom-left, 3: bottom-right)&lt;br /&gt;
    for idx, (i, j) in enumerate(tiles):&lt;br /&gt;
        if idx != missing_quad:&lt;br /&gt;
            board[i][j] = 1&lt;br /&gt;
&lt;br /&gt;
    # Recursively fill each of the four quadrants&lt;br /&gt;
    # Top-left quadrant&lt;br /&gt;
    place_l_tiles(board, half, top_left_row, top_left_col)&lt;br /&gt;
    # Top-right quadrant&lt;br /&gt;
    place_l_tiles(board, half, top_left_row, top_left_col + half)&lt;br /&gt;
    # Bottom-left quadrant&lt;br /&gt;
    place_l_tiles(board, half, top_left_row + half, top_left_col)&lt;br /&gt;
    # Bottom-right quadrant&lt;br /&gt;
    place_l_tiles(board, half, top_left_row + half, top_left_col + half)&lt;br /&gt;
&lt;br /&gt;
# Initialize the board&lt;br /&gt;
N = 4 # Example value, should be a power of 2&lt;br /&gt;
board = [[0 for _ in range(N)] for _ in range(N)]&lt;br /&gt;
&lt;br /&gt;
# Remove corners&lt;br /&gt;
board[0][0] = -1&lt;br /&gt;
board[0][N-1] = -1&lt;br /&gt;
board[N-1][0] = -1&lt;br /&gt;
board[N-1][N-1] = -1&lt;br /&gt;
&lt;br /&gt;
# Place L-shaped tiles starting from the top-left corner of the board&lt;br /&gt;
place_l_tiles(board, N, 0, 0)&lt;br /&gt;
&lt;br /&gt;
# Print the board&lt;br /&gt;
for row in board:&lt;br /&gt;
    print(&amp;#039; &amp;#039;.join(str(cell) for cell in row))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>RaulOtet</name></author>
	</entry>
</feed>