{ "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='zudzdzmuámuaznzeézmuzuéz;zumt.é:n-gé!c fv'" ] }, { "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='üiú,rawőmrüiúröüiágúrzőgrnőöuígrőrzxqámüg,réüqqxirőrweüérüöö nrufwenőrocöqcg,ráiüg;rwecvgúbrzügqáiíöqőörvügirővőweíwrz öö g,ruüqxiréáiröüiágúníöörwüéruüküöúexmr öö g.rweáöüwrívwe iűnvőréüwweü,réüwweürh éfö,réxgnkőré wréüeymvürz iúgőrürkőn vvfö;rőenrkxggárőerüéhüv:ráöyrnxöőöíéoő,rlnzür, önőöűng örüiúrawümáöúrkőöíéhő.rwrőéxgnrzxwweőoüöáréágü,réügqüiáöü,rüiúrküöúlnnrőrewíéhámrawőmröüwluuüqrzáöü:rvánxroővmőwroáwemürzíönráuügrőöőnnő,rhüggürmánrmxwrmcöúmürvjnnrőerxwnüg-őqnő.réüiwőtg önőréxmöswrkíiúrvü tímrk iínn,rwjéíiőnnőrőrmánr vzőrmxwrtswe iín,réxgnrőrtfk we-hítn v,rőéxmívrmőuőntő,rőrmíéígqívrmcöúmcnrzáixirwxéíiőntő.rösqíhíi wrkőööám:rüövüulönrőer öíé,roüönümxgnürníöqxrőrweáurkíöqzxö iíg,réüwweürö nínnrzíögő,rkőgüékíiúrgüérmüööünn,rőrösk nőwrínnréügnrőrnüéünyréüööünn.rwrmxrzíönrőrösk nőw?rgüérkxnnrőrweüéágüm,réxqygrőhhőgrőrzágrhügaánrxwéüváréüi:rká!rmxrőe?rkíz réáwe?rnürzőiú,rcvüirhügaü?rxwnügüé!rgüéröükün!réxöúügrgőiúrweüvügawü!rxöúrh nvőgrhüweáöüréxmöswrőrmxv öúgőm,roüögúíé rvíwnáöú nrőaáörwxwőmt gőm:rkőöz gúrxw,ruxvíwrxwrzíönrőer hv eőntő,réüvnrh gőnráwrcvcéríweníe gőmrvőtnő.rnünweünnrőrmxv öúgőmrweáuroxőnőörmáuü,rőeávnrgú tőwőgrxöúrmávqáwnrnygrüöáhü:rgüéqügüérőrníöqxröyvxgaroxőrzíög ö?réxmöswrőroütázüörv lncnnrürwesg ö.r'\n", "biztos_szoveg='lóhátas? nem hitt a szemének, midőn abban a vén bencét'" ] }, { "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='xnőá őoimuu őúdscnonlx znocowz á zni-ivzúdjoicubqdt,oá oxnü fo jtocotpztöő t toücfvljeőkf soő xoimuu őúdscnonlomfücllc,ozpünáof ezdltoi ffocáőbőiozvfc.ocoivzúdjctoxcscloi zetöloüdfcljtqco focjobtgdtvf;ocoi zetölotpxpzoüclzdglcnomfycőozntidőodffőci,oúmsyocjtoű ljöfni,ocoüöimőycűűoámősdqromzümlq fpft iodtwöző ioipjtéi,olocozdglmőodtonőábfőcioinl űűofdtmsctdlmizcocoüdzmlűc.oücőobsycőo syot ltzöljéi,ocx fy toglcioőcsyoéssy f-űcqqcfotbáőciodt zaljcimfőnocozdglmő:ocow qéi.ot údtonttonl,oxnőtomfycőolmiw föo j őocoünfdsmő,ocoinlow qk iő ioi áü jocolj z őgl .o föso őőynoű ü j töléf.o syownctctomzümlq fpft,ocinzafoglcioljvolj znőtnoözt f xű őof ú to fxmőácőn,oúmsyoőcsyoimumőyc,oöuu őoésy f t loljmfsdfctmtot fq let tto j őocjo ltöő;oljcicátocjo la;ocjomzümlq fpftocjmőűcőo oi ttalocicádffycfoácgmfüconloxnőá ődzmőoinocicztoqbtőnocoüdzmlűc.oglcio syow ztdfyvzdőynoámfscoümft,olorsyosmőámftc,o jöztoő xoözá x locoumztdltoű cüctőn,oúnlj őorsynlodtotbáolbzzcőőnocoznticozdglmioipjptt.omttoú ü ztocoi j oésyöű őocoűcit zonttw f qt ttoldzgnuaq :ocjomzümlq fpftő iox sol xowmzábftocow qöű ő,oúmsyoő xoipjpőlös loúmfxnocj,oúcő xocolj z őgl -téőáözoűküploldzgnuaq :oglcioczzcosmőámft,oqvoljmfsdfctmtot ljocoglrwonáaű ő,oúdtowpfzdőtmttc,oloxmltoxdzoglciocjmőoxrftocoinzdőábfdl,oúmsyodtotbá- oűrqőnocozdglmő.o áánsoxöso sylj zol xouzvűdftc.ox sdfftocoücli zetölo fatt.o-onlt ő x,oglciocow q xodtwözq ő!o-owmúdljimámtt,olocfnsúmsyoinxmőátc,oxdzoinőőonloümftocow q ,ou ánsobsycőglcioqvimzcoimumőydqcoümft.ou zlj oxnotbáqbi,oúmsyocoldzgnuaoűküplo z qöő ioipljpőú tt .oglciúmsyoxmltocow q oinőőoümft,ocot lt ox sol úmsyol otbámttobtdőcoőymxcimáőn.o-orsyofdtljni,otrfldsmlcőoipüözoücsymi!o-olvúcqtmttc.o-ou ánsocjtoúntt x,ocow q xx fof ljocoűcq.oxmltoinőőoücőocow q x,oöőox soő xowöz iodt.oünlljcocicztcoúrjőnocow qöt,oá oő xotbátcol xxniöuu ő.ocoőycidtobsycőoiöőy fx l őowmzsctúcttc,oá o jj foő xolmizcox őt.o flaoözjöl ocoűmlljrldsoümft,ocoxdlmáni,oúmsyo x fi á ttoi áü ocowcsyumőtocfdoléffy át.olj z őglötf őoú fyj tötocolj z őgl oldzgnuaqöő ioipljpőú tt ,olocoűmfámstcfcőőcioő xoqbtmtto ljöű ,oúmsyocoljcűcábfdltoieüdőqco-ou ánsot fq l á ttoümfőco-,oúcő xoxcscouzvűdftcoinljcűcáetcőnoxcsdt,ou zlj oúndűc.ocjo laopxfptt,o syoföf iol oqdztocjobtgdő.ocoicubgl ősatoő xoözt o focoűmfámstcfcőomzümlq fpfto-obsycőoúmsyoljcűcábfúctocoibtycljmzetvűvf?ofdttcoxdzocolmzldt:onttodffoz ss fns,ociimzocjtdőoxcqáofcictmlöztoiéfá ő i;olocjo fwkzölj fnocjodtimjmttoüclzdglmict.oglciúmsyoxnőá joőcsyoumztoü zoxcqáow f;ocolj xipjtnonlimfdűvfoxnőáomácl z sf ő iocosy z i i,ocoxctzvjő sy áoőöu onlomáctvábf,olofdtqcoatocou ff ősöz ő.oőcsyműűotpx sosykfoxcqáopllj ,oölo söljoxdliöuuowmsőciodfxöfimáőn,oxnőtotcücfy,ocxnimzocjovzndlnocsdüötoglmádftdi.o-oqcq,oúco zz osmőámfmi,ocow q xű otvábfocoüöz!oxöso lj x toü ljt x!otcfdőoxdzox sonloűmfmőábftcx.ov,oúconőő őoinljcűcábfúctőöi,oxnőáqdztoqműűcőof őőöi!oxmőáúcttcoümfőco jto faűűonlolj söőy.ocfnsúmsyocoieüdőldsdtoinxmőátc,oxdzoinonloljcűcábftocow q ;otpűűol oi ff ttocoá zöiomzümlq fpftő i,ox swmzábft,oölozmúcőtoű w fö,owöfnso ljötoü ljtü ocjonq átlöstaf,ocx fy tocolj z őgl téőáözoldzgnuaq omimjmtt.oá oő oúnssyöt iodx,oúmsyoüös toözt iocjomzümlq fpftoicfcőáqcn.oxmltoqpőoxösoglciocoqcüc!o fxrftocjoöqljcic,o fxrftocoipü ti jaoőcu;ocoldzgnuaöztoglcioő xoq f őti j ttocoscjádqc.oxdlőcuoljcücfv lt toz őá jt iocoicőőni obtgcnoinloljeőúdjűcő.ojlrwmfdlnsot ftocoőöjatöz;omttoümftocowz á zni-ivzúdjomzümlq fpftq onl,ocinoxdz-xdzo fw f át ocjo fajaoöqljcicnoicfcőáqdt.ox snőtow fúrjtcocoldzgnuat,ox ztoő xox őtoözt ol őin,olox ztocoőcsyoldzűcőoqvoljmfsdfctmtot tt.o syorqoü zl tocátcio faocoljeőúdjűcő.ocoőcsyőöőnouduclj xözaf,ocx fy toúcowpft ljoücfcin,ocinoőcsyotdzlcldsűcőoücő,oű f fdtocjo xű z iű ,oxnőtocoőyntmttoidztydiűc,oxösocjtonlox sfdtqc,oinő i-inő ioxntoúmjocoqpüao ljt őáa.ocoü zlo ljxöq o zal őowmsfcfimjtcttc;olj z t ttoümfőco syonfy őoűküplolj xéü s t;ocx ffy f,oúcomimlcőoúcljődfqc,o sy ő ltocjo xű z ioljeüöű ofdtúct.oúnlj őocjoxösoözá i l űű,oxnőtocoqpü őáatowéziöljőn;ocoqpüaqötorsynlox stbáqco faűű-btvűűoxnőá őin,oxdlmioljeüöű ocjmőűcőol őinol xofdtúct.ov,oúcocoljeüöű ofdtúctőöiocjo flaolmzűcőoéfao fai faoádxdiőcioölobzciőci!oúco syoinloőyefdlmőoű őöjú tőöiocoljeüéiű ,oxnőtoücfcxnoinloűmftűc,oloüösnsxbltzdfúctődxocőőciocoűmftőciocoumztöidnt!ocőőciocoádxdőciomttoűnjtmlcőo syowöőy loánüctéjf t totcfdfőöiocoljeüöű ő;ocőőciomttoűnjtmlcőoéz locoűmftqc,oá ozdwöző o syocfcumloőcsytciczetdl.oücőőciocjtdőoljmfnáoűmftmionl.o-ow flvúcqtmtt.o-ons ő,oöőonlonlx zt xo syoljmfnáoűmftmt,oglciúmsyocűűcőoxdzoű őőoéfo syol söá,olo jocőőciocoűmftőciocof sőcsyműűoúnűdqc.omfycőoűmftmionloücőőci,ocx fy iűafoinindftcőci:oföuq őoipj f űű,oi áü lobzcx!oöőoűnjmőyoföuőöionl;oúcowézs oinlosmőámfctof ú tőöi,oöloű lbzzcőúctőöiocoljeü iű .otpűűol oi ff ttocoldzgnuaő i!ocjomzümlq fpftocűűcőocolj xunffcőtdlűcőojlbsmzmáőnoi já tt,olox si ját oiéfpőplobtcjdldtocjo flaolmzoipjpőlösöő ioljeüöű ő.ocjo flao syoúpfsyoljeü oümft;oá ocjomzümlq fpftocjo flaounffcőctűcőocjtoúntt ,oúmsyo syomztmuöáncnonőtöj tű oglpuu őto-oesyoúeüqdiocjtocjonőtöj t t,ocúmfocjomzümlmiocot ltoúnűdnt,oinőpüöl nto sy ős tnioino-,oxösúmjjdocűűcőocoljműdűcő,ocúmfocjo ftmzjbftot ltzölj iosnuljxdlmfctcntotcztqdi.ocoiéfpőűlösoglciocőőynoümft,oúmsyocjomztmuöáncnonőtöj toicxzdqdűvfo ftdümfetqdiocosyvsybftoű t s ioúnűdlotcsqcnőcioxdlmfctcnt,oá o űű őocoicxzdűcőopzpiz ox saznjtöioai t.ocoqvoűczdtőaiot ltnoölof finoinőpüöl nő ioumőtmloxdlmfctcntoaznjt o jocoőanoljeü.ocosmőámfcto-ocoúcqácőnomzümlq fpfto-oxmltodtzpuu őto syoxdlnioőanoljeüű .omfycőoümfto jocoljeü,oxnőto syolj őtot xufmx;ocjodztctfcőldsow úözoscfcxűqcof ű s ttocowamftdzowpfptt.odúetctowmstco f,otözáz ocicztoűmzbfőn,oá ozpuéfőn oi ff ttotmüdűű,ocoúczxcánioljeüű .oxösotdümfzvfonloúcffmttcocotnljtcot xufmxűcőoj ősaomzsmődt,olorsyoöz jt ,oxnőtúcoxcsconloqműűo xű zzöoüdftmjmttoümfőc,oxöftvüdoczzc,oúmsyoű föuú ll őocoipü ti jaolj őtöfyű ,ocx fyo syoőymxmzrldsmloucáfdlljműdűcőoű t s őow iüaoöá lcőydtoxbtctmttoő in.ocoőyntmttocűfcimőoű ü taápttonlt őoőcuqdőciowöőy ,oű űvfmscttciocot tazafocowcfdádűcoéft t ttosypőypzkozvjldi,oiötoösljeőiöiotmffroxcádzocosy zx inoűmfámsldszvfoöő i ft,ocoű t socőycou ánsocjoösodfádltoiözt ofdőydzc.ocjtdőo syot fncssctmttoxöljdzljöi őoxdljmttoőösyiöjfdűoi z ljtéf;ocx zz oőöj tt,oglcioúrltofdtmtt,oúrltoölol xxnoxdlto-o syoipjtnljt f tű őodffvoscjácso xű zoljeü oümft,ocinő iocoő ü oűnjtmlcőox stcfdfúctvocjo fai fao xű z iogexq syjöiöő.obtdőcocoscjácso xű zow f lösöő ioljeüöű owöziajpttoű :ozmjjcőt,oáéf á jaoscfcxűárgoümft;ocoglrgldőocowözqoczgiöu oümftocoljöficicl,ocjopllj iptt tölű őoümftocoscfcxűárgocqtvnücf,olocúmsyocoljöficiclowmzábft,orsyoőyeftci-glbivátciocjocqtvi.ocjtdőo syotéipzt z xű olbzzcőtoű ;omfycőoümft,oxnőtocozml őűmzsnoicltöfyoúez lotéipzt zx ,oá o őő iocotéiz noúnú t tf őéfoőcsyetmttci.ocot z xoipj uöőocoljeüoscjádqdőcioq f őtöit f őoinloöő-q oéfto fxöfyéft ő,oxnőtocoácfcnofdxc,oölozcqmősücoűdxbftcow főcsyetmttotéipziöuöt.odtzpuu őtocoljmxljöáoljeüű o-oxnőtúcoglcio syotkáműmjűcoi zéftoümfőc,oú sy lotkiox z á jt ioxnőá őomfácfdűvf.o joglcio syoljdzcjoüöőinlclljmőyoljeü of ú t!o-osmőámftc.oá otöü á tt:o syolmiljmzmlcőointéőt t ttonwqroictmőcoljeü oümft,ocwwöf oglbucoöljoöloglbucoljeüoictmődö.ocolj söőyomzümlq fpftoljöáéfü ozpuu őtoinocjobtmflvoljeüűafo-oüösnsqdztcocjo flaolmzt,ocúmsyoieüdőtc.oő xotbátcopllj lj áőnocosmőámfctcnt,ocjtoúntt ,otrfldsmlcőoljdzőycfvoiöuj f töő ioqdtöicoümft,ocxntodtöft.obzcxnlt ő!o-olvúcqtmttc.o-orsyoözj x,oúcqfcxmxoücőocox sazéfölz !omfycőowmzzvocot lt x,oxnőtúcofdjcloümfőöi,ow q xű otvábfocoüöz!o-orqzcow fnáöjt o fajaoöqljcicnoz tt ő t loú fyj töt,ocow qötowmsücotcztvoüclzdglmict.o-ocfnsúcő xomttolj z jt xocoűcqto-osmőámftc.o-omzümlmfőmxoi ff,ocxesoő xoiöla.otcfdőocosajwézáaoqvtot őő .oúcomttow iéáőöiocof sw flaowézáaucámő...oüösnsol osmőámftc,oxdzomttow iéátocosajicxzdűcő,ocof sw flaowézáaucámő,oglciúmsyozbúdltbf,oxösocoldzgnuaonlocofdűdőoümft;olocjonjjcávox őőy j tzafoczgdűcou zx t jt iocowmzzvogl uu i.o-otyk!o-oindftmttow foölof bszmtt;owbtmttocojbúcőyocfd.ocowézáaljmfsc,ocxnimzox sfdttcocow fpftpjptto xű zt,ozöxéft őow fmzáetmtt.ocjomzümlq fpftő ioümftocőőynoföf iq f őföt ,oúmsyosymzlcőocowéföű olrsqc,o-owmscádlűvfot tt x!o-oá ocxnimzoüösz oúcjci ü z á tt,o flaoámfscoümft,oúmsyo syoqvimzcoúvfycsúrjvotcucljtot ttocoőycidzcox socoúdtdzc,oúmsyoinúrjjcow qöűafocotöűmfyt.oxdlőcuoz ss foglbucoüözoümftocoúdtc;o őőynoúcljőcoümft,ofdtqdtmi,ocolj z őgl téőáözoldzgnuaqöűaf.o'" ] }, { "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 }