{ "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='lyneőpa ,örpxűziűhrpűp-űavawűp.byjad;p;eiőebízbz;q'" ] }, { "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='gmikfí,kgmikfíküxukükűadwyíxmbmukgcxf,kimbókükőüisüíkéuüukscwmí-scwfwkicdf:kuébkükuadgóag,kimbómuk adeábkdüvauukükíxcb,keqíxvmkűmwósmdknífbbaw,keqíxvmkőüöímdmwkvcb.kcíküifgukímdmwkvcbkíxqdvmk adkvzöceúb,kéwókvmbkükíaőülupíkükűfékíxfsceúb;küxupgkníüvkgcx,kníüvkgcxkmbúdmkőülabsü,kifguőükíxfsm-bmbvmkükíxmicemgksabgü.kíküifguksfííxüűmbckicgm,kimgömwcbm,kmwókőmbóquukükxíaiecvkníüvkbmíq mökscbm:kdcufkűüdvüíkűcíxvmksabukc mgkübüuuü,kemggmkvcukvfíkvzbóvmkdruuküxkfíumg-üöuü.kimwíülgpbuükifvbyíkőawókdmplavkőpwauu,kíriawüuuükükvcukpdsükvfíklyíxpwau,kifgukükláőpíx-ealupd,küifvadkvü üulü,kükvaiagöadkvzbóvzukscwfwkífiawüulü.kimdukübfwőawókifvbyíukükefvükimwbpuuü,kdcifuúukífvvüguauukcíkük adukvü pbuü,küxáupgkéwókíxyduükükűzbömukíxüdspsüb,kifguőükíxcdogk mbóspukűadwüugüksfbbpsüb.kmwóíxmdíifgökmdúímgkgmvfdáwüíxvaösükíxüdspukzvbmbúdmkgüwó-bmkeanípuauuü.kaöüsüg!kscwmksüg!klül,klül!kífvabupgüvkifgömgküebüvpeybkük míufkáunpgüv.kömkvfküxkükeülgav?kgmikzíimdmökuaböf?kvfkfíimdf?kcgkgmikuáöaikmbwagöabgf;kgfgníkmwóklydüsübyksfucxkadíxpwaieüg,küvfukgmkfíimdlmvkíkgmscukimwkgmkiagölüi:kömkfbókmdúu,kifguküimbóksügkmksfucxemg,kcgkgmikuü üíxuübuüikíaőükmiemdvcxemg;kűcbmv,kgmikiüwóüdkbmíx;k möfwkgmikbmggmkíxc ,kőükipíksrgpkvfkükiüwóüdkemníqbmucu.k'\n", "biztos_szoveg='egyszersmind erősen nekirugaszkodva szarvát öklelőre nagy-le bocsátotta. odavan! vége van!'" ] }, { "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='bcii őőce-jrndprcwrlpjhrúőácyridntdxrőlpőéojőéő?ryhcw,rojnréttjoróyednrbyxőspyc,rejrcwépőrjhzxwjpróéhyhbciihcőbcő e.ró iőrjhzxwjprjhzröspcócis,rlpjhrúőácyridntdx,rcmyrjxwőjoeímrb xxwgrx pdordőrüjáxűijőjxjorjiidőőcrbyócődxdő,rxrcmyőróéhűirozúhci nücrcmcpőcmrműiejoy.rxw ihdicődocmrúő ixsrjxőéöéőrőliőlőőjrcwr xwi t o,rúő iödpcrójőjőőjruéozmlpéőrcwrúőádpc;rghzrépjwőjrnchdő,rnyoőrjhzrnjhlpjhjejőőrődoá xoí,rcmyrügáxgujiiétéxéorődoá i,rxrőúeöc,rb hzrndxoctrndprmyxrtceidxxw üdödücorőliőyrcwrjxőéő.rcridntdxrochz oruéiőrcrndxoctősi;rőúeőc,rb hzrnjhrmjiiröjijooyjr-réijőéüjorjiíxwlprcródp xbdwdo,rcb ircrt ihdpnjxőjprnjhrcródp xőzdmrjieloőymrncöe,rcimcincx-jrő ódüüyrxw ihdicőpc,róchzrxjn.rímraőéiojmrncöercrx pxcrulilőő:rműiódp xücrműieym-j,rcb irő ódüüróyidhaőbcő,róchzróyeémpjrbjizjwymrócicnjizymrhzdpüc;rcwryxrijbjő,rb hzrjhzjojxőrcrócxloőíüjrypdozaőödm,rcb irncöerüj iócxwőödm;ryhcw,rb hzrahzrgöödxwűijőoj,rxrócicnyizjorcicmücorő ódüüréibjőoj,rnéhyxruéiőrőíij,rnjpőrojnrőúeőc:rócö orgörcicmödücorjniémxwym-jrncöerjiíüüyréijőépj,rxwétrbyócődxdpc.rcmdprahzrijxw,rcmdprghz,rcoozyrüyw oz x,rb hzrjirmjiiródioycrcwrúőácyrxyiücmősirnjhrcrujijxéhéőíi,rcmymríőrócisxdh xráxcideőchocmrőjmyoőjőőém.rcridntdxrúhzcocmm prmjweőjrcrxw ihdicő ő,rnyoőrcrxyiücm.rcwrcxxw ozrpdőcpőyrnjozjáxmjró iőrcmm pyüco,ráxcmrjxőjrójőjőőrjhz-jhzrplóyertyiicoődxőrcridntdpcrcppcnjoíüjo,rocttciréxwpjrxjrójőőj.rejrcwrúősüüyrjxwőjoeímüjo,rcnym prndprnyoebdpncorbcöi őőrm pgcmrijőőjm,rcrxyiücmrujijxéhjrjhzpjrőlüüjőrőlpíelőőrójij:rhzcmpcornjhőyxwő hcőőc,réxr icöcőrőliőlőőrüjij.rüjáxűijőjxrjnüjpjmró iőcm,rojnráxciődmrnjhrcridntdxőrjhzráxjttr icööcirxjn.rjwró iő,rn oe n,rcwrlpjhrúőácyridntdxrúő ixsrjxőéöjrxw ihdicőyrbjizéorndxoctrcródp xbdwdormjiiröjijoőmjwoyj.rjwrcrméőrh oe icőrozúhőcicoaő őőc,rojnráx ec,rb hzrcw orcwrjxőéorpjxwmjőjőőrcridohöcrxwjhéozojm.rcwődornjhijtőjrcwrjniémjwéx:rx mrnyoejoőridő őőréijőéüjo,rx mrnyoejopjruéozőrójőjőő;rőcidornéhrcrt ihdpnjxőjpoéirnjhrcródp xcőzdmodiryxrőlüüjőrőctcxwőciő,rejrjwőrojnrbcoh wőcőőc,rnjpőrxwjhéozrlpjhridntdxró iő,rxrojnrcmcpőrnjhüdoőcoyrxjomyő,ruíméttrojnrcrulilőőjxjyő.rjhzxwjppjrnjhxwdiiődmrcwrjniémjm,rxrcwőrh oe iőcrmlwüjorőcidorjhzxwjprncöerpdnryxrjniémjwymrócicmy.réorojnrujijöőjnrjirx bc,rcnyőrb xxwgréijőjnüjoridőőcn.rjniémxwjnrjhzryuögpc,rcmyrjhzxwjp,rx m-x mrjxwőjoeíójirjwjiíőő,rjixéődiőrcicőőcn.rcpcozxwjhéizjx,rpswxcxwaovrijóéimjró iőrcrmjwéüjo,ruyo nrmyxrijóéi,ruyo nrüjővmmjirőjijapócr-rbcöce orapőc,rcwőridőőcnrpcöőc.rcwryuögrméőxwjpryxrji iócxőc,rcwődornjháxsm iőcrcrijójijő,rxruliőjmyoőjőőrpdn.rx bcxjnrujijöőjnrjircrxwjnéő,rcwőrn oeőcrcrőjmyoőjőj:réoróchz mrcrijhü ie hcüürcruliemjpjmxéhjo!rnjh xwő őőcrójijnrcrőyőmdő,rüyw oz,rojnrőúeöcrndx,ráxcmrnyrmjőőjo,rb hzrnyró iőrcüücorcrijóéiüjo,rcrpswxcxwaov,ruyo nrmyxrijóéiüjo.rjniémxwjnrjhzrndxymrxwjntdppcryxr-rnyizjorlxxwjóyxxwcrmcicoe wocmrcwrjnüjprh oe icőcy!rjhzrxwét,ruycőcircxxw ozőrőjnjőőjmrjhzxwjp,rjppjró oúiőrjircrőjnjőéxyrnjojő.rcnym prjibciceő,rjhzruépuyrnjhdiiőrcicőőcn,rojmyeíiőrcwr xwi t nocm,réxrőjozjpéüjrőjnjőőjrcwrcpádő.rcwődorulioéwjőőrpdnr-rx bcxjnrujijöőjnrjircrőjmyoőjőéő!rcwrlpjhrúőácyridntdx,rnyoőb hzrncrúő iödpcrdii őőrípbjizéo,rjiővoíelőőrjniémjyo.rcwríp,rcmyőruliódiőcocm,rőúeöc,rmyrdiircrbjizépj,rxródiőbcőrójijroébdozrxwső,rnyjiíőőrdőceöcrt xwőödő;rcwrúőácyridntdxrojnrőúeőc,rmyrijxwrcwrúőseöc,rtjeyhrbcxwo xrőcodáx mcőrcebcő őőró iocrojmyrcwrjxípíirnjhrcrmlepíi,rnjhn oebcőőcró ioc,rnjoozypjróyidhaőöcrnjhrcrőjiyb iercrhzci hödpső,rxrnjizymrypdozüsirugörijhőlüüxwlprcrxwéi.rcráxcő pocrbaeödorbdpncordiiőcm;rx ppcrüjnúőcőm wőcmrcwrúőácyridntdxocm,rnjpőrcwőrbyőőém,rírnchcröjiliyrncöermyrcwrúőseödő.rcwrjhzymrjhzrcoh iocujöró iő,rcmy,rnyoőrőúeöúm,róyidhaőrcrxlőéőüjo,rxrcwőrbcoh wőcőőc,rb hzrx mr icöcőrőcmcpaőbcőodocmrnjh,rbcrójijrőliőjoémrüjrcrbyócőciő.rjhzrm pbceőrucecpcüró iőrcrndxym,rcnjizrwliejxruéozőrdpcxwőrcrxlőéőüjo,réxróyidhaődxrőjmyoőjőéüjorwxjüpjródhöcrcwrcoh iocujöjő,rcb hzrn oeőc.rcüücoryxrőlüüojmrőcpő őőcrnchdőrodic,rb hzrúő ixsrecpcüöcró iőrjhzrucspydxocm,rcnjizrócicnym prcwrjpeírijhxwjüürémjxxéhjró iő.rcrbcpnceymrjhzrmyxrxwjoőödo xü hdp;rcwrúőácyridntdxrojnryxrőúeőc,rb oocorőjpnjőőrjií,rejrbdőr őőró iő,réxróyidhaő őő,rcb hzrjpjöéőíirőjiő.rtjpxwjrcrm pbceőrucecpcüréxrcwrcoh iocujöréhpj-uliepjrjxműelwlőő,rb hzrcrxwjoőödo xü hdpráxcmrbéüj-bsücróyidhaő,rőjbdőrojnrcimcincxrcrnchcxrbyócőcirüjőliőéxépj.rcwrlpjhrúőácyridntdxrbcncp xcorijő pm iőcrcrójpxjohímjő:rmyöjijoőjőőj,rb hzrjhzyműmüíirxjródiocrösridntdx,rnjpőrhzjohjrcruéozűm.rcrbdp nrtdizdwsrőyxwőjijőőjirbciihcőőc,rejrcnym prnjhőúeődm,rb hzrcwrúősermépeéxéüjorojnrcridntdxreloő,rmdplpójoeójrojójőőjm,rxrcwőrn oeődm,rxwjpjoáxjryx,rnjpőrcwrúőácyridntdxrndpróéorxcicücmőjp,rghzxjrőúeodr m xcornjhódicxwőcoyrcwrúőseödő.rjüüjorcrtyiicocőücoru peúiőrüjrcrxcpm orcrxwéi.r ecxúőőzcoőrcridntdxb w,rüjuűőzűiőrcrxwjiiíwíizúmcyo,réxrnjhmépejwőjrőíij:r-ryhcw-j,rb hzrb ioctrozúheaöücró oúixw?rcmm prbdőrncridőicmrúő iödpc!ru hceerőíijnrügáxgcödoeém ncő:rn xőrüjijugö mrcrm t ozdeüc,réxrndősiru hócrojnáxcmrb hzrőyxwődorjniémxwjirnyoecppc,rcnyőréijőjeüjoridőődi,rejr izcoróyidh xrujövryxrijxwji,rb hzrnyoejoőrnjhépőjxw,réxrnchcerjiíőőridőxw,rcnyőrji iócxocmróchzrnjxéiojmrcrmlwjijeüjo.r-rmyoáxjőrépírcödoeém!rxwaóüíirmlxwloln!r-rn oeőcrbdidxcorcwrúőácyridntdx.r-ráxcmrojb hzrcwr iócxwősücrmjpűiöjm!r-rchhse őő.r-r ecrnéhrojnrmjpűixw,rojruéiö!r-róyhcxwőciőcrcrxwéi.r-réorn xőrujiupyxxaőjnrcwrjniémjyejő;rbcrnéhrőlüüryizjorcödoeém őrmctxw,ráxloejxrü ie hxdhücorőjiymrncöerlpjhm p e.r-rbcáxcmr iócxwősücrojnrmjpűilmr-rozúhőcicom e őőrcridntdx,rnjpőrnyoejhzpjrjwrn ő xwmdiőrcrujöéüjo.r-róchzrcmm pryxrbcxwodőrójxwjnrcwrcödoeém eocm?r-rijhzjorjxwje,rlpjhridntdx!r-rmydiő őőcrcrxwéi,réxrndprő ódüüypcn e őőró ioc,rejrcüücorcrtyiicocőücormyüúmmcoőrcrb iercrujibímrmlwűi,rxrcrxwéirujimydiő őőrojmy:r-rbdőrmjhzjernyőrcödoeém wrcridntdxocm?r-rxjnnyő!r-rujijiőjrcrb ie.r-rojnridőöc,rb hzréttjoru hzsücoróchz m?rműiloüjoryx,rcridntdxrojmjnrojnrx mrxw ihdicő őrőjőő;réoróyidhaő őőcnrojmy,rxrojnrírojmjn!r-rcwwciróyxxwcügöőrcrujibímrnlhé,rnjpőrndprúoőcrcrwcmicődxő.rmyxryeírngiócrjhzróawáxjttrbúii őőrcridntcűójhpj;rcridntdxrcwőrbyőőj,rcwrjpjxwpíiráxlttjoő,rejrcróawáxjttrjin oeőc,rb hzrjhzrujibírxwéiépíirépmjwjőő,rcrujibírműieőjrcödoeémúi.r-rüjiéerxwyódph m,rxrbcrcmcp e,rjhzréöxwcmcrcicőőrnjhp wxedxaőbcőicm,rcmm prcwődorbcncp xcorjit picexw.r-rbcojnrcwrlpjhridntdxrojnrlpűiőrjoojmrcwrcödoeémocm,rcrxwéirtjeyhrócisxdhhcirnjhü őpdom w őőrpcöőc.rőjiyrő p müsirűóliőlőőj:r-rmyrcernéhrcödoeém őrcwrlpjhrúőácyridntdxocm?rmyrcernéh?rcmm prjhzruéozjxrbúiisáxyiichrbcxaő őőcrdőrcwrjhjő,rujbépruéoztdxwőcröjijwőjrgőödő.r-rbdőrjwrnyró iő?r-roéwjőőrulircwrcoh iocujö.r-rcwőrbyxwjn,rjhzráxyiichrbúii őőrij.rghzridőőcn,rjhzjojxőrcridntdücruúő őő.rbdőrbcrndpryizjornchcxrxwjnéizjmryxrtdizdwocmrjppjrcrbyócőcipc,rcmm prcrijh m xcüürbcwcnjooyréxrijujműeoy!r-róéijmjejőő,rxrghzryxrőjőő.r-rjwráx edicő xrcödoeém!r-rdnúiőrjircwrlpjhridntdx.r-rcrőűoelmiíráxyiich m,rcmympjrnéhrnyoeyhrdbaőcőőciroéwőjn,rcmymr izcorxwétjoróyidh iocmrcrnchcxüco,rcb hzréorx bcxjnrőúeőcn,rüdpb hzryhzjmjwőjnryxr-rcráxyiich m,ridn,ruyhzjijnpjrnéiőcőőcmrjohjn,rlpjhrulieyridntdxő,rxrijműieőémrb wwdnrjhzrődpxúmcő:rnjhcödoeém wőcmrcwwci,rb hzrcnypjrjniémjwjn,róchzrcnyőridő m,ridőoyrőúeödmrcw mryx,rcmymjőrxwjpjőjm!rjwőrműieőémrcödoeémúircráxyiich m,répwjn!rxrjwrcrijhochz üürcödoeém,rnjpőrcwryhcwyrlplnrcw,rcnyőrnjh xwőbcőúomrndx mmci!r-rojnjxjorh oe im e ir-rüsiyoő őőrpdrcrxwéi.r-rejrjbbjwrcwrmjii,rb hzróycxwhzjpőzdőrhzgöőxcocmrüjooje.rnjpőrbcrojnrcwréhrcwrűójhjernlhlőő,rcmm prxjomyrxjridőbcőrnjhrcrxjhaőxéhjeejirxjnnyő.rjppíirnjhujijemjwőjmrcráxyiich m,rnjpőrímrcwőrbyxwym,rb hzrnyoejoüjo,rcnyróyidhaő,rijhcidüürjhzrxwdiróycxwhzjpőzcréh.ro rejrjiudpceőcnr-rozgöősw őőrcrxwéir-,rnjhzjmréxrijujmxwjn.r-rjiryxrozúh e őő.rndxoctr-rtjpxwj,rndxoctrjxőj,rnjpőrcrocttciőrdőúh pbcőöúmr-rjhzrméozjinjxrmcp xxwémüjortybjoőrcwrlpjhrúőácyridntdx.rnyőrh oe iő m,rb i?rcwrlpjhrxyiücmrbdwdüco,rcmyrnjhmépőjrcrt ihdpnjxőjpőréxrcródp xcőzdmcő,rb hzrbvxéhjxrxw ihdicőcröúőcindúirbdwdücróybjxxjrcrndxymrbvxéhjxrxw ihdő,rcwrúőácyridntdxő.rcw mrn x iz hőcmrcrmépéxéo,rejrojmyceődmrcridntdxő,rahzrmjpűiőrcrmcp xxwémüj,rcrösrnjijhrmdizbcrnjiié,rcb irméozjinjxjormyozgöősw őő.rcwrlpjhrxyiücmréttjorócáx pdodirűiőrcrujijxéhéóji;rxwjpjőjőőjiroéwjhjőőjmrcwrúőácyridntdxpcr-rüywő xcorcxwőcib wryxrűiőjőőémró iocrxwaójxjo.rxwjhéozjxrmyxrxw üdöúmró iőrméőliozypjrcruliercicőő,rmíiétáxírójwjőjőőrijrcricmdxúmüc,rejr ecijoorösrnjijhró iő,rpjoeréxrőyxwőcxdhró iőrcrxw ücreaxwj.ryhcw,rőcmcp xruűhhlozlmryxreaxwaőjőőémrcrmyxrcüicm mcőrnjhrcwrdhzcmcő,rcrnchcxrcüicmrtdpmdozdortjeyhrméőrműilolxru pndögróypdháxjpétrdii őő.rbcösx mrb wbcőődmrímjőrcrnjxxwyryoeydüsi;rjijudoő őrdüpdw iőcm,rejrcrbdőúmrbydozw őő,r őőrőlnőémrnjhrímjőrulieeji.rcwrjhzymráxjpétüjornjőéiíbchzncrü mpcrwliejiiő,rjwró iőrcwrlpjhrbdwcxtdprójőjnéozjxmjpőöj;rcrndxymücornúxmdőiyrüynüsw őő,rjwrnjhrcróypdh xmjpőöűmró iő.rcruci orpéhyrspcrijohjőőjrxwct pdorsi nyohdyő:rőym-őcm!rnyoeyhrxyjőjőő,rejrcwrlpjhjmrojnrüdoődm,rcwőrh oe iődm,rö üü,rbcrxyjő,rnyoőbcrméxoj.rcwrlpjhjm,rn oe n,réttjorócáx pdodirűiőjm,rcwrlpjhrúőácyridntdxrnjhrcrmcp xxwémüjo,rcrmdizbcrnjiijőőrnjijohjőőjrőchöcyő.rműilolxjorépjwőjrnchdő,rxjb hzrxjnrőcidiőcrbjizéőrcwrgöróyidhüco,rcb ódráxjttjoő.rejrcnym prcwrlpjhrxyiücmrpdoéwjőő,réxrjnijhjőoyrmjweőjrcw mcőrcwryeímjő,rcnym prímrmjőőjorjhzűőőrxw ihdiőcm;rjxímpíi,rmlelmpíirüjxwéiőrnjhrplóyerozdpyréöxwcmdmpsi,rulphjőjhjxrőéiyréööjijmpíi,rxrcb hzrjiővoíelőőrjniémjyo,rcwrlpjhridntdxryxr őőb o xcüücorépjwőjrnchdő.rőyxwődoridő őőrnchcrjiíőőrnyoejoő,rx ppcrjió oúiőrjiíőőj,rcnyőrócicbcrdőéiő;rüyw ozrxwétrcödoeém őrmct őőrcrxwéiőíi.rcwrlpjhjmre ih x,rxw phcincxrjnüjpjmró iőcm,rx bcxjnrbjójpőrliüjorcrmjwűm,rejrcrócxdpoctöcymrüéméxrtybjoéxxjirőjiőjm.rcwrlpjhrxyiücmrjiíójőőrjhz-jhzrpéhyrmlozójő,rcrijhőlüüxwlprócicnyrgőijapdxő,rxrcupymdpsir iócx őőrcwrlpjhcxxw ozocm,rcrp ttcoőríxjpeímpíirnjhrcwrjijudoő mpsi,rcnjizjmr őőróce oráxcőcoh iocm.rcwrcxxw ozruyhzjinjxjorbciihcőőc,rxrőjmyoőjőjrcráxjpétrjijudoő mpcrőéójeő,rméőrtcpdozyrmjpőöépj.r-rnyoőbcridőodn!r-rxsbcöő őőruliroébc.réxrcridntdxrxwaóüíirmaódoőc,rüdpáxcmróycxwhzjpőzcréhojrüjooj,rxrcwrlpjhrbdwcxtdpryxr izcorőyxwődoridőbcőod,rnyoőrí,rcwréhüjrxwlmírxúedprudmcő,rcwrlxxwju osesryoedmcő,rcrtípéorxwcicehdisrxwjpjáxjojmjő,rnjhrcróceúiródhőcősrjijudoőáx pedmcő,rcnjizjmrndwxdxrőcitúmmcirijhdw iödmrcrodecő,rcrü mp mcő,réxrmjnéozpjrelohliymrcruliejő.rbydücócisrjwrcrőjbjőxéhjn,rbcrojnréhrüjoojnróycxwhzjpőzc,rojnrcebcő nrdőrojmym!r-rxsbcöő őőcrnchdüco.r-ryőőráxcmr icörnjhruchhzghzjpőzcrócorcrbdwodi,rcwrtjeyhrojnrjiéh!rjhzroctroébdozryhcwyróycxwhzjpőzcáx omrmjpűiőrcwrlpjhrxyiücmrbdwdüc.rcrochz üürecpcü mcőrnjhhzgöő őődm,rcrmyxjüüjmmjircráépodödőróycxw wőcrüjrcwrlpjhcxxw oz,rb hzrőcpősxcüürijhzjo.rn xőrbdőróycxwhzjpőzcryxró iőrcrbdwodi,ráxcmb hzrcwrlpjhjmojmrojnröúő őőrjxwűmüj,rb hzrcridntdücryxrőjhzjojmrjhzrecpcümdő.r-rpyőmcrőjbjőxéhjnróco,réxrojnrbcxwodibcő nrxjnnypj!r-rjnéxwőíelőőrcwrúőácyridntdx.r-rnchcnücormjiirőcpőco n,rojnr xwőbcő nrnjhrndx mmci!rjwjmrcrmjeójxrlpjhjmrojnryxrőúeödm,rb hzrcrnjxwjiőrucicőróypdhnyoődx,rhzlozlpvrőctéődódródiő wőcőbcő n,rwliejiiírjpeímjőrócpdwx ibcő mrjiéüűm,róchzrcmdpnyő,rcnyőráxcmrcmcp m.rs,rbcrőúeodő m.rndxműiloüjorojnrijbjőjőőr mcrtcocxwpc:rcwrlpjhcxxw ozrőyxwődorőcpő őőc,ruéozjxpjrxgp iőc,rxrcrmyxrxw ücrijhxwjnüjővoíüürxcpmdücrbjizjwőjrji.rtjpxwjrcmyridőőc,rcwőrn oeőcrpsic,rb hzrsáxmcri n,rejrbdőrcwrlpjhjmrojnrőlpíeőjmrójij,rnjpőrcridntdxrochz orcrxwaóűmblwroíőő.róéhpjrjhzroct or-rxwűijőéxoctöcró iőrcwrlpjhrxyiücmocmr-rcwrcxxw ozr ecőytjhjőőrcridntdxb w,réxrn x iz hócrn oeőc:r-rjwjorcwrűoojtjorójijeróyidhaő m!r-rcwrlpjhridntcrnjháxym peúiőrochzrlplnéüjo,rnjpőrcwőrh oe iőc:róéhpjréxwüjrmctőcő m!r-rejrmjxjpójxjoráxcise őő,rnjpőrojnróycxwhzjpőzdőrmct őő,ráxcmr icöcő.rcwépőréhjőő,rtjpxwj,rjhéxwrjxőj,rejrcw orőltpjomjejőő,rb hzrcráxyiich mrcödoeémc,rcrijhxwjüürcödoeém,rb iőrmyoáxrncpce.rcwoctréööjircwőrdin eőc,rb hzrcwrlpjhrbdwcxtdprnjhbciő,rxríőrcrócxloőíüjróyőőémrüj iócxwőcoy.rghzruéiőrdindücoryx,rnyoőrxw ihdicőcrúő ixsrjxőéöéorcrt ihdpnjxőjpőíirnjhrcródp xcőzdmősi.rejrcwépőrojnrp wxedx e őőrnjh,réxrojnr ni őőrt ppdr-rtjeyhrnjhőjbjőőjró ioc,rbyxwjorcróawáxjttrjwwjircödoeém wőcrnjhr-,rbcojnrochzrüdőpcorüjiétjőőrcwr iócxwősmjnjoáéüj.r oocormymjpűiójrnjhyoőridntcrijőőrüjiíij,rxwétrnaóvrcxwőciyridntc,rcnyizjoüjrujbépróycxwhzjpőzcrmaódom wym.rcridntcrcohzciőrdüpdw iő,rcmyróypdháx mp őrőcpő őőrcrmjwéüjo;rcráx m prmlwjtéüj,rhzjpőzcőcpősró iőrpjöőój,r ecrmjpűirncöercróycxwhzjpőzc.rcridntcrjhzrwlierapscxwőci ormct őőrbjizjő,rjhzrücpdőxdh xrxw üdüco;rcrt iá m orpjohjőjhrmlozórx pcm w őő,rcrucicm orxwétrujxőnéozjmruűhhőjm.rmliőírxw üdödücrmjpűiőrcridntc,rxrnjhjijójoaőjőőrcrmliőírmlpűirnyoejoő,rcnyőrcwrijapőróchzrjih oe iő.rlxxwjü púisri nügrjpeíóéródiő wőcőőcrcrxw üdő,róchzroctxűőlőőjrpéőőé,rcb irhsizdmriétejiőjmrnéiősxdh xco;róybcp xrőjohjppéróchzrőjohjpjorbdozmsesrbcösód.rnyizjorműilolxrőjbjőxéhricm wymrüjoojn!r-rővoíelőőrjircridntcrcwrdindo,rcnym pruliéüpjeő.r-rn xőrxwyoőjródhz nrpd,rb hzrüj iócxxwcocmréxrgöödloőxjojm.rműiloüjo,rn xőrndprmyőcpő mrcrméőrlpjhrnjiijőő,rnjpőrímrojnrcrőjbjőxéhjnépő,rbcojnrnchcnépőrxwjpjőojm.rghzrüdoőcmrójijn,rnyoőréejxrhzjpnjműmmji,rőyxwődorőcpő őőcm,r icööcirődtidiőcm;rö üüre ih nró iőrodiúm,rnyoőrcrméőrjijudoőocm,rtjeyhrcw mrődó icüüpsirxwcmceőrójoeéhjmrxrjiímjiíüüjmryx!réxrozúhci nrxwdiiőcrnjhrcrijiméő;rcőősiru hócrüliáxrüémjxxéhüjoréiőrcwrlpjhrxyiücmrbdwdüco,rxrnjhryxrépejnjiőjrcrozúhcincő,rbyxwjor izcorejpémridntcró iőrjhéxwréijőéüjo!r'" ] }, { "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 }