<?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=3616_-_Adfgx</id>
	<title>3616 - Adfgx - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3616_-_Adfgx"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3616_-_Adfgx&amp;action=history"/>
	<updated>2026-05-01T08:25:21Z</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=3616_-_Adfgx&amp;diff=8831&amp;oldid=prev</id>
		<title>Zmicala Narcis: Pagină nouă: Cifrul &#039;&#039;&#039;ADFGX&#039;&#039;&#039; este un cifru care folosește o matrice pătratică &#039;&#039;&#039;5x5&#039;&#039;&#039; și o &#039;&#039;&#039;cheie&#039;&#039;&#039;. În matricea pătratică, liniile și coloanele vor fi numerotate cu litere. Avem această matrice ca exemplu. :   A D F G X : A a b c d e : D f g h i j : F k l m n o : G p q r s t : X u v w x y Fiecărei litere îi va corespunde un &#039;&#039;&#039;cod&#039;&#039;&#039; format din linie și coloană. Spre exemplu pentru litera &#039;&#039;&#039;t&#039;&#039;&#039; din matricea de mai sus codul este &#039;&#039;&#039;GX&#039;&#039;&#039;. Literele din fiecare cod s...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3616_-_Adfgx&amp;diff=8831&amp;oldid=prev"/>
		<updated>2024-01-03T11:55:07Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: Cifrul &amp;#039;&amp;#039;&amp;#039;ADFGX&amp;#039;&amp;#039;&amp;#039; este un cifru care folosește o matrice pătratică &amp;#039;&amp;#039;&amp;#039;5x5&amp;#039;&amp;#039;&amp;#039; și o &amp;#039;&amp;#039;&amp;#039;cheie&amp;#039;&amp;#039;&amp;#039;. În matricea pătratică, liniile și coloanele vor fi numerotate cu litere. Avem această matrice ca exemplu. :   A D F G X : A a b c d e : D f g h i j : F k l m n o : G p q r s t : X u v w x y Fiecărei litere îi va corespunde un &amp;#039;&amp;#039;&amp;#039;cod&amp;#039;&amp;#039;&amp;#039; format din linie și coloană. Spre exemplu pentru litera &amp;#039;&amp;#039;&amp;#039;t&amp;#039;&amp;#039;&amp;#039; din matricea de mai sus codul este &amp;#039;&amp;#039;&amp;#039;GX&amp;#039;&amp;#039;&amp;#039;. Literele din fiecare cod s...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Cifrul &amp;#039;&amp;#039;&amp;#039;ADFGX&amp;#039;&amp;#039;&amp;#039; este un cifru care folosește o matrice pătratică &amp;#039;&amp;#039;&amp;#039;5x5&amp;#039;&amp;#039;&amp;#039; și o &amp;#039;&amp;#039;&amp;#039;cheie&amp;#039;&amp;#039;&amp;#039;. În matricea pătratică, liniile și coloanele vor fi numerotate cu litere. Avem această matrice ca exemplu.&lt;br /&gt;
:   A D F G X&lt;br /&gt;
: A a b c d e&lt;br /&gt;
: D f g h i j&lt;br /&gt;
: F k l m n o&lt;br /&gt;
: G p q r s t&lt;br /&gt;
: X u v w x y&lt;br /&gt;
Fiecărei litere îi va corespunde un &amp;#039;&amp;#039;&amp;#039;cod&amp;#039;&amp;#039;&amp;#039; format din linie și coloană.&lt;br /&gt;
Spre exemplu pentru litera &amp;#039;&amp;#039;&amp;#039;t&amp;#039;&amp;#039;&amp;#039; din matricea de mai sus codul este &amp;#039;&amp;#039;&amp;#039;GX&amp;#039;&amp;#039;&amp;#039;. Literele din fiecare cod se așează sub fiecare literă din cheie. Spre exemplu pentru cheia mar și mesajul atac, folosind matricea de mai sus vom avea:&lt;br /&gt;
: m a r&lt;br /&gt;
: A A G&lt;br /&gt;
: X A A&lt;br /&gt;
: A F&lt;br /&gt;
După această etapă se sortează literele din cheie crescător și obținem.&lt;br /&gt;
: a m r&lt;br /&gt;
: A A G =&amp;gt;   AAF AXA GA&lt;br /&gt;
: A X A&lt;br /&gt;
: F A&lt;br /&gt;
Acela este mesajul codificat.&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Se citeste un text. Sa se afiseze textul codificat folosind cifrul &amp;#039;&amp;#039;&amp;#039;ADFGX&amp;#039;&amp;#039;&amp;#039;, daca numarul cerintei este &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039;, iar daca numarul cerinta este &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; se va afisa textul decodificat.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Pe prima linie a fisierului de intrare &amp;#039;&amp;#039;&amp;#039;adfgxin.txt&amp;#039;&amp;#039;&amp;#039; se va afla un numar, reprezentand cerinta.&lt;br /&gt;
Pe a doua linie se va afla o matrice &amp;#039;&amp;#039;&amp;#039;5 x 5&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
Pe a treia linie se afla &amp;#039;&amp;#039;&amp;#039;cheia&amp;#039;&amp;#039;&amp;#039; folosita pentru codificare.&lt;br /&gt;
Pe a patra linie se va afisa &amp;#039;&amp;#039;&amp;#039;mesajul&amp;#039;&amp;#039;&amp;#039; ce trebuie codificat/decodificat,in functie de cerinta.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Se va afisa mesajul codificat/decodificat.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;lungimea mesajului ≤ 100000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;textul va contine litere mici ale alfabetului englez&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Pentru &amp;#039;&amp;#039;&amp;#039;cerinta 2&amp;#039;&amp;#039;&amp;#039;, mesajul ce trebuie decodificat va contine &amp;#039;&amp;#039;&amp;#039;litere mari&amp;#039;&amp;#039;&amp;#039;. Pentru cerinta 1 mesajul codificat va fi afisat tot cu &amp;#039;&amp;#039;&amp;#039;litere mari&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; adfgxin.txt&lt;br /&gt;
: 1&lt;br /&gt;
: abcde&lt;br /&gt;
: fghij&lt;br /&gt;
: klmno&lt;br /&gt;
: pqrst&lt;br /&gt;
: uvwxy&lt;br /&gt;
: pbinfo&lt;br /&gt;
: romaniiatacacetatea&lt;br /&gt;
; adfgxout.txt&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: FAGAFAA FDGAGA FFAAAG XGAFXX FGXAXX GADAAAA&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; adfgxin.txt&lt;br /&gt;
: 1&lt;br /&gt;
: abcde&lt;br /&gt;
: fghij&lt;br /&gt;
: klmno&lt;br /&gt;
: pqrst&lt;br /&gt;
: uvwxyz&lt;br /&gt;
: pbinfo&lt;br /&gt;
: romaniiatacacetatea1&lt;br /&gt;
; adfgxout.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;
# 3616 - Adfgx&lt;br /&gt;
def validare(matrice_validare, mesaj_validare):           # functia de validare a datelor de intrare&lt;br /&gt;
    if len(mesaj_validare) &amp;gt; 100000:&lt;br /&gt;
        raise ValueError&lt;br /&gt;
&lt;br /&gt;
    for linie in matrice_validare:&lt;br /&gt;
        if len(linie) != 5:    # fiecare linie trebuie sa aiba 5 caractere&lt;br /&gt;
            raise ValueError&lt;br /&gt;
&lt;br /&gt;
    fisier_iesire.write(&amp;quot;Datele introduse corespund restrictiilor impuse.\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def codificare(matrice_codificare, mesaj_codificare):                     # functia de rezolvare&lt;br /&gt;
    codificat = &amp;quot;&amp;quot;&lt;br /&gt;
    for litera in mesaj_codificare:&lt;br /&gt;
        for i in range(5):&lt;br /&gt;
            for j in range(5):&lt;br /&gt;
                if matrice_codificare[i][j] == litera:&lt;br /&gt;
                    codificat += &amp;quot;ADFGX&amp;quot;[i] + &amp;quot;ADFGX&amp;quot;[j]&lt;br /&gt;
    return codificat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    fisier_intrare = open(&amp;quot;adfgxin.txt&amp;quot;, &amp;quot;r&amp;quot;)         # declararea fisierelor&lt;br /&gt;
    fisier_iesire = open(&amp;quot;adfgxout.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;
        cerinta = int(fisier_intrare.readline())&lt;br /&gt;
        matrice = [list(fisier_intrare.readline().strip()) for _ in range(5)]&lt;br /&gt;
        cheie = fisier_intrare.readline().strip()&lt;br /&gt;
        mesaj = fisier_intrare.readline().strip()&lt;br /&gt;
&lt;br /&gt;
        validare(matrice, mesaj)                 # apelul functiei de validare&lt;br /&gt;
        if cerinta == 1:&lt;br /&gt;
            fisier_iesire.write(codificare(matrice, mesaj))               # apelul functiei de rezolvare&lt;br /&gt;
&lt;br /&gt;
    except ValueError:&lt;br /&gt;
        fisier_iesire.write(&amp;quot;Datele introduse nu corespund restrictiilor impuse.&amp;quot;)&lt;br /&gt;
    except IndexError:&lt;br /&gt;
        fisier_iesire.write(&amp;quot;Datele introduse 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>