<?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=3856_-_Scytale</id>
	<title>3856 - Scytale - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=3856_-_Scytale"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3856_-_Scytale&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=3856_-_Scytale&amp;diff=8834&amp;oldid=prev</id>
		<title>Zmicala Narcis: Pagină nouă: == Scytale == Cifrul &#039;&#039;&#039;Scytale&#039;&#039;&#039; functioneaza asa: se da un mesaj cu &#039;&#039;&#039;n&#039;&#039;&#039; litere si un numar &#039;&#039;&#039;m&#039;&#039;&#039;; mesajul trebuie asezat intr-o matrice cu &#039;&#039;&#039;m&#039;&#039;&#039; linii si n coloane; pentru mesajul &#039;&#039;&#039;WEAREDISCOVEREDFLEEATONCE&#039;&#039;&#039; cu &#039;&#039;&#039;25&#039;&#039;&#039; de litere si numarul &#039;&#039;&#039;m=3&#039;&#039;&#039;, mesajul va fi pozitionat in matrice asa:  &#039;&#039;&#039;W . . E . . A . . R . . E . . D . . I . . S . . C&#039;&#039;&#039;  &#039;&#039;&#039;. O . . V . . E . . R . . E . . D . . F . . L . .&#039;&#039;&#039;  &#039;&#039;&#039;. . E . . E . . A . . T . . O . . N . . C . . E .&#039;&#039;&#039;...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=3856_-_Scytale&amp;diff=8834&amp;oldid=prev"/>
		<updated>2024-01-03T12:31:40Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Scytale == Cifrul &amp;#039;&amp;#039;&amp;#039;Scytale&amp;#039;&amp;#039;&amp;#039; functioneaza asa: se da un mesaj cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; litere si un numar &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039;; mesajul trebuie asezat intr-o matrice cu &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; linii si n coloane; pentru mesajul &amp;#039;&amp;#039;&amp;#039;WEAREDISCOVEREDFLEEATONCE&amp;#039;&amp;#039;&amp;#039; cu &amp;#039;&amp;#039;&amp;#039;25&amp;#039;&amp;#039;&amp;#039; de litere si numarul &amp;#039;&amp;#039;&amp;#039;m=3&amp;#039;&amp;#039;&amp;#039;, mesajul va fi pozitionat in matrice asa:  &amp;#039;&amp;#039;&amp;#039;W . . E . . A . . R . . E . . D . . I . . S . . C&amp;#039;&amp;#039;&amp;#039;  &amp;#039;&amp;#039;&amp;#039;. O . . V . . E . . R . . E . . D . . F . . L . .&amp;#039;&amp;#039;&amp;#039;  &amp;#039;&amp;#039;&amp;#039;. . E . . E . . A . . T . . O . . N . . C . . E .&amp;#039;&amp;#039;&amp;#039;...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Scytale ==&lt;br /&gt;
Cifrul &amp;#039;&amp;#039;&amp;#039;Scytale&amp;#039;&amp;#039;&amp;#039; functioneaza asa:&lt;br /&gt;
se da un mesaj cu &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; litere si un numar &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039;;&lt;br /&gt;
mesajul trebuie asezat intr-o matrice cu &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039; linii si n coloane;&lt;br /&gt;
pentru mesajul &amp;#039;&amp;#039;&amp;#039;WEAREDISCOVEREDFLEEATONCE&amp;#039;&amp;#039;&amp;#039; cu &amp;#039;&amp;#039;&amp;#039;25&amp;#039;&amp;#039;&amp;#039; de litere si numarul &amp;#039;&amp;#039;&amp;#039;m=3&amp;#039;&amp;#039;&amp;#039;, mesajul va fi pozitionat in matrice asa:&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;W . . E . . A . . R . . E . . D . . I . . S . . C&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;. O . . V . . E . . R . . E . . D . . F . . L . .&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;. . E . . E . . A . . T . . O . . N . . C . . E .&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Cerința ==&lt;br /&gt;
Dandu-se un numar c, mesajul si numarul m:&lt;br /&gt;
* pentru &amp;#039;&amp;#039;&amp;#039;c=1&amp;#039;&amp;#039;&amp;#039;, sa se afiseze mesajul criptat&lt;br /&gt;
* pentru &amp;#039;&amp;#039;&amp;#039;c=2&amp;#039;&amp;#039;&amp;#039;, sa se afiseze mesajul decriptat&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;scytalein.txt&amp;#039;&amp;#039;&amp;#039; conține pe prima linie numărul &amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039;, mesajul si numarul &amp;#039;&amp;#039;&amp;#039;m&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;scytaleout.txt&amp;#039;&amp;#039;&amp;#039; va conține pe prima linie mesajul criptat sau decriptat, in functie de &amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
== Restricții și precizări ==&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;1 ≤ n*m ≤ 1000000&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* mesajul va contine numai litere mari&lt;br /&gt;
== Exemplul 1 ==&lt;br /&gt;
; scytalein.txt&lt;br /&gt;
: 1 WEAREDISCOVEREDFLEEATONCE 3&lt;br /&gt;
; scytaleout.txt&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: WOEEVEAEARRTEEODDNIFCSLEC&lt;br /&gt;
== Exemplul 2 ==&lt;br /&gt;
; scytalein.txt&lt;br /&gt;
: 2 WOEEVEAEARRTEEODDNIFCSLEC 3&lt;br /&gt;
; scytaleout.txt&lt;br /&gt;
: Datele introduse corespund restricțiilor impuse.&lt;br /&gt;
: WEAREDISCOVEREDFLEEATONCE&lt;br /&gt;
== Exemplul 3 ==&lt;br /&gt;
; scytalein.txt&lt;br /&gt;
: 2 WOEEVEAEARRTEEODDNIFCSLEC 300000&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;
# 3856 - Scytale&lt;br /&gt;
def validare(mesaj_validare, m_validare):           # functia de validare a datelor de intrare&lt;br /&gt;
    if len(mesaj_validare) * m_validare &amp;gt; 1000000:&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 criptare(mesaj_criptare, m_criptare):                     # functia de criptare&lt;br /&gt;
    criptat = &amp;quot;&amp;quot;&lt;br /&gt;
    for i in range(m_criptare):&lt;br /&gt;
        for j in range(i, len(mesaj_criptare), m_criptare):&lt;br /&gt;
            criptat += mesaj_criptare[j]&lt;br /&gt;
    return criptat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def decriptare(mesaj_decriptare, m_decriptare):                     # functia de decriptare&lt;br /&gt;
    n = len(mesaj_decriptare) // m_decriptare&lt;br /&gt;
    decriptat = &amp;quot;&amp;quot;&lt;br /&gt;
    for i in range(n):&lt;br /&gt;
        for j in range(i, len(mesaj_decriptare), n):&lt;br /&gt;
            decriptat += mesaj_decriptare[j]&lt;br /&gt;
    return decriptat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;#039;__main__&amp;#039;:&lt;br /&gt;
    fisier_intrare = open(&amp;quot;scytalein.txt&amp;quot;, &amp;quot;r&amp;quot;)         # declararea fisierelor&lt;br /&gt;
    fisier_iesire = open(&amp;quot;scytaleout.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;
        mesaj = fisier_intrare.readline().strip()&lt;br /&gt;
        m = int(fisier_intrare.readline())&lt;br /&gt;
&lt;br /&gt;
        validare(mesaj, m)                 # apelul functiei de validare&lt;br /&gt;
        if cerinta == 1:&lt;br /&gt;
            fisier_iesire.write(criptare(mesaj, m))               # apelul functiei de criptare&lt;br /&gt;
        elif cerinta == 2:&lt;br /&gt;
            fisier_iesire.write(decriptare(mesaj, m))               # apelul functiei de decriptare&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>