<?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=1580_-_Schimb</id>
	<title>1580 - Schimb - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=1580_-_Schimb"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1580_-_Schimb&amp;action=history"/>
	<updated>2026-05-01T06:38:56Z</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=1580_-_Schimb&amp;diff=8391&amp;oldid=prev</id>
		<title>AntalKrisztian: Pagină nouă: == Cerinţa == Se dau trei numere naturale &#039;&#039;&#039;n&#039;&#039;&#039;, &#039;&#039;&#039;k&#039;&#039;&#039; și &#039;&#039;&#039;p&#039;&#039;&#039; și &#039;&#039;&#039;n&#039;&#039;&#039; șiruri formate din litere mici ale alfabetului englez. Înlocuiți a &#039;&#039;&#039;k&#039;&#039;&#039;-a literă din fiecare șir cu a &#039;&#039;&#039;p&#039;&#039;&#039;-a literă din alfabet. Dacă șirul are mai puțin de &#039;&#039;&#039;k&#039;&#039;&#039; litere se va scrie oglinditul lui. == Date de intrare == Pe prima linie a fișierului &#039;&#039;&#039;schimbin.txt&#039;&#039;&#039; se află trei numere naturale &#039;&#039;&#039;n&#039;&#039;&#039;, &#039;&#039;&#039;k&#039;&#039;&#039; și &#039;&#039;&#039;p&#039;&#039;&#039;. Pe următoarele &#039;&#039;&#039;n&#039;&#039;&#039; linii se află &#039;&#039;&#039;n&#039;&#039;&#039; șir...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=1580_-_Schimb&amp;diff=8391&amp;oldid=prev"/>
		<updated>2023-12-26T16:43:41Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cerinţa == Se dau trei numere naturale &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; șiruri formate din litere mici ale alfabetului englez. Înlocuiți a &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039;-a literă din fiecare șir cu a &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039;-a literă din alfabet. Dacă șirul are mai puțin de &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; litere se va scrie oglinditul lui. == Date de intrare == Pe prima linie a fișierului &amp;#039;&amp;#039;&amp;#039;schimbin.txt&amp;#039;&amp;#039;&amp;#039; se află trei numere naturale &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039;. Pe următoarele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii se află &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; șir...&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;
Se dau trei numere naturale &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; șiruri formate din litere mici ale alfabetului englez. Înlocuiți a &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039;-a literă din fiecare șir cu a &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039;-a literă din alfabet. Dacă șirul are mai puțin de &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; litere se va scrie oglinditul lui.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Pe prima linie a fișierului &amp;#039;&amp;#039;&amp;#039;schimbin.txt&amp;#039;&amp;#039;&amp;#039; se află trei numere naturale &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;k&amp;#039;&amp;#039;&amp;#039; și &amp;#039;&amp;#039;&amp;#039;p&amp;#039;&amp;#039;&amp;#039;. Pe următoarele &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; linii se află &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; șiruri.&lt;br /&gt;
== Date de ieşire ==&lt;br /&gt;
În fișierul &amp;#039;&amp;#039;&amp;#039;schimbout.txt&amp;#039;&amp;#039;&amp;#039; se vor scrie noile șiruri, fiecare pe un rând nou.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 &amp;amp;les; n, k &amp;amp;les; 10000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 &amp;amp;les; p &amp;amp;les; 26&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* șirurile au cel mult &amp;#039;&amp;#039;&amp;#039;500&amp;#039;&amp;#039;&amp;#039; de caractere&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; schimbin.txt&lt;br /&gt;
 2 4 7&lt;br /&gt;
 abcde&lt;br /&gt;
 efg&lt;br /&gt;
; schimbout.txt&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse.&lt;br /&gt;
 abcge&lt;br /&gt;
 gfe&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; schimbin.txt&lt;br /&gt;
 3 2 3&lt;br /&gt;
 wqysd&lt;br /&gt;
 s&lt;br /&gt;
 sj&lt;br /&gt;
; schimbout.txt&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse.&lt;br /&gt;
 wcysd&lt;br /&gt;
 s&lt;br /&gt;
 sc&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
; schimbin.txt&lt;br /&gt;
 2 4 999599995&lt;br /&gt;
; schimbout.txt&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Rezolvare ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; line&amp;gt;&lt;br /&gt;
# Funcția de validare verifică dacă datele de intrare sunt în intervalul specificat&lt;br /&gt;
def validare(n_validare, k_validare, p_validare, siruri_validare):&lt;br /&gt;
    # Verificăm dacă n, k și p sunt în intervalul specificat&lt;br /&gt;
    if (n_validare &amp;lt;= 0 or n_validare &amp;gt; 10000 or&lt;br /&gt;
            k_validare &amp;lt;= 0 or k_validare &amp;gt; 10000 or p_validare &amp;lt;= 0 or p_validare &amp;gt; 26):&lt;br /&gt;
        raise ValueError  # Ridicăm o eroare dacă n, k sau p nu sunt în intervalul specificat&lt;br /&gt;
    for sir_validare in siruri_validare:    # Parcurgem lista de șiruri&lt;br /&gt;
        # Verificăm dacă lungimea șirului este mai mică decât 500&lt;br /&gt;
        if len(sir_validare) &amp;gt; 500:&lt;br /&gt;
            raise ValueError&lt;br /&gt;
    file_out.write(&amp;quot;Datele de intrare corespund restrictiilor impuse.\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Funcția schimb_sir schimbă a k-a literă din fiecare șir cu a p-a literă din alfabet sau scrie oglinditul șirului&lt;br /&gt;
# dacă șirul are mai puțin de k litere&lt;br /&gt;
def schimb_sir(k_schimb, p_schimb, siruri_schimb):&lt;br /&gt;
    # Definim alfabetul&lt;br /&gt;
    alfabet = &amp;#039;abcdefghijklmnopqrstuvwxyz&amp;#039;&lt;br /&gt;
    # Parcurgem lista de șiruri&lt;br /&gt;
    for i in range(len(siruri_schimb)):&lt;br /&gt;
        # Verificăm dacă șirul are mai puțin de k litere&lt;br /&gt;
        if len(siruri_schimb[i]) &amp;lt; k_schimb:&lt;br /&gt;
            # Scriem oglinditul șirului&lt;br /&gt;
            siruri_schimb[i] = siruri_schimb[i][::-1]&lt;br /&gt;
        else:&lt;br /&gt;
            # Înlocuim a k-a literă din șir cu a p-a literă din alfabet&lt;br /&gt;
            siruri_schimb[i] = siruri_schimb[i][:k_schimb-1] + alfabet[p_schimb-1] + siruri_schimb[i][k_schimb:]&lt;br /&gt;
    return siruri_schimb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    file_in = open(&amp;quot;schimbin.txt&amp;quot;, &amp;quot;r&amp;quot;)&lt;br /&gt;
    file_out = open(&amp;quot;schimbout.txt&amp;quot;, &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
    try:&lt;br /&gt;
        # Citim numărul de șiruri, k și p&lt;br /&gt;
        n_main, k_main, p_main = map(int, file_in.readline().split())&lt;br /&gt;
        # Citim șirurile&lt;br /&gt;
        siruri_main = [file_in.readline().strip() for _ in range(n_main)]&lt;br /&gt;
        # Validăm datele de intrare&lt;br /&gt;
        validare(n_main, k_main, p_main, siruri_main)&lt;br /&gt;
        # Schimbăm șirurile&lt;br /&gt;
        siruri_schimbate = schimb_sir(k_main, p_main, siruri_main)&lt;br /&gt;
        # Scriem șirurile schimbate în fișierul de ieșire&lt;br /&gt;
        for sir in siruri_schimbate:&lt;br /&gt;
            file_out.write(sir + &amp;#039;\n&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
    # Dacă datele de intrare nu sunt valide, afișăm un mesaj de eroare&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        file_out.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
    # Dacă datele de intrare sunt incomplete, afișăm un mesaj de eroare&lt;br /&gt;
    except IndexError:&lt;br /&gt;
        file_out.write(&amp;quot;Datele de intrare nu corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>AntalKrisztian</name></author>
	</entry>
</feed>