<?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=4017_-_Skip</id>
	<title>4017 - Skip - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.universitas.ro/index.php?action=history&amp;feed=atom&amp;title=4017_-_Skip"/>
	<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4017_-_Skip&amp;action=history"/>
	<updated>2026-06-17T05:57:14Z</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=4017_-_Skip&amp;diff=7919&amp;oldid=prev</id>
		<title>Ghisa Catalin: Pagină nouă: == Cifrul Skip == Gigel a găsit pe o foaie criptări ale unor cuvinte în cifrul Skip. Criptarea funcționează astfel:  Fie un cuvânt de lungime &#039;&#039;&#039;n&#039;&#039;&#039;. Cuvântul îl vom impărti în două părti, prima parte de lungime &#039;&#039;&#039;[n/2]&#039;&#039;&#039;, iar a doua parte de &#039;&#039;&#039;[(n+1)]/2&#039;&#039;&#039;. Vom scrie prima literă din prima parte, prima literă din a doua parte, a &#039;&#039;&#039;2-a&#039;&#039;&#039; literă din prima parte, a &#039;&#039;&#039;2-a&#039;&#039;&#039; literă din a doua parte, a &#039;&#039;&#039;3-a&#039;&#039;&#039; literă din prima parte, a &#039;&#039;&#039;3-a&#039;&#039;&#039; literă...</title>
		<link rel="alternate" type="text/html" href="https://wiki.universitas.ro/index.php?title=4017_-_Skip&amp;diff=7919&amp;oldid=prev"/>
		<updated>2023-12-12T17:55:00Z</updated>

		<summary type="html">&lt;p&gt;Pagină nouă: == Cifrul Skip == Gigel a găsit pe o foaie criptări ale unor cuvinte în cifrul Skip. Criptarea funcționează astfel:  Fie un cuvânt de lungime &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;. Cuvântul îl vom impărti în două părti, prima parte de lungime &amp;#039;&amp;#039;&amp;#039;[n/2]&amp;#039;&amp;#039;&amp;#039;, iar a doua parte de &amp;#039;&amp;#039;&amp;#039;[(n+1)]/2&amp;#039;&amp;#039;&amp;#039;. Vom scrie prima literă din prima parte, prima literă din a doua parte, a &amp;#039;&amp;#039;&amp;#039;2-a&amp;#039;&amp;#039;&amp;#039; literă din prima parte, a &amp;#039;&amp;#039;&amp;#039;2-a&amp;#039;&amp;#039;&amp;#039; literă din a doua parte, a &amp;#039;&amp;#039;&amp;#039;3-a&amp;#039;&amp;#039;&amp;#039; literă din prima parte, a &amp;#039;&amp;#039;&amp;#039;3-a&amp;#039;&amp;#039;&amp;#039; literă...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Cifrul Skip ==&lt;br /&gt;
Gigel a găsit pe o foaie criptări ale unor cuvinte în cifrul Skip. Criptarea funcționează astfel:&lt;br /&gt;
&lt;br /&gt;
Fie un cuvânt de lungime &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039;. Cuvântul îl vom impărti în două părti, prima parte de lungime &amp;#039;&amp;#039;&amp;#039;[n/2]&amp;#039;&amp;#039;&amp;#039;, iar a doua parte de &amp;#039;&amp;#039;&amp;#039;[(n+1)]/2&amp;#039;&amp;#039;&amp;#039;. Vom scrie prima literă din prima parte, prima literă din a doua parte, a &amp;#039;&amp;#039;&amp;#039;2-a&amp;#039;&amp;#039;&amp;#039; literă din prima parte, a &amp;#039;&amp;#039;&amp;#039;2-a&amp;#039;&amp;#039;&amp;#039; literă din a doua parte, a &amp;#039;&amp;#039;&amp;#039;3-a&amp;#039;&amp;#039;&amp;#039; literă din prima parte, a &amp;#039;&amp;#039;&amp;#039;3-a&amp;#039;&amp;#039;&amp;#039; literă din a doua parte … :.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;AMONG&amp;#039;&amp;#039;&amp;#039; -&amp;gt; &amp;#039;&amp;#039;&amp;#039;AOMNG&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SUSPICIOUS&amp;#039;&amp;#039;&amp;#039; -&amp;gt; &amp;#039;&amp;#039;&amp;#039;SCUISOPUIS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SECRET&amp;#039;&amp;#039;&amp;#039; -&amp;gt; &amp;#039;&amp;#039;&amp;#039;SREECT&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;CIPHER&amp;#039;&amp;#039;&amp;#039; -&amp;gt; &amp;#039;&amp;#039;CHIEPR&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
Criptarea unui text constă în criptarea succesivă a fiecărui cuvânt.&lt;br /&gt;
&lt;br /&gt;
== Cerinta ==&lt;br /&gt;
Se dă un numar c care poate fi doar &amp;#039;&amp;#039;&amp;#039;1&amp;#039;&amp;#039;&amp;#039; sau &amp;#039;&amp;#039;&amp;#039;2&amp;#039;&amp;#039;&amp;#039; și un text în care cuvintele sunt separate printr-un spațiu.&lt;br /&gt;
Pentru &amp;#039;&amp;#039;&amp;#039;c=1&amp;#039;&amp;#039;&amp;#039;, textul reprezintă un mesaj necriptat și se cere să-l afișați în urma criptării.&lt;br /&gt;
Pentru &amp;#039;&amp;#039;&amp;#039;c=2&amp;#039;&amp;#039;&amp;#039;, textul reprezintă un mesaj criptat și se cere să-l afișați în urma decriptării.&lt;br /&gt;
== Date de intrare ==&lt;br /&gt;
Fișierul de intrare &amp;#039;&amp;#039;&amp;#039;skipin.txt&amp;#039;&amp;#039;&amp;#039; citește un număr &amp;#039;&amp;#039;&amp;#039;c&amp;#039;&amp;#039;&amp;#039; și un mesaj.&lt;br /&gt;
== Date de ieșire ==&lt;br /&gt;
Fișierul de ieșire &amp;#039;&amp;#039;&amp;#039;skipout.txt&amp;#039;&amp;#039;&amp;#039; va conține pe prima linie mesajul rezultat în urma operației cerute.&lt;br /&gt;
== Restricţii şi precizări ==&lt;br /&gt;
* 1 &amp;amp;les; lungimea mesajului &amp;amp;les; 1000000&lt;br /&gt;
== Exemplu 1 ==&lt;br /&gt;
; skipin.txt&lt;br /&gt;
 1&lt;br /&gt;
 THERE IS ONE IMPOSTOR AMONG US&lt;br /&gt;
; skipout.txt&lt;br /&gt;
 Datele de intrare corespund restrictiilor impuse&lt;br /&gt;
 TEHRE IS ONE ISMTPOOR AOMNG US&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Exemplu 2 ==&lt;br /&gt;
; skipin.txt&lt;br /&gt;
 -1&lt;br /&gt;
 THERE IS ONE IMPOSTOR AMONG US&lt;br /&gt;
; skipout.txt&lt;br /&gt;
 Datele de intrare nu corespund restrictiilor impuse&lt;br /&gt;
&amp;lt;br&amp;gt;&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;
def skip_cipher(c, text):&lt;br /&gt;
    words = text.split(&amp;#039; &amp;#039;)&lt;br /&gt;
    result = []&lt;br /&gt;
&lt;br /&gt;
    for word in words:&lt;br /&gt;
        n = len(word)&lt;br /&gt;
        part1 = word[:n // 2]&lt;br /&gt;
        part2 = word[n // 2:]&lt;br /&gt;
&lt;br /&gt;
        if c == 1:  # Encryption&lt;br /&gt;
            encrypted_word = &amp;#039;&amp;#039;.join([part1[i] + part2[i] for i in range(len(part1))] + list(part2[len(part1):]))&lt;br /&gt;
            result.append(encrypted_word)&lt;br /&gt;
        elif c == 2:  # Decryption&lt;br /&gt;
            decrypted_word = &amp;#039;&amp;#039;.join(&lt;br /&gt;
                [word[i] for i in range(0, len(word), 2)] + [word[i] for i in range(1, len(word), 2)])&lt;br /&gt;
            result.append(decrypted_word)&lt;br /&gt;
&lt;br /&gt;
    return &amp;#039; &amp;#039;.join(result)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    # Deschidem fișierul de intrare și citim datele&lt;br /&gt;
    with open(&amp;#039;skipin.txt&amp;#039;, &amp;#039;r&amp;#039;) as f:&lt;br /&gt;
        c = int(f.readline().strip())&lt;br /&gt;
        text = f.readline().strip()&lt;br /&gt;
&lt;br /&gt;
    # Verificăm dacă lungimea textului respectă restricțiile și dacă c este 1 sau 2&lt;br /&gt;
    if 1 &amp;lt;= len(text) &amp;lt;= 1000000 and c in [1, 2]:&lt;br /&gt;
        # Dacă da, aplicăm funcția de criptare/decriptare&lt;br /&gt;
        result = skip_cipher(c, text)&lt;br /&gt;
        status = &amp;quot;Datele de intrare corespund restrictiilor impuse.&amp;quot;&lt;br /&gt;
    else:&lt;br /&gt;
        # Dacă nu, nu aplicăm funcția și afișăm un mesaj de eroare&lt;br /&gt;
        result = &amp;quot;&amp;quot;&lt;br /&gt;
        status = &amp;quot;Datele de intrare nu corespund restrictiilor impuse.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # Scriem rezultatul în fișierul de ieșire&lt;br /&gt;
    with open(&amp;#039;skipout.txt&amp;#039;, &amp;#039;w&amp;#039;) as f:&lt;br /&gt;
        f.write(status + &amp;#039;\n&amp;#039; + result)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Explicatie ==&lt;/div&gt;</summary>
		<author><name>Ghisa Catalin</name></author>
	</entry>
</feed>