{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Első beadandó megoldás\n", "\n", "Tanulságok:\n", "\n", " - szövegérétés! Azt kell megoldani, ami oda van írva. \n", " - használjátok ki a Python lehetőségeit!\n", " - ne használjatok olyan változóneveket, amik nagyon gyakori angol szavak. Pl: list\n", " - ha lassú a program, keressetek jobb megoldást!\n", " - használjátok fel a megírt függvényeket!\n", " \n", " " ] }, { "cell_type": "code", "execution_count": 1, "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": "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. " ] }, { "cell_type": "code", "execution_count": 1, "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": 2, "metadata": {}, "outputs": [], "source": [ "def elkodol(szoveg,abc):\n", " ans=''\n", " for char in szoveg:\n", " if char in abc:\n", " ans=ans+abc[char]\n", " else:\n", " ans=ans+char\n", " return ans " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def dekodol(szoveg,abc):\n", " inv_map = {v: k for k, v in abc.items()}\n", " return elkodol(szoveg,inv_map) " ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "xyyxc\n", "abbac\n" ] } ], "source": [ "print(elkodol(\"abbac\",{\"a\":\"x\",\"b\":\"y\"}))\n", "print(dekodol(\"xyyxc\",{\"a\":\"x\",\"b\":\"y\"}))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. feladat\n", "Az alábbi `titkos_szoveg` 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 például a `z` karakter után kettővel a `!` karakter van. (Ha kifutunk az ábécé végén az elejétől kezdjük újra a számolást.) Pl ha `k=5` és a szöveg `\"csíkos zebra\"`, akkor a az elkódolt üzenet `'gűnóqű:.ifüe'` \n", "\n", "Az eredeti szöveget mentsd el a `megoldas2` változóba. \n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "titkos_szoveg='r,üö-úö,eke-.ol,ekűctkh'" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "def caesar_alph(num):\n", " return dict(zip( hun_alph,list(hun_alph)[num:]+list(hun_alph)[:num]))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'a': 'b',\n", " 'á': 'c',\n", " 'b': 'd',\n", " 'c': 'e',\n", " 'd': 'é',\n", " 'e': 'f',\n", " 'é': 'g',\n", " 'f': 'h',\n", " 'g': 'i',\n", " 'h': 'í',\n", " 'i': 'j',\n", " 'í': 'k',\n", " 'j': 'l',\n", " 'k': 'm',\n", " 'l': 'n',\n", " 'm': 'o',\n", " 'n': 'ó',\n", " 'o': 'ö',\n", " 'ó': 'ő',\n", " 'ö': 'p',\n", " 'ő': 'q',\n", " 'p': 'r',\n", " 'q': 's',\n", " 'r': 't',\n", " 's': 'u',\n", " 't': 'ú',\n", " 'u': 'ü',\n", " 'ú': 'ű',\n", " 'ü': 'v',\n", " 'ű': 'w',\n", " 'v': 'x',\n", " 'w': 'y',\n", " 'x': 'z',\n", " 'y': ' ',\n", " 'z': '!',\n", " ' ': ',',\n", " '!': '-',\n", " ',': '.',\n", " '-': ':',\n", " '.': '?',\n", " ':': ';',\n", " '?': 'a',\n", " ';': 'á'}" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "caesar_alph(2)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 r,üö-úö,eke-.ol,ekűctkh\n", "1 q!úó,uó!djd,-nk!djübsjg\n", "2 p uo!to cíc!,mj cíúáríf\n", "3 őztn snzbib !lízbiuaqié\n", "4 öysmzrmyáház kiyáht;phe\n", "5 óxrlyqlxagayzjhxags?őgd\n", "6 owqkxpkw;f;xyígw;fr:öfc\n", "7 nvpjwőjv?é?wxifv?éq.óéb\n", "8 műőívöíű:e:vwhéű:ep-oeá\n", "9 lüöiűóiü.d.űvgeü.dő,nda\n", "10 kúóhüohú-c-üűfdú-cö!mc;\n", "11 juogúngu,b,úüécu,bó lb?\n", "12 ítnfumft!á!uúebt!áozká:\n", "13 ismétlés a tudás anyja.\n", "14 hrleskerz;zstcarz;mxí;-\n", "15 gqkdrjdqy?yrsb;qy?lwi?,\n", "16 fpjcqícpx:xqrá?px:kvh:!\n", "17 éőíbpibőw.wpqa:őw.jűg. \n", "18 eöiáőháöv-vőp;.öv-íüf-z\n", "19 dóhaögaóű,űöő?-óű,iúé,y\n", "20 cog;óf;oü!üóö:,oü!hue!x\n", "21 bnf?oé?nú úoó.!nú gtd w\n", "22 ámé:ne:muzuno- muzfsczv\n", "23 ale.md.ltytmn,zltyérbyű\n", "24 ;kd-lc-ksxslm!yksxeqáxü\n", "25 ?jc,kb,jrwrkl xjrwdpawú\n", "26 :íb!já!íqvqjkzwíqvcő;vu\n", "27 .iá ía ipűpíjyvipűbö?űt\n", "28 -hazi;zhőüőiíxűhőüáó:üs\n", "29 ,g;yh?ygöúöhiwügöúao.úr\n", "30 !f?xg:xfóuóghvúfóu;n-uq\n", "31 é:wf.wéotofgűuéot?m,tp\n", "32 ze.vé-vensnéfütens:l!ső\n", "33 yd-űe,űdmrmeéúsdmr.k rö\n", "34 xc,üd!üclqldeurclq-jzqó\n", "35 wb!úc úbkpkcdtqbkp,íypo\n", "36 vá ubzuájőjbcspájő!ixőn\n", "37 űaztáytaíöíábrőaíö hwöm\n", "38 ü;ysaxs;ióiaáqö;iózgvól\n", "39 ú?xr;wr?hoh;apó?hoyfűok\n", "40 u:wq?vq:gng?;őo:gnxéünj\n", "41 t.vp:űp.fmf:?ön.fmweúmí\n", "42 s-űő.üő-élé.:óm-élvduli\n" ] } ], "source": [ "for i in range(len(hun_alph)):\n", " proba=dekodol(titkos_szoveg,caesar_alph(i))\n", " print(i,proba)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "megoldas2='ismétlés a tudás anyja.'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. feladat" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "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", "Az eredeti szöveget mentsd el a `megoldas3` változóba. \n", "\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "titkos_szoveg3='öxssxmtoxítöquqlbkjtóítkstdurtfósöko,tusrobaotxlbnvdpbxjtkstxhau-rhóuöko.tűnljxlhaotéxprmtegtbilprtmúnvmútkusbklk:t,hrbastdtusilmórtvqpkbtfóoúokjthklk.trűeqthav,tnvxmtöivtűryjóopibbtxvnjöxo,tktűktpóvpkthámkotéxvpőlbteiöötjxsnjöxo;tíropxorjtjnbdpnbb,tfkomiukotoxhxbhx,tutírobtusrlketyurjga,tíkmkuthilbtktjxphx.tktjqbúójtfkvkmeóbtoxítxmúaötijisbk,tfkoxítfimútktűkvjkubtkstqphkvöktfisbk;tíóvíiubtűxlqmkbeójtxsxjtktyuxlapxb;tksavbtyukjtvnhrpvxtűimbktktöxusapxb:toroyutrpdítbihóöövktfimútíkvkpekjtrbbxo,tjxmúxlíxpxbtéxprmtólpektíxmtkstrubxo;tólpektíxmtkstrubxotxsxotkthrlómio:tíamtktíóurjiotru,tusrhxíödltjrhóoií.tbilprtoxítűqbibbtxl,tyukjtűxlóllibbtusaéxo,tutktörjóbtöxhóvbktkstqbykjnsaéxo.tírbtkjkvustbxtűryjg!tbóotöiliopthkmú?toxítlópptktpőfnutörjób,tfimútenotxmúxoxuxotvóp?tlóbbktírjlgutörsioú,tfimúoxtlóbbkthilok?tyukjtjrólbisskbijt-tíkmóökotmiopilbk,tutxlöiyuóbótktusgbtktjabtűőlxtíxllxbb,tírobfimútlóbortíóvíiubtktörjófistjxllxbb.tfketvó!tfke!tlkjeqjtxltktöcöóokbtbivób;tólíiutktyukélóvqoj:trmúqjtíxmtktöivób!trmúólthaotyríöklií:tíropeóvbtvóptliyuilií.töxlaítrojóöötqvkí:tkícmútrusioúipií.tíkmkpaögltromúxo!tfkllip-xtjiyuíóviu!tbamútcmú,tírobfktrooól.tqvkí!toxítlxustjóviu?tfktyukjtxooúrbtbqpbij,tíiopktírjlgu,troor:trmúktíxmtktűnlptktíkvkpajib:támútor!t'\n", "biztos_szoveg='hogy jön egyenesen rád? látta miklós bizony, hogyne látta volna?'" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "def illeszkedik(szoveg1,szoveg2):\n", " if len(szoveg1)!=len(szoveg2):\n", " return False\n", " helper=set(zip(szoveg1,szoveg2))\n", " return len(helper)==len(set([x[0] for x in helper])) and len(helper)==len(set([x[1] for x in helper])) \n" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "fimútenotxmúxoxuxotvóp?tlóbbktírjlgutörsioú,tfimúoxtlóbbkthilok? 749\n" ] } ], "source": [ "l=len(biztos_szoveg)\n", "for i in range(len(titkos_szoveg3)-l):\n", " if illeszkedik(biztos_szoveg,titkos_szoveg3[i:i+l]):\n", " print(titkos_szoveg3[i:i+l],i)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "reszleges_abc=dict(zip(biztos_szoveg,titkos_szoveg3[749:749+l]))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "def dekodolnagy(szoveg,abc):\n", " ans=''\n", " inv_map = {v: k for k, v in abc.items()}\n", " for char in szoveg:\n", " if char in inv_map:\n", " ans=ans+inv_map[char].upper()\n", " else:\n", " ans=ans+char\n", " return ans " ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'BEZZEG NEM BqSqLTAK ÁM AZ dSI HÁZBAN, SZINTaN ELTÖRdDTEK AZ EVaS-IVÁSBAN. űÖLKELVaN éEDIG JÓ TOLDI GYÖRGY ASZTALA: ,VITaZ d SZOLGÁI RqDAT HÁNYNAK VALA. IűJq VaR, ÖREG BOR űIyKÁNDOTT ERÖKBEN, A űA DÁRDA VáGAN éERDőLT JOBB KEZÖKBEN; MINDENIK KÖTdDÖTT, HANGOSAN NEVETVE, S MINT SZILAJ ySIKÓa, MAGAS VOLT A KEDVE. A KqTYÁK HARAGJÁT NEM EGYaB OKOZTA, HANEM HOGY A űARKAST AZ qDVARBA HOZTA; MÁRMOST űELqGATJÁK EZEK A ySELaDET; AZaRT ySAK RÖVIDRE űOGTA A BESZaDET: NINyS IDdM TOVÁBBRA HOGY MARADJAK ITTEN, KEGYELMEDET éEDIG ÁLDJA MEG AZ ISTEN; ÁLDJA MEG AZ ISTEN EZEN A VILÁGON: MaG A MÁSIKON IS, SZIVEMBdL KIVÁNOM. TOLDI NEM űqTOTT EL, ySAK űELÁLLOTT SZaéEN, S A BIKÁT BEVÁRTA AZ qTyAKÖZaéEN. MIT AKARSZ TE űIyKÓ! TÁN BOLOND VAGY? NEM LÁDD A DőHÖS BIKÁT, HOGY JÖN EGYENESEN RÁD? LÁTTA MIKLÓS BIZONY, HOGYNE LÁTTA VOLNA? ySAK KIÁLTOZZATOK - MAGÁBAN GONDOLTA, S ELBOySÁTÁ A SZÓT A KaT űőLE MELLETT, MINTHOGY LÁTNI MÁRMOST A BIKÁHOZ KELLETT. HAJ RÁ! HAJ! LAKJqK EL A BcBÁNAT TORÁT; ÁLMOS A ySAéLÁRqNK: IGYqK MEG A BORÁT! IGYÁL VaN yIMBALOM: MINDJÁRT RÁD LOySOLOM. BELaM INKÁBB qRAM: AMcGY ISZONYODOM. MAGADaBÓL INGYEN! HALLOD-E KOySMÁROS! TaGY cGY, MINTHA INNÁL. qRAM! NEM LESZ KÁROS? HA ySAK ENNYIT TqDTOK, MONDA MIKLÓS, INNI: IGYA MEG A űÖLD A MARADaKOT: áGY NI! '" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dekodolnagy(titkos_szoveg3,reszleges_abc)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "reszleges_abc['ő']='d'\n", "reszleges_abc['é']='a'\n", "reszleges_abc['f']='ű'\n", "reszleges_abc['p']='é'\n", "reszleges_abc['u']='q'\n", "reszleges_abc['c']='y'\n", "reszleges_abc['ú']='c'\n", "reszleges_abc['ü']='ő'\n", "reszleges_abc['p']='é'\n", "reszleges_abc['í']='á'\n", "reszleges_abc['o']='i'\n" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'BEZZEG NEM BUSULTAK ÁM AZ ŐSI HÁZBAN, SZINTÉN ELTÖRŐDTEK AZ EVÉS-IVÁSBAN. FÖLKELVÉN PEDIG JÓ TOLDI GYÖRGY ASZTALA: ,VITÉZ Ő SZOLGÁI RUDAT HÁNYNAK VALA. IFJU VÉR, ÖREG BOR FICKÁNDOTT ERÖKBEN, A FA DÁRDA VÍGAN PERDÜLT JOBB KEZÖKBEN; MINDENIK KÖTŐDÖTT, HANGOSAN NEVETVE, S MINT SZILAJ CSIKÓÉ, MAGAS VOLT A KEDVE. A KUTYÁK HARAGJÁT NEM EGYÉB OKOZTA, HANEM HOGY A FARKAST AZ UDVARBA HOZTA; MÁRMOST FELUGATJÁK EZEK A CSELÉDET; AZÉRT CSAK RÖVIDRE FOGTA A BESZÉDET: NINCS IDŐM TOVÁBBRA HOGY MARADJAK ITTEN, KEGYELMEDET PEDIG ÁLDJA MEG AZ ISTEN; ÁLDJA MEG AZ ISTEN EZEN A VILÁGON: MÉG A MÁSIKON IS, SZIVEMBŐL KIVÁNOM. TOLDI NEM FUTOTT EL, CSAK FELÁLLOTT SZÉPEN, S A BIKÁT BEVÁRTA AZ UTCAKÖZÉPEN. MIT AKARSZ TE FICKÓ! TÁN BOLOND VAGY? NEM LÁDD A DÜHÖS BIKÁT, HOGY JÖN EGYENESEN RÁD? LÁTTA MIKLÓS BIZONY, HOGYNE LÁTTA VOLNA? CSAK KIÁLTOZZATOK - MAGÁBAN GONDOLTA, S ELBOCSÁTÁ A SZÓT A KÉT FÜLE MELLETT, MINTHOGY LÁTNI MÁRMOST A BIKÁHOZ KELLETT. HAJ RÁ! HAJ! LAKJUK EL A BÚBÁNAT TORÁT; ÁLMOS A CSAPLÁRUNK: IGYUK MEG A BORÁT! IGYÁL VÉN CIMBALOM: MINDJÁRT RÁD LOCSOLOM. BELÉM INKÁBB URAM: AMÚGY ISZONYODOM. MAGADÉBÓL INGYEN! HALLOD-E KOCSMÁROS! TÉGY ÚGY, MINTHA INNÁL. URAM! NEM LESZ KÁROS? HA CSAK ENNYIT TUDTOK, MONDA MIKLÓS, INNI: IGYA MEG A FÖLD A MARADÉKOT: ÍGY NI! '" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dekodolnagy(titkos_szoveg3,reszleges_abc)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'bezzeg nem busultak ám az ősi házban, szintén eltörődtek az evés-ivásban. fölkelvén pedig jó toldi györgy asztala: ,vitéz ő szolgái rudat hánynak vala. ifju vér, öreg bor fickándott erökben, a fa dárda vígan perdült jobb kezökben; mindenik kötődött, hangosan nevetve, s mint szilaj csikóé, magas volt a kedve. a kutyák haragját nem egyéb okozta, hanem hogy a farkast az udvarba hozta; mármost felugatják ezek a cselédet; azért csak rövidre fogta a beszédet: nincs időm továbbra hogy maradjak itten, kegyelmedet pedig áldja meg az isten; áldja meg az isten ezen a világon: még a másikon is, szivemből kivánom. toldi nem futott el, csak felállott szépen, s a bikát bevárta az utcaközépen. mit akarsz te fickó! tán bolond vagy? nem ládd a dühös bikát, hogy jön egyenesen rád? látta miklós bizony, hogyne látta volna? csak kiáltozzatok - magában gondolta, s elbocsátá a szót a két füle mellett, minthogy látni mármost a bikához kellett. haj rá! haj! lakjuk el a búbánat torát; álmos a csaplárunk: igyuk meg a borát! igyál vén cimbalom: mindjárt rád locsolom. belém inkább uram: amúgy iszonyodom. magadéból ingyen! hallod-e kocsmáros! tégy úgy, mintha innál. uram! nem lesz káros? ha csak ennyit tudtok, monda miklós, inni: igya meg a föld a maradékot: így ni! '" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "megoldas3=dekodolnagy(titkos_szoveg3,reszleges_abc).lower()\n", "megoldas3" ] }, { "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": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Betűk gyakorisága:\n", "\n", "(' ', 0.1508)\n", "('e', 0.0868)\n", "('a', 0.073)\n", "('t', 0.0711)\n", "('l', 0.0516)\n", "('n', 0.0495)\n", "('s', 0.0465)\n", "('o', 0.0399)\n", "('z', 0.0367)\n", "('k', 0.0349)\n", "('r', 0.0327)\n", "('g', 0.0304)\n", "('i', 0.0299)\n", "('m', 0.0286)\n", "('é', 0.0247)\n", "('á', 0.0234)\n", "(',', 0.0194)\n", "('y', 0.0179)\n", "('d', 0.0174)\n", "('v', 0.0174)\n", "('h', 0.0145)\n", "('b', 0.0139)\n", "('.', 0.01)\n", "('j', 0.0096)\n", "('ö', 0.0088)\n", "('c', 0.0076)\n", "('-', 0.007)\n", "('f', 0.007)\n", "('u', 0.0068)\n", "('ő', 0.0066)\n", "('p', 0.0064)\n", "('ó', 0.0061)\n", "('ü', 0.0045)\n", "('í', 0.0026)\n", "('ú', 0.0023)\n", "('!', 0.001)\n", "('?', 0.001)\n", "('ű', 0.0008)\n", "(';', 0.0005)\n", "(':', 0.0004)\n", "('x', 0.0001)\n", "('q', 0.0)\n", "('w', 0.0)\n", "\n", "Betűpárok gyakorisága:\n", "\n", "(' a', 0.0233)\n", "('a ', 0.0209)\n", "(', ', 0.0194)\n", "('t ', 0.0175)\n", "(' m', 0.015)\n", "('sz', 0.0142)\n", "('el', 0.0126)\n", "(' e', 0.0116)\n", "('tt', 0.0107)\n", "('s ', 0.0106)\n", "('n ', 0.0104)\n", "('gy', 0.0101)\n", "('en', 0.01)\n", "(' s', 0.0099)\n", "('eg', 0.0098)\n", "(' h', 0.0097)\n", "('te', 0.0089)\n", "('et', 0.0087)\n", "(' k', 0.0086)\n", "('k ', 0.0085)\n", "('e ', 0.0075)\n", "('me', 0.0074)\n", "('ta', 0.0073)\n", "('le', 0.0073)\n", "('er', 0.0071)\n", "(' v', 0.0071)\n", "('an', 0.0071)\n", "('z ', 0.0066)\n", "('ze', 0.0065)\n", "('al', 0.0065)\n", "('ol', 0.0064)\n", "('és', 0.0063)\n", "(' é', 0.0062)\n", "('y ', 0.0062)\n", "(' n', 0.0061)\n", "('az', 0.0061)\n", "('l ', 0.0061)\n", "('re', 0.006)\n", "('em', 0.0059)\n", "('lt', 0.0058)\n", "('. ', 0.0058)\n", "('- ', 0.0058)\n", "('ek', 0.0056)\n", "(' t', 0.0054)\n", "('ot', 0.0053)\n", "(' f', 0.0053)\n", "('ne', 0.0053)\n", "('ak', 0.0053)\n", "(' i', 0.0052)\n", "('at', 0.0051)\n", "('mi', 0.0051)\n", "('on', 0.0049)\n", "('es', 0.0048)\n", "('in', 0.0048)\n", "('ke', 0.0046)\n", "('zt', 0.0046)\n", "('og', 0.0046)\n", "('va', 0.0046)\n", "('na', 0.0046)\n", "('ho', 0.0046)\n", "('be', 0.0044)\n", "('nd', 0.0044)\n", "(' l', 0.0043)\n", "('ez', 0.0042)\n", "('nt', 0.0042)\n", "('is', 0.0042)\n", "('t,', 0.0041)\n", "(' o', 0.004)\n", "('to', 0.004)\n", "('i ', 0.004)\n", "('cs', 0.0039)\n", "('ha', 0.0039)\n", "('g ', 0.0039)\n", "('la', 0.0038)\n", "('ra', 0.0038)\n", "(' -', 0.0038)\n", "('ki', 0.0038)\n", "('ly', 0.0037)\n", "('ny', 0.0036)\n", "('ve', 0.0036)\n", "('se', 0.0036)\n", "('ar', 0.0036)\n", "('án', 0.0034)\n", "('or', 0.0034)\n", "('os', 0.0034)\n", "('m ', 0.0034)\n", "('ll', 0.0034)\n", "('ár', 0.0033)\n", "('de', 0.0033)\n", "(' b', 0.0032)\n", "('ér', 0.0032)\n", "('ag', 0.0032)\n", "('ko', 0.0032)\n", "('cz', 0.0031)\n", "('át', 0.0031)\n", "('rt', 0.003)\n", "('zo', 0.003)\n", "('he', 0.003)\n", "('ég', 0.003)\n", "('ál', 0.0029)\n", "('sa', 0.0029)\n", "('ba', 0.0029)\n", "('ye', 0.0028)\n", "('tá', 0.0027)\n", "('ás', 0.0027)\n", "('ok', 0.0027)\n", "('ka', 0.0027)\n", "('ni', 0.0026)\n", "('vo', 0.0026)\n", "('mo', 0.0025)\n", "('ül', 0.0025)\n", "('do', 0.0025)\n", "(' r', 0.0024)\n", "('ma', 0.0024)\n", "('lo', 0.0024)\n", "('r ', 0.0023)\n", "('a,', 0.0023)\n", "('él', 0.0023)\n", "('t.', 0.0023)\n", "('ik', 0.0022)\n", "('én', 0.0022)\n", "('ov', 0.0022)\n", "('ed', 0.0022)\n", "('zé', 0.0022)\n", "('k,', 0.0022)\n", "('ge', 0.0022)\n", "(' c', 0.0022)\n", "('oz', 0.0021)\n", "(' g', 0.0021)\n", "('ad', 0.0021)\n", "('zá', 0.0021)\n", "('rc', 0.0021)\n", "('nn', 0.0021)\n", "('as', 0.002)\n", "('kö', 0.002)\n", "('lá', 0.002)\n", "('sé', 0.002)\n", "('ól', 0.002)\n", "('ss', 0.0019)\n", "('za', 0.0019)\n", "('it', 0.0019)\n", "('bb', 0.0019)\n", "('fe', 0.0019)\n", "('st', 0.0019)\n", "('ga', 0.0019)\n", "(' p', 0.0019)\n", "('.-', 0.0018)\n", "('vá', 0.0018)\n", "('té', 0.0018)\n", "('go', 0.0018)\n", "('n,', 0.0018)\n", "('ké', 0.0018)\n", "('áb', 0.0017)\n", "('ét', 0.0017)\n", "('sá', 0.0017)\n", "(' á', 0.0017)\n", "('il', 0.0017)\n", "(' d', 0.0016)\n", "('ág', 0.0016)\n", "('so', 0.0016)\n", "(' u', 0.0016)\n", "('e,', 0.0016)\n", "('je', 0.0016)\n", "('né', 0.0016)\n", "('lk', 0.0016)\n", "('rá', 0.0016)\n", "('lé', 0.0016)\n", "('aj', 0.0016)\n", "('ő ', 0.0015)\n", "('om', 0.0015)\n", "('fo', 0.0015)\n", "('má', 0.0015)\n", "('ya', 0.0015)\n", "(' ö', 0.0015)\n", "(' j', 0.0015)\n", "('mé', 0.0015)\n", "('am', 0.0015)\n", "('dt', 0.0015)\n", "('od', 0.0015)\n", "('ro', 0.0014)\n", "('ap', 0.0014)\n", "('ön', 0.0014)\n", "('..', 0.0014)\n", "('ig', 0.0014)\n", "('öl', 0.0014)\n", "('l,', 0.0014)\n", "('yo', 0.0014)\n", "('ja', 0.0014)\n", "('zi', 0.0013)\n", "('gé', 0.0013)\n", "('ul', 0.0013)\n", "('da', 0.0013)\n", "(' z', 0.0013)\n", "('gá', 0.0013)\n", "('lő', 0.0013)\n", "('rr', 0.0013)\n", "('ó ', 0.0013)\n", "('ör', 0.0013)\n", "('ln', 0.0013)\n", "('já', 0.0013)\n", "('ut', 0.0013)\n", "('ti', 0.0012)\n", "('ék', 0.0012)\n", "('vé', 0.0012)\n", "('pa', 0.0012)\n", "('nk', 0.0012)\n", "('ől', 0.0012)\n", "('öz', 0.0012)\n", "('ej', 0.0012)\n", "('vi', 0.0011)\n", "('d ', 0.0011)\n", "('nc', 0.0011)\n", "('a.', 0.0011)\n", "('pe', 0.0011)\n", "('ít', 0.0011)\n", "('há', 0.0011)\n", "('zó', 0.0011)\n", "('j ', 0.0011)\n", "(' ő', 0.0011)\n", "('őt', 0.0011)\n", "('ró', 0.0011)\n", "('ép', 0.0011)\n", "('ie', 0.0011)\n", "('rd', 0.001)\n", "('lm', 0.001)\n", "('ng', 0.001)\n", "('öt', 0.001)\n", "('ák', 0.001)\n", "('si', 0.001)\n", "Wall time: 1.03 s\n" ] } ], "source": [ "%%time\n", "with open(\"szoveg.txt\") as ff:\n", " ## formázás\n", " szoveg = ff.read()\n", " szoveg= [ c.lower() for c in szoveg if c in hun_alph ]\n", " \n", " ## karakter gyakoriság\n", " gyak={}\n", " for c in szoveg:\n", " if c in gyak:\n", " gyak[c]+=1\n", " else:\n", " gyak[c]=1\n", " osszchar=sum(gyak.values())\n", " \n", " ## eredmény formázása \n", " megoldas4betuseged={}\n", " for i in gyak:\n", " megoldas4betuseged[i]=gyak[i]/osszchar\n", " megoldas4betu=[(c,round(megoldas4betuseged[c],4)) for c in megoldas4betuseged]\n", " megoldas4betu.sort(key=lambda t: t[1], reverse=True)\n", "\n", " print(\"\\nBetűk gyakorisága:\\n\")\n", " print(*megoldas4betu, sep=\"\\n\")\n", "\n", " ## párok gyakorisága\n", " par_gyak= {}\n", " for i in range(len(szoveg)-1):\n", " bpar= szoveg[i]+szoveg[i+1]\n", " if bpar in par_gyak:\n", " par_gyak[bpar]+=1\n", " else:\n", " par_gyak[bpar]=1\n", "\n", " ossz_par= sum(par_gyak.values())\n", "\n", " megoldas4betuparseged={}\n", " for i in par_gyak:\n", " megoldas4betuparseged[i]=par_gyak[i]/ossz_par\n", " megoldas4betupar=[(c,round(megoldas4betuparseged[c],4)) for c in megoldas4betuparseged if megoldas4betuparseged[c]>=1/1000]\n", " megoldas4betupar.sort(key=lambda t: t[1], reverse=True)\n", " print(\"\\nBetűpárok gyakorisága:\\n\")\n", " print(*megoldas4betupar, sep=\"\\n\")" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['l',\n", " 'a',\n", " 's',\n", " 's',\n", " 'z',\n", " 'i',\n", " 'k',\n", " 'u',\n", " 's',\n", " ' ',\n", " 'e',\n", " 'g',\n", " 'é',\n", " 'n',\n", " 'y',\n", " 't',\n", " 'á',\n", " 'r',\n", " 'z',\n", " 'e',\n", " 'r',\n", " 'k',\n", " 'e',\n", " 's',\n", " 'z',\n", " 't',\n", " 'i',\n", " 'k',\n", " 'm',\n", " 'b',\n", " 'r',\n", " 'u',\n", " 's',\n", " ' ',\n", " 'o',\n", " 'l',\n", " 't',\n", " 'á',\n", " 'n',\n", " ' ',\n", " 'é',\n", " 's',\n", " ' ',\n", " 'd',\n", " 'r',\n", " '.',\n", " ' ',\n", " 'o',\n", " 'i',\n", " 'n',\n", " 'o',\n", " 'v',\n", " 'i',\n", " 'c',\n", " 'h',\n", " ' ',\n", " 'é',\n", " 'z',\n", " 'a',\n", " 'á',\n", " 'b',\n", " 'o',\n", " 'r',\n", " 'ú',\n", " ' ',\n", " 'é',\n", " 's',\n", " ' ',\n", " 'b',\n", " 'é',\n", " 'k',\n", " 'e',\n", " '.',\n", " 'r',\n", " 't',\n", " 'a',\n", " ' ',\n", " 'o',\n", " 'l',\n", " 's',\n", " 'z',\n", " 't',\n", " 'o',\n", " 'j',\n", " 'o',\n", " 'r',\n", " 'd',\n", " 'i',\n", " 't',\n", " 'o',\n", " 't',\n", " 't',\n", " 'a',\n", " ' ',\n", " 'm',\n", " 'b',\n", " 'r',\n", " 'o',\n", " 'z',\n", " 'o',\n", " 'v',\n", " 'i',\n", " 'c',\n", " 's',\n", " ' ',\n", " 'e',\n", " 'z',\n", " 's',\n", " 'ő',\n", " ' ',\n", " ' ',\n", " '.',\n", " ' ',\n", " '.',\n", " ' ',\n", " '.',\n", " '-',\n", " '.',\n", " ' ',\n", " 'm',\n", " 'ű',\n", " ' ',\n", " 'e',\n", " 'l',\n", " 'e',\n", " 'k',\n", " 't',\n", " 'r',\n", " 'o',\n", " 'n',\n", " 'i',\n", " 'k',\n", " 'u',\n", " 's',\n", " ' ',\n", " 'v',\n", " 'á',\n", " 'l',\n", " 't',\n", " 'o',\n", " 'z',\n", " 'a',\n", " 't',\n", " 'á',\n", " 'r',\n", " 'a',\n", " ' ',\n", " 'a',\n", " ' ',\n", " 'e',\n", " 'v',\n", " 'e',\n", " 'z',\n", " 'd',\n", " ' ',\n", " 'm',\n", " 'e',\n", " 'g',\n", " '!',\n", " ' ',\n", " '-',\n", " ' ',\n", " 'g',\n", " 'y',\n", " ' ',\n", " 'a',\n", " 'd',\n", " 'd',\n", " ' ',\n", " 't',\n", " 'o',\n", " 'v',\n", " 'á',\n", " 'b',\n", " 'b',\n", " '!',\n", " ' ',\n", " '.',\n", " ' ',\n", " 'n',\n", " 'p',\n", " 'o',\n", " 'r',\n", " 't',\n", " 'e',\n", " 'd',\n", " ' ',\n", " ' ',\n", " '-',\n", " ' ',\n", " '.',\n", " ' ',\n", " 'r',\n", " 'e',\n", " 'a',\n", " 't',\n", " 'i',\n", " 'v',\n", " 'e',\n", " ' ',\n", " 'o',\n", " 'm',\n", " 'm',\n", " 'o',\n", " 'n',\n", " 's',\n", " ' ',\n", " 'l',\n", " 'i',\n", " 'c',\n", " 'e',\n", " 'n',\n", " 'c',\n", " ' ',\n", " 'f',\n", " 'e',\n", " 'l',\n", " 't',\n", " 'é',\n", " 't',\n", " 'e',\n", " 'l',\n", " 'e',\n", " 'i',\n", " ' ',\n", " 'é',\n", " 'r',\n", " 'v',\n", " 'é',\n", " 'n',\n", " 'y',\n", " 'e',\n", " 's',\n", " 'e',\n", " 'k',\n", " '.',\n", " ' ',\n", " 'o',\n", " 'v',\n", " 'á',\n", " 'b',\n", " 'b',\n", " 'i',\n", " ' ',\n", " 'i',\n", " 'n',\n", " 'f',\n", " 'o',\n", " 'r',\n", " 'm',\n", " 'á',\n", " 'c',\n", " 'i',\n", " 'ó',\n", " 'k',\n", " ':',\n", " ' ',\n", " 'h',\n", " 't',\n", " 't',\n", " 'p',\n", " ':',\n", " 'c',\n", " 'r',\n", " 'e',\n", " 'a',\n", " 't',\n", " 'i',\n", " 'v',\n", " 'e',\n", " 'c',\n", " 'o',\n", " 'm',\n", " 'm',\n", " 'o',\n", " 'n',\n", " 's',\n", " '.',\n", " 'o',\n", " 'r',\n", " 'g',\n", " 'l',\n", " 'i',\n", " 'c',\n", " 'e',\n", " 'n',\n", " 's',\n", " 'e',\n", " 's',\n", " 'b',\n", " 'y',\n", " '-',\n", " 's',\n", " 'a',\n", " '.',\n", " 'd',\n", " 'e',\n", " 'e',\n", " 'd',\n", " '.',\n", " 'h',\n", " 'u',\n", " 'l',\n", " 'e',\n", " 'k',\n", " 't',\n", " 'r',\n", " 'o',\n", " 'n',\n", " 'i',\n", " 'k',\n", " 'u',\n", " 's',\n", " ' ',\n", " 'v',\n", " 'á',\n", " 'l',\n", " 't',\n", " 'o',\n", " 'z',\n", " 'a',\n", " 't',\n", " ':',\n", " 'u',\n", " 'd',\n", " 'a',\n", " 'p',\n", " 'e',\n", " 's',\n", " 't',\n", " ' ',\n", " ':',\n", " ' ',\n", " 'a',\n", " 'g',\n", " 'y',\n", " 'a',\n", " 'r',\n", " ' ',\n", " 'l',\n", " 'e',\n", " 'k',\n", " 't',\n", " 'r',\n", " 'o',\n", " 'n',\n", " 'i',\n", " 'k',\n", " 'u',\n", " 's',\n", " ' ',\n", " 'ö',\n", " 'n',\n", " 'y',\n", " 'v',\n", " 't',\n", " 'á',\n", " 'r',\n", " 'é',\n", " 'r',\n", " 't',\n", " ' ',\n", " 'g',\n", " 'y',\n", " 'e',\n", " 's',\n", " 'ü',\n", " 'l',\n", " 'e',\n", " 't',\n", " ',',\n", " ' ',\n", " 'é',\n", " 's',\n", " 'z',\n", " 'ü',\n", " 'l',\n", " 't',\n", " ' ',\n", " 'a',\n", " 'z',\n", " ' ',\n", " 'n',\n", " 't',\n", " 'e',\n", " 'r',\n", " 'n',\n", " 'e',\n", " 't',\n", " ' ',\n", " 'z',\n", " 'o',\n", " 'l',\n", " 'g',\n", " 'á',\n", " 'l',\n", " 't',\n", " 'a',\n", " 't',\n", " 'ó',\n", " 'k',\n", " ' ',\n", " 'a',\n", " 'n',\n", " 'á',\n", " 'c',\n", " 's',\n", " 'a',\n", " ' ',\n", " 't',\n", " 'á',\n", " 'm',\n", " 'o',\n", " 'g',\n", " 'a',\n", " 't',\n", " 'á',\n", " 's',\n", " 'á',\n", " 'v',\n", " 'a',\n", " 'l',\n", " '.',\n", " 'é',\n", " 's',\n", " 'z',\n", " 'í',\n", " 't',\n", " 'e',\n", " 't',\n", " 't',\n", " 'e',\n", " ' ',\n", " 'a',\n", " 'z',\n", " ' ',\n", " 'r',\n", " 's',\n", " 'z',\n", " 'á',\n", " 'g',\n", " 'o',\n", " 's',\n", " ' ',\n", " 'z',\n", " 'é',\n", " 'c',\n", " 'h',\n", " 'é',\n", " 'n',\n", " 'y',\n", " 'i',\n", " ' ',\n", " 'ö',\n", " 'n',\n", " 'y',\n", " 'v',\n", " 't',\n", " 'á',\n", " 'r',\n", " ' ',\n", " '-',\n", " 'k',\n", " 'ö',\n", " 'n',\n", " 'y',\n", " 'v',\n", " 't',\n", " 'á',\n", " 'r',\n", " 'i',\n", " ' ',\n", " 'z',\n", " 'o',\n", " 'l',\n", " 'g',\n", " 'á',\n", " 'l',\n", " 't',\n", " 'a',\n", " 't',\n", " 'á',\n", " 's',\n", " 'o',\n", " 'k',\n", " ' ',\n", " 's',\n", " 'z',\n", " 't',\n", " 'á',\n", " 'l',\n", " 'y',\n", " 'a',\n", " ' ',\n", " '-',\n", " '-',\n", " '-',\n", " '-',\n", " ' ',\n", " 'o',\n", " 'n',\n", " 'l',\n", " 'i',\n", " 'n',\n", " 'e',\n", " '-',\n", " ' ',\n", " '.',\n", " '.',\n", " '-',\n", " ' ',\n", " 'o',\n", " 's',\n", " ',',\n", " ' ',\n", " 'h',\n", " 'e',\n", " 'r',\n", " 'c',\n", " 'z',\n", " 'e',\n", " 'g',\n", " ',',\n", " ' ',\n", " 'e',\n", " 'n',\n", " 'u',\n", " 'a',\n", " ' ',\n", " 'é',\n", " 's',\n", " ' ',\n", " 'u',\n", " 'c',\n", " 'c',\n", " 'a',\n", " ' ',\n", " 'i',\n", " 'm',\n", " 'm',\n", " 'á',\n", " 'r',\n", " ' ',\n", " 'n',\n", " 'e',\n", " 'm',\n", " ' ',\n", " 'e',\n", " 'g',\n", " 'y',\n", " 'e',\n", " 'b',\n", " 'e',\n", " 'k',\n", " ',',\n", " ' ',\n", " 'm',\n", " 'i',\n", " 'n',\n", " 't',\n", " ' ',\n", " 'a',\n", " ' ',\n", " 'o',\n", " 'n',\n", " 'a',\n", " 'p',\n", " 'a',\n", " 'r',\n", " 't',\n", " 'e',\n", " '-',\n", " 'c',\n", " 's',\n", " 'a',\n", " 'l',\n", " 'á',\n", " 'd',\n", " ' ',\n", " 'j',\n", " 'ó',\n", " 's',\n", " 'z',\n", " 'á',\n", " 'g',\n", " 'a',\n", " 'i',\n", " '.',\n", " ' ',\n", " 'e',\n", " 'm',\n", " ',',\n", " ' ',\n", " 'e',\n", " 'l',\n", " 'ő',\n", " 'r',\n", " 'e',\n", " ' ',\n", " 'i',\n", " 's',\n", " ' ',\n", " 'f',\n", " 'i',\n", " 'g',\n", " 'y',\n", " 'e',\n", " 'l',\n", " 'm',\n", " 'e',\n", " 'z',\n", " 't',\n", " 'e',\n", " 't',\n", " 'e',\n", " 'm',\n", " ',',\n", " ' ',\n", " 'h',\n", " 'a',\n", " ' ',\n", " 'n',\n", " 'e',\n", " 'm',\n", " ' ',\n", " 'a',\n", " 'z',\n", " 'z',\n", " 'a',\n", " 'l',\n", " ' ',\n", " 'a',\n", " ' ',\n", " 'h',\n", " 'í',\n", " 'r',\n", " 'r',\n", " 'e',\n", " 'l',\n", " ' ',\n", " 'j',\n", " 'ö',\n", " 'n',\n", " ',',\n", " ' ',\n", " 'h',\n", " 'o',\n", " 'g',\n", " 'y',\n", " ' ',\n", " 'h',\n", " 'á',\n", " 'b',\n", " 'o',\n", " 'r',\n", " 'ú',\n", " 'n',\n", " 'k',\n", " ' ',\n", " 'l',\n", " 'e',\n", " 's',\n", " 'z',\n", " ',',\n", " ' ',\n", " 'h',\n", " 'a',\n", " ' ',\n", " 'm',\n", " 'é',\n", " 'g',\n", " ' ',\n", " 'm',\n", " 'i',\n", " 'n',\n", " 'd',\n", " 'i',\n", " 'g',\n", " ' ',\n", " 'm',\n", " 'e',\n", " 'g',\n", " 'e',\n", " 'n',\n", " 'g',\n", " 'e',\n", " 'd',\n", " 'i',\n", " ' ',\n", " 'm',\n", " 'a',\n", " 'g',\n", " 'á',\n", " 'n',\n", " 'a',\n", " 'k',\n", " ' ',\n", " 'a',\n", " 'z',\n", " 't',\n", " ',',\n", " ' ',\n", " 'h',\n", " 'o',\n", " 'g',\n", " 'y',\n", " ' ',\n", " 'e',\n", " 'n',\n", " 'n',\n", " 'e',\n", " 'k',\n", " ' ',\n", " 'a',\n", " 'z',\n", " ' ',\n", " 'a',\n", " 'n',\n", " 't',\n", " 'i',\n", " 'k',\n", " 'r',\n", " 'i',\n", " 's',\n", " 'z',\n", " 't',\n", " 'u',\n", " 's',\n", " 'n',\n", " 'a',\n", " 'k',\n", " ' ',\n", " 'i',\n", " 'g',\n", " 'a',\n", " 'z',\n", " 'á',\n", " 'n',\n", " ' ',\n", " 'm',\n", " 'á',\n", " 'r',\n", " ' ',\n", " 'm',\n", " 'a',\n", " 'g',\n", " 'a',\n", " 'm',\n", " ' ',\n", " 'i',\n", " 's',\n", " ' ',\n", " 'k',\n", " 'e',\n", " 'z',\n", " 'd',\n", " 'e',\n", " 'm',\n", " ' ',\n", " 'h',\n", " 'i',\n", " 'n',\n", " 'n',\n", " 'i',\n", " ',',\n", " ' ',\n", " 'h',\n", " 'o',\n", " 'g',\n", " 'y',\n", " ' ',\n", " 'c',\n", " 's',\n", " 'a',\n", " 'k',\n", " 'u',\n", " 'g',\n", " 'y',\n", " 'a',\n", " 'n',\n", " ' ',\n", " 'a',\n", " 'z',\n", " ',',\n", " ' ',\n", " 'm',\n", " 'i',\n", " 'n',\n", " 'd',\n", " 'e',\n", " 'n',\n", " ' ',\n", " 'a',\n", " 'l',\n", " 'á',\n", " 'v',\n", " 'a',\n", " 'l',\n", " 'ó',\n", " 's',\n", " 'á',\n", " 'g',\n", " 'á',\n", " 't',\n", " ' ',\n", " 'é',\n", " 's',\n", " ' ',\n", " 'r',\n", " 'é',\n", " 'm',\n", " 't',\n", " 'e',\n", " 't',\n", " 't',\n", " 'e',\n", " 'i',\n", " 't',\n", " ' ',\n", " 'v',\n", " 'é',\n", " 'd',\n", " 'e',\n", " 'l',\n", " 'm',\n", " 'e',\n", " 'z',\n", " 'z',\n", " 'e',\n", " ',',\n", " ' ',\n", " '-',\n", " ' ',\n", " 't',\n", " 'ö',\n", " 'b',\n", " 'b',\n", " 'é',\n", " ' ',\n", " 'n',\n", " 'e',\n", " 'm',\n", " ' ',\n", " 'i',\n", " 's',\n", " 'm',\n", " 'e',\n", " 'r',\n", " 'e',\n", " 'm',\n", " ' ',\n", " 'ö',\n", " 'n',\n", " 't',\n", " ',',\n", " ' ',\n", " 'é',\n", " 's',\n", " ' ',\n", " 'ö',\n", " 'n',\n", " ' ',\n", " 'n',\n", " 'e',\n", " 'k',\n", " 'e',\n", " 'm',\n", " ' ',\n", " 't',\n", " 'ö',\n", " 'b',\n", " 'b',\n", " 'é',\n", " ' ',\n", " 'n',\n", " 'e',\n", " 'm',\n", " ' ',\n", " 'h',\n", " 'ű',\n", " 's',\n", " 'é',\n", " 'g',\n", " 'e',\n", " 's',\n", " ' ',\n", " 'r',\n", " 'a',\n", " 'b',\n", " 'o',\n", " 'm',\n", " ',',\n", " ' ',\n", " 'm',\n", " 'i',\n", " 'n',\n", " 't',\n", " ' ',\n", " 'a',\n", " ' ',\n", " 'h',\n", " 'o',\n", " 'g',\n", " 'y',\n", " ' ',\n", " 'm',\n", " 'o',\n", " 'n',\n", " 'd',\n", " 'a',\n", " 'n',\n", " 'i',\n", " ' ',\n", " 's',\n", " 'z',\n", " 'o',\n", " 'k',\n", " 't',\n", " 'a',\n", " '.',\n", " ' ',\n", " 'o',\n", " ',',\n", " ' ',\n", " 'd',\n", " 'e',\n", " ' ',\n", " 'a',\n", " 'z',\n", " 'é',\n", " 'r',\n", " 't',\n", " ' ',\n", " 's',\n", " 't',\n", " 'e',\n", " 'n',\n", " ' ',\n", " 'h',\n", " 'o',\n", " 'z',\n", " 't',\n", " 'a',\n", " ',',\n", " ' ',\n", " 's',\n", " 't',\n", " 'e',\n", " 'n',\n", " ' ',\n", " 'h',\n", " 'o',\n", " 'z',\n", " 't',\n", " 'a',\n", " '.',\n", " ' ',\n", " 'á',\n", " 't',\n", " 'o',\n", " 'm',\n", " ',',\n", " ' ',\n", " 'h',\n", " 'o',\n", " 'g',\n", " 'y',\n", " ' ',\n", " 's',\n", " 'z',\n", " 'i',\n", " 'n',\n", " 't',\n", " 'e',\n", " ' ',\n", " 'm',\n", " 'e',\n", " 'g',\n", " 'i',\n", " 'j',\n", " 'e',\n", " 'd',\n", " 't',\n", " ' ',\n", " 't',\n", " 'ő',\n", " 'l',\n", " 'e',\n", " 'm',\n", " ',',\n", " ' ',\n", " 'f',\n", " 'o',\n", " 'g',\n", " 'l',\n", " 'a',\n", " 'l',\n", " 'j',\n", " 'o',\n", " 'n',\n", " ...]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "szoveg" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# ROSSZ megoldás:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "ename": "KeyboardInterrupt", "evalue": "", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n", "\u001b[1;31mKeyboardInterrupt\u001b[0m: " ] } ], "source": [ "%%time\n", "with open(\"szoveg.txt\") as ff:\n", " ## formázás\n", " szoveg = ff.read()\n", " szoveg= [ c.lower() for c in szoveg if c in hun_alph ]\n", " \n", " #összes betűpár legenerálása \n", " parlista=[]\n", " for i in range(len(hun_alph)):\n", " for j in range(i,len(hun_alph)):\n", " par=\"\"\n", " par=par+hun_alph[i]\n", " par=par+hun_alph[j]\n", " parlista.append(par)\n", " \n", " ## minden párra megszámoljuk, hogy hányszor szerepel\n", " darabszamok=[]\n", " for i in range(len(parlista)):\n", " darab=0\n", " for j in range(len(szoveg)-1):\n", " szovegresz=szoveg[j:j+2]\n", " if szovegresz==parlista[i]:\n", " darab+=1\n", " darabszamok.append(darab)\n", " print(darabszamok[:20]) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A rossz megoldással: Wall time: 4min 15s. A jó megoldással: Wall time: 1.11 s" ] }, { "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": 20, "metadata": {}, "outputs": [], "source": [ "titkos_szoveg5='fvkjhcöáddtnjíűjwűfdfsfydtnjaqnnvqűűihlöjwűqö!jéidjöf xőcöjyűjqjéfűíh.jéydfjqjpívídfjídceö,jhággfhjhúxúeöjéqőx,jéyehjélűh,jq jfnfőíe.jplnhjfvkű fdjfvkjvlelű jéqeó.jvlelű einjyűjvlelű qggjplnh;jéqvqjq jádxáv.jfvkjeqsjpfű fhhjőóöfxpfjhiéqxh,jéfdhjlnkqejhcödáhjűyöfdcnhjwűyű lneyq,jqéfnkjfníjaqjű ísfhjíűjőóhjhqdhlhhqö,jűfééypíjpinhjqjnqsőie,jqjaqű lehqnqejíűjdrhjxlnvlöqhjsfxyvjfdtűfejofneqvkühpqjíűjöyxlégldühpqjpfdhfjpyűű q.jqjnfvű fggj ánxfnntjhiőqöqhjothhjűsfeóheqöjéúhqhhq,jqjnfvőlggjfégfdföfhjofdhfnéfűjqdwrqöeqöjigdi lnhq,jpqvkjrvk,jéyehaqjhóhivqűhjinneieqö;jq jqdwlöjrvkjfnhld únhqö,jalvkjűfeöyjdiőúöjeféjyűéfdafhfhh;jqöyeföjfvkjű fsntwűöfjqdqeknlhhjq jqdwie,jq jgy leklűqejdqvkiűjöísmeföjnihhqjéqvihjqjhcöádgfe.j-júvkqejhdíoiűjalnéy!j-jxád űánhfjqjöf íhjq jádxáv.jaqjyűhfefű,jőiégldjvlexlnqhlögqjéfdcnhjfégfdjhföyehfhhjqjhcöádgf,jpyvkldvó,jhld jsloieqöjéúhqhhqjqjhcöádj-jádcnafhfhhjqjvlelű jádxáv!jgmpíű yeqűqyj-jéfdhjgmpíű yűölniőqjyűjplnhjq jádxávefö!j-jwűlxihjfénfvfhhfö,jq hjélexhiö,jpívdfjaüpfejéfvnihaqhőqjéyexfeöy,jéynkfeföjq jfégfdfö.jfnpyhhíöjqjhcödáhjqjpynivjéyexfejhiőidq,jűjpívcnjéidjeféjplnhjldű iv,jeféjplnhjfégfd,jqöyeföjhld öísíhjpyűű qjefjpfdhfjplneqjqjvlelű jhcöád.jqööldjq jívgfjqöqdhqöjofndfscneyjqjhcöáddfn.jaqeféjfvkű fdjwűqöjöywűrű lhhjqjöf cögtn,jűjnf úaqehjqjoánxdf,jqalnjéynnyójéfvjgynnyójwűfdísdfjhádáhhjű íh.jfggtnjsfxyvjéívjq jfxxyvyeínjyűjeqvklggjgqőjöfdföfxfhh.jéfdhjqjhcöádjeíéfnkyöjxqdqgőqjqnyvjplnhjeqvklggjfvkjalélöű féwűíeín;jf föjqjsqdiekyjű ynieölöjű íhdfscnhföjq jfvíű jpynivle,jűjqöyeföjynkfejöyűjű ynieöjqjű féígfjöfdcnh,jq jéyexfeeföjqjoleiöőihjnihhq,jéfdhjqjhcöádjéyexfejwűfssjxqdqgőieqöjúvkqelnkqejvlelű jfdfőfjplnh,jéyehjq jfvíű jhcöádefö.jéiűlöeqöjqjű üpígfjordóxlhhjfvkjöyűjhcöádwűfdís,jűjq jplnhjqjnfvdfhhfefhfűfgg,jéfdhjqjű üpjőívvíjoqvklhhjhtnf.jplnhqöjqööldqjhcöádxqdqglöjyű,jalvkjqgnqödiéigqjynnfű hafhhíö,jxfjfggtnjq jqgnqögónjeféjplnhjhqeiwűlűjq jqddqjaqnqxójgqdihlöqhjeí ey;jeíéfnkyöjxqdqggónjű fécpfvfhjöíű ühfhhfö,jűjúvkqewűqöjefaí jplnhjq jynkfejű fécpfvfejöfdfű hcnjafnkfűfejíűjyvq űivlűqejühíneyjéfvjqjxlnvlöqh.jq jádxávjrvkjefpfhfhh,jalvkjqjaqűqjdfevfhhjgfní,jwűyönqexl hqjqjslésiűjáhnfh.jqjnfpfvtgfejéívjű innyevó hqöjqjű íhhádhjhcöádjsldű féekyjű ynieöőqy.jel,jéqőxjéyexőidhjhággfhjaqnnúeöjdónq.j'" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "abc5={}" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "# A titkos_szoveg5-ben a karakterek gyakorisága\n", "N_t=len(titkos_szoveg5)\n", "karakter_gyak5={}\n", "for karakter in titkos_szoveg5:\n", " if karakter in karakter_gyak5.keys():\n", " karakter_gyak5[karakter]+=1\n", " else:\n", " karakter_gyak5[karakter]=1\n", " \n", "karakter_gyak5_lista=[]\n", "for karakter in karakter_gyak5.keys():\n", " karakter_gyak5_lista.append((karakter,karakter_gyak5[karakter]/N_t))\n", "karakter_gyak5_lista=sorted(karakter_gyak5_lista, key=lambda x: (-x[1],x[0]))\n" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "((' ', 0.1508), ('j', 0.15225066195939982))\n", "(('e', 0.0868), ('f', 0.07987643424536628))\n", "(('a', 0.073), ('q', 0.07546337157987644))\n", "(('t', 0.0711), ('h', 0.07281553398058252))\n", "(('l', 0.0516), ('n', 0.04589585172109444))\n", "(('n', 0.0495), ('e', 0.045454545454545456))\n", "(('s', 0.0465), ('ö', 0.04457193292144748))\n", "(('o', 0.0399), ('ű', 0.0441306266548985))\n", "(('z', 0.0367), ('d', 0.04280670785525154))\n", "(('k', 0.0349), ('l', 0.03618711385701677))\n", "(('r', 0.0327), (' ', 0.03309796999117388))\n", "(('g', 0.0304), ('v', 0.03265666372462489))\n", "(('i', 0.0299), ('y', 0.030450132391879964))\n", "(('m', 0.0286), ('é', 0.02824360105913504))\n", "(('é', 0.0247), ('g', 0.022506619593998235))\n", "(('á', 0.0234), ('í', 0.02118270079435128))\n", "((',', 0.0194), ('i', 0.020741394527802295))\n", "(('y', 0.0179), ('p', 0.017210944395410415))\n", "(('d', 0.0174), ('x', 0.01676963812886143))\n", "(('v', 0.0174), ('k', 0.016328331862312445))\n", "(('h', 0.0145), (',', 0.015445719329214475))\n", "(('b', 0.0139), ('á', 0.015445719329214475))\n", "(('.', 0.01), ('c', 0.011915269196822596))\n", "(('j', 0.0096), ('a', 0.010150044130626656))\n", "(('ö', 0.0088), ('ő', 0.009708737864077669))\n", "(('c', 0.0076), ('s', 0.009267431597528684))\n", "(('-', 0.007), ('.', 0.00794351279788173))\n", "(('f', 0.007), ('w', 0.007502206531332745))\n", "(('u', 0.0068), ('ó', 0.00617828773168579))\n", "(('ő', 0.0066), ('t', 0.0048543689320388345))\n", "(('p', 0.0064), ('ú', 0.0048543689320388345))\n", "(('ó', 0.0061), ('o', 0.00441306266548985))\n", "(('ü', 0.0045), ('r', 0.003089143865842895))\n", "(('í', 0.0026), ('ü', 0.003089143865842895))\n", "(('ú', 0.0023), ('-', 0.002206531332744925))\n", "(('!', 0.001), (';', 0.002206531332744925))\n", "(('?', 0.001), ('!', 0.00176522506619594))\n", "(('ű', 0.0008), ('m', 0.001323918799646955))\n" ] } ], "source": [ "print(*list(zip(megoldas4betu,karakter_gyak5_lista)), sep=\"\\n\")" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "# A titkos_szoveg5-ben a karakterpárok gyakorisága\n", "N_t2=0 #betűpárok száma lesz\n", "betupar_gyak5={}\n", "for i in range(0,N_t-1):\n", " N_t2+=1\n", " betupar=titkos_szoveg5[i]+titkos_szoveg5[i+1]\n", " if betupar in betupar_gyak5.keys():\n", " betupar_gyak5[betupar]+=1\n", " else:\n", " betupar_gyak5[betupar]=1\n", "\n", "betupar_gyak5_lista=[]\n", "for betupar in betupar_gyak5.keys():\n", " betupar_gyak5_lista.append((betupar,betupar_gyak5[betupar]/N_t2))\n", "betupar_gyak5_lista=sorted(betupar_gyak5_lista, key=lambda x: (-x[1],x[0]))\n", "\n" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "((' a', 0.0233), ('jq', 0.02869757174392936))\n", "(('a ', 0.0209), ('hj', 0.02207505518763797))\n", "((', ', 0.0194), ('qj', 0.02163355408388521))\n", "(('t ', 0.0175), ('ű ', 0.017218543046357615))\n", "((' m', 0.015), (',j', 0.01545253863134658))\n", "(('sz', 0.0142), ('jé', 0.01545253863134658))\n", "(('el', 0.0126), ('öj', 0.013245033112582781))\n", "((' e', 0.0116), ('jh', 0.012803532008830023))\n", "(('tt', 0.0107), (' j', 0.011479028697571744))\n", "(('s ', 0.0106), ('fd', 0.011037527593818985))\n", "(('n ', 0.0104), ('jp', 0.011037527593818985))\n", "(('gy', 0.0101), ('hh', 0.010596026490066225))\n", "(('en', 0.01), ('jf', 0.010596026490066225))\n", "((' s', 0.0099), ('qö', 0.010596026490066225))\n", "(('eg', 0.0098), ('vk', 0.010596026490066225))\n", "((' h', 0.0097), ('jű', 0.010154525386313467))\n", "(('te', 0.0089), ('ln', 0.009713024282560706))\n", "(('et', 0.0087), ('fh', 0.009271523178807948))\n", "((' k', 0.0086), ('ád', 0.009271523178807948))\n", "(('k ', 0.0085), ('űj', 0.009271523178807948))\n", "(('e ', 0.0075), ('fv', 0.008830022075055188))\n", "(('me', 0.0074), ('nh', 0.008830022075055188))\n", "(('ta', 0.0073), ('q ', 0.008830022075055188))\n", "(('le', 0.0073), ('.j', 0.007947019867549669))\n", "(('er', 0.0071), ('ef', 0.007947019867549669))\n", "((' v', 0.0071), ('fe', 0.007947019867549669))\n", "(('an', 0.0071), ('cö', 0.00706401766004415))\n", "(('z ', 0.0066), ('df', 0.00706401766004415))\n", "(('ze', 0.0065), ('fé', 0.00706401766004415))\n", "(('al', 0.0065), ('fö', 0.00706401766004415))\n", "(('ol', 0.0064), ('hf', 0.00706401766004415))\n", "(('és', 0.0063), ('hq', 0.00706401766004415))\n", "((' é', 0.0062), ('ej', 0.006622516556291391))\n", "(('y ', 0.0062), ('fj', 0.006622516556291391))\n", "((' n', 0.0061), ('hc', 0.006622516556291391))\n", "(('az', 0.0061), ('ja', 0.006622516556291391))\n", "(('l ', 0.0061), ('ye', 0.006622516556291391))\n", "(('re', 0.006), ('éf', 0.006622516556291391))\n", "(('em', 0.0059), ('fn', 0.006181015452538631))\n", "(('lt', 0.0058), ('je', 0.006181015452538631))\n", "(('. ', 0.0058), ('qe', 0.006181015452538631))\n", "(('- ', 0.0058), ('wű', 0.006181015452538631))\n", "(('ek', 0.0056), ('gf', 0.005739514348785872))\n", "((' t', 0.0054), ('kj', 0.005739514348785872))\n", "(('ot', 0.0053), ('qd', 0.005739514348785872))\n", "((' f', 0.0053), ('yű', 0.005739514348785872))\n", "(('ne', 0.0053), ('éy', 0.005739514348785872))\n", "(('ak', 0.0053), ('dh', 0.005298013245033113))\n", "((' i', 0.0052), ('eq', 0.005298013245033113))\n", "(('at', 0.0051), ('jö', 0.005298013245033113))\n", "(('mi', 0.0051), ('le', 0.005298013245033113))\n", "(('on', 0.0049), ('pl', 0.005298013245033113))\n", "(('es', 0.0048), ('öá', 0.005298013245033113))\n", "(('in', 0.0048), (' f', 0.004856512141280353))\n", "(('ke', 0.0046), ('aq', 0.004856512141280353))\n", "(('zt', 0.0046), ('dj', 0.004856512141280353))\n", "(('og', 0.0046), ('gg', 0.004856512141280353))\n", "(('va', 0.0046), ('jy', 0.004856512141280353))\n", "(('na', 0.0046), ('nj', 0.004856512141280353))\n", "(('ho', 0.0046), ('vl', 0.004856512141280353))\n", "(('be', 0.0044), ('yn', 0.004856512141280353))\n", "(('nd', 0.0044), ('öf', 0.004856512141280353))\n", "((' l', 0.0043), ('ld', 0.004415011037527594))\n", "(('ez', 0.0042), ('lö', 0.004415011037527594))\n", "(('nt', 0.0042), ('lű', 0.004415011037527594))\n", "(('is', 0.0042), ('nf', 0.004415011037527594))\n", "(('t,', 0.0041), ('íű', 0.004415011037527594))\n", "((' o', 0.004), ('öy', 0.004415011037527594))\n", "(('to', 0.004), ('dq', 0.003973509933774834))\n", "(('i ', 0.004), ('ie', 0.003973509933774834))\n", "(('cs', 0.0039), ('ni', 0.003973509933774834))\n", "(('ha', 0.0039), ('nk', 0.003973509933774834))\n", "(('g ', 0.0039), ('pf', 0.003973509933774834))\n", "(('la', 0.0038), ('vj', 0.003973509933774834))\n", "(('ra', 0.0038), ('űf', 0.003973509933774834))\n", "((' -', 0.0038), ('cn', 0.003532008830022075))\n", "(('ki', 0.0038), ('el', 0.003532008830022075))\n", "(('ly', 0.0037), ('ex', 0.003532008830022075))\n", "(('ny', 0.0036), ('eö', 0.003532008830022075))\n", "(('ve', 0.0036), ('fű', 0.003532008830022075))\n", "(('se', 0.0036), ('ih', 0.003532008830022075))\n", "(('ar', 0.0036), ('jn', 0.003532008830022075))\n", "(('án', 0.0034), ('jo', 0.003532008830022075))\n", "(('or', 0.0034), ('jw', 0.003532008830022075))\n", "(('os', 0.0034), ('nn', 0.003532008830022075))\n", "(('m ', 0.0034), ('nq', 0.003532008830022075))\n", "(('ll', 0.0034), ('qh', 0.003532008830022075))\n", "(('ár', 0.0033), ('qv', 0.003532008830022075))\n", "(('de', 0.0033), ('hl', 0.0030905077262693157))\n", "((' b', 0.0032), ('jg', 0.0030905077262693157))\n", "(('ér', 0.0032), ('jv', 0.0030905077262693157))\n", "(('ag', 0.0032), ('jx', 0.0030905077262693157))\n", "(('ko', 0.0032), ('já', 0.0030905077262693157))\n", "(('cz', 0.0031), ('jí', 0.0030905077262693157))\n", "(('át', 0.0031), ('pí', 0.0030905077262693157))\n", "(('rt', 0.003), ('qg', 0.0030905077262693157))\n", "(('zo', 0.003), ('xf', 0.0030905077262693157))\n", "(('he', 0.003), ('ív', 0.0030905077262693157))\n", "(('ég', 0.003), ('ö,', 0.0030905077262693157))\n", "(('ál', 0.0029), ('űq', 0.0030905077262693157))\n", "(('sa', 0.0029), ('al', 0.0026490066225165563))\n", "(('ba', 0.0029), ('dx', 0.0026490066225165563))\n", "(('ye', 0.0028), ('eh', 0.0026490066225165563))\n", "(('tá', 0.0027), ('js', 0.0026490066225165563))\n", "(('ás', 0.0027), ('ne', 0.0026490066225165563))\n", "(('ok', 0.0027), ('py', 0.0026490066225165563))\n", "(('ka', 0.0027), ('tn', 0.0026490066225165563))\n", "(('ni', 0.0026), ('xl', 0.0026490066225165563))\n", "(('vo', 0.0026), ('xá', 0.0026490066225165563))\n", "(('mo', 0.0025), ('yj', 0.0026490066225165563))\n", "(('ül', 0.0025), ('yv', 0.0026490066225165563))\n", "(('do', 0.0025), ('ég', 0.0026490066225165563))\n", "((' r', 0.0024), ('éq', 0.0026490066225165563))\n", "(('ma', 0.0024), ('íh', 0.0026490066225165563))\n", "(('lo', 0.0024), ('ői', 0.0026490066225165563))\n", "(('r ', 0.0023), (' h', 0.002207505518763797))\n", "(('a,', 0.0023), (' l', 0.002207505518763797))\n", "(('él', 0.0023), (' y', 0.002207505518763797))\n", "(('t.', 0.0023), (' í', 0.002207505518763797))\n", "(('ik', 0.0022), ('-j', 0.002207505518763797))\n", "(('én', 0.0022), (';j', 0.002207505518763797))\n", "(('ov', 0.0022), ('dc', 0.002207505518763797))\n", "(('ed', 0.0022), ('di', 0.002207505518763797))\n", "(('zé', 0.0022), ('eí', 0.002207505518763797))\n", "(('k,', 0.0022), ('f ', 0.002207505518763797))\n", "(('ge', 0.0022), ('fs', 0.002207505518763797))\n", "((' c', 0.0022), ('fx', 0.002207505518763797))\n", "(('oz', 0.0021), ('gj', 0.002207505518763797))\n", "((' g', 0.0021), ('h,', 0.002207505518763797))\n", "(('ad', 0.0021), ('h.', 0.002207505518763797))\n", "(('zá', 0.0021), ('hi', 0.002207505518763797))\n", "(('rc', 0.0021), ('iv', 0.002207505518763797))\n", "(('nn', 0.0021), ('j-', 0.002207505518763797))\n", "(('as', 0.002), ('jd', 0.002207505518763797))\n", "(('kö', 0.002), ('kl', 0.002207505518763797))\n", "(('lá', 0.002), ('kq', 0.002207505518763797))\n", "(('sé', 0.002), ('lh', 0.002207505518763797))\n", "(('ól', 0.002), ('q,', 0.002207505518763797))\n", "(('ss', 0.0019), ('qn', 0.002207505518763797))\n", "(('za', 0.0019), ('qű', 0.002207505518763797))\n", "(('it', 0.0019), ('sf', 0.002207505518763797))\n", "(('bb', 0.0019), ('áv', 0.002207505518763797))\n", "(('fe', 0.0019), ('éj', 0.002207505518763797))\n", "(('st', 0.0019), ('ís', 0.002207505518763797))\n", "(('ga', 0.0019), ('öq', 0.002207505518763797))\n", "((' p', 0.0019), ('őq', 0.002207505518763797))\n", "(('.-', 0.0018), ('!j', 0.0017660044150110375))\n", "(('vá', 0.0018), ('af', 0.0017660044150110375))\n", "(('té', 0.0018), ('d ', 0.0017660044150110375))\n", "(('go', 0.0018), ('dw', 0.0017660044150110375))\n", "(('n,', 0.0018), ('ei', 0.0017660044150110375))\n", "(('ké', 0.0018), ('ek', 0.0017660044150110375))\n", "(('áb', 0.0017), ('ey', 0.0017660044150110375))\n", "(('ét', 0.0017), ('fg', 0.0017660044150110375))\n", "(('sá', 0.0017), ('gq', 0.0017660044150110375))\n", "((' á', 0.0017), ('há', 0.0017660044150110375))\n", "(('il', 0.0017), ('id', 0.0017660044150110375))\n", "((' d', 0.0016), ('in', 0.0017660044150110375))\n", "(('ág', 0.0016), ('iő', 0.0017660044150110375))\n", "(('so', 0.0016), ('iű', 0.0017660044150110375))\n", "((' u', 0.0016), ('jő', 0.0017660044150110375))\n", "(('e,', 0.0016), ('kf', 0.0017660044150110375))\n", "(('je', 0.0016), ('ky', 0.0017660044150110375))\n", "(('né', 0.0016), ('ny', 0.0017660044150110375))\n", "(('lk', 0.0016), ('vf', 0.0017660044150110375))\n", "(('rá', 0.0016), ('vq', 0.0017660044150110375))\n", "(('lé', 0.0016), ('ví', 0.0017660044150110375))\n", "(('aj', 0.0016), ('xq', 0.0017660044150110375))\n", "(('ő ', 0.0015), ('yö', 0.0017660044150110375))\n", "(('om', 0.0015), ('áh', 0.0017660044150110375))\n", "(('fo', 0.0015), ('éi', 0.0017660044150110375))\n", "(('má', 0.0015), ('öl', 0.0017660044150110375))\n", "(('ya', 0.0015), ('üh', 0.0017660044150110375))\n", "((' ö', 0.0015), (' q', 0.0013245033112582781))\n", "((' j', 0.0015), (' ü', 0.0013245033112582781))\n", "(('mé', 0.0015), ('dd', 0.0013245033112582781))\n", "(('am', 0.0015), ('dt', 0.0013245033112582781))\n", "(('dt', 0.0015), ('dá', 0.0013245033112582781))\n", "(('od', 0.0015), ('dí', 0.0013245033112582781))\n", "(('ro', 0.0014), ('e,', 0.0013245033112582781))\n", "(('ap', 0.0014), ('gl', 0.0013245033112582781))\n", "(('ön', 0.0014), ('gt', 0.0013245033112582781))\n", "(('..', 0.0014), ('ha', 0.0013245033112582781))\n", "(('ig', 0.0014), ('hí', 0.0013245033112582781))\n", "(('öl', 0.0014), ('ié', 0.0013245033112582781))\n", "(('l,', 0.0014), ('jr', 0.0013245033112582781))\n", "(('yo', 0.0014), ('jú', 0.0013245033112582781))\n", "(('ja', 0.0014), ('lg', 0.0013245033112582781))\n", "(('zi', 0.0013), ('lv', 0.0013245033112582781))\n", "(('gé', 0.0013), ('lé', 0.0013245033112582781))\n", "(('ul', 0.0013), ('nv', 0.0013245033112582781))\n", "(('da', 0.0013), ('of', 0.0013245033112582781))\n", "((' z', 0.0013), ('pq', 0.0013245033112582781))\n", "(('gá', 0.0013), ('qő', 0.0013245033112582781))\n", "(('lő', 0.0013), ('rv', 0.0013245033112582781))\n", "(('rr', 0.0013), ('sl', 0.0013245033112582781))\n", "(('ó ', 0.0013), ('xy', 0.0013245033112582781))\n", "(('ör', 0.0013), ('án', 0.0013245033112582781))\n", "(('ln', 0.0013), ('él', 0.0013245033112582781))\n", "(('já', 0.0013), ('éí', 0.0013245033112582781))\n", "(('ut', 0.0013), ('íj', 0.0013245033112582781))\n", "(('ti', 0.0012), ('ín', 0.0013245033112582781))\n", "(('ék', 0.0012), ('óh', 0.0013245033112582781))\n", "(('vé', 0.0012), ('ój', 0.0013245033112582781))\n", "(('pa', 0.0012), ('ón', 0.0013245033112582781))\n", "(('nk', 0.0012), ('öd', 0.0013245033112582781))\n", "(('ől', 0.0012), ('ög', 0.0013245033112582781))\n", "(('öz', 0.0012), ('öí', 0.0013245033112582781))\n", "(('ej', 0.0012), ('úv', 0.0013245033112582781))\n", "(('vi', 0.0011), ('üp', 0.0013245033112582781))\n", "(('d ', 0.0011), ('űh', 0.0013245033112582781))\n", "(('nc', 0.0011), ('űl', 0.0013245033112582781))\n", "(('a.', 0.0011), ('űy', 0.0013245033112582781))\n", "(('pe', 0.0011), ('űű', 0.0013245033112582781))\n", "(('ít', 0.0011), (' e', 0.0008830022075055188))\n", "(('há', 0.0011), (' i', 0.0008830022075055188))\n", "(('zó', 0.0011), (' ú', 0.0008830022075055188))\n", "(('j ', 0.0011), (' ű', 0.0008830022075055188))\n", "((' ő', 0.0011), ('cp', 0.0008830022075055188))\n", "(('őt', 0.0011), ('dg', 0.0008830022075055188))\n", "(('ró', 0.0011), ('dó', 0.0008830022075055188))\n", "(('ép', 0.0011), ('dű', 0.0008830022075055188))\n", "(('ie', 0.0011), ('e.', 0.0008830022075055188))\n", "(('rd', 0.001), ('ev', 0.0008830022075055188))\n", "(('lm', 0.001), ('eó', 0.0008830022075055188))\n", "(('ng', 0.001), ('f,', 0.0008830022075055188))\n", "(('öt', 0.001), ('fp', 0.0008830022075055188))\n", "(('ák', 0.001), ('fő', 0.0008830022075055188))\n", "(('si', 0.001), ('gm', 0.0008830022075055188))\n" ] } ], "source": [ "print(*list(zip(megoldas4betupar,betupar_gyak5_lista)), sep=\"\\n\")" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[('ok', 6), ('alma', 2), ('ko', 2)]" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def leggyakoribbszo(szoveg,elvalaszto=' '):\n", " lista=szoveg.split(elvalaszto)\n", " lista2={}\n", " szodict={}\n", " for szo in lista:\n", " if szo in szodict.keys():\n", " szodict[szo]=szodict[szo]+1\n", " else:\n", " szodict[szo]=1\n", " sorted_szodict = sorted(szodict.items(), key=lambda kv: -kv[1])\n", " return sorted_szodict \n", "leggyakoribbszo(\"alma alma ko ko ok ok ok ok ok ok\")" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(('q', 30), ('a', 14066))\n", "(('q ', 18), ('az', 4519))\n", "(('plnh', 8), ('és', 4301))\n", "(('fvk', 6), ('-', 4131))\n", "(('íű', 5), ('hogy', 2834))\n", "(('éfdh', 5), ('s', 2247))\n", "(('-', 5), ('nem', 1763))\n", "(('ű', 5), ('is', 1345))\n", "(('yű', 4), ('egy', 1171))\n", "(('vlelű ', 4), ('de', 862))\n", "(('efé', 4), ('volt', 824))\n", "(('hcöád', 4), ('mint', 816))\n", "(('alvk', 3), ('csak', 785))\n", "(('qöyefö', 3), ('A', 784))\n", "(('éid', 2), ('ki', 757))\n", "(('hággfh', 2), ('meg', 740))\n", "(('éyeh', 2), ('még', 734))\n", "(('fvkű fd', 2), ('herczeg', 625))\n", "(('ádxáv.', 2), ('azt', 522))\n", "(('hcödáh', 2), ('ő', 475))\n", "(('aq', 2), ('már', 474))\n", "(('sfxyv', 2), ('se', 464))\n", "(('pfdhf', 2), ('ez', 449))\n", "(('rvk', 2), ('mi', 437))\n", "(('éyexfe', 2), ('Andrej', 413))\n", "(('éfv', 2), ('mikor', 404))\n", "(('fggtn', 2), ('mondotta', 403))\n", "(('éív', 2), ('én', 396))\n", "(('eqvklgg', 2), ('el', 393))\n", "(('eíéfnkyö', 2), ('úgy', 388))\n", "(('fvíű ', 2), ('Az', 379))\n", "(('ynkfe', 2), ('mely', 377))\n", "(('öyű', 2), ('De', 371))\n", "(('hcöáddtn', 1), ('olyan', 362))\n", "(('wűfdfsfydtn', 1), ('volna', 355))\n", "(('aqnnvqűűihlö', 1), ('ha', 325))\n", "(('wűqö!', 1), ('ezt', 323))\n", "(('öf xőcö', 1), ('szólott', 318))\n", "(('éfűíh.', 1), ('mit', 318))\n", "(('éydf', 1), ('van', 311))\n", "(('pívídf', 1), ('vagy', 304))\n", "(('ídceö,', 1), ('ott', 302))\n", "(('húxúeö', 1), ('minden', 297))\n", "(('éqőx,', 1), ('Pierre', 294))\n", "(('élűh,', 1), ('mintha', 289))\n", "(('fnfőíe.', 1), ('most', 287))\n", "(('éqeó.', 1), ('pedig', 285))\n", "(('vlelű ein', 1), ('valami', 282))\n", "(('vlelű qgg', 1), ('őt', 280))\n", "(('plnh;', 1), ('Rosztov', 278))\n", "(('éqvq', 1), ('volt,', 273))\n", "(('eqs', 1), ('egész', 270))\n", "(('pfű fhh', 1), ('maga', 261))\n", "(('őóöfxpf', 1), ('nagyon', 255))\n", "(('hiéqxh,', 1), ('sem', 246))\n", "(('lnkqe', 1), ('is,', 230))\n", "(('űyöfdcnh', 1), ('hol', 226))\n", "(('wűyű lneyq,', 1), ('melyet', 223))\n", "(('qéfnk', 1), ('föl', 221))\n", "(('fní', 1), ('És', 220))\n", "(('ű ísfh', 1), ('való', 220))\n", "(('őóh', 1), ('nagy', 214))\n", "(('hqdhlhhqö,', 1), ('kis', 214))\n", "(('űfééypí', 1), ('két', 207))\n", "(('pinh', 1), ('neki', 201))\n", "(('nqsőie,', 1), ('majd', 200))\n", "(('aqű lehqnqe', 1), ('herczegnő', 198))\n", "(('drh', 1), ('mind', 191))\n", "(('xlnvlöqh', 1), ('volna,', 191))\n", "(('fdtűfe', 1), ('megint', 187))\n", "(('ofneqvkühpq', 1), ('Vaszilij', 185))\n", "(('öyxlégldühpq', 1), ('így', 185))\n", "(('pyűű q.', 1), ('azért', 184))\n", "(('nfvű fgg', 1), ('felelt', 182))\n", "((' ánxfnnt', 1), ('mert', 182))\n", "(('hiőqöqh', 1), ('kik', 180))\n", "(('othh', 1), ('Én', 180))\n", "(('űsfeóheqö', 1), ('kérdezte', 180))\n", "(('éúhqhhq,', 1), ('kell', 179))\n", "(('nfvőlgg', 1), ('herczeg,', 172))\n", "(('fégfdföfh', 1), ('ember', 170))\n", "(('ofdhfnéfű', 1), ('hogy’', 169))\n", "(('qdwrqöeqö', 1), ('ön', 168))\n", "(('igdi lnhq,', 1), ('öreg', 165))\n", "(('pqvk', 1), ('után', 163))\n", "(('rvk,', 1), ('fiatal', 162))\n", "(('éyehaq', 1), ('itt', 158))\n", "(('hóhivqűh', 1), ('hát', 156))\n", "(('inneieqö;', 1), ('mindig', 153))\n", "(('qdwlö', 1), ('Anna', 152))\n", "(('fnhld únhqö,', 1), ('Ez', 151))\n", "(('űfeöy', 1), ('rá', 148))\n", "(('diőúö', 1), ('hanem', 146))\n", "(('yűéfdafhfhh;', 1), ('nézett', 146))\n", "(('ű fsntwűöf', 1), ('az,', 145))\n", "(('qdqeknlhh', 1), ('előtt', 144))\n", "(('qdwie,', 1), ('Marja', 144))\n", "(('gy leklűqe', 1), ('Nem', 142))\n", "(('dqvkiű', 1), ('szinte', 141))\n", "(('öísmefö', 1), ('ne', 140))\n", "(('nihhq', 1), ('gondolta', 138))\n", "(('éqvih', 1), ('Deniszov', 136))\n", "(('hcöádgfe.', 1), ('neki,', 135))\n", "(('úvkqe', 1), ('teljesen', 133))\n", "(('hdíoiű', 1), ('oda', 133))\n", "(('alnéy!', 1), ('gróf', 132))\n", "(('xád űánhf', 1), ('voltak', 131))\n", "(('öf íh', 1), ('kiáltott', 131))\n", "(('yűhfefű,', 1), ('hozzá', 126))\n", "(('őiégld', 1), ('franczia', 125))\n", "(('vlexlnqhlögq', 1), ('jó', 125))\n", "(('éfdcnh', 1), ('magát', 124))\n", "(('fégfd', 1), ('Mihajlovna', 119))\n", "(('hföyehfhh', 1), ('alatt', 117))\n", "(('hcöádgf,', 1), ('orosz', 117))\n", "(('pyvkldvó,', 1), ('Pavlovna', 116))\n", "(('hld ', 1), ('Kutuzov', 116))\n", "(('sloieqö', 1), ('te', 116))\n", "(('éúhqhhq', 1), ('akkor', 115))\n", "(('ádcnafhfhh', 1), ('egyszerre', 114))\n", "(('ádxáv!', 1), ('be', 113))\n", "(('gmpíű yeqűqy', 1), ('oly', 113))\n", "(('gmpíű yűölniőq', 1), ('egyik', 112))\n", "(('ádxávefö!', 1), ('nélkül,', 110))\n", "(('wűlxih', 1), ('meg,', 110))\n", "(('fénfvfhhfö,', 1), ('miközben', 110))\n", "(('q h', 1), ('lett', 108))\n", "(('élexhiö,', 1), ('arra', 105))\n", "(('pívdf', 1), ('Dolochov', 105))\n", "(('aüpfe', 1), ('szép', 104))\n", "(('éfvnihaqhőq', 1), ('jól', 104))\n", "(('éyexfeöy,', 1), ('éppen', 101))\n", "(('éynkfefö', 1), ('vele', 100))\n", "(('fégfdfö.', 1), ('ebben', 100))\n", "(('fnpyhhíö', 1), ('lesz', 99))\n", "(('pyniv', 1), ('közt', 98))\n", "(('hiőidq,', 1), ('annak', 98))\n", "(('pívcn', 1), ('milyen', 98))\n", "(('ldű iv,', 1), ('el,', 98))\n", "(('fégfd,', 1), ('tette', 97))\n", "(('hld öísíh', 1), ('ült', 97))\n", "(('pyűű q', 1), ('Ha', 95))\n", "(('ef', 1), ('első', 95))\n", "(('plneq', 1), ('ennek', 94))\n", "(('hcöád.', 1), ('melyben', 94))\n", "(('qööld', 1), ('egészen', 94))\n", "(('ívgf', 1), ('herczegné', 94))\n", "(('qöqdhqö', 1), ('emberek', 92))\n", "(('ofndfscney', 1), ('mellett', 92))\n", "(('hcöáddfn.', 1), ('elkezdett', 92))\n", "(('aqefé', 1), ('együtt', 91))\n", "(('wűqö', 1), ('Csak', 91))\n", "(('öywűrű lhh', 1), ('van,', 91))\n", "(('öf cögtn,', 1), ('azzal', 90))\n", "(('nf úaqeh', 1), ('császár', 90))\n", "(('oánxdf,', 1), ('szólt', 90))\n", "(('qaln', 1), ('le', 90))\n", "(('éynnyó', 1), ('Isten', 88))\n", "(('gynnyó', 1), ('ilyen', 88))\n", "(('wűfdísdf', 1), ('volt.', 88))\n", "(('hádáhh', 1), ('Natasa', 88))\n", "(('ű íh.', 1), ('vajjon', 87))\n", "(('fxxyvyeín', 1), ('melyek', 87))\n", "(('gqő', 1), ('másik', 87))\n", "(('öfdföfxfhh.', 1), ('annyira', 87))\n", "(('xqdqgőq', 1), ('Bagration', 87))\n", "(('qnyv', 1), ('soha', 86))\n", "(('alélöű féwűíeín;', 1), ('Nikolaj', 86))\n", "(('f fö', 1), ('ment', 85))\n", "(('sqdieky', 1), ('fog', 84))\n", "(('ű ynieölö', 1), ('uralkodó', 84))\n", "(('ű íhdfscnhfö', 1), ('bár', 84))\n", "(('pynivle,', 1), ('ember,', 84))\n", "(('ű ynieö', 1), ('kit', 82))\n", "(('ű féígf', 1), ('magát,', 82))\n", "(('öfdcnh,', 1), ('nyilván', 81))\n", "(('éyexfeefö', 1), ('Borisz', 81))\n", "(('oleiöőih', 1), ('azt,', 80))\n", "(('nihhq,', 1), ('kedves', 80))\n", "(('wűfss', 1), ('kellett', 80))\n", "(('xqdqgőieqö', 1), ('nélkül', 80))\n", "(('úvkqelnkqe', 1), ('mondotta,', 79))\n", "(('fdfőf', 1), ('jobban', 79))\n", "(('plnh,', 1), ('nekem', 78))\n", "(('hcöádefö.', 1), ('szólalt', 77))\n", "(('éiűlöeqö', 1), ('hozzá,', 76))\n", "(('ű üpígf', 1), ('akart', 76))\n", "(('ordóxlhh', 1), ('pillanatban', 76))\n", "(('hcöádwűfdís,', 1), ('rá,', 75))\n", "(('nfvdfhhfefhfűfgg,', 1), ('abban', 75))\n", "(('ű üp', 1), ('vagyok', 74))\n", "(('őívví', 1), ('tovább', 74))\n", "(('oqvklhh', 1), ('nincs', 74))\n", "(('htnf.', 1), ('semmi', 73))\n", "(('plnhqö', 1), ('mégis', 72))\n", "(('qööldq', 1), ('Pierre,', 72))\n", "(('hcöádxqdqglö', 1), ('valamit', 72))\n", "(('yű,', 1), ('át', 72))\n", "(('qgnqödiéigq', 1), ('felé', 72))\n", "(('ynnfű hafhhíö,', 1), ('Azt', 71))\n", "(('xf', 1), ('őt,', 71))\n", "(('qgnqögón', 1), ('magában', 71))\n", "(('hqeiwűlű', 1), ('Nos,', 70))\n", "(('qddq', 1), ('Mi', 70))\n", "(('aqnqxó', 1), ('előtte', 70))\n", "(('gqdihlöqh', 1), ('tudta', 70))\n", "(('eí ey;', 1), ('úgy,', 70))\n", "(('xqdqggón', 1), ('katonák', 70))\n", "(('ű fécpfvfh', 1), ('Nem,', 69))\n", "(('öíű ühfhhfö,', 1), ('kinek', 69))\n", "(('úvkqewűqö', 1), ('teljes', 69))\n", "(('efaí ', 1), ('különösen', 68))\n", "(('ű fécpfvfe', 1), ('Egy', 68))\n", "(('öfdfű hcn', 1), ('legott', 67))\n", "(('afnkfűfe', 1), ('jött', 67))\n", "(('yvq űivlűqe', 1), ('új', 66))\n", "(('ühíney', 1), ('melyen', 66))\n", "(('xlnvlöqh.', 1), ('azért,', 66))\n", "(('ádxáv', 1), ('iránt', 66))\n", "(('efpfhfhh,', 1), ('mosolyogva', 66))\n", "(('aqűq', 1), ('akarta', 65))\n", "(('dfevfhh', 1), ('Még', 65))\n", "(('gfní,', 1), ('Ő', 65))\n", "(('wűyönqexl hq', 1), ('folytatta', 65))\n", "(('slésiű', 1), ('fehér', 65))\n", "(('áhnfh.', 1), ('tudott', 65))\n", "(('nfpfvtgfe', 1), ('francziák', 65))\n", "(('ű innyevó hqö', 1), ('sőt', 64))\n", "(('ű íhhádh', 1), ('uram,', 64))\n", "(('sldű féeky', 1), ('osztrák', 64))\n", "(('ű ynieöőqy.', 1), ('egyetlen', 63))\n", "(('el,', 1), ('Mikor', 63))\n", "(('éqőx', 1), ('körül', 63))\n", "(('éyexőidh', 1), ('álló', 63))\n", "(('aqnnúeö', 1), ('fordult', 63))\n", "(('dónq.', 1), ('Úgy', 63))\n", "(('', 1), ('közül', 63))\n" ] } ], "source": [ "with open(\"szoveg.txt\") as ff:\n", " szoveg = ff.read()\n", " print(*list(zip(leggyakoribbszo(titkos_szoveg5,'j'),leggyakoribbszo(szoveg))), sep=\"\\n\") " ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Evk Tcöáddtn íS wSEdEsEydtn aAnnvASSiTlö wSAö! éid öEZxőcö yS A éESíT. éydE A pívídE ídceö, TággET Túxúeö éAőx, éyeT élST, AZ EnEőíe. plnT EvkSZEd Evk vlelSZ éAeó. vlelSZein yS vlelSZAgg plnT; éAvA AZ ádxáv. Evk eAs pESZETT őóöExpE TiéAxT, éEdT lnkAe TcödáT SyöEdcnT wSySZlneyA, AéEnk Ení aA SZísET íS őóT TAdTlTTAö, SEééypí pinT A nAsőie, A aASZleTAnAe íS drT xlnvlöAT sExyv EdtSEe oEneAvküTpA íS öyxlégldüTpA pEdTE pySSZA. A nEvSZEgg ZánxEnnt TiőAöAT otTT SsEeóTeAö éúTATTA, A nEvőlgg EégEdEöET oEdTEnéES AdwrAöeAö igdiZlnTA, pAvk rvk, éyeTaA TóTivAST inneieAö; AZ Adwlö rvk EnTldZúnTAö, alvk SEeöy diőúö eEé ySéEdaETETT; AöyeEö Evk SZEsntwSöE AdAeknlTT AZ Adwie, AZ gyZleklSAe dAvkiS öísmeEö niTTA éAviT A TcöádgEe. - úvkAe TdíoiS alnéy! - xádZSánTE A öEZíT AZ ádxáv. aA ySTEeES, őiégld vlexlnATlögA éEdcnT EégEd TEöyeTETT A TcöádgE, pyvkldvó, TldZ sloieAö éúTATTA A Tcöád - ádcnaETETT A vlelSZ ádxáv! gmpíSZyeASAy - éEdT gmpíSZySölniőA yS plnT AZ ádxáveEö! - wSlxiT EénEvETTEö, AZT élexTiö, pívdE aüpEe éEvniTaATőA éyexEeöy, éynkEeEö AZ EégEdEö. EnpyTTíö A TcödáT A pyniv éyexEe TiőidA, S pívcn éid eEé plnT ldSZiv, eEé plnT EégEd, AöyeEö TldZöísíT pySSZA eE pEdTE plneA A vlelSZ Tcöád. Aööld AZ ívgE AöAdTAö oEndEscney A TcöáddEn. aAeEé EvkSZEd wSAö öywSrSZlTT A öEZcögtn, S nEZúaAeT A oánxdE, Aaln éynnyó éEv gynnyó wSEdísdE TádáTT SZíT. Eggtn sExyv éív AZ Exxyvyeín yS eAvklgg gAő öEdEöExETT. éEdT A Tcöád eíéEnkyö xAdAgőA Anyv plnT eAvklgg Evk alélöSZEéwSíeín; EZEö A sAdieky SZynieölö SZíTdEscnTEö AZ EvíSZ pynivle, S AöyeEö ynkEe öyS SZynieö A SZEéígE öEdcnT, AZ éyexEeeEö A oleiöőiT niTTA, éEdT A Tcöád éyexEe wSEss xAdAgőieAö úvkAelnkAe vlelSZ EdEőE plnT, éyeT AZ EvíSZ TcöádeEö. éiSlöeAö A SZüpígE ordóxlTT Evk öyS TcöádwSEdís, S AZ plnT A nEvdETTEeETESEgg, éEdT A SZüp őívví oAvklTT TtnE. plnTAö AööldA TcöádxAdAglö yS, alvk AgnAödiéigA ynnESZTaETTíö, xE Eggtn AZ AgnAögón eEé plnT TAeiwSlS AZ AddA aAnAxó gAdiTlöAT eíZey; eíéEnkyö xAdAggón SZEécpEvET öíSZüTETTEö, S úvkAewSAö eEaíZ plnT AZ ynkEe SZEécpEvEe öEdESZTcn aEnkESEe íS yvAZSivlSAe üTíney éEv A xlnvlöAT. AZ ádxáv rvk eEpETETT, alvk A aASA dEevETT gEní, wSyönAexlZTA A slésiS áTnET. A nEpEvtgEe éív SZinnyevóZTAö A SZíTTádT Tcöád sldSZEéeky SZynieöőAy. el, éAőx éyexőidT TággET aAnnúeö dónA. '" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "abc5={}\n", "abc5[' ']='j'\n", "abc5['a']='q'\n", "abc5['e']='f'\n", "abc5['z']=' '\n", "abc5['t']='h'\n", "abc5['s']='ű'\n", "\n", "dekodolnagy(titkos_szoveg5,abc5)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(('A', 30), ('a', 14066))\n", "(('AZ', 18), ('az', 4519))\n", "(('plnT', 8), ('és', 4301))\n", "(('Evk', 6), ('-', 4131))\n", "(('íS', 5), ('hogy', 2834))\n", "(('éEdT', 5), ('s', 2247))\n", "(('-', 5), ('nem', 1763))\n", "(('S', 5), ('is', 1345))\n", "(('yS', 4), ('egy', 1171))\n", "(('vlelSZ', 4), ('de', 862))\n", "(('eEé', 4), ('volt', 824))\n", "(('Tcöád', 4), ('mint', 816))\n", "(('alvk', 3), ('csak', 785))\n", "(('AöyeEö', 3), ('A', 784))\n", "(('éid', 2), ('ki', 757))\n", "(('TággET', 2), ('meg', 740))\n", "(('éyeT', 2), ('még', 734))\n", "(('EvkSZEd', 2), ('herczeg', 625))\n", "(('ádxáv.', 2), ('azt', 522))\n", "(('TcödáT', 2), ('ő', 475))\n", "(('aA', 2), ('már', 474))\n", "(('sExyv', 2), ('se', 464))\n", "(('pEdTE', 2), ('ez', 449))\n", "(('rvk', 2), ('mi', 437))\n", "(('éyexEe', 2), ('Andrej', 413))\n", "(('éEv', 2), ('mikor', 404))\n", "(('Eggtn', 2), ('mondotta', 403))\n", "(('éív', 2), ('én', 396))\n", "(('eAvklgg', 2), ('el', 393))\n", "(('eíéEnkyö', 2), ('úgy', 388))\n", "(('EvíSZ', 2), ('Az', 379))\n", "(('ynkEe', 2), ('mely', 377))\n", "(('öyS', 2), ('De', 371))\n", "(('Tcöáddtn', 1), ('olyan', 362))\n", "(('wSEdEsEydtn', 1), ('volna', 355))\n", "(('aAnnvASSiTlö', 1), ('ha', 325))\n", "(('wSAö!', 1), ('ezt', 323))\n", "(('öEZxőcö', 1), ('szólott', 318))\n", "(('éESíT.', 1), ('mit', 318))\n", "(('éydE', 1), ('van', 311))\n", "(('pívídE', 1), ('vagy', 304))\n", "(('ídceö,', 1), ('ott', 302))\n", "(('Túxúeö', 1), ('minden', 297))\n", "(('éAőx,', 1), ('Pierre', 294))\n", "(('élST,', 1), ('mintha', 289))\n", "(('EnEőíe.', 1), ('most', 287))\n", "(('éAeó.', 1), ('pedig', 285))\n", "(('vlelSZein', 1), ('valami', 282))\n", "(('vlelSZAgg', 1), ('őt', 280))\n", "(('plnT;', 1), ('Rosztov', 278))\n", "(('éAvA', 1), ('volt,', 273))\n", "(('eAs', 1), ('egész', 270))\n", "(('pESZETT', 1), ('maga', 261))\n", "(('őóöExpE', 1), ('nagyon', 255))\n", "(('TiéAxT,', 1), ('sem', 246))\n", "(('lnkAe', 1), ('is,', 230))\n", "(('SyöEdcnT', 1), ('hol', 226))\n", "(('wSySZlneyA,', 1), ('melyet', 223))\n", "(('AéEnk', 1), ('föl', 221))\n", "(('Ení', 1), ('És', 220))\n", "(('SZísET', 1), ('való', 220))\n", "(('őóT', 1), ('nagy', 214))\n", "(('TAdTlTTAö,', 1), ('kis', 214))\n", "(('SEééypí', 1), ('két', 207))\n", "(('pinT', 1), ('neki', 201))\n", "(('nAsőie,', 1), ('majd', 200))\n", "(('aASZleTAnAe', 1), ('herczegnő', 198))\n", "(('drT', 1), ('mind', 191))\n", "(('xlnvlöAT', 1), ('volna,', 191))\n", "(('EdtSEe', 1), ('megint', 187))\n", "(('oEneAvküTpA', 1), ('Vaszilij', 185))\n", "(('öyxlégldüTpA', 1), ('így', 185))\n", "(('pySSZA.', 1), ('azért', 184))\n", "(('nEvSZEgg', 1), ('felelt', 182))\n", "(('ZánxEnnt', 1), ('mert', 182))\n", "(('TiőAöAT', 1), ('kik', 180))\n", "(('otTT', 1), ('Én', 180))\n", "(('SsEeóTeAö', 1), ('kérdezte', 180))\n", "(('éúTATTA,', 1), ('kell', 179))\n", "(('nEvőlgg', 1), ('herczeg,', 172))\n", "(('EégEdEöET', 1), ('ember', 170))\n", "(('oEdTEnéES', 1), ('hogy’', 169))\n", "(('AdwrAöeAö', 1), ('ön', 168))\n", "(('igdiZlnTA,', 1), ('öreg', 165))\n", "(('pAvk', 1), ('után', 163))\n", "(('rvk,', 1), ('fiatal', 162))\n", "(('éyeTaA', 1), ('itt', 158))\n", "(('TóTivAST', 1), ('hát', 156))\n", "(('inneieAö;', 1), ('mindig', 153))\n", "(('Adwlö', 1), ('Anna', 152))\n", "(('EnTldZúnTAö,', 1), ('Ez', 151))\n", "(('SEeöy', 1), ('rá', 148))\n", "(('diőúö', 1), ('hanem', 146))\n", "(('ySéEdaETETT;', 1), ('nézett', 146))\n", "(('SZEsntwSöE', 1), ('az,', 145))\n", "(('AdAeknlTT', 1), ('előtt', 144))\n", "(('Adwie,', 1), ('Marja', 144))\n", "(('gyZleklSAe', 1), ('Nem', 142))\n", "(('dAvkiS', 1), ('szinte', 141))\n", "(('öísmeEö', 1), ('ne', 140))\n", "(('niTTA', 1), ('gondolta', 138))\n", "(('éAviT', 1), ('Deniszov', 136))\n", "(('TcöádgEe.', 1), ('neki,', 135))\n", "(('úvkAe', 1), ('teljesen', 133))\n", "(('TdíoiS', 1), ('oda', 133))\n", "(('alnéy!', 1), ('gróf', 132))\n", "(('xádZSánTE', 1), ('voltak', 131))\n", "(('öEZíT', 1), ('kiáltott', 131))\n", "(('ySTEeES,', 1), ('hozzá', 126))\n", "(('őiégld', 1), ('franczia', 125))\n", "(('vlexlnATlögA', 1), ('jó', 125))\n", "(('éEdcnT', 1), ('magát', 124))\n", "(('EégEd', 1), ('Mihajlovna', 119))\n", "(('TEöyeTETT', 1), ('alatt', 117))\n", "(('TcöádgE,', 1), ('orosz', 117))\n", "(('pyvkldvó,', 1), ('Pavlovna', 116))\n", "(('TldZ', 1), ('Kutuzov', 116))\n", "(('sloieAö', 1), ('te', 116))\n", "(('éúTATTA', 1), ('akkor', 115))\n", "(('ádcnaETETT', 1), ('egyszerre', 114))\n", "(('ádxáv!', 1), ('be', 113))\n", "(('gmpíSZyeASAy', 1), ('oly', 113))\n", "(('gmpíSZySölniőA', 1), ('egyik', 112))\n", "(('ádxáveEö!', 1), ('nélkül,', 110))\n", "(('wSlxiT', 1), ('meg,', 110))\n", "(('EénEvETTEö,', 1), ('miközben', 110))\n", "(('AZT', 1), ('lett', 108))\n", "(('élexTiö,', 1), ('arra', 105))\n", "(('pívdE', 1), ('Dolochov', 105))\n", "(('aüpEe', 1), ('szép', 104))\n", "(('éEvniTaATőA', 1), ('jól', 104))\n", "(('éyexEeöy,', 1), ('éppen', 101))\n", "(('éynkEeEö', 1), ('vele', 100))\n", "(('EégEdEö.', 1), ('ebben', 100))\n", "(('EnpyTTíö', 1), ('lesz', 99))\n", "(('pyniv', 1), ('közt', 98))\n", "(('TiőidA,', 1), ('annak', 98))\n", "(('pívcn', 1), ('milyen', 98))\n", "(('ldSZiv,', 1), ('el,', 98))\n", "(('EégEd,', 1), ('tette', 97))\n", "(('TldZöísíT', 1), ('ült', 97))\n", "(('pySSZA', 1), ('Ha', 95))\n", "(('eE', 1), ('első', 95))\n", "(('plneA', 1), ('ennek', 94))\n", "(('Tcöád.', 1), ('melyben', 94))\n", "(('Aööld', 1), ('egészen', 94))\n", "(('ívgE', 1), ('herczegné', 94))\n", "(('AöAdTAö', 1), ('emberek', 92))\n", "(('oEndEscney', 1), ('mellett', 92))\n", "(('TcöáddEn.', 1), ('elkezdett', 92))\n", "(('aAeEé', 1), ('együtt', 91))\n", "(('wSAö', 1), ('Csak', 91))\n", "(('öywSrSZlTT', 1), ('van,', 91))\n", "(('öEZcögtn,', 1), ('azzal', 90))\n", "(('nEZúaAeT', 1), ('császár', 90))\n", "(('oánxdE,', 1), ('szólt', 90))\n", "(('Aaln', 1), ('le', 90))\n", "(('éynnyó', 1), ('Isten', 88))\n", "(('gynnyó', 1), ('ilyen', 88))\n", "(('wSEdísdE', 1), ('volt.', 88))\n", "(('TádáTT', 1), ('Natasa', 88))\n", "(('SZíT.', 1), ('vajjon', 87))\n", "(('Exxyvyeín', 1), ('melyek', 87))\n", "(('gAő', 1), ('másik', 87))\n", "(('öEdEöExETT.', 1), ('annyira', 87))\n", "(('xAdAgőA', 1), ('Bagration', 87))\n", "(('Anyv', 1), ('soha', 86))\n", "(('alélöSZEéwSíeín;', 1), ('Nikolaj', 86))\n", "(('EZEö', 1), ('ment', 85))\n", "(('sAdieky', 1), ('fog', 84))\n", "(('SZynieölö', 1), ('uralkodó', 84))\n", "(('SZíTdEscnTEö', 1), ('bár', 84))\n", "(('pynivle,', 1), ('ember,', 84))\n", "(('SZynieö', 1), ('kit', 82))\n", "(('SZEéígE', 1), ('magát,', 82))\n", "(('öEdcnT,', 1), ('nyilván', 81))\n", "(('éyexEeeEö', 1), ('Borisz', 81))\n", "(('oleiöőiT', 1), ('azt,', 80))\n", "(('niTTA,', 1), ('kedves', 80))\n", "(('wSEss', 1), ('kellett', 80))\n", "(('xAdAgőieAö', 1), ('nélkül', 80))\n", "(('úvkAelnkAe', 1), ('mondotta,', 79))\n", "(('EdEőE', 1), ('jobban', 79))\n", "(('plnT,', 1), ('nekem', 78))\n", "(('TcöádeEö.', 1), ('szólalt', 77))\n", "(('éiSlöeAö', 1), ('hozzá,', 76))\n", "(('SZüpígE', 1), ('akart', 76))\n", "(('ordóxlTT', 1), ('pillanatban', 76))\n", "(('TcöádwSEdís,', 1), ('rá,', 75))\n", "(('nEvdETTEeETESEgg,', 1), ('abban', 75))\n", "(('SZüp', 1), ('vagyok', 74))\n", "(('őívví', 1), ('tovább', 74))\n", "(('oAvklTT', 1), ('nincs', 74))\n", "(('TtnE.', 1), ('semmi', 73))\n", "(('plnTAö', 1), ('mégis', 72))\n", "(('AööldA', 1), ('Pierre,', 72))\n", "(('TcöádxAdAglö', 1), ('valamit', 72))\n", "(('yS,', 1), ('át', 72))\n", "(('AgnAödiéigA', 1), ('felé', 72))\n", "(('ynnESZTaETTíö,', 1), ('Azt', 71))\n", "(('xE', 1), ('őt,', 71))\n", "(('AgnAögón', 1), ('magában', 71))\n", "(('TAeiwSlS', 1), ('Nos,', 70))\n", "(('AddA', 1), ('Mi', 70))\n", "(('aAnAxó', 1), ('előtte', 70))\n", "(('gAdiTlöAT', 1), ('tudta', 70))\n", "(('eíZey;', 1), ('úgy,', 70))\n", "(('xAdAggón', 1), ('katonák', 70))\n", "(('SZEécpEvET', 1), ('Nem,', 69))\n", "(('öíSZüTETTEö,', 1), ('kinek', 69))\n", "(('úvkAewSAö', 1), ('teljes', 69))\n", "(('eEaíZ', 1), ('különösen', 68))\n", "(('SZEécpEvEe', 1), ('Egy', 68))\n", "(('öEdESZTcn', 1), ('legott', 67))\n", "(('aEnkESEe', 1), ('jött', 67))\n", "(('yvAZSivlSAe', 1), ('új', 66))\n", "(('üTíney', 1), ('melyen', 66))\n", "(('xlnvlöAT.', 1), ('azért,', 66))\n", "(('ádxáv', 1), ('iránt', 66))\n", "(('eEpETETT,', 1), ('mosolyogva', 66))\n", "(('aASA', 1), ('akarta', 65))\n", "(('dEevETT', 1), ('Még', 65))\n", "(('gEní,', 1), ('Ő', 65))\n", "(('wSyönAexlZTA', 1), ('folytatta', 65))\n", "(('slésiS', 1), ('fehér', 65))\n", "(('áTnET.', 1), ('tudott', 65))\n", "(('nEpEvtgEe', 1), ('francziák', 65))\n", "(('SZinnyevóZTAö', 1), ('sőt', 64))\n", "(('SZíTTádT', 1), ('uram,', 64))\n", "(('sldSZEéeky', 1), ('osztrák', 64))\n", "(('SZynieöőAy.', 1), ('egyetlen', 63))\n", "(('el,', 1), ('Mikor', 63))\n", "(('éAőx', 1), ('körül', 63))\n", "(('éyexőidT', 1), ('álló', 63))\n", "(('aAnnúeö', 1), ('fordult', 63))\n", "(('dónA.', 1), ('Úgy', 63))\n", "(('', 1), ('közül', 63))\n" ] } ], "source": [ "with open(\"szoveg.txt\") as ff:\n", " szoveg = ff.read()\n", " print(*list(zip(leggyakoribbszo(dekodolnagy(titkos_szoveg5,abc5)),leggyakoribbszo(szoveg))), sep=\"\\n\") " ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Evk TcöáddtL íS wSEdEsEydtL aALLvASSiTOö wSAö! éid öEZxőcö yS A éESíT. éydE A VívídE ídceö, TággET Túxúeö éAőx, éyeT éOST, AZ ELEőíe. VOLT EvkSZEd Evk vOeOSZ éAeó. vOeOSZeiL yS vOeOSZAgg VOLT; éAvA AZ ádxáv. Evk eAs VESZETT őóöExVE TiéAxT, éEdT OLkAe TcödáT SyöEdcLT wSySZOLeyA, AéELk ELí aA SZísET íS őóT TAdTOTTAö, SEééyVí ViLT A LAsőie, A aASZOeTALAe íS drT xOLvOöAT sExyv EdtSEe oELeAvküTVA íS öyxOégOdüTVA VEdTE VySSZA. A LEvSZEgg ZáLxELLt TiőAöAT otTT SsEeóTeAö éúTATTA, A LEvőOgg EégEdEöET oEdTELéES AdwrAöeAö igdiZOLTA, VAvk rvk, éyeTaA TóTivAST iLLeieAö; AZ AdwOö rvk ELTOdZúLTAö, aOvk SEeöy diőúö eEé ySéEdaETETT; AöyeEö Evk SZEsLtwSöE AdAekLOTT AZ Adwie, AZ gyZOekOSAe dAvkiS öísmeEö LiTTA éAviT A TcöádgEe. - úvkAe TdíoiS aOLéy! - xádZSáLTE A öEZíT AZ ádxáv. aA ySTEeES, őiégOd vOexOLATOögA éEdcLT EégEd TEöyeTETT A TcöádgE, VyvkOdvó, TOdZ sOoieAö éúTATTA A Tcöád - ádcLaETETT A vOeOSZ ádxáv! gmVíSZyeASAy - éEdT gmVíSZySöOLiőA yS VOLT AZ ádxáveEö! - wSOxiT EéLEvETTEö, AZT éOexTiö, VívdE aüVEe éEvLiTaATőA éyexEeöy, éyLkEeEö AZ EégEdEö. ELVyTTíö A TcödáT A VyLiv éyexEe TiőidA, S VívcL éid eEé VOLT OdSZiv, eEé VOLT EégEd, AöyeEö TOdZöísíT VySSZA eE VEdTE VOLeA A vOeOSZ Tcöád. AööOd AZ ívgE AöAdTAö oELdEscLey A TcöáddEL. aAeEé EvkSZEd wSAö öywSrSZOTT A öEZcögtL, S LEZúaAeT A oáLxdE, AaOL éyLLyó éEv gyLLyó wSEdísdE TádáTT SZíT. EggtL sExyv éív AZ ExxyvyeíL yS eAvkOgg gAő öEdEöExETT. éEdT A Tcöád eíéELkyö xAdAgőA ALyv VOLT eAvkOgg Evk aOéOöSZEéwSíeíL; EZEö A sAdieky SZyLieöOö SZíTdEscLTEö AZ EvíSZ VyLivOe, S AöyeEö yLkEe öyS SZyLieö A SZEéígE öEdcLT, AZ éyexEeeEö A oOeiöőiT LiTTA, éEdT A Tcöád éyexEe wSEss xAdAgőieAö úvkAeOLkAe vOeOSZ EdEőE VOLT, éyeT AZ EvíSZ TcöádeEö. éiSOöeAö A SZüVígE ordóxOTT Evk öyS TcöádwSEdís, S AZ VOLT A LEvdETTEeETESEgg, éEdT A SZüV őívví oAvkOTT TtLE. VOLTAö AööOdA TcöádxAdAgOö yS, aOvk AgLAödiéigA yLLESZTaETTíö, xE EggtL AZ AgLAögóL eEé VOLT TAeiwSOS AZ AddA aALAxó gAdiTOöAT eíZey; eíéELkyö xAdAggóL SZEécVEvET öíSZüTETTEö, S úvkAewSAö eEaíZ VOLT AZ yLkEe SZEécVEvEe öEdESZTcL aELkESEe íS yvAZSivOSAe üTíLey éEv A xOLvOöAT. AZ ádxáv rvk eEVETETT, aOvk A aASA dEevETT gELí, wSyöLAexOZTA A sOésiS áTLET. A LEVEvtgEe éív SZiLLyevóZTAö A SZíTTádT Tcöád sOdSZEéeky SZyLieöőAy. eO, éAőx éyexőidT TággET aALLúeö dóLA. '" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# a volt szó alapján\n", "abc5['v']='p'\n", "abc5['o']='l'\n", "abc5['l']='n'\n", "dekodolnagy(titkos_szoveg5,abc5)" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'EGY TÜKÖRRŐL ÉS CSEREPEIRŐL HALLGASSÁTOK CSAK! MÁR KEZDJÜK IS A MESÉT. MIRE A VÉGÉRE ÉRÜNK, TÖBBET TUDUNK MAJD, MINT MOST, AZ ELEJÉN. VOLT EGYSZER EGY GONOSZ MANÓ. GONOSZNÁL IS GONOSZABB VOLT; MAGA AZ ÖRDÖG. EGY NAP VESZETT JÓKEDVE TÁMADT, MERT OLYAN TÜKRÖT SIKERÜLT CSISZOLNIA, AMELY ELÉ HA SZÉPET ÉS JÓT TARTOTTAK, SEMMIVÉ VÁLT A LAPJÁN, A HASZONTALAN ÉS RÚT DOLGOKAT PEDIG ERŐSEN FELNAGYÍTVA ÉS KIDOMBORÍTVA VERTE VISSZA. A LEGSZEBB ZÖLDELLŐ TÁJAKAT FŐTT SPENÓTNAK MUTATTA, A LEGJOBB EMBEREKET FERTELMES ARCÚAKNAK ÁBRÁZOLTA, VAGY ÚGY, MINTHA TÓTÁGAST ÁLLNÁNAK; AZ ARCOK ÚGY ELTORZULTAK, HOGY SENKI RÁJUK NEM ISMERHETETT; AKINEK EGY SZEPLŐCSKE ARANYLOTT AZ ARCÁN, AZ BIZONYOSAN RAGYÁS KÉPŰNEK LÁTTA MAGÁT A TÜKÖRBEN. - UGYAN TRÉFÁS HOLMI! - DÖRZSÖLTE A KEZÉT AZ ÖRDÖG. HA ISTENES, JÁMBOR GONDOLATOKBA MERÜLT EMBER TEKINTETT A TÜKÖRBE, VIGYORGÓ, TORZ POFÁNAK MUTATTA A TÜKÖR - ÖRÜLHETETT A GONOSZ ÖRDÖG! BŰVÉSZINASAI - MERT BŰVÉSZISKOLÁJA IS VOLT AZ ÖRDÖGNEK! - CSODÁT EMLEGETTEK, AZT MONDTÁK, VÉGRE HÍVEN MEGLÁTHATJA MINDENKI, MILYENEK AZ EMBEREK. ELVITTÉK A TÜKRÖT A VILÁG MINDEN TÁJÁRA, S VÉGÜL MÁR NEM VOLT ORSZÁG, NEM VOLT EMBER, AKINEK TORZKÉPÉT VISSZA NE VERTE VOLNA A GONOSZ TÜKÖR. AKKOR AZ ÉGBE AKARTAK FELREPÜLNI A TÜKÖRREL. HANEM EGYSZER CSAK KICSÚSZOTT A KEZÜKBŐL, S LEZUHANT A FÖLDRE, AHOL MILLIÓ MEG BILLIÓ CSERÉPRE TÖRÖTT SZÉT. EBBŐL PEDIG MÉG AZ EDDIGINÉL IS NAGYOBB BAJ KEREKEDETT. MERT A TÜKÖR NÉMELYIK DARABJA ALIG VOLT NAGYOBB EGY HOMOKSZEMCSÉNÉL; EZEK A PARÁNYI SZILÁNKOK SZÉTREPÜLTEK AZ EGÉSZ VILÁGON, S AKINEK ILYEN KIS SZILÁNK A SZEMÉBE KERÜLT, AZ MINDENNEK A FONÁKJÁT LÁTTA, MERT A TÜKÖR MINDEN CSEPP DARABJÁNAK UGYANOLYAN GONOSZ EREJE VOLT, MINT AZ EGÉSZ TÜKÖRNEK. MÁSOKNAK A SZÍVÉBE FÚRÓDOTT EGY KIS TÜKÖRCSERÉP, S AZ VOLT A LEGRETTENETESEBB, MERT A SZÍV JÉGGÉ FAGYOTT TŐLE. VOLTAK AKKORA TÜKÖRDARABOK IS, HOGY ABLAKRÁMÁBA ILLESZTHETTÉK, DE EBBŐL AZ ABLAKBÓL NEM VOLT TANÁCSOS AZ ARRA HALADÓ BARÁTOKAT NÉZNI; NÉMELYIK DARABBÓL SZEMÜVEGET KÉSZÍTETTEK, S UGYANCSAK NEHÉZ VOLT AZ ILYEN SZEMÜVEGEN KERESZTÜL HELYESEN ÉS IGAZSÁGOSAN ÍTÉLNI MEG A DOLGOKAT. AZ ÖRDÖG ÚGY NEVETETT, HOGY A HASA RENGETT BELÉ, CSIKLANDOZTA A POMPÁS ÖTLET. A LEVEGŐBEN MÉG SZÁLLINGÓZTAK A SZÉTTÖRT TÜKÖR PORSZEMNYI SZILÁNKJAI. NO, MAJD MINDJÁRT TÖBBET HALLUNK RÓLA. '" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "abc5['r']='d' #('tükröt' és 'sikerült' szóból)\n", "abc5['g']='v' #('egy' szóból)\n", "abc5['y']='k' #('egy' szóból)\n", "abc5['i']='y' #('vissza' szóból)\n", "abc5['é']='í' #('egész' szóból)\n", "abc5['o']='l' #('torz' szóból)\n", "abc5['n']='e' #('gonosz' szóból)\n", "abc5['l']='n' #('volna' szóból)\n", "abc5['m']='é' #('mire' és 'nem' szóból)\n", "abc5['b']='g' #('nagyobb' és 'gonoszabb' szóból)\n", "abc5['á']='i' #('gonosznál' szóból)\n", "abc5['d']='x' #('támadt' szóból)\n", "abc5['ö']='á' #('ördög szóból')\n", "abc5['j']='ő' #('elején' szóból)\n", "abc5['ó']='ó' #('manó' és 'jókedve' szóból)\n", "abc5['k']='ö' #('jókedve' szóból)\n", "abc5['h']='a' #('haszontalan' szóból)\n", "abc5['ü']='c' #('tükröt' és 'sikerült' szóból)\n", "abc5['p']='s' #('pedig' szóból)\n", "abc5['f']='o' #('felnagyítva' szóból)\n", "abc5['í']='ü' #('felnagyítva' szóból)\n", "abc5['ő']='t' #('főtt' és 'zöldellő' szóból)\n", "abc5['u']='ú' #('mutatta' szóból)\n", "abc5['ú']='r' #('rút' és 'úgy' szóból)\n", "abc5['c']='w' #('cserepeiről' és 'csak' szóról)\n", "abc5['ű']='m' #('képűnek' szóból)\n", "\n", "\n", "dekodolnagy(titkos_szoveg5,abc5)" ] }, { "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": 31, "metadata": { "colab": {}, "colab_type": "code", "id": "2AROq03G9n38" }, "outputs": [ { "data": { "text/plain": [ "['a', 'b', 'c', 'd', 'e', 'f']" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "alphabet = list(map(chr, range(97,97+6)))\n", "alphabet" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "colab": {}, "colab_type": "code", "id": "Wlfw9s-F_Af8" }, "outputs": [], "source": [ "id_map = {l: l for l in alphabet}" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "colab": {}, "colab_type": "code", "id": "47u_l1zTMXGB" }, "outputs": [], "source": [ "class AltalanosTarcsa:\n", " alphabet = list(map(chr, range(97,97+6)))\n", " alphabet_length = len(alphabet)\n", "\n", " def reverse(alphabet):\n", " return {alphabet[ch]: ch for ch in alphabet}\n", " def __init__(self, coding = id_map):\n", " self.coding = coding\n", " self.reverse_coding = AltalanosTarcsa.reverse(coding)\n", "\n", " if not len(self.coding) == len(self.reverse_coding):\n", " raise TypeError(\"The coding must be a bijection.\")\n", " def forward_substitute(self, ch):\n", " return self.coding[ch]\n", " def backward_substitute(self, ch):\n", " return self.reverse_coding[ch]" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "colab": {}, "colab_type": "code", "id": "O8bgyuWP_yAX" }, "outputs": [], "source": [ "class KapcsoloTabla(AltalanosTarcsa):\n", " pass" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "colab": {}, "colab_type": "code", "id": "I6wyzqnFELcT" }, "outputs": [], "source": [ "class ForgoTarcsa(AltalanosTarcsa):\n", " def __init__(self, coding = id_map):\n", " super().__init__(coding)\n", " self.counter = 0\n", " self.finished_cycle = True\n", " def rotate(self):\n", " def next_in_alphabet(l):\n", " return AltalanosTarcsa.alphabet[(AltalanosTarcsa.alphabet.index(l) - 1) % AltalanosTarcsa.alphabet_length]\n", " self.coding = {next_in_alphabet(l): next_in_alphabet(self.coding[l]) for l in self.coding}\n", " self.reverse_coding = AltalanosTarcsa.reverse(self.coding)\n", " self.counter += 1\n", " if self.counter == AltalanosTarcsa.alphabet_length:\n", " self.counter = 0\n", " self.finished_cycle = True\n", " elif self.finished_cycle:\n", " self.finished_cycle = False" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "colab": {}, "colab_type": "code", "id": "YaTk7RB6K7Rq" }, "outputs": [], "source": [ "class Visszafordito(AltalanosTarcsa):\n", " def __init__(self, coding = id_map):\n", " def is_symmetric(coding):\n", " return all(coding[coding[l]] == l for l in coding)\n", " if not is_symmetric(coding):\n", " raise TypeError(\"The reflector must pair the outputs and inputs.\")\n", "\n", " self.coding = coding" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "colab": {}, "colab_type": "code", "id": "tktqj_cKLPoZ" }, "outputs": [], "source": [ "class Enigma:\n", " def __init__(self, entry, right, middle, left, reflector):\n", " self.right = right\n", " self.middle = middle\n", " self.left = left\n", " self.forward_path = [entry, right, middle, left, reflector]\n", " self.backward_path = [left, middle, right, entry]\n", " def rotate_rotors(self):\n", " self.right.rotate()\n", " if self.right.finished_cycle:\n", " self.middle.rotate()\n", " if self.middle.finished_cycle:\n", " self.left.rotate()\n", " def encode_chr(self, ch):\n", " \n", " for rotor in self.forward_path:\n", " #print(ch)\n", " ch = rotor.forward_substitute(ch)\n", " \n", " for rotor in self.backward_path:\n", " #print(ch)\n", " ch = rotor.backward_substitute(ch)\n", " self.rotate_rotors()\n", " return ch\n", " \n", " def encode(self, text):\n", " return ''.join(map(self.encode_chr, text))" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'cd'" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# a képen lévő példa\n", "kt=KapcsoloTabla({'a':'b','b':'a','c':'c','d':'d','e':'e','f':'f'})\n", "ft1=ForgoTarcsa({'a': 'f', 'b': 'c', 'c': 'e', 'd': 'd', 'e': 'b', 'f': 'a'})\n", "ft2=ForgoTarcsa({'a': 'c', 'b': 'a', 'c': 'd', 'd': 'b', 'e': 'f', 'f': 'e'})\n", "ft3=ForgoTarcsa({'a': 'e', 'b': 'a', 'c': 'd', 'd': 'f', 'e': 'c', 'f': 'b'})\n", "vf=Visszafordito({'a': 'f', 'f': 'a', 'b': 'c', 'c': 'b', 'd': 'e', 'e': 'd'})\n", "e=Enigma(kt,ft1,ft2,ft3,vf)\n", "e.encode('bb')\n" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "soka=\"\".join(['a' for _ in range(224)])" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'dcfebbedbeccffccefcdcddccbedddedbeccdccbbedcfebbfbeeefcbedddefbccdeebbceffccefdcdfbddcfebbdcdfbdeebbcefedfefefbccdcbedddcefddbdcfebbdccbbeffccefcbedddbbebfeeebbcebffcfbdcfebbbffcfbcefddbeebbceefbccdffcceffbeeefdcfebbdcfebbed'" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "kt=KapcsoloTabla({'a':'b','b':'a','c':'c','d':'d','e':'e','f':'f'})\n", "ft1=ForgoTarcsa({'a': 'f', 'b': 'c', 'c': 'e', 'd': 'd', 'e': 'b', 'f': 'a'})\n", "ft2=ForgoTarcsa({'a': 'c', 'b': 'a', 'c': 'd', 'd': 'b', 'e': 'f', 'f': 'e'})\n", "ft3=ForgoTarcsa({'a': 'e', 'b': 'a', 'c': 'd', 'd': 'f', 'e': 'c', 'f': 'b'})\n", "vf=Visszafordito({'a': 'f', 'f': 'a', 'b': 'c', 'c': 'b', 'd': 'e', 'e': 'd'})\n", "e=Enigma(kt,ft1,ft2,ft3,vf)\n", "e.encode(soka)\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 2 }