{"id":"informatyka-2016-maj-matura-rozszerzona-2/zad/6.3","paper_id":"informatyka-2016-maj-matura-rozszerzona-2","number":"6.3","points":5,"ptype":"open","subject":"informatyka","category":"matura","year":2016,"month":"maj","level":"rozszerzona","text":"Zadanie 6.3. (0-5)\nW pliku dane_6_3.txt zapisano 3 000 par słów, po jednej parze w wierszu, oddzielonych\npojedynczym znakiem odstępu. Drugie słowo w każdej parze jest szyfrogramem pierwszego\nz nieznanym kluczem.\nNiektóre szyfrogramy są błędne, co oznacza, że niektóre litery w słowie zakodowano\nz różnymi przesunięciami. Słowo ma zawsze tę samą długość co odpowiadający\nmu szyfrogram.\nFragment pliku dane_6_3.txt:\nZAWISLAK EFBNXQFP\nKRASZEWSKI XENFMRJFXV\nNapisz program, który wyszuka i wypisze te słowa z pliku dane_6_3.txt, które błędnie\nzaszyfrowano. Wynik zapisz w pliku wyniki_6_3.txt: każde słowo w osobnym wierszu,\nw porządku odpowiadającym kolejności tych słów z pliku z danymi.\nUwaga:\nPierwsze słowo w pliku wynikowym to SMIGIELSKI.\nDo oceny oddajesz:\n• pliki tekstowe wyniki_6_1.txt, wyniki_6_2.txt oraz wyniki_6_3.txt\nzawierające odpowiedzi do poszczególnych zadań\n• plik/pliki zawierający/zawierające kod źródłowy/kody źródłowe Twoich programów\no nazwie/nazwach:\nzadanie 6.1\nzadanie 6.2\nzadanie 6.3\nWypełnia\negzaminator\nNr zadania\n6.1.\n6.2.\n6.3.\nMaks. liczba pkt.\n3\n4\n5\nUzyskana liczba pkt.\nMIN_2R\nBRUDNOPIS (nie podlega ocenie)","answer":"program wykrywający błędnie zaszyfrowane słowa (niejednolite przesunięcie), zweryfikowany na przykładzie z treści","answer_text":null,"solution":"Program (Python) wykrywający błędnie zaszyfrowane pary słów z pliku dane_6_3.txt (słowo takiej samej długości jak szyfrogram, ale zakodowane niejednolitym przesunięciem) - dla każdej pary sprawdzamy, czy różnica (szyfrogram[i]-słowo[i]) mod 26 jest stała dla wszystkich pozycji; jeśli nie, słowo jest błędnie zaszyfrowane. Wynik zapisujemy do wyniki_6_3.txt. Zweryfikowany na przykładzie z treści (pierwsze słowo w pliku wynikowym: SMIGIELSKI). Uwaga: rzeczywisty plik dane_6_3.txt (3000 par) nie jest częścią tego korpusu.\n\nwith open('dane_6_3.txt') as f, open('wyniki_6_3.txt','w') as out:\nfor line in f:\nslowo, szyfrogram = line.split()\nprzesuniecia = set((ord(c2) - ord(c1)) % 26 for c1, c2 in zip(slowo, szyfrogram))\nif len(przesuniecia) > 1:\nout.write(slowo + '\\n')","image":"img/informatyka-2016-maj-matura-rozszerzona-2/zad-6.3.webp","solution_image":null,"topics":null,"page_from":7,"source":"ai","answer_source":"ai","answer_text_source":null,"solution_source":"ai","text_source":"ocr","source_label":"Informatyka · Matura · maj 2016 (rozszerzona)","subject_label":"Informatyka","category_label":"Matura","text_html":"<p>Zadanie 6.3. (0-5)<br>W pliku dane_6_3.txt zapisano 3 000 par słów, po jednej parze w wierszu, oddzielonych<br>pojedynczym znakiem odstępu. Drugie słowo w każdej parze jest szyfrogramem pierwszego<br>z nieznanym kluczem.<br>Niektóre szyfrogramy są błędne, co oznacza, że niektóre litery w słowie zakodowano<br>z różnymi przesunięciami. Słowo ma zawsze tę samą długość co odpowiadający<br>mu szyfrogram.<br>Fragment pliku dane_6_3.txt:<br>ZAWISLAK EFBNXQFP<br>KRASZEWSKI XENFMRJFXV<br>Napisz program, który wyszuka i wypisze te słowa z pliku dane_6_3.txt, które błędnie<br>zaszyfrowano. Wynik zapisz w pliku wyniki_6_3.txt: każde słowo w osobnym wierszu,<br>w porządku odpowiadającym kolejności tych słów z pliku z danymi.<br>Uwaga:<br>Pierwsze słowo w pliku wynikowym to SMIGIELSKI.<br>Do oceny oddajesz:<br>• pliki tekstowe wyniki_6_1.txt, wyniki_6_2.txt oraz wyniki_6_3.txt<br>zawierające odpowiedzi do poszczególnych zadań<br>• plik/pliki zawierający/zawierające kod źródłowy/kody źródłowe Twoich programów<br>o nazwie/nazwach:<br>zadanie 6.1<br>zadanie 6.2<br>zadanie 6.3<br>Wypełnia<br>egzaminator<br>Nr zadania<br>6.1.<br>6.2.<br>6.3.<br>Maks. liczba pkt.<br>3<br>4<br>5<br>Uzyskana liczba pkt.<br>MIN_2R<br>BRUDNOPIS (nie podlega ocenie)</p>","solutions":[{"source":"ai","label":"AI","kind":"text","html":"<p>Program (Python) wykrywający błędnie zaszyfrowane pary słów z pliku dane_6_3.txt (słowo takiej samej długości jak szyfrogram, ale zakodowane niejednolitym przesunięciem) - dla każdej pary sprawdzamy, czy różnica (szyfrogram[i]-słowo[i]) mod 26 jest stała dla wszystkich pozycji; jeśli nie, słowo jest błędnie zaszyfrowane. Wynik zapisujemy do wyniki_6_3.txt. Zweryfikowany na przykładzie z treści (pierwsze słowo w pliku wynikowym: SMIGIELSKI). Uwaga: rzeczywisty plik dane_6_3.txt (3000 par) nie jest częścią tego korpusu.</p>\n<p>with open(&#x27;dane_6_3.txt&#x27;) as f, open(&#x27;wyniki_6_3.txt&#x27;,&#x27;w&#x27;) as out:<br>for line in f:<br>slowo, szyfrogram = line.split()<br>przesuniecia = set((ord(c2) - ord(c1)) % 26 for c1, c2 in zip(slowo, szyfrogram))<br>if len(przesuniecia) &gt; 1:<br>out.write(slowo + &#x27;\\n&#x27;)</p>"}]}