{ "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 }