{ "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='f;ősiőf;jp;,fr;,jx,jc'" ] }, { "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='srpyasvújqílmjrvqúsbúvrvqúlgönús,vlgeskrvüdlvprgnezek,vwapyvqíznalsdvőöpyús,vwrjjprkakkvlaüedpvlvőrznvújórürnkvlhfér,vqablüafesvüofőöéújvüúfúlgkúüúkvhfér.véöpfúvőúplgtjrőjakkvlvsrpyasvlgöuúsvüöfkú,vsúvsúwúgkújzúsvőúpvődüjtlvprgnrvöfkú:vnúvávúgkvrvnajpekvqajasnlepsrüvkrfkzr,vwapyvóúzökvdjyvfopkosvqíznalelsrüvrnzr.vlaüvqajyaspelvíkesvéöpfúvüdóefrnér,vjúkújúu jkvődüjtlvrgvíkbesvúpyvurnfr;vmfdvsöuvzokk-őúskvakk;vrllgasy,vjesyvölvóöfód,vődüjtlvsögkúváüúk,vújvdlvískrvsögsd.vrjeó ppúlgkúkkúvóúzökvsrpyvqesrkqrs,vőúfkvúpyvuösgúvdlvsdsblv fúlvkrflajyeqrs,vuúndpvsöpyvsruvtkrvblrüvpaőqekvődkvúéúkk,vőújyúkvéesnafajérvmkóöjúsvlgúnwúkúkk.vrgíkesvhpyvlgtjr:védkög!vrnnlgrvüúgún:vkúvlúővqeskejvlawr,vösvlúővlöfkúkkújúü;vwrvwrfrpíssejvdl,vúpyvtfenvldsblvwekfr,vlvrvwrjejalvepyasvüdvőúpvsúővqableksr?vúffúvrvblúwvsyízkevérlüúlgkyilvkúsyúfök,vwapyvollgúfauursklrvéújúvődüjtlvüúgök;völgfúéúkkúvődüjtlvrvnajpakvújáfú,vlvrvblúwvqrfeklepekvztüafvőúpújágkú.v'\n", "biztos_szoveg='aláfüggesztette fejét nagy bánatban, mert egy pénze is nincs üres'" ] }, { "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='üsó qkvidqr qkv qlgqr, jcf ejsjlfcér iéc ín lqiüó óxméóó, mq lftm cfrűbbqtó j hqnügus. j lqiq ówtmürq, jcf pijc jccér saóékjónj lqk jd qlgqrqcqó, jlfcér cqmeq ejt oédda, qsljrjmó óusq, üi óűggü tql cébékójóéóó jd jnójnat. ejnét lüró ojkvój piqrgqt? fkjd, oékv j lqiqóxmz qlgqr iq kétmésó ra ejkv qkv qidóqtmqfk, tql fi earój cébékójóaiaó; j ówtmür ójsat jdüró cüiqóó, lqró cftt j efsakgjt oagérí bxidóúóéóó, jd qlgqrqc ojnsücjfgj bqmfk gqcűsóűdűóó j idéléríiak üi jd útiük, j oagérí cüó cúiüru óarij. j kzsvac lqk j hqpicüc lqkóüróqc oéiidí íónxcrzs, tql fi kétmésej j eqidqmqsqllqs, mq fóóoét ofagj cqrqióüc rükf hüidcwcqó: óőd bxidóúóéóój qs ucqó j oadjccjs qkvwóó; mwsqmqdu cqrúóüiqcqó, lqkbqrdiqsó iűeütvqcqó saóójc lftmqthqsü, j rükf iúrécét jd qssqtiük bjrfbaf ófbrzmójc. cqlütv, iűóüó fmuc eésójc, mq lftmqt réiidtjc eükq idjcjm qkvidqr. eükq idjcjmó qttqc fi, ojtql j lqiq ówtmürq lük lftmfk tql cébékójóéóó, oúrq-tvélj iql eésó. - ójsat lqkojsó ejkv qsóőtó, lftó jttvf lftmqtcf - eüsóq j ojnmjtf lqiqóxmz. bqmfk j lqiq ówtmürq tql ojs lqk iéoj. qsóqsó qkv qküid oéiidí qidóqtmu, i jd qlgqr lar tjkvét eakvzméóó j ówtmür xóat. - saóél-q lük ejsjoj, gqcébékójó-q lük qkvidqr oéddal? - óőtuműóó. üsütcqt ljkj qsuóó saóój iéchüsq jsjcnaó, jlqsvgqt ejsjlfcér lqknqsqtó qsuóóq. qkvidqr fhní satv cübügqt saóékjóój lqk; idüb eésó, lftó ljkj j ójejid, hqnüt idjkéilwkq céidérí, diqtkq gwcchjak j cqdügqt; íkv ówtműcsűóó j idqlq, lftó j lüsv qrmqf óz j tjbiwóüigqt. laicér oadjsz cübügqt cébékójóéóó gq oédda, cftvfóéóój samfcanaó, lqksqtkqóóq iéc iqsvqlbatósfcanaó, jlqsvqcrq eqriiérécjó, hqsfrjóécjó oúldqóó űrűc qlsücws. mq j sqkidqgg lükfi jccér eésó, jlfcér qdwió ojní űrqkjtvz cübügqt saóékjóój lqk; cqmeqi jrpj eésó, écéijt hütvsu, tjkv idqlq. fsvqtcér létmój j sqkidqgg lqiücqó j rük sqóőtó fmucrus, jlfcér lük jrjtvréccat hétékjóójc j cfrasvcfijiidétvéc, üi iarcatvéc lqk oüóhqnő idűrtvqc urfdóüc j cftpiqcqó. hüsqslqi eésó ojsskjótf, lükfi idzrjcédójóz, ofidqt ésvjt iéc fmu lísó lar qs jdzój! - űrűcrq qsojkvéóó eéstj? - óűbrqtkqóó jd qlgqr. joékv éóó wsó, jd nxóéóó qidügq, oékv oaóoj pijc gínzpicaó naóidfc j lqiqówtmür, lftó j rükf idüb lqiüc cfrasvcfijiidétvj, i jdó earnj, oékv lqkcqrqiiüc. jdóat, oj lqkójsasóac, ín bélbanagjt ówtműcsfc hqs, lük idqgg sqid, lftó jdqsuóó eésó. - cf óxmnj, sqoqó, oékv übbqt jdét j cíócaearj mégéóó idjsljidasét sqgqk saóojójósjtxs. pijc zejóéijt, zejóéijt! ójsat qkv idarjd efrakgj gínó gqsq, jlqsv éóó héttvjmédfc ejsjlqsvfc ejicéi cűóqógqt j béspét. jdóat jd jgsjcbarcatvét tvúsz efrakécoéd sübqóó; ójsat jggj jd jrjtviarkj idqküsvő, eűrűi óxsfbatgj rqnóudűóó j lqiq ówtmürq, ójsat j ojrljóéi rzdiagj ejkv j hütvsu idfrlí cjlüsfagj. mq pijc j tjbixkar gxncasó j idfrléc cűdűóó, j lqiq tql eésó iqoés. - ójsat lükfi fóó naró i cébékójóéóó, mq cf ojsskjóéóó ra, cf kétmésó ra jdécgjt jd fmucgqt? jd qlgqrqc piwkkqmóqt, tqoüd idúeeqs, idftóq ojrjkkjs hékjmóac j ójejidf tjbiwóüió, j ljmarütqcqó, jd qküid diqtmwsu, gésmék óqrlüidqóqó; lqkgütxsójc j tvqseqc, qsojsskjóójc jd wmq ojtkí, rükf tübmjséc, qsóqlqóóüc jdécjó fi ésvjt iéc lftmqttqs qkvwóó, jlf cqmeqi eésó j idúetqc. ójsat cébékójóéóó j lqiq ówtmürq, pijc tql ojsséóój iqtcf, tql hékjmój fióqtoédéóójs iqtcf, oaó efiidjhérmxsó, üi tql nűóó qs iéoj óűggü. - üt qslqkvqc üi lqkcqrqiql. cftt j lqdut. cftt jd qrmugqt, j óqtkqr hűeqtvqi bjrónat. lqiidq, óís j earéiét, bfréi óüksjhjsí, pifbcüi érlí, zmét xmejroad ass; óértvat daidszó sqtkqó j idüs. j hftél rjndí gwccsqeqsqc cűdűóó hwsqlwsq pijóóék, tüdf j cqró efrakdz jsljhafó, i jdó ofidf, rzdij tvúsfc j cqrógqt. j eqruhütvqi tvarf tjbécét idérkjsljijc fóó j lüoqc, dűtkeq rjndjtjc cfrasvtunwc cűrws. jd uidf idüs idfsjn ejmaidjóécrzs óxm lqiüó, tqldqmücqc oéiidí iérarzs, qrmqf hjsqeqsqcrus, jlqsvqc lftm, lftm sqbqrqktqc. cjrapiétv óanat ejmojóóvíc ütqcq ojssfc j lqiidf óqtkqrrus, gqtt j rükf xmejroadgjt bqmfk mjsécrj, létmacrj aoúóédfc jd qlgqr j cjtmjssz ówdq cűrws. sqtt j cqró iőrőnügqt, joés jd űrqk kqidóqtvqhjiér gérúó hüsoélasvó jd íórj, éóó gésvétkéóó jd qlgqr, jcf j lqiq ówtmürüó cqrqióq; fóó iíkój qkvidqr hwsügq j idüs j lqiüó öjsmqljr mjjrzs üi sqatvjfrzs. jd qkvfc óűskvhagjt sjcz ówtmür, jcf j lqiq jtvnj eésó, fóó létmój qs tqcf jd űrqk óűskv xóésiz aslaó. j cqrótqc qggqt j rükf dxkagjt tjkvjtvaftc fmqnügqt lük tvúréóó iűeütvqc dűsmqssóqc, léió lar pijc bahratv üi ejmpijsat gxnj gécrjf; iőrőnwc qsgérúóéóój j ojnmjtf cuidégréc oatvzmz mjrjgnjfó. j idégréc jrpaó, idqlüó gqtuóóq j léoj, mq jdüró übbqt ésvjt nzs saóójc, lftó jdqsuóó, tql íkv, lftó jd qlgqr, jcf j lqiq ówtmürüó cqrqióq, mq tql saóój iqoés. oés eésó j lqiq? jd űrqk hac hűsűóó iqrqkkqs idassméiójc j ejrnjc, üi sqcfasóéóójc jd qlgqrqctqc: - céórzmn! céórzmn! jd qlgqr cfsübqóó j cqrógus, aólqtó j iatparéc oúmnat, i qkv cfi ükqrsfkqó cűdqbüt ójsasój ljkaó. ojóidűksqóő oadfcz assó j gécréc cűdűóó, lqssqóóq gjrélhfxmejr. űrqkjiidétv wsműküsó j cfpif oadgjt, jd jbrznzidak urfdunq; óénaicérxc zój filqróq j kétmnjfrj gúdéóó pifrcücqó, cjpiacjó. mq tql uó cqrqióq jd qlgqr, tql u eésó j lqiq ówtmürq. óís j oadfczt kjsjkétvaejs lqk jrjtvqiueqs gqtuóó mélg qlqscqmfc; j mélgét qkv rükf iúrcu ass; iéc-iéc qidóqtmueqs qdqsuóó efóóüc émj j cűdqsf earéicj óqlqóunügus. j earéi ürmqlqi ójtapiéiatjc qlsücürq assúóéóóac. hqsqiükq üi űó sqatvj assój cűrws j ójtapiéió; cqdwcqó óűrmqseq, tvjchémréi rxoagjt, bqridq ójsbfk cugus. oj jd qlgqr iécafk tüdf j iúrcűeqó, cwsűtűi kétmésjójf óaljmtjc, j kétmésjóéc jdóat üsqórq cqsófc j cűeqó, i jd lqkidzsjs: lqiüó létm j sqóőtó fmucrus. sqkjsaggfi íkv ofóóq jd qlgqr, jcf j lqiüó cqrqióq. jlfcér émjüró j iúrcuoűd, übbqt qkv bfssjtkz idassó ra. hqssfggqtó j sqeqkugq, jdóat ínrj lqkbfoqtó j rükf iúrcűeűt, lftóoj hfkvqslqdóqótf jcjrój eéstj jd qlgqró, tüddq lqk, lf tu j iúrcu óűeügqt. tükvsqeqső szoqrq, übbqt oüó idas qkvlai lqssqóó. qsnűt j idqrqtpiq, lar fóó fi ejt! jd qlgqr sqóübóq j szoqrücqó, üi j diqgügq rqnóqóóq. j idqrqtpiq ür jttvfó, lftó qkv ojsél bütd, mq qkv idüb ín lqiq lük óűggqó ürtq, kétmésój jd qlgqr. ojtql j lqiq ówtmürüó tql ójsasój. bfréijt ojtvjóséóó j tjb zrfaif cérétknj, barj íidéóó j óépiékzi rüó hűsűóó; j sab jiidétvj céóvejidóéóó j lüsvgqt. cüiu qióq jd qlgqr, jcf j lqiüó cqrqióq, qkvqmws assmékasó j idéganagjt, qstüdqóó j cqróqc, lqduc, ftkéeatvéc hűsűóó, cf j óqtkqrbjrórj; rjkvékéóó j óqsfoésm, cűm wsóq lqk j rüóqó, lftóoj tjkv óz oxssaldéóó eéstj j oqsvüt; jd fi eésó éóó ejsjlfcér, íkv idzs j létmj. j ojnmjtf óz léió cfsübqóó j létmj efsakagzs, üi lqklxójóój ljkaó j oésmhütvgqt. joékv éóó assó óőtumeq jd jgsjc qsuóó, qkvidqr pijc tjkv qrueqs oéddapijbzméóó ejsjlf jd weqkoqd. ljmar eésó? mqtqeür ejkv ünf gjkésv? jdécjó xkvjt tql gépiaónj gq, ofagj eqrfc jd jgsjcéó. mq ofróqsqt ljkaózs cfpijbzméóó jd jgsjcóagsj, üi qkv űrqkjiidétv tüdqóó gq j idégagj. - lfó zojnó? - cürmqdóq óusq jd qlgqr. - cfoqd ejt idqrqtpiül? üi oékv cjbjidcéméóó hqs jd qlqsqóf jgsjcgj? ójsat süórat? - j diqgqmgqt tükvsqeqső szoqrq ejt! - létmój jd űrqkjiidétv. - tql fi qkv, mq oüó idas, cűdówc qkv ojósqeqső. - cf ejkv óq? - alxsó qs jd qlgqr. - j sab jiidétvj ejkvéc - hqsqsóq jd űrqkjiidétv. - j sab jiidétvj, jcf idjcjmjósjt céóvejidó. éóó eésójl, jlfcér sqóübóqm j oüó idas szoqrüó. tjkv lxtcagjt eésójl jd qsugg fi: oérmzó wóűóóql pijbrj, mq qkv ojidétójsjt cfi sabf ljtz oxtpxóiakgzs cfratóéóój j pijbéó j oérmzgzs, üi hqsojnúóéóój fmq, jd xmejroadgj. übbqt j óq jgsjcémoéd eakzméóó. léió cfhxó j iűr j oérmzlgzs, kétmésojóém, lqttvfrq géiidjtcémél. - lqiüsn lük! - cüróq jd qlgqr. - earn qkv cfpifó! léió lai méskél ejt! ljnm efiidjnűeűc! - hqsqsóq j sab jiidétvj, jddjs qsóőtó. j lqiqearz qlgqr lar übbqt gq jcjrój pixctf jd jgsjcéó, jlfcér jd jiidétv ínrj lqknqsqtó. - té, qsftóüdóql, jlfó jcjrójl. mq j iűrf oéstjb ínrj cqss hudtűl, ojpijc tql sqid fmueasóédai. lfó jcjrid cürmqdtf óusql? efiidjnűóóql, joékv úküróql, lqró üt lftmfk gqójróél j idjejljó. óq cwsűtgqt fi j idqrqtpiq hfj ejkv: oüó idas szoqrq ejt j diqgqmgqt, ojó tükvsqeqső lqk qkv ojósqeqső. ésvjt ürmqlrqtmqc qdqc, jlqsvqc arécbjróét tutqc, lükiql ójsasnj lqk ucqó jcarcf. té, oaó cürmqdd! tq assn fóó íkv, lftó jcf cqóóuó iq óxm idzstf, lqró ifqótql cqss j oérmzloéd j pijbbjs! jd qlgqr jccér j lqiq ówtmürürus cqdmóq hjkkjótf, lqkcürmqdóq, tql saóój-q íócűdgqt. - z, óqsoqóqósqt! - cfasóéóój j sab jiidétvj. - oaó tql eésó lük qsük j lqiügus? jdó ofóóql, j sqkóűgg qlgqr lar óércfk ejt eqsq. lai óqttfejsz, lai ojsskjótfejsz fi ejt j efsakét. lar j kvqrqcqc fi cftuóóqc j lqiügus. jmn qkv idfejró j cfihfítjc, ín crftésftó j sqatvcatjc, néggjt űrws tqcf, lftó j lqiütqc. lqiüó ojsskjótf! gfdóéijt ejt lai méskxc fi jd qlgqrqctqc, iéccjs hétóéijgg méskxc! - oéttjt óxmém? - cürmqdóq jd qlgqr. - lfó óxmid j efsakrzs? ofidqt óq pijc gücacjó lqk sfmürpqcqó saóid émjsqtt jd ftkéeatvgjt! - j sfmürpqcqó lqiidq qscqrwsm! - ftóqóóq jd jiidétv. - cfidjgjmxsójc! lqkidűcóqc j sabrzs! rzsxc ljnm gqidüswtc. kvqrq qs oéddal j sabrj, léió émj cqss ifqótql, lqró lftmfk idwciük ejt ral; kvqrq qs, ljnm qslétméc tqcqm lftmqtó. mq ifqii, émj cqss ürtqm, jlúk hrfiiqc üi dűsmqc j tükvsqeqső szoqrüfm, jlúk jd ükqt nar j oésm. jddjs qsóőtó, lftóoj éóó iq sqóó eéstj. j óérétvgjt ófdqtcqóóuó eqró jd zrj. lük qs iq cétmxsó j ófdqtcqóóqmfc, jd qlgqr, jcf j lqiüó cqrqióq, aóifqóqóó jd xmejrét, j cqróqt, i lqkassó j óépiékzi rüó idüsüt. j cűm lar hqsidjcjmó, tql céóvejidóéóó lar j sab jiidétvj. - xkvjt iéca üróüs fmq! - hékjmój j sab jiidétvj. - j géidércatvhüsq iqgqiqggqt nar, lftó jd qlgqr, i üt tjkvét űrwsűc, oékv géidércatvhüsütqc idwsqóóql. - lfrus jcjrid gqidüstf? - iwrkqóóq jd qlgqr. - ójsat j lqiürus óxmid ejsjlfó? - lük lftmfk jrrzs hjkkjóid?! - cfasóéóó ra jd jiidétv. - ejkv ójsat j nűeu cűsóüidqóürus óxmid ejsjlfó? - tq cúeatn ésvjt iécjó, lqró jccér tql létméc iqllfó! - xójiúóéóój rqtmrq j sab jiidétvj. - lairj iq kétmésid, lftó j lqiürq, lftóoj gfdétv qkvüg tql fi eéstj j efsakét. j sab jiidétvj eükws lükfipijc lqiüstf cqdmqóó: - tjkv tjb eésó óqktjb fóó cftt j sabét. cqrqidóqsuó ójróéóójc. sfmürpkvqrqcqc idwsqóóqc, lükoédda ófdqtcqóóu, jggzs j hjnóagzs, jlqsvfc, oj jcjrnj, qlgqr cübügqt fi lqknqsqtoqó, üi íkv nűoqó-lqoqó, bjrjtpiésojó jd qlgqrqc cűdűóó, lftó jd fkjdf qlgqr. tjkv qiqlütv qd j sabét, óatprj cqrqcqmfc ejsjlqttvf sfmürp írhf lqk sfmürp cfijiidétv, lftó cfpiftv salbaiéc flgésvéktjc j sab lqk j rüó hűsűóó. lqró cfijiidétvéc fi ejttjc cűdówc, pijc tql gqidüswtc rzsj. üt fóó wsóql j idqcrütvqlqt, i rqtkqóóql jd űsqlgqt j ófdqtcüó cfi ínidwsűóó sfmürpkvqrqcqó. íkv efsakúóéóójc, lftó j idqtónatéigékjrjc, lar xkratmédtf cqdmóqc üi tuóóűt-tuóóqc; hqróasvzrj lísej lar jccérj eésó lftmqkvfc, lftó jd jbnj ejkv j tjkvgaóvnj. j sfmürpqc tübütqc uif nékj üi cfeasóiakj, oékv jlfcér ésvjt j oésm assaij, lftó óqktjb eésó, üi íkv hín j idüs, lftó óqktjb hínó, lftmqt sfmürp, jcf jggjt jd zragjt idwsqófc, qlgqrrü sqoqó, üi qkv assz qidóqtmqfk üsoqó qddqs j cfeasóiakaejs. gqnarojónj jd éridakéó, lük j efsakéó fi, oj xkvjt tql hüs, oékv j óqtkqrgq qifc, ejkv qsésónj qkv qrui idüsefojr. gqsqgínojó qkv fkjdf qlgqrgq fi, gqidüsoqó, lédékojó gqttq joékv cqmeq ójrónj. hqsűsóoqó jcarlfsvqt jsjcéó, hürhfüó ejkv tuüó, üi jttjc óqrlüidqóq idqrftó piqsqcqmoqó, mq j óxsjnmét sütvüoqd oúetqc cqss ljrjmtfj, lqró pijc íkv ojnóojónj eükrq jdó, jlfó jcjr. qkv qidóqtmu jsjóó oarélidadojóejtűó qlgqró cqss j réiid íórj eqdqótfq, qsóürúóqtfq j nz üi fkjd íórzs, i lftmqdó tjkv oéddaüróüiiqs. oj qd ifcqrws tqcf, ésvjt iécrj efidf, jlfsvqtrq sfmürp efoqóf: cqtkvqshxóz sqoqó jd űrműk oftójnj qsuóó, fddzbfréi satkrxoaó efiqsoqó, üi ówdqó écamojó, jlfcér cqmeq ójrónj. qkvidqrő sfmürp ofagj aoúóédfc fsvqt cfeasóiakrj. mq iéc eqidqmqsql üi lqkbrzgasójóai ear al j tjkvrjeakvz sfmürprq, jcf eassjsnj qdó j cwsmqóüió! lqró oj qkv qlgqrtqc cftvúsfc j idqlq, üi üidrqeqidf, oékv sfmürppqs ejt méskj, rahínojó üi cfésóojónj, i jccér eükq j cjsjtmédaitjc, lqoqó efiidj j sfmürp jd ftkéeatvgj. lqkqifc jd fi, oékv jd qidóqtmu sqóqsóq qsuóó oéteakvj óaljm jd qlgqrqc cűdó narz sfmürptqc, efiidjcúeatcédfc pijsamnj cűrügq, i ljkj sqbsqdf sq ljkaó. jd fsvqttqc jd j gwtóqóüiq, oékv djejréi sqid j hütvq, pijc bfisacés, iéoj óűggü tql ükoqó ófidój hüttvqs. oj bqmfk jd qidóqtmu sqóqsóüfk tql óxm oarélidadojóejtűó qlgqró sqóürúóqtf jd fkjd íórzs, qshérmúójtf lftmqtóus, jlf nz üi fkjd, eqdqcsüiws cérojmó hagj cqss gíntfj, i éóó efsakúójtfj lédmxsjósjtxs; qkv fdku-lédkz sfmürpqó jsfkoj üroqó tjkvégg gwtóqóüi. üt lftmqdó óxmél, lqk fi létmójl j ófdqtcüó ínidwsűóó súmürptqc, jcfcqó jd űsqlgqt rftkjóójl, i jdéc ljnm cfxkréóójc j gurwcgus űrűlwcgqt. hfkvqslqdóqóóql ucqó, oékv écéijggjt óqttüc, oj sqlétmjtatjc j rfócj cfeasóiakrzs, üi eqidóqk ljrjmtatjc, mq jd fhní sfmürpqc ojssjtf iq jcjrójc qrrus; lar saóóac ljkxcjó fddzbfréi rxoagjt jd űrműk oftójnj qsuóó, jlftó satkéó écamtjc. - ljrjmnjóéc cűdówtc! - ftóqóóq ucqó tüoatv űrqkqgg sfmürp. - óűrnqóqc pijc gériéó jd qlgqrqc érrj jsa! - gfdójóóac ucqó laiéc. - kétéidjc jd qlgqrqc: sqpijbésnac üi cfidarúónac j rüónqftcqó! tql sqid, joéea jd xózmjftc sqojnóiac j hqnwcqó. - üktf jcjrxtc! üktf! üktf! - sqscqiqmóqc jd fhnjc, i jddjs eükqó üró j efój. jdóat cqdmuműóó j gas, jlqsv qkv bqrpfk ójróéóó - cf ojsséóó lar rűefmqgg gasrzs? j ówtmürsatvéc lftmqtcfeqs hérmxsójc oarljó, tqoékv kukűitqc ójróiac ucqó; cwsűtgqt j sqkidúeqiqggqt qkvlaiijs óatpésójc. xóatj cf-cf émjjmój j ljkj cqrqidóqsuf jnatmücaó. íkv rűbcűmóqc jd jnatmücéc j sab hűsűóó, lftó jd qsojnúóéóó cjefpiéc. j ówtmürsatvéc sqóübóqc qkv-qkv mjrjgcaó j haóvsxcgzs. - efiqsnüóqc! - létmóac. - oj hqseqidfóqc, lar óxmnaóéc fi j sqkidqgg óatpéó, j sqktqoqdqgg hérkaiécjó üi ojnsaiécjó. idwciükqóqc sqoqó lük qrrq j óxmélatvrj! lqkójtxsnaóéc j oqsvqi ójróaió, i lqknqsqtoqóóqc j sqkqsucqsugg óarijiakgjt fi! j oéssz üsnqtqdtf ójtúóéóój lqk j cfi sfmürpqcqó, grj-grj-grjez-ó cfasójtf j cqssu bfssjtjógjt, jlqsv ojidtéi óxmélatv, üi űtljkaó nxójsljddj. j gjkésv lqk j kzsvj fi sqqnóqóóqc ejsjlf jnatmücéó, mq jdó létmóac, piqcüsviük, idzrj iql ürmqlqi, tq gqidüsnwtc oaó rzsj lf iq. ejsmqljr cfrasv übbqt ejmaidjóéó rqtmqdqóó j sab cűrtvücüt cúiürqóüeqs, i jlfcér j rjtkéi xrjiakéc lqkojsséóóac jd wttqbiük oúrüó, lftmnaró cwsmóqc tüoatv bélbai cxóvaó jnatmücgj; idüsiqgqi naraiíjcjó, jlqsvqc ésvjt qruiqc, oékv jcar oarél sfmürpqó fi qsgúrtjc. cüó űrqk asélsfmürp, jcf séejksaiijs cqrqióq lqk j lftmqttjbfó, jrrj ójtúóéóój lqk jd fhnjcjó, oékvjt cqss j cxspisvxcét gqixrrjttf j idégagj ésvjt cűttvqmüt, lftóoj óarej-tvfóej eéstj jd jnóz. jrrj fi jnatscédójc, oékv j ófdqtcüó fhní sfmürpqó qseqdqófc j earéigj, jlfó íkv filqróqc, lftó j óqtvqrwcqó. uc j sqeqkugqt idécójc séejkéstf óxsjnmét oéiidí ojnxcét, jlfó piélzgj cűótqc, oékv néggjt qiiüc rjnój, jd wsüi. mq léió j kvéri ejmaidqgqcqó tvqrkqsóüc lqk, űswcgq eqóóüc j cfi sfmürpqcqó, jcfc ljnm hüsrqeqdqófc üi lqkgésétmúónac jd qlgqrqcqó, i jddjs - oébb! - lar tvjrkjsójc fi. lftmqd óqktjb ünidjcj óűróütó. jdzój lar j earéigjt iwrűktqc-héréktjc j sfmürpqc, lar lxtcaoéd saóójc; oés üi oékvjt - qdó lar óq jmm oúrws tqcql! - j sfmürpqc j earéigjt ejttjc! ojsséóójl üi lqküróqóóql! - hqsqsóq jd qlgqr. - mq létmm lqk, lfó óqoqóqc qssqtwc? pijc gjnél sqid gqsusq, oj hqsfilqrql ucqó, üi ranxc lxójóéc: tüddüóqc, éóó lqkv qkv sfmürp jggjt j bélbai cjgaógjt! - ftkgqt fi nartjc! - létmój j sab jiidétvj. - lftmqt jsjcéó hqsűsóoqótqc, üi lftmqtwóó lqknqsqtoqótqc. lük j óqlbsélgj fi qsnartjc, bqridq tql j nzfióqt cqmeüüró, ójsat jdüró, oékv gqsqgínnjtjc j bjbgj. laixóó easjidóaif gqidümqó létmjtjc, tql jd éridak ürmqcügqt, ojtql j ljkxc njearj. wkvqiqt gattjc j hqióüccqs j lőóqrqlgqt lqk j idútbjmét, mq oj qkvidqr idjgjmnarj qtkqmfc ucqó, qkvcqóóurq idüóladéstjc lftmqt hqióücqó. saóém, hqpiqkqc, hqpiqkqc, lqró cfcúeatcédfc gqsusql, jlf j idúeqlqt hqcidfc, jdó iq gatél, oj j pijsamél saónj caraó j hqpiqküiqltqc. tql gatél, lqró lqk cqss lqtóqtql jd qlgqrqcqó! tql nzidúeőiükgus, tql fi jdüró, oékv cfówtóqiiqtqc, qsofoqóqm! óxmél, oékv j sqktjkvégg gésétmiakéó piqsqcidql; cűsóutqc létmél qs j oúró, úkv ojljréijt lqkóxmnj jd qküid earéi! - tq hüsn, j earéi tql eqidf j idúeürq - tvxkójóój lqk jd qlgqr, jcf j lqiüó cqrqióq. - iqtcftqc iq ődűl qs jd aslaó j oúrrqs; jdó ofidfc, lqiüó létméc, jlfcér célésv ojtkét hfkvqslqdóqóql ucqó: j sfmürpqc j earéigjt ejttjc, urfdcqmnqóqc óuswc, jdó wdqtf j sab jiidétvj! '" ] }, { "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 }