{ "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=';exeáq:íqb -wijqvqídau'" ] }, { "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='yoonínextt,nmáaám;nlgnsúl ,nóúiknmynlgsní oís!nikáfiknmyőaonütnífvxanvtíjeí,ntbylohiknvtíooíl.noúa ynsymaqtlímntylvtnősniíaíscgjüeg,ncúttbxőaaőtnagamgnmáaoábymncgaüeg;ntbgsg,nsyloníbnívüa,níntbymfőonhiknóőlkeí,nwolynmütbwanámagnvtúloútncxbúiőlkí;nikáfiknyeg dgnóőofőa,nú ídílngiütbgl:ngnvtíjőtnxoúatqntbüawoütgnaütbgl;n gníbüfonlgsnóíansgi,nvtímnúakíoülmüjgl,nsylonsy ölníbngscgfngafgeogbymnsüakgl,nütnsymúfnpáaücfg ncybúlkútny öfg,nvtú őaíoútn úaiúonóíaaílynpgaöag.nfqaísnytnóíaansüinóéfo,nóúiknsymúfnsgióíaaeí,nsüinínvtgvttbújqnytnőasüamú ymnfíeoí:nímmúfnílkősnagamgnfgjgtníncgtbü gl,nvtímnsginlgntbímí eúlntbédgnáfásücgl.nogilíjnőaaonmyníbnönmüonagdglognpyí;nlgsndúaonpüaúftbőicílnúakílnjőfn íayí,nlgsndúaoníndyaőiúlnúakílneqnmüonikgfsgm:nütnsútongiksőtnsgaagoongikntéfcílnógdgflgm!ngafüswaoníndyaői;nlgsnytnímí onsőfnsí,nímynínmgikgoaglnvtgódgantbgscgntbőaalí;njg yinsgiylonúoonagtbníntbyigocglnfgiiga,nytoglonmőfúsúaqniöiátncgtbü gmmga.ncglvgnínoífytblkőoncüóúbőngbíaíoo:nsymaqtlímnxikílvtímneqangtgoonínpíaío,nfímoínytntbíjúfől,níayiniköbognlkgaly,nóőfúsntgsnüfmgblümndgagndgftglonglly.nsymúfnjg yinínlíiknmíllínsgiüfmgbgoo,nsyloníncyfmúbőtlím,nlgmynikrfgmgbgoo;npgaóíeoőnsíe npüayiníbnáonjylogtnjúóőfo;ncglvgnsgitúmíaoí:níbnytoglüfo!nsgiőfo.n'\n", "biztos_szoveg='most egymás mellett egy sírban hevernek! elrémült a világ; nem'" ] }, { "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='-xsöővwíx gőjoágksöxsxjsfzhőgéfqsx-xv óok xsóx gmux fríűsysowjx-,xsókxűőkk öxrjxőm,xsöőkxsxösfsöisyksxiősksgxgéjzwv,xűwfzxwvwmsqqxöéíxj öxőmxg ű kjrv.xc oőfxkrh ok ö,xö íkx frmóx mók jouq xk gk,xsölfxdmsváfzsjxmó íkxk kk öx fzxvőmxkáowöéjzís.x fz j mkxsxk jf ícsíkísxö jk ö,xrmxűsyúísxmóéggksö,xrmósvxi grxh kk öxáksösk.xsókxűsggwkksö,xűwfzxsxűsyúmósvédmjsvxösféjsvxv ggxm flk jő xösféjxwosvőjjxsxjzlgkxk jf í j.xöwjoűskwö,xj öxv íngkxmwvxi ykpírmrq ,xűőmó jxk g xhwgkxsxvsöíéysxmósgwjjéhsg,xmúówkkxűümmsgxö fxowűwmxgőmókk g;xmwvxljz jdxisgskűwóxyákűskxsóx öq íxsxűsyúj,xdmsvx fz kxj öxksjágűskxö fxmwűs:xűwfzsjxv ggxűáívscégdővéqúgxg h mkxiuójő.xjscwvwj,xrymósvévwjxékxhőkwígéókájv;xűággéöwvxowqégkévxsxűsyúk,xrmxdmáíwöhőó m vxg kknjv.xsöővwíxvővpkpkkxsxűsyú,xípfkpjxcsíkísxmóéggksö;xwosipjjxhwgksöxsxösfsmxrmósvwj.xöwjoűskwö,xiáídmsxríórmxwkkűsfzjőxó fóáfwmxwkkűwjájvsk,xűsyújxáksójőx-xqéíxsówjxőmxwkkűwjxrí óű kőxösfékxsóx öq íx-,xsókéjx fzmó íxdmsvxmóéóöríipgojzőí xksgégysxösfék,xőo f jxwímóéfqsj.xmeíex íouvxőggskwóksvxwkkxsxcsíkwj,xjzlí m vxö fxi jzuí jf k f v.xj öxmó í kk öxsókxsóxőggskwk,xisdmsíksxsóxwííwösk.xsxhsohőíéfwvjsvxwgzsjxiemó í mxmósfávxhwgk,xűwfzxknmmó jk j öxv gg kk,xrmxsxűáívéísxfwjowgksö.xjsfzx ío őxkshsvxdmőggwfksvxsxiévxvpópkk,xsxhőónvxvpó gíugxwgzsjxkőmóks,xöőjkxsxvíőmkégz,xo xö mmóőíugxi v k xkőjkéjsvxgékmóőv.xűskkzüvxümóvégjsvxsxknvínvpj,xi űríxksykrvjsvxhrgk öxuv k,xwgzsjxdmpjo m jxíőjfskúóksv,xo xsókéjxgékksöxuv kxí cngjőxö fxyéíjő,xrmxíéyávxőmö ík ö.xsxgáosvxskzsiőső,xö fgékmóővxsxyéíémávwj,xűőéqs,xm jvőxm xkáoysxg ksfsojőxsxdmsgéoyék.xrjxsxösfsömóuíexdmsgéowvvsgxqsíékvwóksöxpmmó ,x ío őxrmxö ó őx f í vv g,xsvővxvngpjq jxjsfzwjx gösísowkkxjrcmrf,xiuvrccxsöőxsóxrkv órmkxőgg kő,xc oőfxrjxrcc jxsöőskkxmóéjksöxíéxösfsöxsxvngipgoőxükís.xsók,xűwfzxűáívscégdővéqúgxőmxg ű kxg h mkxiuójő,xhőgéfö fhégkúxfwjowgskjsvxksíkwkkév,xrmxjzwöqsjxk g vníkpgkrvxh g xsóx íouk,xo xűwfzxsxi gsoskwkxö fxőmxg ű kxwgosjő,xsókx fz j m jxg ű k kg jj vxksíkwkkév.xj öxőmxm yk kk ö,xűwfzxörfőmdmsvxwkk,xsqqsjxsóx íouq jxkéíágxi gx gukk öxsxg h mxiuórmrj vxkőkvs,xörfűwóóéxsójscxrymósvs.xkshsmóxhwgk,xmxuvxsókxöwjokév,xsóríkxwgzsjx íumxmósfüxsóx íou,xsóríkxwgzsjxiemó í mxsxhőíéfwvxőggsks,xsóríkxwgzsjxkőmóksxmxörfőmxmpkrkxsxkshsvxknví ,xsö gz jxűskkzüvxümóvégjsv.xsóx íouxmórgrjxűéíwö-jrfzxűéóxéggwkk,xmxvpóknvxwgzsjxösfsmxíüoxhwgkxsxipgoq xmóüíhs,xöőjkx fzxűsyúéíqwd.xsxíüoxk k yrjxvwmówíüvxö fxcéjkgővévxinffk v,xöéyámisxhwgk,xsűwfzxö fkáoksö.xqrí m vxö fxdm grogéjzwvxkéjdwgkévxvpíng,xűsjfwmsjxrj v gk v,xkügó jfkrvxsxjzőí kkzexűsjfyékxőm.xjsfzxhwgkxsxhőfsmméfxsgvwjzskvwíxö fxűwgohőgéfjég;xrjxc ímó xj öxh kk öxírmókxq jj x-xöőkxv í mj x fzxvőm fríx fzx ío őxöágskméfwj?xwkkxngk öxsxgéfzxöwűéqsj,xrmxv örjz jxiwfksöxsxűáívscégdővéösk.xsóx íoux fzxkőmókéméísxvngpjpmxirjz mmrff gxísfzwfwkkxg xsxűwgo;xpí fxisxéggkxsxkőmókémwj,xwgzsjxqéímwjzwmxhwgkxsxöwűsxsóxwgosgéj,xöőjkx-xőf j,xqékísjxöwjoűskwö,xöőjkxsóx frívőíégzxqájoéys,xo xj öxmónív xhwgk,xűsj öxópgo,xhsgúméfwmxyúkrk örjzxsxmó öj v.x fzmó íxdmsvxcsíéjzőxsgsvwvxy g jk vxö fxsxisxkphrq j,xwgzsjxdm cc dmvrv,xűwfzxsxkrío öőfxm xrík v.x öq íiwíöéyüsvxhwgksv,xdmsvxmwvvsgxsíéjzwmsqqsv,xknjorí vj vxöwjokévxösfávsk;xhőíéfmóőíwöxíáűékxhőm gk v,xgrfz-xö fxmóüjzwfmóéíjzxolmmó g,xjsfzwjxmórc jxi mk kk.xüfzxgékksö,xöőjkűsxv í mjrj vxhsgsöők,xo xűwfzxöőkxsókxj öxkáoksö.xsvvwíxwosgrc kkxűwóóéöxsóx fzővnv,xsxg físjfwmsqqőv;xsxhéjowíqwkwöís,xsxűáívscégdővéísxöákskwkk:x-x óxyúxg jj xj vnjv,xrcc jxőgz jkxv í mnjv!xörfxű fz mxőmxsxhrf ,xőfsóéjxcwöcém!x-xrmxöőjrgxkwhéqqxjrók xsxhéjowíqwkwösk,xsjjégxjsfzwqqxg kkx gísfsokskéms.x-xdmsvxvpgdmpjsoűskwö,xj öxpípvq x-xöwjoksö.x-xj öxpípvq !x-xvőégkwkkévxsxkpqqő v,xmxöéíxö fxőmxísfsokévxsxűáívscégdővék,xsöőkx g í mók kk ö,xrmxwoskéjdwgksvxh g xsxg fcáűéqqxöwűéís.xípfkpjxg xőmxmóüíkévxsxipgoq x-xuvxőmxöéyámiékxégglkwkksv,xmxsóxrjxhéjowíqwkwöskxöőjkűsxdmsvx fz j m jxj vővxvrmólk kkrvxhwgjs.xöőjoyéíkxi gxőmxolmólk kkrv,xöwjoűskwöxjsfzwjxmórcxhwgk!xsxvődmőxcúvwvxsísjzoíúkksgxiwjkévxvpíng,xűwgoirjzq jxi űrílk kkxg jf xiékzgsvsk,xgwqwfúvskxsffskksvxíé;xüfzxirjzg kkxsxis,xűwfzxvécíéówkkxsxmó ö ö.xg cv móéíjzsvíúgxfzeykpkkrvxsxmólj v k,xsówvvsgxksívlkwkkévxsxi űríxiékzgsvsk,xhőíéfwvsk,xfzröéjkűsíöskxmóővíéówkkxísykáv.xsgőfxőmö ík öxíéxsóxrjxmó írjzxűáívscégdővéöís,xwgzsjxöéyámisxg kkxq gug ,xűwfzxqőókwmsjxj öxsvsoxcéíysxsóx frmóxhőgéfwj.xsókéjxrív ó kkxdmsvxö fxsóxőfsóőxjsfzxknjoríkéímsméf.x fzxmóégxíáűsxm öxhwgkxísykáv,xmx óxsxg flógrm m qqxpgkpóvporm.xö fűlhksvx jf öxőm,xűwfzxjróó öxhrfőfxsxöéyámőxnjj cnv k,xo xűüóúoysöxvődmőkxsííéqq,xö íkxkügméfwmsjxjsfzxhsfzwvxűwóóéyáv.xsókéjxíéó jolk kkxsxó j vsí.xöőjkűsx ó íxö fx ó íxcsíéjzőxnh fűsísjfxdm jongkxhwgjsxö f,xwgzsjxk gőxó jfrme,xwgzsjx íumxhwgkxsxűsjfys;xrjx gumópíxsókxűőkk ö,xsxűskkzüvxrj v gj v,xsókéjxöőjkűsxvsvávvmóúxö fxíőfúinkkzxh fzngkxhwgjsxq g ,xhrfngxöéíxöáómővégkxsóx frmóx íou,xfz íö vrj v,xűsísjfóüfémxrmxösoéíinkkzxó jfk xsxg fmó qqxosggsöwvsk,xmx óxsóx frmóxűsísjfyékrvxsxknjorí vxöéyámiéyéqúgxűsjfówkk,xsóxrjxűáívscégdővéöqúg.xmwűsm öxűőkk öxhwgjs,xűwfzxőgz jxmwvísxvrc m.xo xc ímó x óxskkúgxőmxinff,xvőj vxsxv órq xv íng.xüfzxö fűskwkkxsxöáómővs,xűwfzxörfxsxvpjjz öxőmxvődmwíoágkxfzpjzpíemrf öq j,xöéíxsösjjzőxvpjjzx fzxvőm fríkugxk gőv.xjsfzwjxíphőoxhwgkxsóxrymósvs;x qq jxsóxrhmósvqsjxwosipjjxíphőo vxsóxryy g v.xhőíísoskxi grx jzű xmórgxkéösok,xqwíówjfsjőxv óo kkxsóx ío őxkúxknví ,xmxsxg q fu,xiőjwöxiékzgsvxö fxgwqwfúvxgsmmsjxmórkiwmógwkksvxsxg h fuq j.x gkejk vxsxöéyámisxcúvűégúgwöqyső,xinffuűloysőxrmxvőmx ívrgz ő,xsö gz v kxsxg h g ví xrclk kk v.xűskxknjoríxhőmmósdőc gk xűwóóéöxsxűáívsc dv k,xmxö fvrío ókrv,xjőjdm- xhsgsöőxvlhéjméfwö,xsöőkxk gy mlkű kjrj v.xsíísxvrík öxuv k,xöwjoyévxö f,xűwfzsjxv ggxűáívscégdővéqúgxg h mkxiuójő.x-xűwfzxöőxűwfzsjxdmőjégyávx-xöwmwgzfwkkxsxg f guv guqqővnvx-,xsókxgékűskksoxsóxrymósvs!xsgőfűsxőmö íkrgxíéxsxűáívscégdővéoís.x-xrjxj öx íí xhsfzwvxvlhéjdmőx-xi g gk ö,xsókéjxö föwjoksöxj vőxv í v j,xöríkxmóéjksöxíéxösfsöxvngwímóéfőxükís,xmxöőkxhéíjsvxwkkűwjxsóxáksóémwökúg.x-xáfzsjxöőxűsmójsxsóx frívőíégzjsvxmxsóx frmóxűsksgösmxqőíwosgwöjsvxsqqúg,xűwfzxrjxhrfőfjróű kk öx ókxsxfzpjzpíexöéyámőxnjj c k?x-xvrío ók öxkug .x-xj öxhsíéómwgűskwöx guxsxűáívscégdővéqúg,xmxj öxöwjoűskwöxsók:xjróórk v,x óxőkkxsxűáívscégdővs,xsxg h mxösyoxsókéjxypj!x óxvngpjq jxőmxsiirg xljz jdmrfxhwgjsxdmácéjx-xyúggsvwkkx öq í vj vxhsgú!xsxknjoríxsvvwíxq oáfksxsxvőmáyyékx fzxvrvxőqwgzsxv gzűrq ,xrmxsókxöwjoks:x-xyúgxiőfz gy!xöwmkxö fríőjk öxsxhéjowíqwkwosk;xűsxűsóskrímóxsóx frívőíégzxqőíwosgöéqs,xrík moxsxqwkwoxhrfrkxsóx frívőíégzxö ggrű ó,xmxö fgémo,xőqwgzsxisvsoxsxqwkqúg,xq qwílkysxsóx frmó kxörfxsxűőo fxkrgq jxőm.xg fsgéqqxhőmó gxkugnjvxhsgsöőx ögrv k,xmx ó jvlhngxörfxhsgsöők.xöő gukkxsxvőm fríxhrfőföwjoksxhwgjs,xö fríőjk kk xsxűáívsc d vxhéjowíqwkksgxi gmrf mxvőíégzsxö ggrk,xmxvőhőíéfówkkxjzwöqsjxsxqwk,xfzpjzpíexőqwgzévxisvsoksvxísyks,xmxwgzsjxqúolkúsjxőggskwóksv,xűwfzxsóx frívőíégzxjzwöqsjxö fcsísjdmwgks:xsówvxsóx f í v,xsvővxsxg fvpó g qqxhsjjsvxsxkeóű gzű ó,xoáfyévxsxkeóq xsxisívávsk,xűsooxg fz jx fzxvőmxrf kkxmósfxőm,xö íkxsóxőqwgzsőggskxj öxq dmng k mx fríwííjsvxhsgú.x-xrmxöőxsóxsxörfxhsgsöő,xsöőkx öglk kkrg?x-xvrío ók xsókéjxsxvőíégz.x-xsóxqőówjzxj öxöém,xöőjkxsöőkxvőíwqqsjúxmőv íj vxmówvksvxj h ójőx-xi g gk xsóx fríűsysowj,xmxsóósgxö fiwíolkwkksxsxűáívscégdővék.x fzxdmscémísx gkejkxíúgsxsxmwvxőqwgzs,xsxvőm fríxüfzxksíkwkks,xöőjkxsxvsíö mk í vxsxcégdéyávsk.x-xsóxőqwgzs,xöwjoksxj v öxsxknjorí,xdmsvxmó öj vxhsgú,xsóxwííjsvxö fxsxkscőjkúmó íh vj v.xsxingj vxö fxsóxlógrmj vxőmxv ggxéöxhsgsöő!x-xrmxsóx fríűsysowjxö fg jolk kk xsxvsíö mk íőxcégdék.xöődmwosxó j vsíxűsímsjkxi g!xj öxwgzsjxöáómővsxhwgkxsó,xöőjkxsóx ío őxknjorí vxnjj crj,xj öxqőówjz,xűsj öxőfsóőxvwjzűsó j ,x fríingj vxv oh m.xúíőémőxóeíóshsíxv í v o kk.xöőjkűsxűőík g jxmórgxvshsíksxhwgjsxö fxsxiphuxrk g v k,xöőjkűsxhsgsö jjzőxisórvxö fxgéqsmx fzmó íí xiwííkxhwgjs;xsxírónmkxhwgkxsxowq,xsxkeócőmóvégúxsxowqh íu.xsókéjx fzmó íxdmsvxdm joxkéösok,xdmsvxsxk siuóuxoáíáómwgémsxűsggskmówkk,xo xwgzsjxvngpjpm j,xűwfzxj öxg ű k kkxkáojő,xv óoő- xhsfzxhrfóő;xíév óok xsxvőmisórv,xíév óok xsxjsfzisórv,xiwíkzwfwkk,xóáqwífwkkxhsgsö jjzőx orjz,x fzöémxmóshéqsxhéfhs,xpmmó hőmmós,xöőjkűsx gö jkxhwgjsxsxmnkjőhsgúyáv.xrmxsxvőm fríx fzí xhsosqqágxoőíőfégksxsóxnk ö k,x fzí xhsosqqágxiwíkzwfksvxsxisó vsv,xöőjoyéík-öőjoyéíkxvőiákxq gugnvxsóxrk g.xdmsvxüfzxóüfwkkxsxkeóű gzxvrörjz x-xyáy!xsxhrfrjxöéíxvőqlíűskskgsjxhwgkxsxgéíös,xmxsxvőm fríx g yk kk xsxvsíö mk íőxcégdék.x-x óxsxg h mxáfzsjxj ű ó jxvrmóngkx gx-xöwjoksxsóx frívőíégz.x-xo xí örg ö,xöwmkxöéíxkégsgyév.x-xqőówjzxj ö.x ooőfxríkxdmsvxsxkáowöéjzwöx-xi g gk xsóx fríűsysowj,xrmxörgz,xáohsíőxqúvwkxhéfwkk.x-xdmsvx ooőf?x-xvrío ók xdmsgúowkksjxsxvőíégz.x-xsvvwíxűékxűsggyávxsxöémwoővxűsysowjk.x'" ] }, { "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 }