{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Első beadandó\n", "\n", "\n", "Hat feladat van, ahányat sikerül megoldani, annyi lesz a beadandó értéke, de legfeljebb 5. Megoldásként ezt a fájlt kell visszaküldeni kitöltve. Nem elég csak a válaszokat feltüntetni, hagyd benne a fájlban a függvényeket és kódokat, amit a megoldás során használtál. \n", "\n", "- Mindegyik feladat kódolásokhoz fog kapcsolódni. Felteheted, hogy minden szöveg csak a következő karatereket tartalmazza: `hun_alph=['a', 'á', 'b', 'c', 'd', 'e', 'é', 'f', 'g', 'h', 'i', 'í', 'j', 'k', 'l', 'm', 'n', 'o', 'ó', 'ö', 'ő', 'p', 'q', 'r', 's', 't', 'u', 'ú', 'ü', 'ű', 'v', 'w', 'x', 'y', 'z', ' ', '!', ',', '-', '.', ':', '?', ';']`. \n", "- **Helyettesítő ábécé** alatt karakterekből áll halmazok közötti bijekciót értünk. Ezt egy dicitionaryben érdemes tárolni, ahol minden kulcs egy egyedi karakter és minden érték is az. Pl: `{'a':'b','x':'y'}`\n", "- A programoknak úgy kell működniük, hogy a Restart & Run All parancsra hiba nélkül végigfusson a notebook és minden megoldás a megadott változóba kerüljön. \n", "- Ha valamivel nagyon elakadtok, írjatok egy emailt és segítek. \n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "hun_alph=['a', 'á', 'b', 'c', 'd', 'e', 'é', 'f', 'g', 'h', 'i', 'í', 'j', 'k', 'l', 'm', 'n', 'o', 'ó', 'ö', 'ő', 'p', 'q', 'r', 's', 't', 'u', 'ú', 'ü', 'ű', 'v', 'w', 'x', 'y', 'z', ' ', '!', ',', '-', '.', ':', '?', ';']" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ " ## 1. feladat\n", "Írd meg a következő függvényeket.\n", " - az `elkodol` függvény egy stringet és helyettesítő ábécét vár bemenetként, majd pedig visszaadja azt a stringet, amit úgy kapunk, hogy a bemenet minden karakterét lecseréljük az helyettesítő ábécé szerinti párjára. Ha egy karakter nem szerepel az ábécében akkor ne változtasson rajta a függvény. Pl: `encodestring(\"abbac\",{\"a\":\"x\",\"b\":\"y\"})=\"xyyxc\"` \n", " - a `dekodol` ugyanazt csinálja visszafelé, tehát egy elkódolt üzenet és a helyettesítő ábécé ismeretében megadja az eredeti szöveget. Helyes megoldás esetén `dekodol(elkodol(szoveg,abc),abc)` az eredeti szöveget adja vissza. \n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def elkodol(szoveg,abc):\n", " #todo\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def dekodol(szoveg,abc):\n", " #todo\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. feladat\n", "Az alábbi szöveg a cézár kódolással van elkódolva. Mi lehetett az eredeti szöveg?\n", "\n", "A cézár kódolás a következőképpen működik. Választunk egy egész számot, hívjuk ezt k-nak. A titkosítandó szöveg minden betűjét lecseréljük az ábécében k-val később álló betűre. Itt is a fenti `hun_alph`-t használjuk ábécéként, tehát csak a karakterek és a szünet számítanak. (Ha kifutunk az ábécé végén az elejétől kezdjük újra a számolást.) Pl ha `k=5` és `szoveg=\"csíkos zebra?\"`, akkor a az elkódolt üzenet `\"gűnóqű:.ifüec\"` \n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "titkos_szoveg='d-hjőőókhvt-cüvfkhxvt-cüvöaiieőw'" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. feladat\n", "Az alábbi `titkos_szoveg3` is egy behelyettesítő ábécé segítségével készült. A cézár kódolással ellentétben itt semmit sem tudunk arról, hogy milyen helyettesítő ábécét használtak. Szerencsére azt viszont tudjuk, hogy az eredeti szöveg tartalmazza a lenti `biztos_szoveg` részletet. Mi lehetett a teljes eredeti szöveg?\n", "\n", "(Ne lepődj meg ha a megoldás mondatai nem egy folytonos szöveget alkotnak, egy nagyobb szöveg véletlenszerű darabjait kódoltuk el.) \n", "\n", "(Segíthet egy olyan verziója a `dekodol` függvényednek, amely nagybetűvel írja be azt, amit dekódol és kisbetűvel, amit nem. Így nem kevered össze, hogy mely részek vannak már dekódolva és melyek nem, amikor egy részleges helyettesítő ábécét tesztelsz.')\n", "\n", "Megoldásodat - az eredeti szöveget - mentsd el a `megoldas3` változóba! \n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "titkos_szoveg3='zuuzbiziülimujbxzimuetkqizuióűbküeu,imióűbkqitexqósóbqeidéműziűóyqómküeu,ibeqksnebqizifóbnse,iqzsmjbőrqibeqeqqe,iztwiémzűiújbqigeyye,imjsszitwyniűwmuenqe.izmuqzbqiwmiqespqeqq,iémzűivxőiüeúeyőkgob,izuiásemiqzsmjbőgdb,itexizifónebkgob,iziéw dq,iűabzémjq,i eémeyőkqisrszűqz,iúkxseiűkqizbtrúzbizitdnörqitexznqz.iyetisetkbet,iüjxőiwqqitzsznrmjtibexőeyixőósxőitwr,iűwqiwmqeyizűrsüjúriqexőey;iúkxseitkxixőwbűjmzibeyykű,izqqdbifkbeű...iyet!izuimjmetibemueűi-izssdbiyetigemukbeű,i-iüzyetizyyőwqitjynjű:iyeigamaböjyiűebten;iúemmeiűwimuwúkgobizuqiziyzxőifkbebteq:iyetizuksqitexőeűieb,iüjxőiúwmmuziyeiöoöeű;iüwmuetiziqesetqoq,itkxiznnwxiyetióbitex.itexűóqkűizigwűrqiúzmqzxixeseynrüju,imuzsúrqibeyőáxóuqkűizuiebmoibrgrüju;iziyk imukööebjmubjqq;iziúrxdibexkyőeűiexőiűwmiüruwűdgzifeűáyywiteykyeű.itwűbdmitexibeábqiziúrxdüwnimukbkse,ijqqizűzsúryiqzyőrqifjxywizujyiköse;ifeökyeűi rsyrözizimupyirxzmziújbq,ibe enoqimaxrsgdbiqespqeqqisriziüjbn.imiztebőiűzsnjqioizuirbyjűiémeüqobiebúeqq,izúúzbiznjqqiykűwiósóűómiűexőebteq.ipuwgeyiiebteqmukifeökqiziqemqkqob,i wsjmibeqqiziyzxőiűzsnixzunröziúkskqob.iqjbnwifebtaqzqözizifeöeqiziűzsnjy,iyzxőiswúzbxrmiqrtzniűkqfebobizi zsqjy:iqz mjbyzű,iűwrbqyzű,iurmubdqibjgjxqzqyzű;iganziyzxőiüexőewiúwmmuzűasöjyxzqyzű.i'\n", "biztos_szoveg='a vágóhid szélére, ott akarván tanyát fogni azon éjre; fejének'" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. feladat\n", "Készíts elemzést a magyar nyelv betű és betűpár gyakoriságáról. \n", "- Keress ehhez egy legalább 100000 karaktert tartalmazó magyar szöveget. (Ne használj olyat, ami a gyakorlaton szerepelt.) \n", "- Mentsd el a szöveget ennek a notebooknak a mappájába `szoveg.txt` néven. \n", "- Olvasd be a fájlból a szöveget.\n", "- Változtasd kisbetűssé és szabadítsd meg a szöveget az extra karakterektől (amik nincsenek a `hun_alph`-ban). \n", "- Ezután számítsd ki a `hun_alph` minden karakterére, hogy hány százalékban szerepel a szövegben. Majd ugyanezt számítsd ki a `hun_alph` minden betűpárjára is (\"aa\",\"ab\",\"ac\",...). \n", "- Az eredményt mentsd el a `megoldas4betu` és `megoldas4betupar` változókba. Mindkettő legyen egy lista, mely (karakter/pár, gyakoriság) elemeket tartalmaz és rendezve van gyakoriság szerint. \n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Ne felejtsd, hogy a hat feladatból elég ötöt megoldani az ötöshöz" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5. feladat\n", "Az alábbi `titkos_szoveg5` is egy behelyettesítő ábécé segítségével készült. Itt semmilyen extra információval sem rendelkezünk, csak annyit tudunk, hogy az eredeti szöveg magyar nyelvű. Mi lehetett az eredeti szöveg? \n", "\n", "Szerintem szórakoztatóbb, ha teljesen magadtól oldod meg ezt a feladatot. Viszont ha nincs semmi ötleted, vagy elakadtál, akkor az alábbi szöveget visszafele olvasva találsz egy kis segítséget. \n", "\n", " - .ketíges nesevízs ,tliame yge jrí ,degésküzs nav ergéstíges bböt gém aH .takavazs divör a luádlép detehrűzsiK .tíges takos si azssoh kavazs a rám nátuzE .lavásálálatik retkarak ' ' a luádlép dzeK .lavásálálatik kűteb a técébá őtísetteyleh őlelefgem yge lef stípé nasotazokoF .támázs ketese za detehtíkűzsel noygan lezzE .ttüyge llá mesahos etnizs rápűteb kos ,tíges si lánkoráp űteb a zenaygU .kankairokayg ébsévek a gidep kairokayg ébsévek a ,gem kenlelef kenkeretkarak irokayg nebvleyn raygam a keretkarak irokayg tti za návliyN .kenkiylem gem lelef űteb kiylem ygoh ,inlálatik gem dlábórp gidep djam ,si tti tákitzsitats ólnosah zohtadalef .4 a stízséK\n", "\n", "Megoldásodat - az eredeti szöveget - mentsd el a `megoldas5` változóba! \n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "titkos_szoveg5='ynműbkfr qkébkfrbákéów,bthéjyjmhbkqx űdo qj .beóőrk baöéaqjűűjmbwkéxműbwübjbvóőqykéíöím,bőjfrnűbpfénűű,bó bskfvkőáxműbiéisóökőb-bsn űbjqűaőbéjtűj!bwümóvkwbjbőjfryümaföj!bwübü bmóvkűű.bfrkéskwb qnénőfjűűjbskmkfbwü bűkőrkéóökő,bei yóőrbq pfnéfjűűjbőrüéwn ,bdüákfbsjéwaöjő,biékfksökébviéfkűűk-enéfjűűj,büetobfpéúűnűűjbőjfrbfrné jőbűnyaöö.bkqx űöímbykéűówbjbdo qj ű,bkfó qkőbwkyó béóqqkmbykfrúűkűűów,b bsaébkfrbammhbk qűkőáktkbtaéűjbjbyümafnű,bdkmrk köökőbjqűbjqbné qafnű,bjdnmbykéűów.bkfr qkébjqűaőbwxmeimáékbyaőánénmű.bíbynműbjqbpűnm hbdjqjübvóőqbkfrbpűjqhboébké qóőróökő,bjwübőksbü bűpánűűbéhmj,bsúfbkfr qkébjqűaőbjbwkqóökbőksbwkéxmű.b-bőüu jw,bőamjsbsófbkfrbdjqjübdo qj !b-bwüaműnűűbekm.b-bőn,bkqbsaébykmksbsjéjábjqboűnő!bjbdo qj beó qwkmíáiűű,bó bskfu kőáxműbiéisóökő,bjsüwnébyü qjwkéxműbjqbké qóőrök.bwxmné qafübűaé jübwiqiűűbekwxáűbnűű;bjqnwbtiűűkw-skőűkw,bu kéómíáűkw,bu jwbjbdjqjübdo qj bsjéjáűbsüőáüfbjbdkmróő.b bkqűbőjfrbskföku xmó őkwbóékqűk.bőjvnwbűkműkw,bdkűkwbsoműjw,b bjqbkqx űdo qj btaéűjbjbyümafnű,bu jwbjqűbőksbűpáűj,bskéékbtaé.bjbwxmné qafübvóőqkwbeéjőuüaőjwbskfbnmj qőjwbyjmmnűűawbsjfpwjű,b bsüőáüfbskfsnőáűaw,bskmrüwbyaén öjőbyjőőjw,bákbjqbkqx űdo qj bőksbűpáűjbkmwóvqkmőübjqnwjűbjbyaén nwjű.bdnfrjőbü bűpáűjbynmőj,bjsüwnébsüőáüfbkfrb iűóűbké qóőrbsómróőbmjvpműb-búfrböüqnőrbőksbmkdkűbskfü skéőübjbyümafnű!bkfrbőjvnőbjqűaőbó qékykűűk,bdnfrbjqbké qóőrbőrüűyjbsjéjáű.bwüu o qnűűbjb qómóüf,bu jwbwiéxmbjwjéűbőóqőübkfrbwüu üű.bén qpmbűkűűk,bdnfrbwúyaőu ü wnánűű,bskéűbkqbsüőáüfböjtűbdnqbjqbksökébektóék.bjqbkqx űdo qj bmku o qnűűbjbőjáéafq köök,b bnűűbsjéjáűbjwwnébü ,bjsüwnébjqboébwüűkűűkbk űkbjqbké qóőróűbjbq köóöím.bjbőjáéafnűbjqűaőbjbűiööübépdjájéjööjmbkfrxűűbwüyüűűówbjbenmrn héj,bnűűbwüvnénműaw;bjqbkqx űdo qj bwük kűűbjbq kööím,bó bkmfpépmű.bőksbykűűkbó qékb kőwü.békffkmbyü qjyüűűówbjbépdaűbjb qnöaöj,bjqboébekmiműiqiűűbó bűnyaööpűjqnűű,bjbdo qj bskfbnűűbsjéjáű,bjdnyabfpépmű.bskfűjmaműaw,bó botéjbspőwaöjbwxmáűówbdaénsbsa üwbvóőqájéjööjmbkfrxűűbeüqkűűkwbykmk.bsófü u jwbthmk üwb qóűőóqőübjbyümaföjő!b-bfnőánműjbkmófkákűűkőbjbdo qj .b-bdj qőn bánmnfbskfü skéőübotbksökékwkű,botb qnwa nwjű!b-bdaűbkqbskfbsüeómkbdo qj ?b-bdjmmnűűjbjbwiykűwkqíbvümmjőjűöjő.b-bkqbőksbdjqjübvóőq!bdjsü !b kssüűb kbóé!bsn űbwkqáíáüwbsófbu jwbjbdo qj bwjmjőán bűiéűóőkűk.bdjmmfj pwbskf,bdnfrjőbök qómübkmbíbsjfj.b...djsü !b kssüűb kbóé!bkqbjb qhbskf kökqűkbjb qúykskűb-benmrűjűűjbwjmjőán bűiéűóőkűóűbjbdo qj .b-bóőbűpáűjsbjbmkftnööjő,bdnfrbüfjqübkqx űöímbiőűiűűkw,b qóvbjbu kőfó ks,bó bőksbdjsü bjbykékűks.bkmí qiébjqűbfnőánműjs,bdnfrbűóykáó bmk qbjbánmnföjő,bőksbéasbóéűdkűűówbjqnwbjqbksökékw.bákböüqnőr,béhmjsbsnőáűaw!béhmjsbsnőáűaw,bdnfrbdjsü byjfrnw,bdnfrbőksbóékwb kssüű!b-bsjtáb iűóűökőbeüqkűkwbykmkb-b ofűjbjqbjqbksöké,bjwübskfűjmamű,b bofrbü bűkűű.bákbjbőjvvjmübyümafn afőambjqűaőbskfüőűbu jwb qüáűjw,bsüőűbjbönwénű:b-bdjsü bkq,bőksbóéb kssüű!bjbmkftnööbsüőómbkmíööbskf qjöjápmőübűímk!bsüőáüfbskfék qwkűűksbjbwóqökő,bjsüwnébjqbné qafökmübvóőqbdkmrkűűbűombjwjéűjwbjáőübéjtűjs.b-bh,bóőbönmánfűjmjő!b-bwk kékfűksb nw qné.b-bkqx űöímbiőűiűűkw,b qóvkőbvkőáxmiw,bőksbdjsü bjbykékűks,bsóf ksböku xmőkwb kssüék.bsaévkáüfbsüőákőwübjőőrüűbóébjbyümaföjő,bjskőőrüékböku xmüw.bákbwnsü qbómkűbkq:bén qbmkmwüü skékűűkmbdjsü bpűjwnőbtaéőü!bóőbpfrjőbűpáns,bsüűbóékw,bsófü böaőű,bdnfrbjbmaű qjűbkmmkőksb qhm!byjmjdaőr qnébwóqökbykűűkw,beóműks,bék qwkűűksbjqbksökékwűím,bjwüwbsjtáb qksxfrékbyk qőkwbó byü qjmiwőkw,bsüőűdjbu jwpfrjőbjmayjmh,b qómdasn bfjqksökébynmőów.bkfrbőjvnőbkfrb qkfóőrbiékfj qnőrdnqbwkéxműks,bjwübőjv qasöjőbyófqkűűbőkdóqbspőwataóéűbwjvnűűbkőfks.bíbjqűaőbőksbűpánűűbűímksb qjöjápmőüb kssüwóvvkő.bőksbjwjéűbűímkbkmenfjáőüb kőwü,byjmh afn bu jva bynműjsbőkwü.b-bsófü u jwbjbőrjwaöjbwkmmbyjééőnsbyjmjwüőkw!b-b hdjtűnqnűűbjb qkfóőrbj qnőr.b-bőksbyjfrnwbóőbnmrjőbfjqájf,bdnfrbkfrbdjsü bdo qj űbűjéűnfj jw.bmkfrkőbjbfjqájfbvówó,bjqbwüöúétjbkqűbjbwü bwaén náa ű.böaébűpáns,bdnfrbfrjmaqjűn bánmfnűbu kmkw qks.bsn űbsaébkőőkwbjb qkfóőrbiékfj qnőrőjwbü bóőbőrnstjsbjbmkmwüü skékűóű?b-böo pműjsbkm.b-bdaűbsüőákőwüőkwbu jwböjtaéjbyjfrnw?bsübmkűűbökmímksbyóő ófksék!bjb qkfóőrbj qnőrbkmbü bskőűbjbfjqájfbvówdkq,bu jwdnfrbjqbőjfrnőbthmbűpáűj,bsümrkőbjbthbdo qj ,b bmk iviéűbjbvpműéhm;bjb qkfóőrbj qnőrbkfrbejmjűbwkőrkékűb kbwjvnűűbóéűks.beatűbjb qúyksbőjfrnő,bdnfrbümrkőb kssüékwkmmíbmkűűks,bsüőákőwüőkwbu jwbwaéaéjbyjfrnw,bvkáüfbsümrkőbyüáasbómkűkűbóműksbüetownénsöjő,b bsümrkőböx qwkbynműjsbóéűówksék,büfjqbykékűksék!bofrbkm qnsnénáűjs,bjdnfrbu jwbkfrb qkfóőrbdo qj bkmbűpáb qnsnénáőü,bjsüwnébmaűtj,bdnfrbőksbwkmmb kőwüőkw.bőnbákbjb qkfóőrbj qnőrbsófü bdjqjyüűűbsjfayjm,b bkfó qkőbőratj jőbvümmjőűnűűbéas.b-bőks,b kőwüűb kbu jvnwbökbykmká!b-bsnőáűj.b-bsjtábaűmrpwj qűjmjw,bofrbmkfjmaööbsüőákőwübskfü skéü,bdnfrbdjsü bvnéűówjbyjfr.bákbdaűdj,bsn űbtpűbk qksök,bdaűdjb qkékőu kvóőqbyjfrbűk,bjqbyjfr,bvké qk,bkfó qkőböüqűn !baűmrpwj qűjmjw,bq üőhéűbegqiwbaűbéjtűjá,b bjb qns qóábwü maőrbőrjwaöjbjwj qűjmjw,bűjmaőb qkékőu óűbdnqnmbéa!bofrbü bűkűű.bőksbőjfrbómykqkű,bdjbaűmrpwj qűjőjwbökőőxőwkű,bákbdjbthűbjwjéőjwbykmk,bwübmkdkűböúéőü!bjqűaőbq üőhéűbegqiűűbaűbéjtűjs,bó bőrjwmaőueómóűbu üőaműbökmímks.bjb qns qóábwü maőrbőrjwaöjbjwj qűnűű;bjbwü maőrbwkáyk kőbéasbsn nmrfnűű,bskfbü bu hwnmű,b bkfó qbóttkmbnűűbekwxáűksbaéűjűmjő,bskmkfbwü b qúyóő.bjbwü maőrbjőrtjbékffkmbjbwkqóökbykűű,bthmbskfőóqkűű,b bfnőánműbkfrbőjfrnűb-bkqűbóőbsüőátaéűbskfóékqűks.bykűűkbjqbnmmhű,bó bkmyafűjbjbq üőhénsjű.b-b qkékőu óűbdnqbkqbjbvóőq!b-bsnőáűj.b-bőn,bsjtábskfmaűtpw.bjqqjmbkukűökbsaéűnűű,bdnfrbkfó qkőbskfqimáxműks.bjqűaőbökűjvj qűnűűjbjbmrpwjű,bwüeóőrk úűkűű,b bk űkekmóbkmyüűűbjbmpűéüvóőqűaéöj,b qkékőu kdnqhb né tkfrkűbykűűbóéűks.bsnőádjűns,bwnsü qpmbóékqűksbsjfjs!bsjtábwkűűóűiéűks,bofrbeatűbjb qúyks:bűpáűjs,bdnfrbsüőátaéűbdjsü őjwbsnőájőjwbó byü qjmiwőkw,bsófdnqqabkfrb kékfbdo qj b qkskbmaűűaéj,bjwüwböx qwóőbspűnfjűűawbsjfpwnőbjbektkűbyjfrbjqbúéa ű.bákb qkékőu óékbskfskőkwxműksbjb qófrkőűím:büfkőb nwjőbamműjwbnűű,bjbvóőqűaén őjwb nwbynműbjbánmfj,bó b ükűűóökőbu jwbök iviéűbjbeühwöjbjbűiööübvóőqbwiqó.bdnfrbjqűaőbőrkéű-kbjbmpűéü,bjsüűbéjtűjsbykűűkw,bsaébőksbűpádjűűjsbskf,bskéűbsa őjvbékffkmbekmekákqűkw,béasb xűiűűów,bdnfrbdjsü byjfrnw,beómékűkűűkw,bó bxfrk kőbűnyaööjáűjw.bu jmőü;bskfüőűbu jmőü!bőkdkqkőbűpátjbjqűbkmyü kmőü,bjwübüfjqaőböku xmkűk ,bóőbvkáüfbjqbyjfrnw,bsa nsb üőu ,bsüőűbjböku xmkűks.búfrbyaőánénműjsbőjvnwüf,bóykwüfbwóqöímbwóqök,bké qóőröímbké qóőrök;bsüőákőwübu jwbön qjőwnánűűbsüjűűjs,b qüánűű-frjmaqnűű,bjqűaőb pűűrnsöjőbűnyaööjánűű.bőksböúqnűűbökőőksb kőwü,bsaébóőbsjfjsb ksböúqűjsbjbyümaföjő,byófxmbsjfjsöjőb ks.bőkdóqbüáíwbynműjw!bkfrbőjvbjqűaőbkfrbwxmeimáüboébóéwkqkűűbjbyaén öj,b bjőőjwbőrnsöjőbjbőrjwaöjbyjééűjw.bíbfrjőoűmjőpmbkmenfjánűűbthbvóőqőkw;bákbjsüwnébeüqkűőübjwjéűbykmks,bskfüőűbu jwbjbéófüűbdjmmnűűjsb-bőksbóébkqb kssüű!bdjsü !b-bőksbykűűksbó qékb-bsnőáűjbjbwxmné qafüboé,b byófékbjmjvn jőbskfőóqkűű.bjqűaőb qómk bsn nmréjbákéxmű,bjsüékbkááüfbőksbynműbvómáj,bdjb qksxfrékbykűűkwbjqbksökékw.b-bőüu jw!b-bwüaműnűűj.b-bdü qkőbkqbdjqjübvóőq,bákéów,böku xmkűk ,bdjqjübdo qj !byjmjwübmrpwjűbeoéűbéa,b bsn űbdjsü őjwbsnőátawb qkfóőrű.bkqbjqűaőbspmjű afn !bsn űbsjtábőamjsbsjéjá q,bákéówbdo qj ,b bdjqjti qbykmksbjbsübdjqaőwöj!byófűkmkőbiéisbűiműiűűbkm.böku xmkűk ,bákéówbdo qj őjwbsnőáűjw,b byü qjűóédkűkwbskfüőűbjb qxmíeimáksék,bjdnmbsüőákőwübü ské,bó bűpátj,bdnfrbüfjqbykékűgbkqx űdo qj byjfrnw.biéisisökőbmkf qúyk köökőb qüwéaűbdaőrűjsbynmőj,bákbőksbóéűkűűksbdnqqa;bkqűbu jwbjqbjuómbűpátj,bjqbkqx űbőks.bekdóéb kmrksvjvúéöjbu jyjéűjw,bőkdnfrbjbűiööübvóőqbwiqóbwkykékátksbó bwüjátjőjw;bu jwbéüűwj,bxőőkvómrk bjmwjmsjwwnébykűűkwbkmí,bjsüwnébjbdnőeüűaé jwbi qkűjmamwnqűjw,b bnmrjőwnébu pvjbthűbsnőájőjwbéhmjs.bóéákwk őkwbőkykqűkw.bpfrjőbdnfrbmkdkűbóéákwk byjmjwü,bjwüb ndjbőksb qhmbkfrb qhűb ks!bjqűaőbyófékbdjqjwkéxműks!byófkűbóéűbwk kéyk bdaőrjűűjűa ns,bot,bönmánfbómkűkűbwkqádkűűks,bdü qkőbüfjqbykékűg,bdj qőn bkqx űdo qj bynműjs,bsófbjqb kbu iwwkőűkűűkbjqbóéűówkskű,bdnfrbaűmrpwj qűnűűjw,bsüőűbjbdjsü bvóőqkwkűb qnwa .bőksbénőűbjqb kssüűbjqbüfjqbykékűgbvóőqkő!b-byófkqűkbökbómkűkbűiéűóőkűóűbjqbkqx űdo qj .b'" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 6. feladat\n", "Készítsd el az Enigma rejtjelező gépet pythonban. Az Enigmát a Második Világháborúban használták a németek. Körülbelül úgy nézett ki mint egy írógép, amibe beleszereltek három forgó tárcsát. Betűnként rejtjelezett, ha megnyomtad egy billentyűjét, akkor egy kis lámpa jelezte, hogy milyen betűt kell leírnod helyette. Itt egy egyszerűsített rajz a belső működéséről. \n", "\n", "![enigma](http://damasdigabor.web.elte.hu/python/beadando1/enigma.JPG) \n", "\n", "A gép úgy működött, hogy a betű lenyomásával az áram végighaladt egy vezetékekből álló rendszeren, és ahová eljutott, ott kigyulladt egy lámpácska. Először egy kapcsolótáblán haladt át, ami megkeverte a drótokat. (azaz egy fix permutációjának felel meg). Aztán áthaladt három tárcsán. Ezek a tárcsák is egy-egy keverést adnak meg, csak a gép működése közben ezek változni fognak. Aztán egy visszafordítóba futott, ami párokba állította a drótokat és visszaküldte az áramot egy másikon. (Aza egy bijekciónak felel meg). Ezután visszafelé átfutott újra a három tárcsán és a kapcsolótáblán. Így visszaért egy billenytűhöz, és az ahhoz tartozó lámpa felgyulladt. Például a kép azt ábrázolja, hogy a `b` billentyű megnyomására a `c` lámpa fog felgyulladni. \n", "\n", "Ha a gép csak ennyit csinálna, akkor ez persze nem volna más csak egy behelyettesítő ábécé. Viszont minden billentyű ütés után a tárcsák állása megváltozott. Az első ütésnél az első tárcsa egyet tekerődött, azaz minden drót körkörösen arrébb ment egyel. Az előző ábrán lévő állásból például ez lett:\n", "\n", "![enigma2](http://damasdigabor.web.elte.hu/python/beadando1/enigma3.JPG) \n", "Itt már a nem a `c` fog világítani, ha lenyomjuk a `b` gombot, hanem a `d`. Az első tárcsa minden gombnyomásra lépett egyet. Amikor az első tárcsa már annyit lépett, hogy teljesen körbe ért, egyet lépett a második tárcsa is. Mindig, amikor a második körbeért, lépett egyet a harmadik tárcsa is. Így az összes lehetséges tárcsa pozíción végigmentek a tárcsák és csak utána kezdődött előröl az egész. Tehát a kapcsolótábla és a visszafordító fixen marad a működés során, a tárcsák pedig különböző sebességgel forognak. \n", "\n", "Készíts egy programot, ami megvalósítja az enigma kódolást. A feladatott objektum orientáltan kell megoldani. \n", "- Készíts egy `AltalanosTarcsa` osztályt, aminek legyen három alosztálya: `KapcsoloTabla`, `ForgoTarcsa` és `Visszafordito`.\n", "- Készíts egy `Enigma` osztályt, amelynek minden példánya egy enigma gépet valósít meg. Tartalmazza a tárcsákat és azok állását, és a hozzá tartozó tárcsák segítségével képes elkódolni egy szöveget. \n", "- Az elkódolást az Enigma osztály `elkodol` metódusa valósítsa meg. \n", "- Rád bízom a részleteket, például, hogy milyen ábécével dolgozol. \n", "\n", "(Bónusz: Gondold meg, hogy ha tudjuk, hogy milyen tárcsákkal dolgozott a gép, azok milyen állásban voltak és a titkosított szöveget is, akkor hogyan nyerhető vissza az eredeti szöveg.) \n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": {}, "nbformat": 4, "nbformat_minor": 2 }