{"id":"informatyka-2016-maj-matura-rozszerzona-2/zad/6.2","paper_id":"informatyka-2016-maj-matura-rozszerzona-2","number":"6.2","points":4,"ptype":"open","subject":"informatyka","category":"matura","year":2016,"month":"maj","level":"rozszerzona","text":"Zadanie 6.2. (0-4)\nW pliku dane_6_2.txt zapisano 3 000 szyfrogramów i odpowiadające im klucze\nszyfrujące. W każdym wierszu znajduje się jeden szyfrogram (zaszyfrowane słowo)\ni po pojedynczym znaku odstępu odpowiadający mu klucz (maksymalnie czterocyfrowa\nliczba).\nFragment pliku dane_6_2.txt:\nBCYKUNCM 1718\nYFOGNSKGYW 7580\nWARDA 9334\nMIN_2R\nNapisz program, który odszyfruje słowa zaszyfrowane podanymi kluczami. Wynik zapisz\nw pliku wyniki_6_2.txt: każde odszyfrowane słowo w osobnym wierszu, w porządku\nodpowiadającym kolejności szyfrogramów z pliku z danymi.\nUwaga:\nDla pierwszego szyfrogramu z pliku dane_6_2.txt (BCYKUNCM) wynikiem jest słowo\nZAWISLAK.","answer":"program odszyfrowujący Cezarem wg podanego klucza, zweryfikowany na przykładzie z treści","answer_text":null,"solution":"Program (Python) odszyfrowujący szyfrogramy z pliku dane_6_2.txt (każdy wiersz: szyfrogram i klucz), zapisujący wynik do wyniki_6_2.txt. Zweryfikowany na przykładzie z treści (BCYKUNCM z kluczem 1718 -> ZAWISLAK). Uwaga: rzeczywisty plik dane_6_2.txt (3000 par) nie jest częścią tego korpusu.\n\ndef szyfruj(slowo, k):\nwynik = []\nfor ch in slowo:\nnowy = (ord(ch) - 65 + k) % 26 + 65\nwynik.append(chr(nowy))\nreturn ''.join(wynik)\n\ndef odszyfruj(slowo, k):\nreturn szyfruj(slowo, -k)\n\nwith open('dane_6_2.txt') as f, open('wyniki_6_2.txt','w') as out:\nfor line in f:\nszyfrogram, klucz = line.split()\nout.write(odszyfruj(szyfrogram, int(klucz) % 26) + '\\n')","image":"img/informatyka-2016-maj-matura-rozszerzona-2/zad-6.2.webp","solution_image":null,"topics":null,"page_from":6,"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.2. (0-4)<br>W pliku dane_6_2.txt zapisano 3 000 szyfrogramów i odpowiadające im klucze<br>szyfrujące. W każdym wierszu znajduje się jeden szyfrogram (zaszyfrowane słowo)<br>i po pojedynczym znaku odstępu odpowiadający mu klucz (maksymalnie czterocyfrowa<br>liczba).<br>Fragment pliku dane_6_2.txt:<br>BCYKUNCM 1718<br>YFOGNSKGYW 7580<br>WARDA 9334<br>MIN_2R<br>Napisz program, który odszyfruje słowa zaszyfrowane podanymi kluczami. Wynik zapisz<br>w pliku wyniki_6_2.txt: każde odszyfrowane słowo w osobnym wierszu, w porządku<br>odpowiadającym kolejności szyfrogramów z pliku z danymi.<br>Uwaga:<br>Dla pierwszego szyfrogramu z pliku dane_6_2.txt (BCYKUNCM) wynikiem jest słowo<br>ZAWISLAK.</p>","solutions":[{"source":"ai","label":"AI","kind":"text","html":"<p>Program (Python) odszyfrowujący szyfrogramy z pliku dane_6_2.txt (każdy wiersz: szyfrogram i klucz), zapisujący wynik do wyniki_6_2.txt. Zweryfikowany na przykładzie z treści (BCYKUNCM z kluczem 1718 -&gt; ZAWISLAK). Uwaga: rzeczywisty plik dane_6_2.txt (3000 par) nie jest częścią tego korpusu.</p>\n<p>def szyfruj(slowo, k):<br>wynik = []<br>for ch in slowo:<br>nowy = (ord(ch) - 65 + k) % 26 + 65<br>wynik.append(chr(nowy))<br>return &#x27;&#x27;.join(wynik)</p>\n<p>def odszyfruj(slowo, k):<br>return szyfruj(slowo, -k)</p>\n<p>with open(&#x27;dane_6_2.txt&#x27;) as f, open(&#x27;wyniki_6_2.txt&#x27;,&#x27;w&#x27;) as out:<br>for line in f:<br>szyfrogram, klucz = line.split()<br>out.write(odszyfruj(szyfrogram, int(klucz) % 26) + &#x27;\\n&#x27;)</p>"}]}