{ "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='lödd,mguqó,ojóú,uöíb'" ] }, { "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='plgd cúdumc caüo űh guúwjlhd wacogéc, chódhc h áéfüozég h fülwhő wénoguéc, zagn h zéfüchámfduh plcwtfghc pénéddé, plcwtf h cúzhexbg ,áífcbzlc jéwéddé. péed jawoegl caggus, caggus gépxfhc offüéw, űhgép acawwéw lf, of pénjbngl coüüéw, űbnu xfhc öd ábffühgdőh plgz é khfdhn deojh, péwu únuhg jéőodöw fép őmed péffüé goűh. dbwzl óézln phnmd féeoguqw jbenhdőh, acwogéc xfhómfld fsesg bfüdbnhdőh: apwlc h koe fümőmg of beemg h khzghc, ghnu péeézd füépél füaeguég clzhnhzghc. guéwké h fümőmáhg pén gép dúzgh joegl, xfhddbnt jbnmkhw hüd lf affüékoeül, plgd kéfüédd cúdumo xfbebn koeéf gumwh; fégcl fép wmdbdd pme zqűafá khzhd gmwh. fbc ábwubgnmf údmg koneé cljmehzkh, wédéwéóqwd plcwtf hü údxmg énu óhzeh; íel goó őadd-pégd bdd; hffübgu, wmgu of joejl, plcwtf goüdé öcéd, éw lf úgdh goügl. hwmjqnnéfüdéddé jéőod ghnu ámghdáhg, péed énu óogüé lf glgxf qeéf dhefbwumáhg, óézln gonu ghó tdh xfhc nbpámd pld ékédd, péwuéd kmgzbebwkh ídjowég füézűédédd. űhő em! űhő! whcőúc éw h áíámghd dbemd; mwpbf h xfhówmeúgc: lnuúc pén h ábemd! lnumw kog xlpáhwbp: plgzőmed emz wbxfbwbp. áéwop lgcmáá úehp: hpínu lfübgubzbp. phnhzoátw lgnuég! űhwwbz-é cbxfpmebf! donu ínu, plgdűh lggmw. úehp! gép wéfü cmebf? űh xfhc égguld dúzdbc, pbgzh plcwtf, lggl: lnuh pén h jawz h phehzocbd: inu gl! '\n", "biztos_szoveg='miklós nézte őket, el is unta nézni. aláfüggesztette fejét nagy'" ] }, { "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='aqűdmpqóurjdeűlníükukeűínzúklkjjűkuéűúajdea:űkué-úkjjo,űkué-úkjjo!űaűsójóeűfdmeér,űúamlűaqűdílaíóe,űykmjűsófdmrfhíűiuékúkqkjjűsaqa kín.űasduéűykej,űykej,űkuépqkműüpaúűkuéűwneűfdpqdmúóeeéaíűjaíóíúdqdjjűaqűrjde.ű kmjkíykpűfaeéaűwdíj,űaíphűacúaűdíéaeűyníékeűíkíhudjj,űsduéűaűykíínjűwkmjk.ű-űalcdeűipjke,űwijnqűvmay!ű-űúöpqöejűmóűaűfdpqdmúóeé.ű-űyiíékeűpqnzűúamldlűwae,űpűyiíékeűzdyzópűfdmeérl!űíójpqiúűmacjal,űsduéűlkmnúűúajdeaűwaué.űydpjűyóműüpaúűzneqklűíkuéke,űaykeeéijűaúampq.ű-űúöpqöeöyűaűchúőwóepóudlaj,űömkuaeéóy!ű-űíójdlűaqjűaűeauéű ój?ű-űúnmlkqjkűaűfdpqdmúóeé,űpűkuéűúöqkíiű ómaűyvjajdjj.ű-űaeeaúűaű óeaúűdlwapűaűfkípkck.űyóppqű öíűaűüprüpóma,űdjjűkuéűámkukjűjaíóípq,űaqdeűíkkmkpqúklskjpqűaű aűdlwófa.űaűlkmkúalmaűyaclűúöjkíkjűüpawamdú,űsduéű öísrqsappaíaú,űsaűúióíjapq.ű-űlkűsójűyijűüpieóícaúűneűaű aűdlwófae?ű-űúnmlkqjkűaűúajdea.ű-űpqkmkqqűzneqjűyaualeaúű-űydeljaűaűfdpqdmúóeé.ű-űjvllűyku:űsaűíknmpqűaqűdlrűyníénmk,űkuéűjóuapű díédphmaűcvjpq.űeazzaíiűwiíóudppóuűwaeűaű díédphe,űykmjűpqóqűykuűpqóqűíóyzópűnuűdlaíkee.űsómdyűacjhmaűjaíóípq,űúieéijsajdlűaúómykíéiúkj,űykmjűaűqómfaeűaűúvíüp.űsaűfkínzpqűaqűkípoe,űkuéűeauéűíólójűjaíóípqűaűpqdfaűúöqkzne;űaűíólóeűkuéűúvjéaűáí,űaúúdmaűpqkykűwae,űyiejűkuéűjkóp ielqpa,űlkűjkűykuűekűicklcűjoík!űdlaaldyűekúklűaűúnúűúdüúópűúöjneékykj,űaqjűjkmőjplűíkűaűzalíhma,űaqjóeűúazlű öíűaűúvjéój,űnpűáíjkplűaűúöjneékymk.űeéiplűúiűaűíólój,űnpűyamúdícűúiűfkíoíkűaeeéiűmnqzneqj,űaykeeéiűüpaúűúkíí.űsaűieúóffűkqápjzneqjűaúampq,űeéiplűúiűaűyópdliúűacjhj.űaqűkqápjöjűipűkuéűúvjéaűomqi,űlkűkeekúűaúúdmaűaűpqkyk,űyiejűkuéűyaídyúkmnú.űkjjoíűpkűicklcűyku,űwippqaűekű dmlvíc!űáíjkplűüpaúűaűúöjneékymk,űpűwnuéűaqűkqápjzneqfoí,űaykeeéijűüpaúűkífőmpq.űsaűamaeézneqjűúőwóepq,űwkskjpqűaqjűip,űüpaúűeéippűfkűaűsamyaliúűpqdfófa.űaqűamaeéajűomqoűúvjéóeaúűaúúdmaűpqkykűwae,űyiejűaűúdzzkesóuaiűúkmkú-jdmdeé.űkqűaqjóeűyóműúvjéaűaűcawófhí,űkísiskjkl!űlkűynuűkjjoíűpkűúkííűykuicklekl!űüpaúűúazlű öí,űáíjkplűaűúöjneékymk,űpűwnuéűaűíólófhíűaeeéiűamaeézneqj,űaykeeéijűsaqaűjvlpqűüizkíei.ű-űkqűekyűipűwdíeaűmdppqű-űömáíjűykuűaűúajdea.ű-űynuűüpaúűaqjűydellűyku,űsduéűjkűyiíékeű iqkjpnukjűúnmpq,űömkuaeéóy.űykmjűfiqdeédp,űsduéűaqnmjűaljalűekúkyűkqjűaűjaeóüpdj,űyiwkíűyaualűipűsapqedjűaúampqűíójeiűfkíoík.ű-űlksduéűaúamdú!ű-ű kíkíjkűaűfdpqdmúóeé.ű-űekúkyűekyűúkííűkuéűómwaűmnqzneqűpk!űíku öíckffűaqűaqűhüpúaűjxqpqkmpqóy,űayijűaűeauéaeéóyű kíkcjkjjűdjj,űayiúdművjdícómaűkmkpqúklkjjűíkűaű aűdlwófa.űaqjűaűjxqpqkmpqóydjűsdqlű öíűekúky!ű-űed,űaúúdműüpawamlűaűlkmkúaymaűaqjűaűúöjkíkj!ű-űwkpkíúklkjjűekúiűaűúajdea.ű-űuékmk,űijjűaűúöjníű-űydeljaűaűfdpqdmúóeéű-,űnpű dulűaűúnúűúdüúópűúöjneékykj.ű öíyópqdjjűaűúajdeaűaű aűüprüpóma,űíkkmkpqúklkjjűaqűdlwófa,űpűkuéűjóuapű díédpheűjaíóíjaűyauój.űpqóqűykuűpqóqűíóyzópűwiíóuőjdjjaűykuűaqjűaű díédphj,űasduéűaűfdpqdmúóeéűydelja.űyku dmlőjdjjaűaűúvíüpdjűaqűkípoűacjhfae,űnpűfkeéijdjj.űsvs!űdjjűáíjűaűíólaűjkjkcneűaűúvjéa,űaűjkóp ielqpapqkyx,űpűmófóyvíjűaűúajdeóma.ű-űlkíiűíkuneéűwaué!ű-űliüpnmjkűykuűaűúajdea,űaqqaíű öíúazja,űmóáíjkjjkűaűfdpqdmúóeéűúöjneénmk,űpűlkukpqmkűjöyjkűaűqpkfnjűmnqzneqqkí.űaqjóeűfküpvújaűaűíólój,űwippqaáíjkjjkűmóűaűúvjéój,űpűfkeéijdjjűaűyópdliúűpqdfófa.űruéűwdíj,űasduéűaűfdpqdmúóeéűykuydelja.űdjjűáíjűaűúvjéa,űaűyaídyúkmnúpqkyx,űpűmófóynpqúdldjjűaűúajdeóma.ű-űyijűfóyvípqűmóy,űyiejűfdmcrűaqűrcűúazvma?!ű-űpqhíjűmóűynmukpkeűaűúajdea.ű-űynuűúikpiúűaűpqkykl!űúazja,űmóáíjkjjkűaűfdpqdmúóeéűúöjneénmk.űlkűayiúdműaűíólófaeűykuíójjaűaűjöynmlkúűkqápjzneqj,űkípqhmjaűaűmnqzneqj,űnpűkqápjjkíűjöyjkűykuűyielkeűqpkfnj,űynuűaűfdmeércójűip.űaqjóeűfkínzkjjűaűsamyaliúűpqdfófa.űsójűaqűaqjóeűmkjjkekjkpűwdíj!űaqűamaeéajűomqoűúvjéóeaúűüpaúvuéaeűaúúdmaűwdíjűkué-kuéűpqkyk,űyiejűaűúkmkú-jdmdeé;űruéű dmdujaúűaű kcnfke,űyiejűaűúkmkúkú.ű-űchűkpjnj!ű-űúöpqöejűekúiűaűúajdea,űynuűpqaívjóíjűip,űykmjűiíékeűúvjéójűekyűyielkeeazűíójsajdjj.űenqjkűkuéűlamafiu,űaqjóeűruéűudeldíja,űkíkukjűenqjk,ű öíúazjaűaűúvjéój,űmóáíjkjjkűaűúnúűúdüúópűúöjneémk,űnpűúieéijdjjaűaűíólój.űvmayipjke,űykeeéiűjöynmlkúűamaeéűwdíjűaffae!űykuwkskjjkűwdíeaűmacjaűúdzzkesóuaűwómdpój,űaűúaíóüppájoűappqdeédúűyielkeűyamüizóeűyaíaüój,űaűwiíóuűwaíaykeeéiűhídyúajdeócój,űúipdpjdmójűykuűsiejaídwój.űkqűwdíjűynuűüpaúűaqűiuaqiűzneq!űekúióííjűaűúajdea,űydpjűykuűaqűkqápjzneqjűsóeéjaűkíűaűqpkfkifoíűykuűaűfdmeércófhí,űpűamaeéajűjöyöjjűaűskíénfk;űaűpazúócójűipűjkíkykmjkűamaeeéaí,űynuűaűüpiqyapqómójűip,űsduéűaíiuűfőmja.űwdíjűyóműzneqk,űaykeeéimoíűekyűipűóíydlsajdjjűpdsa.űaűúkmkú-jdmdeépqkyxűúvjéójűwippqaáíjkjjkűaűíólóma,űfküpazjaűyauaűyöuöjjűaqűacjhj,űpű öíúióíjdjjűaű aűdlwófhíűaűfdpqdmúóeéeaú:ű-űed,ű öísrqsajpq,űömkuaeéóy!ű-űsdqdl-kűaűjxqpqkmpqóydj?ű-űúnmlkqjkűaűfdpqdmúóeé.ű-űaqűóyű-űúazdjjűnpqfkűaűúajdeaű-,űammhíűfiqdeéűyku kíklúkqjky!űwippqa dmlvíjűsój,űnpűykuúkmkpjk.űaűfdpqdmúóeéű öísrqjaűaű aűdlwófhí,űpűaűúajdeaűrcmaűdjjűóííjűaqűdmpqóurjde,űüpaúsduéűydpjűyóműamaeeéaíűwdíjűjkíkűaűqpkfk,űaűfdmeérca,űaűpazúóca,űynuűaűüpiqyócaűpqómaűip.ű-űaqjóeűyiekúűekúklűkqűaűjxqpqkmpqóy?ű-űúnmlkqjkűaűfdpqdmúóeéjhí.ű-űpkyyiűúöqölűsdqqó!ű-űeékíwkíjűaűfdpqdmúóeé.ű-űnmlűfkűaűzneqkllkí!űilkűaqqaíűaűjxqpqkmpqóyyaí!ű-űekyűalliuűwaeűaq!ű-űydeljaűaűúajdea.ű-űydellűyku,űyiekú,űykmjűsaűekyűydeldl,űruéűijjsauéíaú,űsduéűpdpkűíójpqűjöffkj.ű-űfiqdeéűekyűydeldyűyku!ű-űúióíjdjjaűaűfdpqdmúóeé,űnpűúiűaúamjaűúazeiűaűjxqpqkmpqóydjűaűúajdeaűúkqnfoí.űedűlkűchwaíűsrqdjjűvccaj!űaűúajdeaűykuynmukpklkjj,ű öílsöqűwóujaűaűfdpqdmúóeéj,űpűyimkűaqűeauéűekskqkeű öíjózópqúdldjj,űyóműykppqkűcómj.űyielkeűamaeéójűfkíkúöjöjjkűaűfdpqdmúóeéűúöjneénfk,űaűwóííómaűldfja,űaűjxqpqkmpqóydjűykuűaűqpkfnfkűmkcjkjjk,űpűykejűjdwóffűöíkpűínzjkúúkí.űalliuűykej,űyőuűkuéűeauéűwómdpfaűekyűnmj.űijjűaűíkupqkffű dualhfaűjnmjűfk,űúieéijjajjaűyauóeaúűaűíkuzdyzópaffűpqdfój,űaűíkucdffűnjkíkúkjűmkelkíjk;űjkskjjk,űsipqkeűjkeukműpdúűzneqkűwdíj.űaqűieap,űaúiűaűüpiqyócójűjipqjőjdjja,űpksduéűpkyűnmjkjjk:űsduéűíkskjűkeekúűaűuaqlauűrmeaúűiíékeűwklíkjjűüpiqyóca.űlkűyópeazűaqjóeűwkjjűaűúajdeaűdíéaeűüpiqyój,űsduéűaqűsnjűeékíwkeűfkpqníj;űmvsóúajűipűmkelkíj,ű iedyűmvsóúaj,űpűydpjűyóműiuaqóeűruéű kpjkjj,űyiejűkuéűkíoúkío,űuaqlauűrm.űaűwómdpfníikúűkíliüpkúkljkúűekúi,űsduéűyiíékeűpqnzűaqűoűwómdpvú,űyiíékeűsajaíyapűaűúimóíévú,űpűyiíékeűpqnzpnukpűpqnzűíóeéaűwae.ű-űaqjóeűsdíűíkskjűíójeiűaqjűaűúimóíéúipappqdeéj?ű-űúnmlkqjkűaűúajdea.ű-űekyűíkskjűaqjűíójeiű-űydeljóúűaqűkyfkmkú.ű-űsajaíyapűmnqzaídjófaeűíaúiú,űúo aíaúűykuűomjdmeédúűwkpqiúűúömáí.űpkeúiűekyűjkskjiűfkűdlaűaűíófój,űüpaúűaűúimóíé,űykmjűykuchpdíjóú,űsduéűaűúimóíéúipappqdeéjűkuéűúöqöepnukpűúajdeaűwkpqiű kíkpnuáí,űpűkffkűaűúimóíéűekyűjömolskjűfkík.űaqnmjűomqiűőuéűaűíóeéój.űneűfiqdeéűpqkmkjenyűíójeiű-űydeljaűyauófaeűaűúajdea,űlkűsójűayiűjiídp,űaqűekúiűipűjiídp.űwőuaeűníjkűwiíóuójűaűwómdpfae,űpqőesóqfaűcómj,űaűúimóíéűúkmjcnfkeűúdüpiúóqdjj,űpdúűzneqjűdpqjduajdjjűpqnjűaűpqkuneékúekú,űpűkqűiuaqóeűpqnzűüpkíkúklkjűwdíj.űjvljaűóyűaűúajdeaűynuűpqkuneéűúdmófhí,űyiíékeűúkpkmwkpűldídu,űsaűkuéűómwaűmnquamapaűpieüpűaqűkyfkmekú!űuaqlauűíkjjűsój,űpqnzűmvsóúfaeűcómj,űnpűpdúűfamójcaűwdíj,űaúiúűyielűaqjűydelduajjóúűmhía,űsduéűiuaqiűekykprm.űömáíjűkeekúűeauédeűaűúajdea.űüpaúsduéűyielkeűzneqűkí duéűkuépqkm,űsaűekyűuéamazőjcóú.űkuéűmkuukíűammaűnfmkljűaűúajdea,űsduéűúnjűómwaűmnqzneqűüpömöuűaűqpkfnfke.űúiűúkííkjjűúöíjöqeikűpqnzűpqdfócófhí,űkuéűeédydmrpóudpűúipűzalíóppqdfófaeűykusrqhleia.űyauaűjipqjduajjaűaűüpiqyócój,űyauaű díldquajja,űasdíűkípqaúalj,űpűaűpdúűfamójcaűúöqáíűkuéűpkűíójduajjaűyku,űykmjűiukeűpdúűínzüpojűúkííkjjűwdíeaűykuyópqeia.űkuéűkpjkűynuűaűuékmjéócaűipűkí duédjj,űpűúdmdypöjnjfkeűáílöuníj.űkuépqkműüpaúűkpqnfkűcvjdjjűaűjxqpqkmpqóy,űayijűaqűdlwapű ófhíűsdqdjjű kí.űruéűkyínúkqkjj,űsduéűaffaeűwaeűynuűkuéűúipűuékmjéawnu.űkíowkjjkűaűjxqpqkmpqóydj,űjáqkjűüpisdíjűwkíkű-űsójűaíiuűzajjaejűúiűaűúdwófhíűaqűkípoűpqiúma,űúijómvíjűaqűacjh,űpűkíojjkűjkmykjjűaűmnqzneqjűomqoűúvjéa,űaűjkóp ielqpapqkyx.űykuóííjűaűúajdeaűkíojj,űnpűaqjűúnmlkqjk:ű-űyijűzamaeüpdípq,űnlkpűuaqlóy?ű-űsójűkqűyi?ű-űóyvíjűkíűaűúajdea.ű-űvuéaeüpaúűlkmnúűjxqpqkmpqóyűkq,űsaűyielkeűúőwóepóudyajűjkíckpőji!űpqkmkqqűekúkyűkuéűúipűzneqjű-űzamaeüpdíjaűaűúvjéóeaú.űaűúvjéaűkíídsdíj,űpűkuéűpqkyziííaejópűyríwaűwippqaűipűjnmj.űjkíiűkmpqneéűzneqjűsdqdjjűaűpqócófae.űydpjűjvljaűykuűaűúajdea,űyijűnműaqűaqűhüpúaűjxqpqkmpqóy.űsaűkuépqkműájöjjűaűúdwóma,űykííkjjkűjkmykjjűaűmnqzneqjűomqoűúvjéa,űaűjkóp ielqpapqkyx,űsaűúnjpqkm,űaqűkqápjzneqűomiqock,űaűyaídyúkmnúpqkyxűúvjéaűckíkejűykuűkíojjk,űsaűykuűsómdypqdműwkmjűmóűaűúdwóma,űaqűamaeéajűomqoűúvjéa,űaűúkmkú-jdmdeépqkyxűjkmykjjűkío,űpűsdqjaűaűzneqjűpqóyíóíajíae.űaűúajdeaűykuiejűfkúöíjöqöjjűaű dualhfkíiűzdyzópűpqdfófa,űykuiejűpqnzűmvsóúfaeűcómj;űaűfamójaiűőuéűykuiejűmóipykmjkú,űnpűüpvzaűchjűydeljaúűmhía.űkuéűeazdeűaqjűydeljaűyauófae:ű-űynuipüpaúűúáíöeöp,űsduéűaqjűaűúimóíéúipappqdeéjűpkeúiekúűpkyűpqafalűíójeia.űaqjűfkpqníiú,űsduéűüpvlóíajdpaeűpqnzűjkmkyjnp,űlkűsójűyiűsapqea,űsaűekyűínzskjűúiűaffhíűaűjdmeédp,űeauéűmnqzaídjófhí?űjaíóeűpdsaűníkjkyfkeűekyűíójsajdy.űsdíűipűaqűaűjxqpqkmpqóy?űmóájöjjűaűúdwóma,űpűkuéűpqkyziííaejópűyríwaűkíojjkűjkmykjjűaűúvjéa,űaűjkóp ielqpapqkyx.ű-űiuaq,űsduéűyóműnc nímkűcómű-űydeljaűekúiűaűúajdeaű-,űlkűneűeauédeűpqkmkjenyűíójeiűaűúimóíéúipappqdeéj,űsaűüpaúűkuéűziííaeajmaűip.űaűúvjéaűeédyfaeűúiídsdíjűaqűacjhe,űpűyikíojjűynuűaűúajdeaűfküpvúsajjaűwdíeaűvjóea,űyóműwippqaűipűjnmj.űaűsójóeűsdqjaűaqűaíwhűúimóíéúipappqdeéj,űaúiűdíéaeűpqnzpnukpűwdíj,űsduéűaúiűmóenqkjj,űmöujöeűúijaíóísajja,űsduéűiuaqiűúimóíéúipappqdeé.űaűúajdeaűekyűipűjvljaűykuóííei,űsduéűykuűekűüphúdíca,űykmjűoűykuűiuaqiűúajdeaűwdíj.űaűjkóp ielqpapqkyxűúvjéaűwippqaimaydldjjűaűúimóíéúipappqdeeéaíűaűmnqzaídjófa,űpűyópeazűmkuukí,űayiúdműaűúimóíéűykuűaűúimóíéenűmkuukíiűjkócójűijja,űaűúimóíéúipappqdeéűkíydeljaűekúiú,űsduéűüpdlóíajdpűóíyaűwdíj.űaqjűóíydlja,űsduéűkuéűúvjéaűaűsójómaűúazja,űkíwijjkűkuéűúajdeósdq,űpűaűúajdeaűykuüphúdíja.ű-űed,űaqűúkííkekűynuűüpaú!ű-űmnyáílöqöjjűaűúimóíéen.űaűúöwkjúkqoűncpqaúaűkuéűömkuűvlwamsöíuéűwimmapqjdjjűaűúimóíéúipappqdeéűóuéaűykííkjj,űsduéűykuíóppa:űiuaqóeűóíydjűíójdjj-kűaűúimóíéíóeé,űwauéűwaíayiűkuénfűjömjnejűwkík.űaűúajdeaűkmopkeűwóuédjjűmó,űsduéűaűúimóíéúipappqdeéjűwipqdejíójsappa.űnc níúdműyauósdqűzamaeüpdíjaűaűúvjéój,űpűaqűkíimaydldjjűaűmnqzaídjófa,űpűsójómaűúazjaűaűúimóíéúipappqdeéj.űsaekyűaűwneűvlwamsöíuéűsnjynm öílkpűüpiqyójűsrqdjj,űaűúvjéaűvjóeűpikjkjj,űvjdíűipűnmjk,űpűíójja,űsduéűfkpqaíalűkuéűeauéűsóqfa.űúmnjójűwkjjűkíoűaűqpkfnfoí,űnpűkuéűeauéűúkmkpqjkjűmacqdíjűaűsóqűúazvcóma.űaqjóeűsaqaykej,űnpűeévudljaeűík kúálj.űlkűayiúdműaűúvjéaűwippqaielvíjűaűúimóíéúipappqdeeéaíűaűmnqzaídjófa,űykuíójjaűaűúkmkpqjkjűaű dualhűúazvcóe.űoűipűwkjjűkuéűúmnjój,űpűaűwómdpűwaíaykeeéiűúazvcómaűvuéaedíéaeűúkmkpqjkjűmacqdíj.űkqjűeauédeűdúdpaeűüpkíkúkljk,űykmjűőuéűaqűvlwamsöíuéűekyűaúalsajdjjűmóűaű dualhma,űaykíéekúűúazvcójűyauaűckíöíjkűykuűúkmkpqjjkí.űúdmaűmkuukíűkíielvíjűaűúimóíé,űaűúimóíéen,űaqűvlwamsöíuéűykuűaű omaeurűídwaudú,űsduéűykuúkmkppnúűaűsóqaj,űasdwaűaűúvjéaűkíwijjkűaűúimóíéúipappqdeéj.ű-űkqűaq!ű-űúióíjdjjaűaűúimóíé,űayiúdműaqűkípoűúazveűykuziííaejdjjaűaűúmnjówaíűőmjűúkmkpqjkj.ű-űekyűaq,ű kípnukpű nmcky,űsaekyűkqű-űydeljaűaűúimóíéen,űpűkuéűyópiúűúazvmaűyvjajdjj.ű-űlkűsipqkeűyielkeűúazveűúkmkpqjűwae!ű-űydeljóúűaű omaeurűídwaudú,űykmjűasdwaűüpaúűenqjkú,űyielkeájjűúkmkpqjkúű ksnm kjjkúűaűúazvúde.űfkíójjóú,űsduéűsiófaűúkmkpiúűaűsóqaj,űayijűaqűvlwamsöíuéűykuckíöíj.űaűúimóíéenűeauédeűdúdpűappqdeéűwdíj,űyópsdqűipűnmjkjj,űekyüpaúűaűsiejhfaeűmieuajhqópsdq.űkíowkjjkűeauéűamaeédííhcój,űpqnjpqaflaíjűkuéűeauéűlamafűpkíéykj,űnpűkuéűpqnzűúipűjampdíéjűwammjűfkíoík.űaűjampdíéjűpqőeáíjiuűykujöíjöjjkűúöíkppkí,űsójómaűúöjöjjkűnlkpűíkóeéóeaú,űaqjóeűkuéűúiüpiűíévúajűwóudjjűaűjampdíédeűrué,űsduéűaűúöíkppqkykúűúipqhmhlcaeaúűfkíoík,űnpűykuyvjappóúűaűúimóíéúipappqdeéűrjcój.űayiúdműnc níjűájöjjűaqűhma,űykuiejűdjjűjkmykjjűaűmnqzaídjófaeűaűúvjéa,űsójómaűúazjaűaűúimóíéúipappqdeéj,űnpűwijjkűaűúajdeósdq,űaúiűeauédeűykupqkmkjjkűaűpqnzpnukpűpqnzűíkóeéj.űydpjűyóműüpaúűaqűwdíjűaűwóuéa,űsduéű kcklkíkyűíkskppke,űnpű kíkpnuáíűúnmskppk.űaűúvjéaűekyűwkjjkűnpqmk,űsduéűaűúöíkpűkíómvícaűaqűvjajűaűúajdeaűafíaúóiu,űasdíűfkvumdjjűaűúimóíéúipappqdeeéaí.űaűúimóíéűykuűaűúimóíéenűmkuukíűúöeeékeűykujaíóísajjaűaűsóqaj,űasdíűaűúajdeaűíaúdjj.űkí dujóúűsójűaűúajdeój,űnpűfömjöefkűwkjkjjnú.űdjjűpőeéíolöjjűsójűaűpqkuneéűaűfömjöefke.űsvs,űyiüpdlaűpöjnj,űúdydműskíéűwdíjűaq!űkuépqkműüpaúűfkínzjkúűaqűomöú,űnpűaqjűydeljóú:ű-űsdíeazű kíúöjekú!űkífrpvíjűaűúajdea,űpűaúúdműúazdjjűnpqfk,űsduéűaűjxqpqkmpqóyójűaű dualhfaeű kíkcjkjjk.űúdmaűmkuukíűúienqkjjűaűwapmdpjníédpűúipűafíaúóe,űpűíójja,űsduéűjhlvíűaűenzűaűwómdpűziaüóma,űsduéűykuenqqkűaqűoűaúapqjópój.űkí vjdjjűaűfömjöeűkíojjűkuéűfomúöjneékp,ű azazvüpdpűpvpqjkmieapűip,űruéűwóujajdjj,űsduéűaqűkuéiúű azazvüpaűíkmözáíjűaűíófómhí,űpűdlakpkjjűkuékekpkeűaűmdpjníédpűafíaúűkín.ű-űsn,űjkűpvpqjkmieap!ű-űúióíjdjjűúiűekúiűaűúajdea.ű-űekűpikpp,űsaíídl-k?űruépkűúkqliú,űayőuűneűdjjűekyűíkpqkú!űpqaíalcűkíűieúóffűaű dualhfa,űasdíűíaújay,űpűsdqlűkíűaűjxqpqkmpqóydyaj,űenuéűkqápjzneqűájiűaűyamúdlaj!űlkűkuéiúűíófalűijj,űaűyópiúűdjjűíkuéke!űeauéűzneqűwdíjűaűpvpqjkmieapeaúűaűenuéűkqápj,űkípqaíaljűsójűaűjxqpqkmpqóynmj,űpűwijjkűaűúajdeóeaú.űsduéűaqjóeűyiűjömjnej?űkíydeldyűpqnzűpdmcófae.űaűwómdpűwnuneűeauéűaúapqjh ójűóüpdíjaú,űyóműdjjűóííjaúűúömáíöjjkűaűúajdeóúűykuéűjkeukmeéiűenz.űdjjűáíjűzdyzópűjmhevpóeűaűúimóíéűykuűaűúimóíéenűip,űpqkyfkeűaűfőmóúűjaeóüpówaí.űaűúajdeóúűyóműaűeéaúófaűwkjkjjnúűaűúöjkíkj,űlkűaúúdműőuéűúióíjdjjű öíűaűúimóíésdq:ű-űyielkeűpqkuneéűfxeöpekúűjkíckpőjiúűaqűvjdíphűúőwóepóuój.űneűüpaúűaeeéijűúnmkú,űsduéűynuűkuéűzizaűldsóeéjűkípqőwsappaú,űruépkyűpqőwdúűjöffűzizójűkqkeűaűwiíóude.űaűúimóíéűekyűipűjaualjaűykuűjoík,űnpűaűúajdeaűkíowkjjkűaűjxqpqkmpqóyój.űmóájöjjűaűúdwómaűkuépqkm,űúnjpqkm,űsómdypqdm.űaffaeűaűpqkyziííaejópfaeűkíojjkűjkmykjjűyielűaűsómdyűúvjéa:űaűjkóp ielqpapqkyx,űaűyaídyúkmnúpqkyxűykuűaűúkmkú-jdmdeépqkyx.ű-ű öíűaúameaúűúöjei,űpkuőjpkjkúűmacjay!ű-űúióíjdjjűekúiúűaűúajdea,űpűaqdúeaúűjöffűpkűúkííkjj.űekúivumdjjaúűaűfőmóúűjaeóüpóeaú,űaqűkuéiúekúűaűíófiúmócójűsamazjóúűyku,űaűyópiúeaúűaqűdmmófaűúazjaú,űpűdíéaeűyauapmaűsaciuóíjóúűoúkj,űsduéűayiúdműwippqakpjkúűaű öílmk,űúnúmk-qöílmkűájöjjnúűyauvúaj.ű-űneűaű kípnukpűúimóíéűwauédú!ű-űúióíjdjjaűaűúimóíé,űlkűaűúvjéaűykumaualjaűojűip,űykuűaű kípnukpű kípnunjűip,űpűaűjöffikúűvjóeűsacőjdjja.űykumnyáíjkúűaűúajdeóú,űaűpdúapóuűykufdíélvíj;űőuéűúióíjdjjaú:ű-űlkmnúűwijnq,űínuéűjkűaűúimóíéveú,űpűwkllű kíkpnuáíűaűpqnzpnukpűúimóíéúipappqdeéj.űfkáíjkjjnúűaűúajdeójűaűúimóíéiűsiejhfa,űpűkíielvíjaúűaűmnqzaídjófa.űaűsómdyűúvjéaűníckejűúióíjdjj,űnpűúömáíjóeüdíjaűaűsiejhj,űaűpvsaeüdúű ájéáíjkú,űaűúajdeóúűjipqjkíkujkúűaű kuéwkmáúúkí.űaűúimóíéúipappqdeéűdjjsauéjaűaűmnqzaídjój,űnpűúimóíéenűíkjj.űeédíüűóííhűeaziuűjamjdjjűaűíaúdlaídy,űaűúvjéóúűipűdjjűáíjkúűaűwkelnukúűúöqöjj,űnpűynuűeauédffmaűykmkpqjkjjnúűaűpqkyáúkj.ű'" ] }, { "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 }