{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Második beadandó\n", "\n", "Három feladat van, mindegyik két pontot ér. A jegy a pontok száma, de legfeljebb 5. Megoldásként ezt a fájlt kell visszaküldeni kitöltve. A programoknak úgy kell működniük, hogy a Restart & Run All parancsra hiba nélkül végigfusson a notebook.\n", "\n", "A megoldásodat röviden (kb 10 perc) be kell mutatnod az egyik vizsgaidőpontban. Ekkor képben kell lenni mindennel, és képes kell legyél apróbb változtatások végrehajtására élőben. (Ilyen típusú kérdésekre számíthatsz: melyik részt és hogyan kellene átírni, hogy a programod még azt is tudja, hogy xy)\n", "\n", "A vizsgán való részvétel feltétele, hogy legalább 3 nappal korábban elküldöd a beadandót, hogy legyen időm megnézni. \n", "\n", "**Ha valamivel nagyon elakadsz, írj egy emailt és segítek.**\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. Algoritmikus feladat\n", "Implementáld az alábbi két algoritmus közül VALAMELYIKET! \n", "- A részleteket rád bízom, például, ha több verziója is van az algoritmusnak, válassz egyet. \n", "- **Teszteld meggyőző módon, mutasd be példákon az algoritmusod!**\n", "- Egy gráf reprezentálásához vagy használj egy könyvtárat (pl. networkx) vagy pedig hozz létre egy gráf osztályt objektum orientáltan.\n", "- Az algoritmust ,,kézzel'' rakd össze, azaz nem használhatsz kész megoldásokat. \n", "- A bemutatás során használhatsz kézi példákat, vagy pedig a networkx, vagy egyéb könyvtárak beépített algoritmusait, hogy összehasonlítsd azzal, amit te implementáltál.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Floyd–Warshall\n", "Implementáld a Floyd–Warshall algoritmust (https://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm) konzervatívan súlyozott gráfban a legrövidebb utak meghatározására mindenhonnan mindenhova.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Lempel–Ziv–Welch\n", "\n", "Implementáld a Lempel–Ziv–Welch (https://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch) tömörítési eljárást." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#algoritmus" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#bemutatás példán" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. Vizualizációs feladat\n", "- Az alábbi feladatot a Matplotlib csomag segítségével oldd meg!\n", "- A grafikonokon (amikor van értelme) legyen tengely, tengelyfelirat, tengelybeosztás, jelmagyarázat stb.\n", "- A grafikon színét mindig változtasd meg, ne az automatikus szín legyen. \n", "- A feladathoz szükséges fájlokat a honlapon találod [ITT](http://damasdigabor.web.elte.hu/python/beadando2/vizu/), ezek értelmezése is a te feladatod. (Általában a fájl első sora segít)\n", "\n", "\n", "(A .csv fájlok beolvasására használhatod például ezt \n", "`import csv` \n", "\n", "`f=csv.reader(csvfile, delimiter=',', quotechar='\"')` \n", "\n", "`for row in f:`\n", "\n", "persze a paramétereket be kell állítanod. A delimeter az elválasztó karakter, quotechar pedig azt jelöli, hogy azokat az elválasztó karaktereket ne vegye figyelembe, amik a megadott idézőjelek között vannak. )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Google trends. \n", "\n", "a) Készíts egy ehhez hasonló grafikont: https://xkcd.com/2302/\n", "\n", "A `car.csv, yeast.csv, mask.csv, pangolin.csv, sewinmachine.csv, travel.csv`fájlokban találsz felhasználható adatokat, hogy az adott kifejezés mikor mennyire volt népszerű a google keresőben az elmúlt 12 hónapban. A 100 érték jelöli a maximumot, a többi ahhoz képest van arányosan beállítva. A 0 érték azt jelenti, hogy nem volt elég adat az adott időszakban. Ábrázold egy közös grafikonon, hogy mikor mennyire volt népszerű az adott szó. \n", "\n", "Ha eszedbe jut még valamilyen érdekes keresőszó, nyugodtan vedd be azt is. Itt tölthetsz le adatokat: https://trends.google.com/trends/\n", "\n", "b) Az előbb felhasznált keresőszavak alapján csinálj egy kördiagrammot, ami azt mutatja, hogy ha most rákeresünk a szavakra, melyikre hány találatot kapunk. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#két ábra és az őket generáló kód" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Puzzle feladat\n", "Ebben a feladatban neked kell algoritmust kitalálnod egy feladatra. \n", "- Írj egy rövid leírást (feladat, algoritmus, miért jó az algoritmus) és példákon mutasd be a működését.\n", "- Általában törekedj az objektum orientáltságra. \n", "- Törekedj rá, hogy a programod gyors legyen, pár másodpercnél ne tartson tovább. (A vizsgán rákérdezhetek, hogy milyen gyors matematikai értelemben, lehet-e gyorsítani, stb)\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Ugráló békák\n", "Írj egy programot, amely tetszőleg, akár különböző számú piros és kék béka esetén megoldja az ugráló békák feladványt. A feladvány leírását megtalálod itt: [link](http://www.primefactorisation.com/frogpuzzle/). A lépések menetét vizualizáld is. \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#Rövid leírás:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#algoritmus" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "#példa" ] } ], "metadata": {}, "nbformat": 4, "nbformat_minor": 2 }