diff --git a/SajatMegoldasok/vizsga_02_minta.ipynb b/SajatMegoldasok/vizsga_02_minta.ipynb new file mode 100644 index 0000000..1b57e11 --- /dev/null +++ b/SajatMegoldasok/vizsga_02_minta.ipynb @@ -0,0 +1,169 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Vizsgaminta 2." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. feladat [4p]\n", + "\n", + "A `planets` lista a Naprendszer bolygóinak tömegét és (átlagos) sugarát tartalmazza. Készítsünk programot, amely kiszámítja, hogy a bolygók felszínén érvényes nehézségi gyorsulás hányszorosa a földinek! A nehézségi gyorsulás képlete\n", + "$$g = G \\frac{M}{R^2},$$\n", + "ahol $G = 6,67408 \\cdot 10^{-11} \\frac{Nm^2}{kg^2}$ az univerzális gravitációs állandó, $M$ a bolygó tömege, $R$ pedig a bolygó tömegközéppontjától mért távolság. A program ne csak a `planets` listára működjön, hanem bármely ugyanilyen formátumú, bemenetre is! Elvárt futási eredmény:\n", + "```\n", + "\n", + "Merkúr: 0.38\n", + "Vénusz: 0.90\n", + "Föld: 1.00\n", + "...\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Merkúr: 0.38\n", + "Vénusz: 0.9\n", + "Föld: 1.0\n", + "Mars: 0.38\n", + "Jupiter: 2.64\n", + "Szaturnusz: 1.14\n", + "Uránusz: 0.92\n", + "Neptunusz: 1.15\n" + ] + } + ], + "source": [ + "planets = [\n", + " # bolygó neve, tömeg(10^21kg), sugár(km)\n", + " ('Merkúr', 330.2, 2439.7),\n", + " ('Vénusz', 4868.5, 6051.8),\n", + " ('Föld', 5973.6, 6371.0),\n", + " ('Mars', 641.85, 3389.5),\n", + " ('Jupiter', 1898600, 69911),\n", + " ('Szaturnusz', 568460, 58232),\n", + " ('Uránusz', 86832, 25362),\n", + " ('Neptunusz', 102430, 24622)\n", + "]\n", + "\n", + "\n", + "G = 6.67408 * 10**-11\n", + "\n", + "#föld gravitacioja:\n", + "M = planets[2][1] * 10 ** 21\n", + "R = planets[2][2] * 1000\n", + "fold_g = G * M / R ** 2\n", + "\n", + "\n", + "for i in planets:\n", + " M = i[1]*10**21\n", + " R2 = (i[2] * 1000) ** 2\n", + " g = G* (M/R2)\n", + " print(f\"{i[0]}: {round(g/fold_g,2)}\")\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. feladat [4p]\n", + "\n", + "Készítsünk programot, amely bekéri a felhasználótól $n$ értékét, szimulál $n$ darab kockadobást, majd kiírja, hogy mi volt a leghosszabb 6-os sorozat hossza! Példa futási eredmény:\n", + "```\n", + "n: 50\n", + "31554643644341364414422455514666664664563666113524\n", + "A leghosszabb 6-os sorozat hossza: 5\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "463346463611214344644434512435364132263214511246655114424621542564625432253266512135666321524465236523511155213621633461152112634424142224413243313621\n", + "A leghosszabb 6-os sorozat hossza: 3\n" + ] + } + ], + "source": [ + "import random\n", + "\n", + "n = int(input(\"n: \"))\n", + "max6 = 0; counter = 0; out = \"\"\n", + "\n", + "for i in range(n):\n", + " ranum = random.randint(1,6)\n", + " if ranum == 6:\n", + " counter += 1\n", + " else:\n", + " counter = 0\n", + " if counter > max6:\n", + " max6 = counter\n", + " \n", + " out += str(ranum)\n", + "print(out)\n", + "print(\"A leghosszabb 6-os sorozat hossza:\", max6)\n", + "\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. feladat [12p]\n", + "\n", + "A [hotels.txt](hotels.txt) szövegfájl Las Vegas-i szállodák értékeléséről tartalmaz adatokat. Minden sor egy szállóvendég által kiosztott értékeléshez tartozik. Készítsünk programot, amely kiszámítja és kiírja az alábbi statisztikákat:\n", + "- A szobák száma (`Nr. rooms`) alapján melyik az öt legnagyobb szálloda?\n", + "- Melyik szállodá(ka)t értékelték (`Score`) átlagosan a legmagasabbra és mekkora ez az átlagpont?\n", + "- Hány ponttal magasabb a medencével (`Pool`) rendelkező szállodák átlagos értékelése (`Score`) a többi szálloda átlagos értékelésénél?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.12.5" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/SajatMegoldasok/vizsga_03_minta.ipynb b/SajatMegoldasok/vizsga_03_minta.ipynb new file mode 100644 index 0000000..a62fa6a --- /dev/null +++ b/SajatMegoldasok/vizsga_03_minta.ipynb @@ -0,0 +1,199 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Vizsgaminta 3." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. feladat [4p]\n", + "Készítsünk programot, amely pozitív egész számok egy nemüres listájára meghatározza és kiírja a lista azon elemét, amelyikben a számjegyek összege a legnagyobb! Ha több ilyen szám is lenne, akkor az elsőnek megtalált legyen az eredmény! Teszteljük a programot a `[245, 1132, 98, 465, 14231, 7854, 2542]` listával! " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7854\n" + ] + } + ], + "source": [ + "\n", + "numblist = [245, 1132, 98, 465, 14231, 7854, 2542]\n", + "sum = 0; indx = 0\n", + "for i in numblist:\n", + " alt = str(i)\n", + " tempsum = 0\n", + " for ii in alt:\n", + " tempsum += int(ii)\n", + " if sum < tempsum:\n", + " sum = tempsum\n", + " indx = i\n", + "print(indx)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. feladat [6p]\n", + "Az `edges` lista kitalált személyekből képezett párokat tartalmaz. Egy pár azt jelenti, hogy az adott személyek ismeri egymást. Készítsünk függvényt, amely egy adott, ilyen felépítésű listára meghatározza azt a 2 személyt, akiknek a legtöbb közös ismerősük van! Ha több ilyen személypár is lenne, akkor az egyik ilyen pár legyen az eredmény! Hívjuk meg a függvényt az `edges` listára és írjuk ki a kapott eredményeket!" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A legtöbb közös ismerősük ('Géza', 'Dezső') személyeknek van, szám szerint 3.\n" + ] + } + ], + "source": [ + "edges = [\n", + " (\"Adél\", \"Dezső\"), (\"Géza\", \"Mihály\"), (\"Károly\", \"Adél\"), (\"Antal\", \"Mihály\"), (\"Károly\", \"Sára\"),\n", + " (\"Mihály\", \"Vilma\"), (\"Dezső\", \"Vilma\"), (\"Vilma\", \"Antal\"), (\"Károly\", \"Mihály\"), (\"Elvira\", \"Adél\"),\n", + " (\"Izabella\", \"Adél\"), (\"Mihály\", \"Izabella\"), (\"Géza\", \"Vilma\"), (\"Károly\", \"Elvira\"), (\"Elvira\", \"Mihály\"),\n", + " (\"Géza\", \"Dezső\"), (\"Sára\", \"Adél\"), (\"Géza\", \"Adél\"), (\"Géza\", \"Izabella\"), (\"Izabella\", \"Dezső\") \n", + "]\n", + "counter = []\n", + "maxcount = 0\n", + "bestpair = []\n", + "counterer = 0\n", + "\n", + "for pair in edges:\n", + " counterer = 0\n", + " counter = []\n", + " \n", + " for a in edges:\n", + " if pair[0] in a:\n", + " other = a[1] if a[0] == pair[0] else a[0]\n", + " counter.append(other)\n", + " \n", + " for b in edges:\n", + " if pair[1] in b:\n", + " other = b[1] if b[0] == pair[1] else b[0]\n", + " if other in counter:\n", + " counterer += 1\n", + " \n", + " if maxcount < counterer:\n", + " maxcount = counterer\n", + " bestpair = pair\n", + "\n", + "print(f\"A legtöbb közös ismerősük {bestpair} személyeknek van, szám szerint {maxcount}.\")\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "A legtöbb közös ismerősük ('Adél', 'Mihály') személyeknek van, szám szerint 4.\n" + ] + } + ], + "source": [ + "from collections import defaultdict\n", + "\n", + "def find_most_common_friends(edges):\n", + " # Szomszédsági lista létrehozása\n", + " adj_list = defaultdict(set)\n", + " for a, b in edges:\n", + " adj_list[a].add(b)\n", + " adj_list[b].add(a)\n", + "\n", + " max_common = 0\n", + " best_pair = ()\n", + "\n", + " # Minden lehetséges személypár közötti közös ismerősök keresése\n", + " persons = list(adj_list.keys())\n", + " for i in range(len(persons)):\n", + " for j in range(i + 1, len(persons)):\n", + " person1 = persons[i]\n", + " person2 = persons[j]\n", + " # Közös ismerősök metszetének meghatározása\n", + " common_friends = adj_list[person1].intersection(adj_list[person2])\n", + " common_count = len(common_friends)\n", + "\n", + " # Ha ez a páros több közös ismerőssel rendelkezik, frissítjük az eredményt\n", + " if common_count > max_common:\n", + " max_common = common_count\n", + " best_pair = (person1, person2)\n", + "\n", + " return best_pair, max_common\n", + "\n", + "# Az adott edges listán meghívjuk a függvényt\n", + "edges = [\n", + " (\"Adél\", \"Dezső\"), (\"Géza\", \"Mihály\"), (\"Károly\", \"Adél\"), (\"Antal\", \"Mihály\"), (\"Károly\", \"Sára\"),\n", + " (\"Mihály\", \"Vilma\"), (\"Dezső\", \"Vilma\"), (\"Vilma\", \"Antal\"), (\"Károly\", \"Mihály\"), (\"Elvira\", \"Adél\"),\n", + " (\"Izabella\", \"Adél\"), (\"Mihály\", \"Izabella\"), (\"Géza\", \"Vilma\"), (\"Károly\", \"Elvira\"), (\"Elvira\", \"Mihály\"),\n", + " (\"Géza\", \"Dezső\"), (\"Sára\", \"Adél\"), (\"Géza\", \"Adél\"), (\"Géza\", \"Izabella\"), (\"Izabella\", \"Dezső\") \n", + "]\n", + "\n", + "best_pair, common_friends_count = find_most_common_friends(edges)\n", + "print(f\"A legtöbb közös ismerősük {best_pair} személyeknek van, szám szerint {common_friends_count}.\")\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. feladat [10p]\n", + "\n", + "Az [unicef.txt](unicef.txt) szövegfájl a világ 5 év alatti népességének élelmezési helyzetéről tartalmaz adatokat. Az egyes sorok felméréseknek felelnek meg, a felmérések országonként időbeli sorrendben vannak felsorolva. Töltsük be az adatokat, határozzuk meg és írjuk ki az alábbi statisztikákat!\n", + "- Hány felmérés készült és hány országot érintett?\n", + "- Az alábbi statisztikákat csak azon felmérések alapján készítsük el, amelyeknél mind a három érintett indikátor (`Severe Wasting`, `Underweight`, `Overweight`) definiált (azaz ezek pozitív adatok). Ha egy országra több ilyen felmérés is van, akkor a legutóbbit vegyük figyelembe!\n", + " - Mely 5 országban a legmagasabb a `Severe Wasting` indikátor?\n", + " - Az országok hányadrészében magasabb az `Underweight` indikátor az `Overweight` indikátornál?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.12.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}