diff --git a/README.md b/README.md index bc37bf1..11398e7 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,70 @@ -# moj-2024 +# Modelowanie języka 2023 -Modelowanie języka 2024 \ No newline at end of file +Tutaj znajdują się informacje dotyczące wykładu i ćwiczeń z +„Modelowania języka”, zajęć prowadzonych przez prof. UAM dr. hab. +Filip Gralińskiego. + +**Uwaga** Informacje podane w plikach w podkatalogach `wyk/` i `cw/` +nie muszą być aktualne (są to materiały przeniesione z poprzedniego +roku). W szczególności proszę nie wykonywać żadnych zadań z materiałów +ćwiczeniowych, chyba że wyraźnie wskazano je tutaj lub pojawiły się +jako zadanie na platformie Teams. + +## Podział materiału + +Materiał — zarówno na wykładzie, jak i na ćwiczeniach — podzielony jest +na trzy, mniej więcej równe objętością, działy: + +1. Podstawy modelowania języka. +2. Neuronowe modele języka (bez sieci Transformer). +3. Sieci Transformer. + +## Zasady zaliczenia wykładu + +Wykład kończy się egzaminem. Z egzaminu można uzyskać zwolnienie pod +następującymi warunkami: + +* ocena co najmniej dobry plus z ćwiczeń, +* uzyskanie co najmniej 20 punktów wykładowych. + +Punkt wykładowy można zdobyć za różnego rodzaju aktywności związane z wykładem: + +* zgłoszenie (jakiegokolwiek: merytorycznego, językowego, + technicznego) błędu w materiałach do wykładu (punkt otrzymuje + pierwszy zgłaszający), +* zadanie sensownego pytania na wykładzie, +* odpowiedź na pytanie na wykładzie, +* udział w dyskusji po wykładzie na platformie Teams (zadanie pytania + lub odpowiedź na pytanie innego studenta). + +Punkt wykładowy jest zaliczony tylko pod warunkiem obecności na danym wykładzie. + +Dodatkowo przy liczeniu sumy punktów wykładowych obowiązują następujące ograniczenia: + +* liczymy maksymalnie 3 punkty na wykład, +* z każdego działu liczymy maksymalnie 8 punktów. + +## Zasady zaliczenia ćwiczeń + +Zaliczenia z ćwiczeń uzyskujemy przez zdobywanie punktów za zadania i +projekty. Zasadniczo punkty zdobywamy poprzez wykonywanie zadań na +bieżąco na ćwiczeniach lub najpóźniej do kolejnych zajęć. Dodatkowo +będzie też możliwość zdobywania punktów poprzez wykonywanie projektów. + +Na ogół na każdych ćwiczeniach jest do zdobycia 40 punktów, z czego +zazwyczaj 20 punktów będzie do zdobycia za wykonanie części zadania od +razu w trakcie zajęć. + +Przelicznik punktów na ocenę: + +* -299 — 2 +* 300-349 — 3 +* 350-399 — 3+ +* 400-449 — 4 +* 450-499 — 4+ +* 500- — 5 + +Dodatkowo przyjmuje się następujące ograniczenie: za każdy dział +liczymy maksymalnie 200 punktów. + +Technicznie rozwiązania zadań zgłaszamy na platformie Moodle lub na platformie Gonito. diff --git a/lab/00_Informacje_na_temat_przedmiotu.ipynb b/lab/00_Informacje_na_temat_przedmiotu.ipynb new file mode 100644 index 0000000..fb04618 --- /dev/null +++ b/lab/00_Informacje_na_temat_przedmiotu.ipynb @@ -0,0 +1,104 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Modelowanie języka

\n", + "

0. Informacje na temat przedmiotu [ćwiczenia]

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Informacje ogólne" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Kontakt z prowadzącym\n", + "\n", + "prowadzący: dr Paweł Skórzewski\n", + "\n", + "Najlepiej kontaktowąć się ze mną przez MS Teams lub mailowo.\n", + "\n", + "\n", + "## Literatura\n", + "Polecana literatura do przedmiotu:\n", + "\n", + "- Koehn, P. (2009). Statistical Machine Translation. Cambridge: Cambridge University Press. doi:10.1017/CBO9780511815829\n", + "- Philipp Koehn. \"Neural Machine Translation\". 2020.\n", + "- https://web.stanford.edu/~jurafsky/slp3/3.pdf\n", + "- Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova. 2019. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding. North American Association for Computational Linguistics (NAACL).\n", + "- Colin Raffel, Noam Shazeer, Adam Roberts, Katherine Lee, Sharan Narang, Michael Matena, Yanqi Zhou, Wei Li, Peter J. Liu. 2020. Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer. Journal of Machine Learning Research vol 21, number 140, pages 1-67.\n", + "- Radford, Alec and Wu, Jeff and Child, Rewon and Luan, David and Amodei, Dario and Sutskever, Ilya. 2019. Language Models are Unsupervised Multitask Learners\n", + "- https://jalammar.github.io/illustrated-transformer/\n", + "- https://www.youtube.com/watch?v=-9evrZnBorM&ab_channel=YannicKilcher\n", + "- https://www.youtube.com/watch?v=u1_qMdb0kYU&ab_channel=YannicKilcher\n", + "\n", + "\n", + "\n", + "## Zaliczenie\n", + "\n", + "\n", + "\n", + "Do zdobycia będzie conajmniej 600 punktów.\n", + "\n", + "Ocena:\n", + "\n", + "- -299 — 2\n", + "\n", + "- 300-349 — 3\n", + "\n", + "- 350-399 — 3+\n", + "\n", + "- 400-449 — 4\n", + "\n", + "- 450—499 — 4+\n", + "\n", + "- 500- — 5\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "author": "Jakub Pokrywka", + "email": "kubapok@wmi.amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + }, + "subtitle": "0.Informacje na temat przedmiotu[ćwiczenia]", + "title": "Ekstrakcja informacji", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/lab/01_Kodowanie_tekstu.ipynb b/lab/01_Kodowanie_tekstu.ipynb new file mode 100644 index 0000000..bb7c1a8 --- /dev/null +++ b/lab/01_Kodowanie_tekstu.ipynb @@ -0,0 +1,763 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

1. Kodowanie tekstu [ćwiczenia]

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "NR_INDEKSU = 375985" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# UTF-8 " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Kodowanie znaku na bity" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "| Pierwszy znak | Ostatni znak| Bajt 1 | Bajt 2 | Bajt 3 | bajt 4 |\n", + "| ----------- | ----------- |-----------|----------- | ----------- | -----------| \n", + "| U+0000 | U+007F |0xxxxxxx | | | |\n", + "| U+0080 | U+07FF |110xxxxx | 10xxxxxx | | |\n", + "| U+0800 | U+FFFF |1110xxxx | 10xxxxxx | 10xxxxxx | |\n", + "| U+10000 | U+10FFFF |11110xxx | 10xxxxxx | 10xxxxxx | 10xxxxxx |\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "c = '⨃'" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "10755" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ord(c)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'⨃'" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "chr(10755)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "10755 - 2* 16**3 - 10* 16**2 - 0 * 16**1 - 3* 16**0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$10755_{10} = 2* 16^3 + 10* 16^2 + 0 * 16^1 + 3* 16^0 =$ U+2A03 \n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "10755 - 1*2**13 - 0*2**12 - 1*2**11 - 0*2**10 - 1*2**9 -0*2**8 -0*2**7-0*2**6-0*2**5-0*2**4-0*2**3-0*2**2-0*2**1 - 1*2**1 - 1*2**0" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$10755 = 1*2**13 - 0*2**12 - 1*2**11 - 0*2**10 - 1*2**9 -0*2**8 -0*2**7-0*2**6-0*2**5-0*2**4-0*2**3-0*2**2-0*2**1 - 1*2**1 - 1*2**0 = 10101000000011_{2}$" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "14" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len('10101000000011')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'0010101000000011'" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "'0010101000000011'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1110xxxx\t10xxxxxx\t10xxxxxx" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "11100010\t10101000\t10000011" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'11100010 10101000 10000011'" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "'11100010 10101000 10000011'" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "!echo '⨃' > '01_materialy/znak.txt'" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "⨃\r\n" + ] + } + ], + "source": [ + "cat '01_materialy/znak.txt'" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "00000000: 11100010 10101000 10000011 00001010 ....\r\n" + ] + } + ], + "source": [ + "!xxd -b '01_materialy/znak.txt'" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'\\x0c'" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "chr(2*2+4*2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ZADANIE SAMODZIELNE 1 ( 10 punktów)\n", + "\n", + "Zakoduj poniższe znaki na bity wykonując niezbędne oblicznia" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'U'" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "chr(NR_INDEKSU % 100)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'ϙ'" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "chr(NR_INDEKSU % 1000)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'\\U00012856'" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "chr(NR_INDEKSU % 100000 - 123)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### START ZADANIA" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### KONIEC ZADANIA" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Jakie są zakresy znaków?" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "!echo 'zażółć gęślą jaźń' > '01_materialy/polski_tekst.txt'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "| Pierwszy znak | Ostatni znak| Bajt 1 | Bajt 2 | Bajt 3 | bajt 4 |\n", + "| ----------- | ----------- |-----------|----------- | ----------- | -----------| \n", + "| U+0000 | U+007F |0xxxxxxx | | | |\n", + "| U+0080 | U+07FF |110xxxxx | 10xxxxxx | | |\n", + "| U+0800 | U+FFFF |1110xxxx | 10xxxxxx | 10xxxxxx | |\n", + "| U+10000 | U+10FFFF |11110xxx | 10xxxxxx | 10xxxxxx | 10xxxxxx |\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "00000000: 01111010 01100001 11000101 10111100 11000011 10110011 za....\r\n", + "00000006: 11000101 10000010 11000100 10000111 00100000 01100111 .... g\r\n", + "0000000c: 11000100 10011001 11000101 10011011 01101100 11000100 ....l.\r\n", + "00000012: 10000101 00100000 01101010 01100001 11000101 10111010 . ja..\r\n", + "00000018: 11000101 10000100 00001010 ...\r\n" + ] + } + ], + "source": [ + "!xxd -b '01_materialy/polski_tekst.txt'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ZADANIE SAMODZIELNE 2 ( 10 punktów)\n", + "\n", + "Zamień poniższy ciąg binarny na tekst UTF-8. Jeżeli tekst nie zaczyna się od prawidłowego bitu/bitów należy je pominąć." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "tekst = '01001111 00100000 01110111 01101001 11000100 10011001 01101011 01110011 01111010 01100101 01100111 01101111 00100000 01110100 01110010 01110101 01100100 01101110 01101111 00100000 01111010 01110101 01100011 01101000 01100001 00101100 00001010 01001010 01100001 01101011 00100000 01100010 01111001 11000101 10000010 00100000 01010011 01110100 01100101 01100110 01100101 01101011 00100000 01000010 01110101 01110010 01100011 01111010 01111001 01101101 01110101 01100011 01101000 01100001 11100010 10000000 10100110 00001010 11100010 10000000 10010100 00100000 01001010 01100001 00100000 01101110 01101001 01101011 01101111 01100111 01101111 00100000 01110011 01101001 11000100 10011001 00100000 01101110 01101001 01100101 00100000 01100010 01101111 01101010 11000100 10011001 00100001 00001010 01000011 01101000 01101111 11000100 10000111 01100010 01111001 00100000 01101110 01101001 01100101 01100100 11000101 10111010 01110111 01101001 01100101 01100100 11000101 10111010 11100010 10000000 10100110 00100000 01110100 01101111 00100000 01100100 01101111 01110011 01110100 01101111 01101010 11000100 10011001 00100001 00001010 01010111 01101001 01101100 01101011 01101001 00111111 00101110 00101110 00100000 01001010 01100001 00100000 01101001 01100011 01101000 00100000 01100011 01100001 11000101 10000010 11000100 10000101 00100000 01111010 01100111 01110010 01100001 01101010 11000100 10011001 00001010 01010000 01101111 01111010 01100001 01100010 01101001 01101010 01100001 01101101 00100000 01101001 00100000 01110000 01101111 01101011 01110010 01100001 01101010 11000100 10011001 00100001 00001010 01010100 01100101 00100000 01101000 01101001 01101010 01100101 01101110 01111001 00101100 00100000 01110100 01100101 00100000 01101100 01100001 01101101 01110000 01100001 01110010 01110100 01111001 00101100 00001010 01010100 01101111 00100000 01110011 11000100 10000101 00100000 01100100 01101100 01100001 00100000 01101101 01101110 01101001 01100101 00100000 01100011 01111010 01111001 01110011 01110100 01100101 00100000 11000101 10111100 01100001 01110010 01110100 01111001 00100001 00001010 01000001 00100000 01110000 01100001 01101110 01110100 01100101 01110010 01111001 00100000 01101001 00100000 01110100 01111001 01100111 01110010 01111001 01110011 01111001 00001010 01001110 01100001 00100000 01110011 01111010 01110100 01111001 01101011 00100000 01110111 01100101 01111010 01101101 11000100 10011001 00100000 01110101 00100000 01110011 01110111 01100101 01101010 00100000 01110011 01110000 01101001 01110011 01111001 00100001 00001010 01001100 01100101 01110111 00100001 11100010 10000000 10100110 00100000 01000011 11000011 10110011 11000101 10111100 00100000 01101100 01100101 01110111 00100000 01101010 01100101 01110011 01110100 00111111 00100000 11100010 10000000 10010100 00100000 01101011 01101111 01100011 01101001 01100001 01101011 00100000 01100100 01110101 11000101 10111100 01111001 00100001 00001010 01001110 01100001 01100011 01111010 01111001 01110100 01100001 11000101 10000010 01100101 01101101 00100000 01110011 01101001 11000100 10011001 00100000 01110000 01101111 01100100 01110010 11000011 10110011 11000101 10111100 01111001 00100001 00001010 01001001 00100000 01111010 01101110 01100001 01101101 00100000 01110100 01100101 01100111 01101111 00100000 01101010 01100101 01100111 01101111 01101101 01101111 11000101 10011011 01100011 01101001 00101100 00001010 01000011 01101111 00100000 01111010 11000101 10000010 01111001 00100000 01110100 01111001 01101100 01101011 01101111 00100000 01101011 01101001 01100101 01100100 01111001 00100000 01110000 01101111 11000101 10011011 01100011 01101001 00101110 00001010 01010011 01111010 01100001 01101011 01100001 01101100 00101100 00100000 01110111 01101001 01101100 01101011 00111111 11100010 10000000 10100110 00100000 01010011 01110100 01110010 01100001 01110011 01111010 01101110 01100001 00100000 01101110 01101111 01110111 01101001 01101110 01100001 00100001 00001010 01010100 01101111 00100000 01101010 01100101 01110011 01110100 00100000 01110100 01111001 01101100 01101011 01101111 00100000 01110111 01101001 11000100 10011001 01101011 01110011 01111010 01100001 00100000 01110000 01110011 01101001 01101110 01100001 00100001 11100010 10000000 10100110 00001010 00101000 01000010 01110010 01111001 01110011 01101001 01100001 00100000 01101101 01101001 01101010 01100001 01101101 00100000 01111010 01100001 11000101 10011011 00100000 01111010 01100100 01100001 01101100 01100101 01101011 01100001 00101100 00001010 01000010 01101111 00100000 01101110 01101001 01100101 00100000 01101100 01110101 01100010 01101001 11000100 10011001 00101100 00100000 01100111 01100100 01111001 00100000 01101011 01110100 01101111 00100000 01110011 01111010 01100011 01111010 01100101 01101011 01100001 00100001 00101001 00001010 01001011 01101111 01101101 01110101 00100000 01111010 01100101 01100011 01101000 01100011 11000100 10011001 00101100 00100000 01110100 01101111 00100000 01100100 01100001 01101101 00100000 01110010 01100001 01100100 11000100 10011001 00100001 00001010 01011010 01100001 01110010 01100001 01111010 00100000 01101110 01100001 00100000 01101111 01100011 01100101 01100001 01101110 00100000 01101010 01100001 01100100 11000100 10011001 00101100 00001010 01001001 00100000 01101110 01101001 01100101 00100000 01100010 11000100 10011001 01100100 11000100 10011001 00100000 01010011 01110100 01100101 01100110 01101011 01101001 01100101 01101101 00100000 01100011 01101000 01111001 01100010 01100001 00101100 00001010 01001010 01100001 01101011 00100000 01101110 01101001 01100101 00100000 01100011 01101000 01110111 01111001 01100011 11000100 10011001 00100000 01110111 01101001 01100101 01101100 01101111 01110010 01111001 01100010 01100001 00100001 00100000 11100010 10000000 10010100 00001010 00001010 01001001 00100000 01110100 01100001 01101011 00100000 01110000 01110010 01111010 01100101 01111010 00100000 01100100 01111010 01101001 01100101 11000101 10000100 00100000 01100010 01101111 11000101 10111100 01111001 00100000 01100011 01100001 11000101 10000010 01111001 00001010 01011010 01110101 01100011 01101000 00100000 01101110 01100001 01110011 01111010 00100000 01110100 01110010 11000100 10000101 01100010 01101001 00100000 01110011 01110111 01100101 00100000 01110000 01101111 01100011 01101000 01110111 01100001 11000101 10000010 01111001 00101110 00001010 00001010 01000001 11000101 10111100 00100000 01110010 01100001 01111010 00100000 01110101 01110011 01101110 11000100 10000101 11000101 10000010 00100000 01100111 01100100 01111010 01101001 01100101 11000101 10011011 00100000 01101110 01100001 00100000 01110011 01101001 01100001 01101110 01101001 01100101 11100010 10000000 10100110 00001010 01010111 01110100 01100101 01101101 00100000 01110011 01101001 11000100 10011001 00100000 01100010 01110101 01100100 01111010 01101001 00100000 01101110 01101001 01100101 01110011 01110000 01101111 01100100 01111010 01101001 01100001 01101110 01101001 01100101 00101100 00001010 01010000 01100001 01110100 01110010 01111010 01111001 00101100 00100000 01100001 00100000 01110100 01110101 00100000 01101010 01100001 01101011 01101001 01100101 11000101 10011011 00100000 01111010 01110111 01101001 01100101 01110010 01111010 11000100 10011001 00001010 01000100 01101111 00100000 11000101 10011011 01101110 01101001 01100001 01100100 01100001 01101110 01101001 01100001 00100000 01101101 01110101 00100000 01110011 01101001 11000100 10011001 00100000 01100010 01101001 01100101 01110010 01111010 01100101 00101110 00001010 01001010 01100001 01101011 00100000 01101110 01101001 01100101 00100000 01111010 01100101 01110010 01110111 01101001 01100101 00100000 01110011 01101001 11000100 10011001 00100000 01101110 01100001 00100000 01101110 01101111 01100111 01101001 00101100 00001010 01001010 01100001 01101011 00100000 01101110 01101001 01100101 00100000 01110111 01110010 01111010 01100001 11000101 10011011 01101110 01101001 01100101 00100000 01111010 00100000 01110111 01101001 01100101 01101100 01101011 01101001 01100101 01101010 00100000 01110100 01110010 01110111 01101111 01100111 01101001 00100000 11100010 10000000 10010100 00001010 01010000 11000100 10011001 01100100 01111010 01101001 00101100 00100000 01101010 01100001 01101011 01100010 01111001 00100000 01100011 01101000 01100001 01110010 01110100 00100000 01111010 01100101 00100000 01110011 01101101 01111001 01100011 01111010 01111001 11100010 10000000 10100110 00001010 11100010 10000000 10010100 00100000 01010100 01111001 01100111 01110010 01111001 01110011 00101100 00100000 01110100 01100001 01110100 01101111 00100001 00100000 01110100 01111001 01100111 01110010 01111001 01110011 00100001 00100000 11100010 10000000 10010100 00100000 01101011 01110010 01111010 01111001 01100011 01111010 01111001 00101110 00001010 11100010 10000000 10010100 00100000 01010100 01111001 01100111 01110010 01111001 01110011 00111111 11100010 10000000 10100110 00100000 01101111 01101010 01100011 01101001 01100101 01100011 00100000 01110011 01101001 11000100 10011001 00100000 01111010 01100001 01110000 01111001 01110100 01100001 00101110 00001010 11100010 10000000 10010100 00100000 01000001 01100011 01101000 00101100 00100000 01101100 01100101 01110111 00100000 01101101 01101111 11000101 10111100 01100101 00100001 11100010 10000000 10100110 00100000 01101101 01101001 01100001 11000101 10000010 00100000 01101011 01101111 01110000 01111001 01110100 01100001 00001010 01010011 01110100 01110010 01100001 01110011 01111010 01101110 01100101 00100001 00100000 01010100 01110010 01111010 01111001 00100000 01100011 01111010 01111001 00100000 01100011 01111010 01110100 01100101 01110010 01111001 00100000 01101110 01101111 01100111 01101001 00101100 00001010 01010000 01100001 01110011 01111010 01100011 01111010 11000100 10011001 00100000 01110100 01100001 01101011 11000100 10000101 00100001 00100000 01010000 01110010 01111010 01111001 01110100 01100101 01101101 00100000 01110010 01101111 01100111 01101001 11100010 10000000 10100110 00001010 11100010 10000000 10010100 00100000 01000111 01100100 01111010 01101001 01100101 11000101 10111100 00100000 01110100 01101111 00100000 01100010 01111001 11000101 10000010 01101111 00111111 00001010 11100010 10000000 10010100 00100000 01010100 01100001 01101101 00100000 01101110 01100001 00100000 01110011 01101001 01100001 01101110 01101001 01100101 00101100 00001010 01010111 11000101 10000010 01100001 11000101 10011011 01101110 01101001 01100101 00100000 01110000 01101111 01110010 01110111 01100001 11000101 10000010 00100000 01101101 01101001 00100000 11000101 10011011 01101110 01101001 01100001 01100100 01100001 01101110 01101001 01100101 11100010 10000000 10100110 00001010 01001001 01100100 01111010 01101001 01100101 00100000 01101111 01101010 01100011 01101001 01100101 01100011 00101100 00100000 01110011 11000101 10000010 01110101 11000101 10111100 01100010 01100001 00100000 01100011 01100001 11000101 10000010 01100001 00101100 00001010 01010000 01100001 01110100 01110010 01111010 11000100 10000101 11100010 10000000 10100110 00100000 01100001 00100000 01110100 01110101 00100000 01101101 01111001 01110011 01111010 01101011 01100001 00100000 01101101 01100001 11000101 10000010 01100001 00101100 00001010 01010000 01101111 01101100 01101110 01100001 00100000 01101101 01111001 01110011 01111010 01101011 01100001 00100000 01110011 01101001 01100101 01100100 01111010 01101001 00100000 01110011 01101111 01100010 01101001 01100101 00001010 01001001 00100000 01111010 11000100 10000101 01100010 01101011 01100001 01101101 01101001 00100000 01110011 01100101 01110010 01100101 01101011 00100000 01110011 01101011 01110010 01101111 01100010 01101001 01100101 00100001 11100010 10000000 10100110'" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "tekst = tekst.split(' ')" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "tekst = ' '.join(tekst[(NR_INDEKSU % 10)*5:(NR_INDEKSU % 10) + 108 ])" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'00101100 00001010 01001010 01100001 01101011 00100000 01100010 01111001 11000101 10000010 00100000 01010011 01110100 01100101 01100110 01100101 01101011 00100000 01000010 01110101 01110010 01100011 01111010 01111001 01101101 01110101 01100011 01101000 01100001 11100010 10000000 10100110 00001010 11100010 10000000 10010100 00100000 01001010 01100001 00100000 01101110 01101001 01101011 01101111 01100111 01101111 00100000 01110011 01101001 11000100 10011001 00100000 01101110 01101001 01100101 00100000 01100010 01101111 01101010 11000100 10011001 00100001 00001010 01000011 01101000 01101111 11000100 10000111 01100010 01111001 00100000 01101110 01101001 01100101 01100100 11000101 10111010 01110111 01101001 01100101 01100100 11000101 10111010 11100010 10000000 10100110 00100000 01110100'" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tekst" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### START ZADANIA" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### KONIEC ZADANIA" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ZADANIE SAMODZIELNE 3 ( 10 punktów)\n", + "\n", + "Zamień poniższy ciąg binarny na tekst UTF-8. Jeżeli tekst nie zaczyna się od prawidłowego bitu/bitów należy je pominąć." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "tekst = '0x57 0x6f 0x6a 0x6e 0xc4 0x99 0x20 0x70 0x69 0x73 0x61 0xc5 0x82 0x20 0x50 0x6f 0x74 0x6f 0x63 0x6b 0x69 0x20 0x77 0x20 0x72 0x2e 0x20 0x31 0x36 0x37 0x30 0x2c 0x20 0x70 0x72 0x7a 0x65 0x64 0x20 0x75 0x70 0x61 0x64 0x6b 0x69 0x65 0x6d 0x20 0x4b 0x61 0x6d 0x69 0x65 0xc5 0x84 0x63 0x61 0x20 0x69 0x20 0x68 0x61 0x6e 0x69 0x65 0x62 0x6e 0x79 0x6d 0x69 0x20 0x75 0x6b 0xc5 0x82 0x61 0x64 0x61 0x6d 0x69 0x20 0x62 0x75 0x63 0x7a 0x61 0x63 0x6b 0x69 0x6d 0x69 0x2c 0x20 0x6b 0x74 0xc3 0xb3 0x72 0x65 0x20 0x6f 0x62 0x6f 0x77 0x69 0xc4 0x85 0x7a 0x79 0x77 0x61 0xc5 0x82 0x79 0x20 0x50 0x6f 0x6c 0x73 0x6b 0xc4 0x99 0x20 0x64 0x6f 0x20 0x68 0x61 0x72 0x61 0x63 0x7a 0x75 0x20 0x74 0x75 0x72 0x65 0x63 0x6b 0x69 0x65 0x67 0x6f 0x20 0x69 0x20 0x64 0x6f 0x20 0x75 0x74 0x72 0x61 0x74 0x79 0x20 0x50 0x6f 0x64 0x6f 0x6c 0x61 0x2e 0x20 0x50 0x69 0x73 0x61 0xc5 0x82 0x20 0x6a 0xc4 0x85 0x20 0x77 0x6f 0x62 0x65 0x63 0x20 0x63 0x6f 0x72 0x61 0x7a 0x20 0x67 0x72 0x6f 0xc5 0xba 0x6e 0x69 0x65 0x6a 0x73 0x7a 0x65 0x67 0x6f 0x20 0x6e 0x69 0x65 0x62 0x65 0x7a 0x70 0x69 0x65 0x63 0x7a 0x65 0xc5 0x84 0x73 0x74 0x77 0x61 0x20 0x6f 0x64 0x20 0x54 0x75 0x72 0x6b 0xc3 0xb3 0x77 0x2c 0x20 0x67 0x64 0x79 0x20 0x73 0x69 0xc4 0x99 0x20 0x69 0x6d 0x20 0x44 0x6f 0x72 0x6f 0x73 0x7a 0x65 0xc5 0x84 0x6b 0x6f 0x20 0x7a 0x20 0x4b 0x6f 0x7a 0x61 0x6b 0x61 0x6d 0x69 0x20 0x70 0x6f 0x64 0x64 0x61 0xc5 0x82 0x2c 0x20 0x61 0x62 0x79 0x20 0x77 0x6e 0x75 0x6b 0x6f 0x6d 0x20 0x77 0x79 0x73 0x74 0x61 0x77 0x69 0xc4 0x87 0x20 0x6a 0x61 0x6b 0x6f 0x20 0x77 0x7a 0xc3 0xb3 0x72 0x20 0x6d 0xc4 0x99 0x73 0x74 0x77 0x6f 0x20 0x64 0x7a 0x69 0x61 0x64 0xc3 0xb3 0x77 0x2c 0x20 0x6f 0x62 0x75 0x64 0x7a 0x69 0xc4 0x87 0x20 0x69 0x63 0x68 0x20 0x77 0x61 0x6c 0x65 0x63 0x7a 0x6e 0x6f 0xc5 0x9b 0xc4 0x87 0x2c 0x20 0x77 0x79 0x73 0xc5 0x82 0x61 0x77 0x69 0x61 0x6a 0xc4 0x85 0x63 0x20 0x77 0x69 0x65 0x6c 0x6b 0x69 0x65 0x20 0x64 0x7a 0x69 0x65 0xc5 0x82 0x6f 0x20 0x6f 0x73 0x77 0x6f 0x62 0x6f 0x64 0x7a 0x65 0x6e 0x69 0x61 0x20 0x63 0x68 0x72 0x7a 0x65 0xc5 0x9b 0x63 0x69 0x6a 0x61 0xc5 0x84 0x73 0x74 0x77 0x61 0x20 0x70 0x72 0x7a 0x65 0x7a 0x20 0x6a 0x65 0x67 0x6f 0x20 0x70 0x72 0x7a 0x65 0x64 0x6d 0x75 0x72 0x7a 0x65 0x2c 0x20 0x50 0x6f 0x6c 0x73 0x6b 0xc4 0x99 0x2c 0x20 0x6f 0x64 0x20 0x6e 0x61 0x6a 0x70 0x6f 0x74 0xc4 0x99 0xc5 0xbc 0x6e 0x69 0x65 0x6a 0x73 0x7a 0x65 0x67 0x6f 0x20 0x77 0x72 0x6f 0x67 0x61 0x2c 0x20 0x6b 0x74 0xc3 0xb3 0x72 0x79 0x20 0x77 0x73 0x7a 0x79 0x73 0x74 0x6b 0x69 0x65 0x20 0x73 0x69 0xc5 0x82 0x79 0x20 0x73 0x6b 0x75 0x70 0x69 0xc5 0x82 0x20 0x64 0x6c 0x61 0x20 0x6a 0x65 0x67 0x6f 0x20 0x6f 0x73 0x74 0x61 0x74 0x65 0x63 0x7a 0x6e 0x65 0x67 0x6f 0x20 0x7a 0x68 0x6f 0xc5 0x82 0x64 0x6f 0x77 0x61 0x6e 0x69 0x61 0x2e 0x20 0x44 0x6c 0x61 0x20 0x6e 0x61 0x73 0x20 0x6a 0x65 0x73 0x74 0x20 0x70 0x6f 0x20 0x70 0x72 0x6f 0x73 0x74 0x75 0x20 0x6e 0x69 0x65 0x7a 0x72 0x6f 0x7a 0x6d 0x69 0x61 0xc5 0x82 0x79 0x6d 0x2c 0x20 0x6a 0x61 0x6b 0x20 0x6d 0xc3 0xb3 0x67 0xc5 0x82 0x20 0x70 0x6f 0x65 0x74 0x61 0x20 0x6e 0x61 0x6a 0x62 0x61 0x72 0x64 0x7a 0x69 0x65 0x6a 0x20 0x70 0x61 0x74 0x72 0x69 0x6f 0x74 0x79 0x63 0x7a 0x6e 0x65 0x20 0x69 0x20 0x6e 0x61 0x6a 0x61 0x6b 0x74 0x75 0x61 0x6c 0x6e 0x69 0x65 0x6a 0x73 0x7a 0x65 0x20 0x73 0x77 0x65 0x20 0x64 0x7a 0x69 0x65 0xc5 0x82 0x6f 0x20 0x7a 0x20 0x67 0xc3 0xb3 0x72 0x79 0x20 0x64 0x6f 0x20 0x7a 0x61 0x6c 0x65 0xc5 0xbc 0x65 0x6e 0x69 0x61 0x20 0x77 0x20 0xe2 0x80 0x9e 0x73 0x65 0x70 0x65 0x63 0x69 0x65 0xe2 0x80 0x9d 0x20 0x28 0x62 0x69 0x75 0x72 0x6b 0x75 0x29 0x20 0x70 0x72 0x7a 0x65 0x7a 0x6e 0x61 0x63 0x7a 0x61 0xc4 0x87 0x20 0x69 0x20 0x61 0x6e 0x69 0x20 0x6e 0x61 0x20 0x63 0x68 0x77 0x69 0x6c 0xc4 0x99 0x20 0x6e 0x69 0x65 0x20 0x70 0x6f 0x6d 0x79 0xc5 0x9b 0x6c 0x65 0xc4 0x87 0x20 0x6f 0x20 0x6a 0x65 0x67 0x6f 0x20 0x6f 0x67 0xc5 0x82 0x6f 0x73 0x7a 0x65 0x6e 0x69 0x75 0x2c 0x20 0x63 0x68 0x6f 0x63 0x69 0x61 0xc5 0xbc 0x20 0x74 0x65 0x67 0x6f 0x20 0x77 0xc5 0x82 0x61 0xc5 0x9b 0x6e 0x69 0x65 0x20 0x69 0x20 0x63 0x7a 0x61 0x73 0x79 0x20 0x69 0x20 0x6c 0x75 0x64 0x7a 0x69 0x65 0x20 0x6b 0x6f 0x6e 0x69 0x65 0x63 0x7a 0x6e 0x69 0x65 0x20 0x62 0x79 0x20 0x77 0x79 0x6d 0x61 0x67 0x61 0xc5 0x82 0x79 0x2c 0x20 0x7a 0x61 0x67 0x61 0x64 0x6b 0xc4 0x99 0x20 0x72 0x6f 0x7a 0x77 0x69 0xc4 0x85 0xc5 0xbc 0x65 0x6d 0x79 0x2c 0x20 0x70 0x6f 0x6d 0x6e 0xc4 0x85 0x63 0x2c 0x20 0xc5 0xbc 0x65 0x20 0x70 0x75 0x62 0x6c 0x69 0x63 0x7a 0x6e 0x6f 0xc5 0x9b 0xc4 0x87 0x20 0x77 0x73 0x70 0xc3 0xb3 0xc5 0x82 0x63 0x7a 0x65 0x73 0x6e 0x61 0x20 0x6e 0x69 0x65 0x20 0x7a 0x6e 0x6f 0x73 0x69 0xc5 0x82 0x61 0x20 0x6a 0x75 0xc5 0xbc 0x20 0x77 0x6f 0x6c 0x6e 0x65 0x67 0x6f 0x20 0x73 0xc5 0x82 0x6f 0x77 0x61 0x2c 0x20 0xc5 0xbc 0x65 0x20 0x70 0x6f 0x65 0x74 0x61 0x20 0x6e 0x69 0x65 0x20 0x6d 0xc3 0xb3 0x67 0xc5 0x82 0x20 0x77 0x69 0xc4 0x99 0x63 0x20 0x73 0x77 0x6f 0x62 0x6f 0x64 0x6e 0x69 0x65 0x20 0x72 0x6f 0x7a 0x70 0x72 0x61 0x77 0x69 0x61 0xc4 0x87 0x2c 0x20 0xc5 0xbc 0x65 0x20 0x6b 0x72 0xc4 0x99 0x70 0x6f 0x77 0x61 0xc5 0x82 0x61 0x20 0x67 0x6f 0x20 0x72 0x65 0x70 0x75 0x62 0x6c 0x69 0x6b 0x61 0xc5 0x84 0x73 0x6b 0x61 0x20 0x70 0x6f 0x64 0x65 0x6a 0x72 0x7a 0x6c 0x69 0x77 0x6f 0xc5 0x9b 0xc4 0x87 0x2c 0x20 0x77 0x69 0x65 0x74 0x72 0x7a 0xc4 0x85 0x63 0x61 0x20 0x77 0x73 0x7a 0xc4 0x99 0x64 0x7a 0x69 0x65 0x20 0x7a 0x61 0x6d 0x61 0x63 0x68 0x79 0x20 0x6e 0x61 0x20 0x73 0x74 0x61 0x6e 0x20 0x73 0x7a 0x6c 0x61 0x63 0x68 0x65 0x63 0x6b 0x69 0x20 0x69 0x20 0x6a 0x65 0x67 0x6f 0x20 0x7a 0xc5 0x82 0x6f 0x74 0x65 0x20 0x70 0x72 0x7a 0x79 0x77 0x69 0x6c 0x65 0x6a 0x65 0x2c 0x20 0x74 0x6a 0x2e 0x20 0x6e 0x61 0x20 0x61 0x6e 0x61 0x72 0x63 0x68 0x69 0xc4 0x99 0x2e 0x20 0x5a 0x20 0x6f 0x62 0x61 0x77 0x79 0x20 0x70 0x72 0x7a 0x65 0x64 0x20 0x74 0xc4 0x85 0x20 0x6e 0x69 0x65 0x70 0x72 0x7a 0x65 0x62 0xc5 0x82 0x61 0x67 0x61 0x6e 0xc4 0x85 0x20 0x63 0x65 0x6e 0x7a 0x75 0x72 0xc4 0x85 0x20 0x6f 0x62 0x79 0x77 0x61 0x74 0x65 0x6c 0x73 0x6b 0xc4 0x85 0x20 0x77 0x79 0x72 0x7a 0x65 0x6b 0x61 0xc5 0x82 0x20 0x73 0x69 0xc4 0x99 0x20 0x70 0x6f 0x65 0x74 0x61 0x20 0x77 0x73 0x7a 0x65 0x6c 0x6b 0x69 0x65 0x6a 0x20 0x6d 0x79 0xc5 0x9b 0x6c 0x69 0x20 0x6f 0x20 0x64 0x72 0x75 0x6b 0x75 0x2c 0x20 0x61 0x62 0x79 0x20 0x74 0x65 0x72 0x6e 0x20 0x73 0x77 0x6f 0x62 0x6f 0x64 0x6e 0x69 0x65 0x6a 0x20 0x72 0x6f 0x7a 0x70 0x72 0x61 0x77 0x69 0xc4 0x87 0x20 0x73 0x69 0xc4 0x99 0x20 0x7a 0x20 0x67 0x6e 0x75 0xc5 0x9b 0x6e 0x6f 0xc5 0x9b 0x63 0x69 0xc4 0x85 0x20 0x69 0x20 0x6e 0x69 0x65 0x72 0x7a 0xc4 0x85 0x64 0x65 0x6d 0x20 0x77 0x73 0x70 0xc3 0xb3 0xc5 0x82 0x63 0x7a 0x65 0x73 0x6e 0x79 0x6d 0x2e 0x20 0x49 0x20 0x63 0x65 0x6c 0x75 0x20 0x64 0x6f 0x73 0x69 0xc4 0x85 0x67 0xc5 0x82 0x2e 0x20 0x4f 0x20 0x57 0x6f 0x6a 0x6e 0x69 0x65 0x20 0x63 0x68 0x6f 0x63 0x69 0x6d 0x73 0x6b 0x69 0x65 0x6a 0x20 0x6e 0x69 0x6b 0x74 0x20 0x73 0x69 0xc4 0x99 0x20 0x6e 0x69 0x67 0x64 0x79 0x20 0x6e 0x69 0x63 0x7a 0x65 0x67 0x6f 0x20 0x6e 0x69 0x65 0x20 0x64 0x6f 0x77 0x69 0x65 0x64 0x7a 0x69 0x61 0xc5 0x82 0x2c 0x20 0x6f 0x70 0x72 0xc3 0xb3 0x63 0x7a 0x20 0x74 0x79 0x63 0x68 0x20 0x6b 0x69 0x6c 0x6b 0x75 0x20 0x6c 0x75 0x64 0x7a 0x69 0x2c 0x20 0x73 0x7a 0x63 0x7a 0x65 0x67 0xc3 0xb3 0x6c 0x6e 0x69 0x65 0x6a 0x20 0x4c 0x69 0x70 0x73 0x6b 0x69 0x63 0x68 0x20 0x69 0x20 0x50 0x69 0x73 0x61 0x72 0x73 0x6b 0x69 0x63 0x68 0x2c 0x20 0x6b 0x74 0xc3 0xb3 0x72 0x7a 0x79 0x20 0x6f 0x72 0x79 0x67 0x69 0x6e 0x61 0xc5 0x82 0x20 0x6c 0x75 0x62 0x20 0x6f 0x64 0x70 0x69 0x73 0x79 0x20 0x70 0x6f 0x65 0x6d 0x61 0x74 0x75 0x20 0x6f 0x64 0x63 0x7a 0x79 0x74 0x79 0x77 0x61 0x6c 0x69 0x2e 0x20 0x4e 0x61 0x6a 0x63 0x65 0x6c 0x6e 0x69 0x65 0x6a 0x73 0x7a 0x65 0x20 0x64 0x7a 0x69 0x65 0xc5 0x82 0x6f 0x20 0x65 0x70 0x69 0x6b 0x69 0x20 0x73 0x69 0x65 0x64 0x65 0x6d 0x6e 0x61 0x73 0x74 0x6f 0x77 0x69 0x65 0x63 0x7a 0x6e 0x65 0x6a 0x20 0x6e 0x69 0x6b 0x6f 0x6d 0x75 0x20 0x6e 0x69 0x65 0x20 0x62 0x79 0xc5 0x82 0x6f 0x20 0x7a 0x6e 0x61 0x6e 0x65 0x20 0x64 0x6f 0x20 0x72 0x2e 0x20 0x31 0x38 0x33 0x39 0x3b 0x20 0x6e 0x61 0x77 0x65 0x74 0x20 0x4a 0x2e 0x20 0x41 0x2e 0x20 0x5a 0x61 0xc5 0x82 0x75 0x73 0x6b 0x69 0x2c 0x20 0x6b 0x74 0xc3 0xb3 0x72 0x65 0x67 0x6f 0x20 0x77 0x69 0x65 0x6b 0x6f 0x70 0x6f 0x6d 0x6e 0x65 0x6a 0x20 0x7a 0x61 0x73 0xc5 0x82 0x75 0x64 0x7a 0x65 0x20 0x77 0x69 0x6e 0x6e 0x69 0xc5 0x9b 0x6d 0x79 0x20 0x6f 0x63 0x61 0x6c 0x65 0x6e 0x69 0x65 0x20 0x6e 0x69 0x65 0x6d 0x61 0x6c 0x20 0x63 0x61 0xc5 0x82 0x65 0x67 0x6f 0x2c 0x20 0x6f 0x6c 0x62 0x72 0x7a 0x79 0x6d 0x69 0x65 0x67 0x6f 0x20 0x73 0x70 0x61 0x64 0x6b 0x75 0x20 0x70 0x6f 0x65 0x74 0x79 0x63 0x6b 0x69 0x65 0x67 0x6f 0x20 0x70 0x6f 0x20 0x50 0x6f 0x74 0x6f 0x63 0x6b 0x69 0x6d 0x2c 0x20 0x6b 0x74 0xc3 0xb3 0x72 0x79 0x20 0x77 0x69 0x65 0x64 0x7a 0x69 0x61 0xc5 0x82 0x20 0x6f 0x20 0x77 0x73 0x7a 0x79 0x73 0x74 0x6b 0x69 0x6d 0x2c 0x20 0x63 0x6f 0x20 0x6b 0x69 0x65 0x64 0x79 0x6b 0x6f 0x6c 0x77 0x69 0x65 0x6b 0x20 0x70 0x6f 0x20 0x70 0x6f 0x6c 0x73 0x6b 0x75 0x20 0x6e 0x61 0x70 0x69 0x73 0x61 0x6e 0x6f 0x2c 0x20 0x6e 0x69 0x63 0x20 0x6f 0x20 0x57 0x6f 0x6a 0x6e 0x69 0x65 0x20 0x6e 0x69 0x67 0x64 0x79 0x20 0x6e 0x69 0x65 0x20 0x73 0xc5 0x82 0x79 0x73 0x7a 0x61 0xc5 0x82 0x2e 0x20 0x41 0x20 0x70 0x72 0x7a 0x65 0x63 0x69 0x65 0xc5 0xbc 0x20 0x69 0x20 0x6f 0x70 0x72 0xc3 0xb3 0x63 0x7a 0x20 0x5a 0x61 0xc5 0x82 0x75 0x73 0x6b 0x69 0x65 0x67 0x6f 0x20 0x7a 0x6e 0x61 0x6e 0x6f 0x20 0x69 0x20 0x63 0x65 0x6e 0x69 0x6f 0x6e 0x6f 0x20 0x77 0x20 0x58 0x56 0x49 0x49 0x49 0x20 0x77 0x69 0x65 0x6b 0x75 0x20 0x50 0x6f 0x74 0x6f 0x63 0x6b 0x69 0x65 0x67 0x6f 0x2c 0x20 0xe2 0x80 0x9e 0x77 0x69 0x65 0x6c 0x6b 0x69 0x65 0x67 0x6f 0x20 0x70 0x6f 0x65 0x74 0xc4 0x99 0xe2 0x80 0x9d 0x2e 0x20 0x54 0x61 0x6b 0x20 0x6e 0x61 0x7a 0x79 0x77 0x61 0xc5 0x82 0x20 0x67 0x6f 0x20 0x77 0x79 0x72 0x61 0xc5 0xba 0x6e 0x69 0x65 0x20 0x6e 0x70 0x2e 0x20 0x4d 0x61 0x74 0x75 0x73 0x7a 0x65 0x77 0x69 0x63 0x7a 0x20 0x77 0x20 0x73 0x77 0x6f 0x69 0x63 0x68 0x20 0x50 0x61 0x6d 0x69 0xc4 0x99 0x74 0x6e 0x69 0x6b 0x61 0x63 0x68 0x20 0x28 0x49 0x49 0x49 0x2c 0x20 0x32 0x35 0x29 0x2c 0x20 0x67 0x64 0x79 0x20 0x73 0x61 0x74 0x79 0x72 0xc4 0x99 0x20 0x48 0x6f 0x72 0x61 0x63 0x65 0x67 0x6f 0x20 0x70 0x6f 0xc5 0x9b 0x77 0x69 0xc4 0x99 0x63 0x61 0xc5 0x82 0x20 0x77 0x6e 0x75 0x63 0x7a 0x63 0x65 0x20 0xe2 0x80 0x94 0x20 0x6e 0x69 0x65 0x20 0x63 0xc3 0xb3 0x72 0x63 0x65 0x21 0x20 0xe2 0x80 0x94 0x20 0x70 0x6f 0x65 0x74 0x79 0x2c 0x20 0x48 0x65 0x6c 0x65 0x6e 0x69 0x65 0x20 0x4d 0x6f 0x72 0x73 0x7a 0x74 0x79 0x6e 0x6f 0x77 0x65 0x6a 0x2c 0x20 0x77 0x6f 0x6a 0x65 0x77 0x6f 0x64 0x7a 0x69 0x6e 0x69 0x65 0x20 0x69 0x6e 0x66 0x6c 0x61 0x6e 0x63 0x6b 0x69 0x65 0x6a 0x2c 0x20 0x6e 0x61 0x6a 0x7a 0x61 0x63 0x6e 0x69 0x65 0x6a 0x73 0x7a 0x65 0x6a 0x20 0x6d 0x61 0x74 0x72 0x6f 0x6e 0x69 0x65 0x20 0x70 0x6f 0x6c 0x73 0x6b 0x69 0x65 0x6a 0x2e 0x0a 0x0a 0x55 0x73 0xc5 0x82 0x79 0x73 0x7a 0x61 0xc5 0x82 0x20 0x6f 0x20 0x74 0x79 0x6d 0x20 0x70 0x6f 0x65 0x6d 0x61 0x63 0x69 0x65 0x20 0xc5 0x9b 0x77 0x69 0x61 0x74 0x20 0x70 0x6f 0x6c 0x73 0x6b 0x69 0x20 0x70 0x6f 0x20 0x72 0x61 0x7a 0x20 0x70 0x69 0x65 0x72 0x77 0x73 0x7a 0x79 0x20 0x64 0x6f 0x70 0x69 0x65 0x72 0x6f 0x20 0x77 0x20 0x72 0x2e 0x20 0x31 0x38 0x33 0x39 0x20 0x77 0x20 0xe2 0x80 0x9e 0x54 0x79 0x67 0x6f 0x64 0x6e 0x69 0x6b 0x75 0x20 0x50 0x65 0x74 0x65 0x72 0x73 0x62 0x75 0x72 0x73 0x6b 0x69 0x6d 0xe2 0x80 0x9d 0x20 0x28 0x6e 0x72 0x2e 0x20 0x32 0x32 0x20 0x69 0x20 0x32 0x34 0x29 0x20 0x6f 0x64 0x20 0x53 0x61 0x6d 0x75 0x65 0x6c 0x61 0x20 0x4e 0x6f 0x77 0x6f 0x73 0x7a 0x79 0x63 0x6b 0x69 0x65 0x67 0x6f 0x2c 0x20 0x70 0x6f 0x73 0x69 0x61 0x64 0x61 0x63 0x7a 0x61 0x20 0x72 0xc4 0x99 0x6b 0x6f 0x70 0x69 0x73 0x75 0x3b 0x20 0x72 0xc4 0x99 0x6b 0x6f 0x70 0x69 0x73 0x20 0x70 0x72 0x7a 0x65 0x73 0x7a 0x65 0x64 0xc5 0x82 0x20 0x6e 0x61 0x20 0x77 0xc5 0x82 0x61 0x73 0x6e 0x6f 0xc5 0x9b 0xc4 0x87 0x20 0x68 0x72 0x2e 0x20 0x4a 0xc3 0xb3 0x7a 0x65 0x66 0x61 0x20 0x42 0x6f 0x72 0x6b 0x6f 0x77 0x73 0x6b 0x69 0x65 0x67 0x6f 0x2c 0x20 0x61 0x20 0x6f 0x67 0xc5 0x82 0x6f 0x73 0x69 0xc5 0x82 0x20 0x67 0x6f 0x20 0x64 0x72 0x75 0x6b 0x69 0x65 0x6d 0x20 0x53 0x74 0x61 0x6e 0x69 0x73 0xc5 0x82 0x61 0x77 0x20 0x50 0x72 0x7a 0x79 0xc5 0x82 0xc4 0x99 0x63 0x6b 0x69 0x20 0x70 0x2e 0x20 0x74 0x2e 0x20 0x57 0x6f 0x6a 0x6e 0x61 0x20 0x63 0x68 0x6f 0x63 0x69 0x6d 0x73 0x6b 0x61 0x2c 0x20 0x70 0x6f 0x65 0x6d 0x61 0x74 0x20 0x62 0x6f 0x68 0x61 0x74 0x65 0x72 0x73 0x6b 0x69 0x20 0x77 0x20 0x58 0x20 0x63 0x7a 0xc4 0x99 0xc5 0x9b 0x63 0x69 0x61 0x63 0x68 0x20 0x70 0x72 0x7a 0x65 0x7a 0x20 0x41 0x6e 0x64 0x72 0x7a 0x65 0x6a 0x61 0x20 0x4c 0x69 0x70 0x73 0x6b 0x69 0x65 0x67 0x6f 0x2c 0x20 0x70 0x6f 0x64 0x77 0x6f 0x6a 0x65 0x77 0x6f 0x64 0x7a 0x69 0x63 0x61 0x20 0x73 0x61 0x6e 0x64 0x6f 0x6d 0x69 0x65 0x72 0x73 0x6b 0x69 0x65 0x67 0x6f 0x2c 0x20 0x70 0x6f 0x64 0x63 0x7a 0x61 0x73 0x7a 0x65 0x67 0x6f 0x20 0x63 0x68 0x65 0xc5 0x82 0x6d 0x73 0x6b 0x69 0x65 0x67 0x6f 0x2e 0x20 0x5a 0x20 0x72 0xc4 0x99 0x6b 0x6f 0x70 0x69 0x73 0x75 0x20 0x77 0x73 0x70 0xc3 0xb3 0xc5 0x82 0x63 0x7a 0x65 0x73 0x6e 0x65 0x67 0x6f 0x20 0x77 0x79 0x64 0x61 0xc5 0x82 0x20 0x53 0x74 0x61 0x6e 0x69 0x73 0xc5 0x82 0x61 0x77 0x20 0x50 0x72 0x7a 0x79 0xc5 0x82 0xc4 0x99 0x63 0x6b 0x69 0x2e 0x20 0x57 0x65 0x20 0x4c 0x77 0x6f 0x77 0x69 0x65 0x20 0x31 0x38 0x35 0x30 0x2e 0x0a 0x0a 0x52 0xc4 0x99 0x6b 0x6f 0x70 0x69 0x73 0x6f 0x77 0x69 0x20 0x4e 0x6f 0x77 0x6f 0x73 0x7a 0x79 0x63 0x6b 0x69 0x65 0x67 0x6f 0x2d 0x50 0x72 0x7a 0x79 0xc5 0x82 0xc4 0x99 0x63 0x6b 0x69 0x65 0x67 0x6f 0x20 0x62 0x72 0x61 0x6b 0xc5 0x82 0x6f 0x20 0x70 0x69 0x65 0x72 0x77 0x73 0x7a 0x65 0x6a 0x20 0x6b 0x61 0x72 0x74 0x79 0x2c 0x20 0x69 0x20 0x7a 0x20 0x70 0x72 0x7a 0x65 0x64 0x6d 0x6f 0x77 0x79 0x2c 0x20 0x7a 0x20 0x70 0x6f 0xc5 0x9b 0x77 0x69 0xc4 0x99 0x63 0x65 0x6e 0x69 0x61 0x20 0x64 0x7a 0x69 0x65 0xc5 0x82 0x61 0x20 0x4a 0x2e 0x20 0x4c 0x69 0x70 0x73 0x6b 0x69 0x65 0x6d 0x75 0x2c 0x20 0x77 0x79 0x6b 0x6f 0x6d 0x62 0x69 0x6e 0x6f 0x77 0x61 0x6c 0x69 0x20 0x4e 0x6f 0x77 0x6f 0x73 0x7a 0x79 0x63 0x6b 0x69 0x20 0x69 0x20 0x50 0x72 0x7a 0x79 0xc5 0x82 0xc4 0x99 0x63 0x6b 0x69 0x20 0x6e 0x61 0x7a 0x77 0x69 0x73 0x6b 0x6f 0x20 0x6d 0x79 0x6c 0x6e 0x65 0x20 0x61 0x75 0x74 0x6f 0x72 0x61 0x20 0x28 0x4e 0x6f 0x77 0x6f 0x73 0x7a 0x79 0x63 0x6b 0x69 0x20 0x77 0x20 0xe2 0x80 0x9e 0x41 0x74 0x68 0x65 0x6e 0x61 0x65 0x75 0x6d 0xe2 0x80 0x9d 0x20 0x4b 0x72 0x61 0x73 0x7a 0x65 0x77 0x73 0x6b 0x69 0x65 0x67 0x6f 0x2c 0x20 0x49 0x20 0x31 0x38 0x34 0x31 0x2c 0x20 0x77 0x79 0x64 0x61 0xc5 0x82 0x20 0xe2 0x80 0x9e 0x75 0xc5 0x82 0x61 0x6d 0x65 0x6b 0xe2 0x80 0x9d 0x20 0x7a 0x20 0x57 0x69 0x72 0x67 0x69 0x6e 0x69 0x69 0x20 0x50 0x6f 0x74 0x6f 0x63 0x6b 0x69 0x65 0x67 0x6f 0x2c 0x20 0x7a 0x6e 0x61 0x6c 0x65 0x7a 0x69 0x6f 0x6e 0x79 0x20 0x70 0x72 0x7a 0x79 0x20 0x6f 0x77 0x79 0x6d 0x20 0x72 0xc4 0x99 0x6b 0x6f 0x70 0x69 0x73 0x69 0x65 0x2c 0x20 0x6e 0x69 0x62 0x79 0x20 0xe2 0x80 0x9e 0x48 0x69 0x65 0x72 0x6f 0x6e 0x69 0x6d 0x61 0x20 0x4c 0x69 0x70 0x73 0x6b 0x69 0x65 0x67 0x6f 0x20 0x7a 0x20 0x72 0x2e 0x20 0x31 0x36 0x35 0x32 0xe2 0x80 0x9d 0x29 0x2e 0x20 0x44 0x6f 0x70 0x69 0x65 0x72 0x6f 0x20 0x4b 0x61 0x72 0x6f 0x6c 0x20 0x53 0x7a 0x61 0x6a 0x6e 0x6f 0x63 0x68 0x61 0x20 0x77 0x20 0x73 0x7a 0x6b 0x69 0x63 0x75 0x20 0x68 0x69 0x73 0x74 0x6f 0x72 0x79 0x63 0x7a 0x6e 0x79 0x6d 0x20 0x6f 0x20 0x57 0x61 0x63 0xc5 0x82 0x61 0x77 0x69 0x65 0x20 0x50 0x6f 0x74 0x6f 0x63 0x6b 0x69 0x6d 0x20 0x75 0x73 0x74 0x61 0x6c 0x69 0xc5 0x82 0x20 0x73 0xc5 0x82 0x75 0x73 0x7a 0x6e 0x69 0x65 0x20 0x6a 0x65 0x67 0x6f 0x20 0x61 0x75 0x74 0x6f 0x72 0x73 0x74 0x77 0x6f 0x2e 0x20 0x50 0x6f 0x20 0x72 0x61 0x7a 0x20 0x77 0x74 0xc3 0xb3 0x72 0x79 0x20 0x77 0x79 0x64 0x61 0x6e 0x6f 0x20 0x67 0x6f 0x20 0x77 0x20 0xe2 0x80 0x9e 0x42 0x69 0x62 0x6c 0x6a 0x6f 0x74 0x65 0x63 0x65 0x20 0x6e 0x61 0x6a 0x63 0x65 0x6c 0x6e 0x69 0x65 0x6a 0x73 0x7a 0x79 0x63 0x68 0x20 0x61 0x75 0x74 0x6f 0x72 0xc3 0xb3 0x77 0x20 0x65 0x75 0x72 0x6f 0x70 0x65 0x6a 0x73 0x6b 0x69 0x63 0x68 0x20 0xe2 0x80 0x94 0x20 0x4c 0x69 0x74 0x65 0x72 0x61 0x74 0x75 0x72 0x61 0x20 0x70 0x6f 0x6c 0x73 0x6b 0x61 0xe2 0x80 0x9d 0x20 0x2c 0x57 0x61 0x72 0x73 0x7a 0x61 0x77 0x61 0x20 0x31 0x38 0x38 0x30 0x20 0x28 0x57 0x2e 0x20 0x50 0x2e 0x2c 0x20 0x57 0x6f 0x6a 0x6e 0x61 0x20 0x63 0x68 0x6f 0x63 0x69 0x6d 0x73 0x6b 0x61 0x2c 0x20 0x70 0x6f 0x65 0x6d 0x61 0x74 0x20 0x77 0x20 0x31 0x30 0x20 0x63 0x7a 0xc4 0x99 0xc5 0x9b 0x63 0x69 0x61 0x63 0x68 0x20 0x69 0x20 0x63 0x7a 0x74 0x65 0x72 0x79 0x20 0x69 0x6e 0x6e 0x65 0x20 0x74 0x65 0x67 0x6f 0xc5 0xbc 0x20 0x75 0x74 0x77 0x6f 0x72 0x79 0x2c 0x20 0x7a 0x65 0x20 0x77 0x73 0x74 0xc4 0x99 0x70 0x65 0x6d 0x20 0x41 0x2e 0x20 0x54 0x79 0x73 0x7a 0x79 0xc5 0x84 0x73 0x6b 0x69 0x65 0x67 0x6f 0x20 0x6f 0x20 0x70 0x6f 0x65 0x63 0x69 0x65 0x29 0x2e 0x20 0x50 0x72 0x61 0x77 0x64 0x7a 0x69 0x77 0x79 0x20 0x74 0x79 0x74 0x75 0xc5 0x82 0x20 0x70 0x6f 0x65 0x6d 0x61 0x74 0x75 0x20 0x70 0x6f 0x7a 0x6e 0x61 0x6a 0x65 0x6d 0x79 0x20 0x7a 0x20 0x6a 0x65 0x64 0x6e 0x65 0x6a 0x20 0x7a 0x20 0x6b 0x6f 0x70 0x69 0x69 0x20 0x72 0xc4 0x99 0x6b 0x6f 0x70 0x69 0xc5 0x9b 0x6d 0x69 0x65 0x6e 0x6e 0x79 0x63 0x68 0x20 0x28 0x4f 0x73 0x73 0x6f 0x6c 0x2e 0x20 0x6e 0x72 0x2e 0x20 0x31 0x33 0x34 0x38 0x29 0x3b 0x20 0x6a 0x65 0x73 0x74 0x20 0x6f 0x6e 0x20 0x62 0x61 0x72 0x64 0x7a 0x6f 0x20 0x6f 0x62 0x73 0x7a 0x65 0x72 0x6e 0x79 0x2c 0x20 0x61 0x20 0x7a 0x61 0x63 0x7a 0x79 0x6e 0x61 0x20 0x73 0x69 0xc4 0x99 0x20 0x28 0x63 0x6f 0x20 0x70 0x6f 0x74 0x77 0x69 0x65 0x72 0x64 0x7a 0x61 0x6a 0xc4 0x85 0x20 0x61 0x6c 0x75 0x7a 0x6a 0x65 0x20 0x77 0x20 0x64 0x65 0x64 0x79 0x6b 0x61 0x63 0x6a 0x69 0x29 0x20 0x6f 0x64 0x20 0x73 0xc5 0x82 0xc3 0xb3 0x77 0x3a 0x20 0x54 0x72 0x61 0x6e 0x73 0x61 0x6b 0x63 0x79 0x61 0x20 0x57 0x6f 0x6a 0x6e 0x79 0x20 0x63 0x68 0x6f 0x63 0x69 0x6d 0x73 0x6b 0x69 0x65 0x6a 0x20 0x69 0x74 0x64 0x2e 0x2c 0x20 0x6a 0x61 0x6b 0x20 0x6e 0x69 0xc5 0xbc 0x65 0x6a 0x20 0x6e 0x61 0x20 0x73 0x74 0x72 0x2e 0x20 0x31 0x20 0x6e 0x61 0x73 0x7a 0x65 0x67 0x6f 0x20 0x77 0x79 0x64 0x61 0x6e 0x69 0x61'" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "tekst = tekst.split(' ')" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "tekst = ' '.join(tekst[(NR_INDEKSU % 10)*5:(NR_INDEKSU % 10) + 108 ])" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'0x2e 0x20 0x31 0x36 0x37 0x30 0x2c 0x20 0x70 0x72 0x7a 0x65 0x64 0x20 0x75 0x70 0x61 0x64 0x6b 0x69 0x65 0x6d 0x20 0x4b 0x61 0x6d 0x69 0x65 0xc5 0x84 0x63 0x61 0x20 0x69 0x20 0x68 0x61 0x6e 0x69 0x65 0x62 0x6e 0x79 0x6d 0x69 0x20 0x75 0x6b 0xc5 0x82 0x61 0x64 0x61 0x6d 0x69 0x20 0x62 0x75 0x63 0x7a 0x61 0x63 0x6b 0x69 0x6d 0x69 0x2c 0x20 0x6b 0x74 0xc3 0xb3 0x72 0x65 0x20 0x6f 0x62 0x6f 0x77 0x69 0xc4 0x85 0x7a 0x79 0x77 0x61 0xc5 0x82'" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tekst" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### START ZADANIA" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### KONIEC ZADANIA" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ZADANIE SAMODZIELNE 4 (5 punktów)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Wykonaj następujące operacje w jednym bashowym/shellowym pipelinie:\n", + "\n", + "- scal a.txt i b.txt łącząc je spacją (tak, że pierwszy wiersz a.txt i pierwszy wiersz b.txt są połaczone spacją w nowy wiersz, drugi wiersz a.txt i drugi wiersz b.txt są połaczone spacją w następny wiersz, itp.) \n", + "\n", + "- wyfiltruj tylko linijki gdzie nie ma cyfr z Twojego numeru indeksu\n", + "\n", + "- usuń wszystkie litery 'a',\n", + "\n", + "- zamień wszystkie litery 'c' na literę 'd'\n", + "\n", + "- potrój każde wystąpienie litery e (małe i wielkie)\n", + "\n", + "- przestaw kolejność wiersz od końca (ostatni wiersz jest pierwszym, przedostani drugim, itp.)\n", + "\n", + "- wyfiltruj linijki od piątej do szóstej od końca (wg nowej kolejności)\n", + "\n", + "- zapisz pliku c.txt\n", + "\n", + "\n", + "Następnie wyprintuj zawartość pliku c.txt do tego notebooka\n", + "\n", + "\n", + "\n", + "Możesz użyć nastepujących programów: pipe, paste, sed, awk, tr, grep, head, tail, cut, echo, redirect. Nie używaj pythona, perla, ani innych podobnych języków." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### START ZADANIA" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### KONIEC ZADANIA" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ZADANIE SAMODZIELNE 5 (5 punktów)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Napisz funkcję sortującą dla stringów, która będzie działać \n", + "\n", + "- sortujemy słowa zgodnie z polskim alfabetem\n", + "- jeżeli są małe litery i wielkie to wielkie przed małymi\n", + "- jeżeli wyraz `x` jest początkiem wyrazu `y`, to wyraz `x` ma być pierwszy\n" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "przykladowa_lista = ['ą', 'a','b','cef', 'ce', 'A','Ą', 'ż', ]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "tak nie chcemy:" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['A', 'a', 'b', 'ce', 'cef', 'Ą', 'ą', 'ż']" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sorted(przykladowa_lista)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "tak chcemy:" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['A', 'Ą', 'a', 'ą', 'b', 'ce', 'cef', 'ż']" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "['A', 'Ą', 'a', 'ą' ,'b', 'ce', 'cef', 'ż']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "https://wolnelektury.pl/media/book/pdf/lalka.pdf" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### START ZADANIA" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### KONIEC ZADANIA" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## WYKONANIE ZADAŃ\n", + "\n", + "- skopiuj niniejszy notebook\n", + "- podmień wartość zmiennej NR_INDEKSU na własny numer indeksu\n", + "- zadania wykonaj w tym jupyterze- dodawaj własne komórki tylko miedzy komórkami START ZADANIA, a KONIEC ZADANIA\n", + "- Zadania wykonaj tak, żeby po kliknięciu w Kernel → Restart & Run All notebook wykonał się bez błędów\n", + "- następnie wygeneruj z notebooka PDF (File → Download As → PDF via Latex).\n", + "- notebook z kodem oraz PDF zamieść w zakładce zadań w MS TEAMS" + ] + } + ], + "metadata": { + "author": "Jakub Pokrywka", + "email": "kubapok@wmi.amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + }, + "subtitle": "0.Informacje na temat przedmiotu[ćwiczenia]", + "title": "Ekstrakcja informacji", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/lab/01_materialy/a.txt b/lab/01_materialy/a.txt new file mode 100644 index 0000000..e6a35a6 --- /dev/null +++ b/lab/01_materialy/a.txt @@ -0,0 +1,70 @@ +# tekst pochodzi z https://wolnelektury.pl/media/book/txt/baczynski-orfeusz-w-lesie.txt +Pod tym dębem, pod stuletnim, wśród gałęzi skrył się, +a deszcz pierzchnął, siedmiobarwnym łukiem nad nim wzbił się. +Ledwie okiem w nim utonął, w barwnej brodząc nucie, +blady błękit tęczę wchłonął, dąb zawołał: «Zbudź się. +Czas na ciebie, czeka lira, nowej pieśni głodna, +wdrąż się w ziemię, bij o niebo, serca przepal do dna. +Ze mną, boski Orfeuszu, zmierz muzyczną siłę, +mnie pokonasz — śmierć przemożesz, którą zwyciężyłem. +Popatrz: uschnie młoda łoza, runie smukła jodła, +patrz: topole śmierć podcięła, ale mnie nie zmogła. +W niebo śpiewem rosnę, w ziemię korzeniami wrastam, +me milczenie jest strumieniem, a ma pieśń liściasta!» + +Więc Orfeusz chwycił lirę rozmodloną dłonią, +strunę trącił, już obłoki przebudzone dzwonią. +Jeszcze głosu nie wydobył, już na wargi drżące, +jak na liście, promieniście wbiega młode słońce. +I pieśń począł. + Wrył się w ziemię takim jasnym tonem, +że wzleciały ponad drzewa krety uskrzydlone, +że strumienie, co pod ziemią ciemno się poczęły, +nad brzegami, co je więżą, w lirę się wygięły. +Wzniósł się w górę, ręką jeno ciężar strun odmierzał, +a już wiatrem swego głosu w żołędzie uderzał, +a żołędzie melodyjnie trącając się wzajem, +rozdzwoniły włosy wierzby nad leśnym ruczajem, +a w tych włosach smutek nagły wylągł się tak cicho, +że nie będąc jeszcze szeptem, szeptał: «Eurydyko…» +Jeno woda pochwyciła to czułe wezwanie, +a już w kwiaty je wkropliła na leśnej polanie, +a tam trawy zielonawe w korzenie wszeptały +i już drzewa jej imieniem szumieć poczynały. +Targnął strunę, bo nie szeptem śmierć miał głuchą przemóc, +lecz wołaniem tak wysokim, jak gwiazda nad ziemią: +«Chcecie? Rozpacz wam wyśpiewam: płomieniste góry +rosną we mnie, burza wraża w ziemię kły wichury. +Chcecie? Błyskawicą chłostam, serca gryzę gromem, +w ręku piorun mam i rozpacz w oku nieruchomem, +a ta rozpacz w gniew urasta, a ten gniew jest burzą +przeciw tobie, której kształty czarno się marmurzą». + +Już nie słowem, ale głosem w twardą korę nieba +tłukł Orfeusz, aż sypnęła ciężkich gwiazd ulewa… +Wtedy przerwał, bowiem uczuł, że mu głos uwięźnie +w niebie drżącym jeszcze… + Ale dąb milczał potężniej. + + + +6. Porażka + +«Eurydyko, porażka jest słodka. +Chwała tobie, któryś mnie zwyciężył!» + +Mijał strumień. Trzcina wiała wiotka. +Las się kończył i zaczynał księżyc. + +A te skały, co wyrosły ostre, +zdały mu się czułym zapewnieniem. + +A tę noc obejmował jak siostrę, +nazywał najczulszym imieniem. + +I przemierzał strunami śpiącemi +oddalenie nie objęte słowem, +i jak klucz do zamkniętych podziemi +niósł na wargach milczenie dębowe. + +9–10 luty 1942 diff --git a/lab/01_materialy/b.txt b/lab/01_materialy/b.txt new file mode 100644 index 0000000..7c21617 --- /dev/null +++ b/lab/01_materialy/b.txt @@ -0,0 +1,69 @@ +# tekst pochodzi z https://pl.wikipedia.org/wiki/UTF-8 +UTF-8 (ang. 8-bit Unicode Transformation Format) – system kodowania Unicode, wykorzystujący od 1 do 4 bajtów do zakodowania pojedynczego znaku, w pełni kompatybilny z ASCII. Jest najczęściej wykorzystywany do przechowywania napisów w plikach i komunikacji sieciowej. + + +Spis treści +1 Zalety i wady +1.1 Zalety +1.2 Wady +2 Sposób kodowania +3 Przykład +4 Zobacz też +5 Linki zewnętrzne +Zalety i wady +Zalety +Każdy tekst w ASCII jest tekstem w UTF-8. +Żaden znak spoza ASCII nie zawiera bajtu z ASCII. +Zachowuje porządek sortowania UCS-4. +Typowy tekst ISO-Latin-X rozrasta się w bardzo niewielkim stopniu po przekonwertowaniu do UTF-8. +Nie zawiera bajtów 0xFF i 0xFE, więc łatwo można go odróżnić od tekstu UTF-16. +Znaki o kodzie różnym od 0 nie zawierają bajtu 0, co pozwala stosować UTF-8 w ciągach zakończonych zerem. +O każdym bajcie wiadomo, czy jest początkiem znaku, czy też leży w jego środku, co nie jest dostępne np. w kodowaniu EUC. +Nie ma problemów z little endian vs big endian. +Jest domyślnym kodowaniem w XML (również w jego aplikacjach: XHTML, SVG, XSL, CML, MathML). +Wady +Znaki CJK zajmują po 3 bajty zamiast 2 w kodowaniach narodowych. +Znaki alfabetów niełacińskich zajmują po 2 bajty zamiast jednego w kodowaniach narodowych. +UTF-8 nie używa przesunięć zasięgów, co stanowi dodatkowe utrudnienie dla implementacji UTF-8 (szczegóły poniżej) +Sposób kodowania +Mapowanie znaków Unicode na ciągi bajtów: + +0x00 do 0x7F – bity 0xxxxxxx, gdzie kolejne „x” to bity – licząc od najwyższego +0x80 do 0x7FF – bity 110xxxxx 10xxxxxx +0x800 do 0xFFFF – bity 1110xxxx 10xxxxxx 10xxxxxx +0x10000 do 0x1FFFFF – bity 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx +0x200000 do 0x3FFFFFF – bity 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx +0x4000000 do 0x7FFFFFFF – bity 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx +Znaki z przedziału ASCII (0 do 127) kodowane są jako jeden bajt, czyli m.in. litery alfabetu łacińskiego. Polskie znaki diakrytyczne kodowane już są jako dwa bajty. W listopadzie 2003 roku kodowanie UTF-8 zostało ograniczone zgodnie z RFC 3629 ↓ do 0x10FFFF pozycji, w celu zapewnienia zgodności z ograniczeniami systemu UTF-16. Rezultatem było usunięcie wszystkich sekwencji złożonych z 5 i 6 bajtów oraz około połowy sekwencji 4-bajtowych. W ten sposób pozostało dokładnie 17 • 65536 - 2048, czyli 1 112 064 pozycji znaków możliwych do zakodowania w UTF-8. Pomniejszenie liczby kodów o 2048 wynika z zarezerwowania kodów z zakresu od U+D800 do U+DFFF dla kodowania UTF-16. + +Teoretycznie w UTF-8 ten sam znak można zapisać na kilka sposobów. Przykładowo znak ASCII / (ukośnik) można zapisać jako: + +00101111 +11000000 10101111 +11100000 10000000 10101111itd. +Stanowi to zagrożenie bezpieczeństwa m.in. dla serwerów, które sprawdzają obecność znaku / w ścieżkach. Z tego powodu standard UTF-8 przewiduje, że poprawny jest wyłącznie najkrótszy możliwy sposób zapisu, a każdy program musi odrzucać znaki zapisane dłuższymi sekwencjami niż minimalna. + +Problemu tego można byłoby uniknąć, przy okazji skracając nieznacznie wielkość danych, jeśli wykorzystano by zasadę przesunięć typu: + +sekwencje 1-bajtowe kodują 0x80 (128) różnych znaków – od 0x00 do 0x7F +sekwencje 2-bajtowe kodują 0x800 (2048) różnych znaków – od 0x80 do 0x87F +sekwencje 3-bajtowe kodują 0x10000 (65536) różnych znaków – od 0x880 do 0x1087F +itd. +Przykład +Kodowanie na podstawie znaku euro €: + +Znak € w Unicode ma oznaczenie U+20AC. +Zgodnie z informacjami w poprzednim podrozdziale taka wartość jest możliwa do zakodowania na 3 bajtach. +Liczba szesnastkowa 20AC to binarnie 0010 0000 1010 1100 po uzupełnieniu wiodącymi zerami do 16 bitów, ponieważ tyle bitów trzeba zakodować na 3 bajtach w UTF-8. +Kodowanie na trzech bajtach wymaga użycia w pierwszym bajcie trzech wiodących bitów ustawionych na 1, a czwartego na 0 (1110…). +Pozostałe bity pierwszego bajtu pochodzą z najstarszych czterech bitów kodowanej wartości w Unicode, co daje (1110 0010), a reszta bitów dzielona jest na dwa bloki po 6 bitów każdy (…0000 1010 1100). +Do tych bloków dodawane są wiodące bity 10, by tworzyły następujące 8-bitowe wartości 1000 0010 i 1010 1100). +W ten sposób rezultatem są trzy bajty w postaci 1110 0010 1000 0010 1010 1100, co w systemie szesnastkowych przyjmuje postać E2 82 AC. +Poniższa tabela pozwala zrozumieć sposób kodowana różnej długości numerów kodowych Unicode w UTF-8. + +Unicode Unicode binarnie UTF-8 binarnie + 1. bajt 2. bajt 3. bajt 4. bajt UTF-8 szesnastkowo +$ U+0024 0100100 00100100 24 +¢ U+00A2 000 10100010 11000010 10100010 C2 A2 +€ U+20AC 00100000 10101100 11100010 10000010 10101100 E2 82 AC +𐍈 U+10348 00001 00000011 01001000 11110000 10010000 10001101 10001000 F0 90 8D 88 diff --git a/lab/01_materialy/polski_tekst.txt b/lab/01_materialy/polski_tekst.txt new file mode 100644 index 0000000..2667047 --- /dev/null +++ b/lab/01_materialy/polski_tekst.txt @@ -0,0 +1 @@ +zażółć gęślą jaźń diff --git a/lab/01_materialy/polski_tekst_2.txt b/lab/01_materialy/polski_tekst_2.txt new file mode 100644 index 0000000..e6002dd --- /dev/null +++ b/lab/01_materialy/polski_tekst_2.txt @@ -0,0 +1,15 @@ +Charles Baudelaire + +O pierwszej nad ranem +tłum. Stefan Napierski + + + +Nareszcie! sam jeden! Słychać już tylko przetaczanie się kilku zapóźnionych i wymęczonych dorożek. Na niewiele godzin uzyskamy milczenie, jeśli nawet nie spokój. Nareszcie! znikła tyrania twarzy ludzkiej i cierpieć będę już tylko przez samego siebie. + +Nareszcie! zezwolono mi zatem rozprostować się w kąpieli ciemności! Naprzód podwójne zawarcie drzwi. Wydaje mi się, że to przekręcenie klucza wzmoże samotność moją i wzmocni barykady, które oto dzielą mnie od świata. + +Straszliwe życie! Straszliwe miasto! Streśćmy powtórnie dzień: widzenie garstki literatów, z których jeden zapytywał mnie, czy można udać sie do Rosji drogą lądową (najwidoczniej sądził, że Rosja jest wyspą); wielkoduszna dysputa z kierownikiem pewnego czasopisma, który na każdy argument odpowiadał: „Tutaj, to partia ludzi uczciwych”, co zakłada milcząco, że wszystkie inne dzienniki redagują szubrawcy; ukłon, oddany jakimś dwudziestu osobom, z których piętnaście jest mi nieznanych; rozdawanie uścisku dłoni w tej samej proporcji, i to zaniedbawszy przez nieostrożność zaopatrzenia się wprzód w rękawiczki; wdrapanie się, gwoli zabicia czasu, podczas ulewy, na pięterko do baletniczki, która prosiła mnie o narysowanie jej kostiumu do *Venus*; ubieganie się w sposób przypochlebny o jednego z dyrektorów teatru, który powiedział, żegnając się ze mną: „Kto wie, czy nie powinien pan zwrócić się do Z…; jest to najbardziej ociężały, najgłupszy i najgłośniejszy z wszystkich mych autorów; z nim, być może, zdoła pan co osiągnąć. Niech go pan odszuka, a potem się zobaczy”; przechwalanie się (po co?) kilkoma szkaradnymi czynami, których nie popełniłem, i tchórzliwe zaprzeczenie kilku innych występków, których dokonałem z radością, przestępstwo fanfaronady, zbrodnia na czci ludzkiej; odmówienie przyjacielowi łatwej przysługi i udzielenie poparcia na piśmie skończonemu łotrowi; uf! czyżby to wreszcie koniec? + +Niezadowolony z siebie i niezadowolony z wszystkich, pragnąłbym siebie odkupić i odzyskać nieco dumy w milczeniu i samotności nocy. Dusze tych, których miłowałem, dusze tych, których opiewałem, skrzepcie mnie, podtrzymajcie, oddalcie ode mnie kłamstwo i zatruwające wyziewy świata; i ty, Panie mój i Boże! użycz mi łaski zestawienia kilku pięknych wierszy, które by udowodniły mi, że nie jestem ostatnim z ludzi, że gorszy nie jestem od tych, którymi gardzę. +