From 5f0f81a790a8073cc4e61fa94f026bc1b9d557b1 Mon Sep 17 00:00:00 2001 From: Kilokem Date: Sat, 21 Sep 2024 11:20:44 +0200 Subject: [PATCH] Upload --- 01_ea.ipynb | 1027 ++++++ 01_gyak.ipynb | 156 + 02_ea.ipynb | 702 ++++ 02_gyak.ipynb | 109 + 03_ea.ipynb | 1066 ++++++ 03_gyak.ipynb | 77 + 04_ea.ipynb | 990 +++++ 04_gyak.ipynb | 73 + 05_ea.ipynb | 836 +++++ 05_gyak.ipynb | 83 + 05_gyak_mego.ipynb | 761 ++++ 06_ea.ipynb | 1297 +++++++ 06_gyak.ipynb | 105 + 07_ea.ipynb | 761 ++++ 07_gyak.ipynb | 70 + 08_ea.ipynb | 1015 +++++ 08_gyak.ipynb | 249 ++ 09_ea.ipynb | 2891 +++++++++++++++ 09_gyak.ipynb | 54 + 10_ea.ipynb | 1019 +++++ 10_gyak.ipynb | 115 + 10_gyak_mego.ipynb | 509 +++ 11_ea.ipynb | 872 +++++ 11_gyak.ipynb | 174 + 11_gyak_2_feladat_mego.ipynb | 309 ++ 12_ea.ipynb | 1757 +++++++++ 12_gyak.ipynb | 184 + 12_gyak_mego.ipynb | 418 +++ 13_ea.ipynb | 2808 ++++++++++++++ 13_gyak.ipynb | 63 + 13_gyak_mego.ipynb | 994 +++++ baseball.txt | 1034 ++++++ example_file.txt | 4 + hamlet.txt | 6777 ++++++++++++++++++++++++++++++++++ hotels.txt | 505 +++ igazi.txt | 35 + investments.txt | 1435 +++++++ linreg_1d.jpg | Bin 0 -> 159538 bytes matrix.txt | 10 + pl.txt | 386 ++ pyprog_bevezetes.pdf | Bin 0 -> 577647 bytes unicef.txt | 855 +++++ 42 files changed, 32585 insertions(+) create mode 100644 01_ea.ipynb create mode 100644 01_gyak.ipynb create mode 100644 02_ea.ipynb create mode 100644 02_gyak.ipynb create mode 100644 03_ea.ipynb create mode 100644 03_gyak.ipynb create mode 100644 04_ea.ipynb create mode 100644 04_gyak.ipynb create mode 100644 05_ea.ipynb create mode 100644 05_gyak.ipynb create mode 100644 05_gyak_mego.ipynb create mode 100644 06_ea.ipynb create mode 100644 06_gyak.ipynb create mode 100644 07_ea.ipynb create mode 100644 07_gyak.ipynb create mode 100644 08_ea.ipynb create mode 100644 08_gyak.ipynb create mode 100644 09_ea.ipynb create mode 100644 09_gyak.ipynb create mode 100644 10_ea.ipynb create mode 100644 10_gyak.ipynb create mode 100644 10_gyak_mego.ipynb create mode 100644 11_ea.ipynb create mode 100644 11_gyak.ipynb create mode 100644 11_gyak_2_feladat_mego.ipynb create mode 100644 12_ea.ipynb create mode 100644 12_gyak.ipynb create mode 100644 12_gyak_mego.ipynb create mode 100644 13_ea.ipynb create mode 100644 13_gyak.ipynb create mode 100644 13_gyak_mego.ipynb create mode 100644 baseball.txt create mode 100644 example_file.txt create mode 100644 hamlet.txt create mode 100644 hotels.txt create mode 100644 igazi.txt create mode 100644 investments.txt create mode 100644 linreg_1d.jpg create mode 100644 matrix.txt create mode 100644 pl.txt create mode 100644 pyprog_bevezetes.pdf create mode 100644 unicef.txt diff --git a/01_ea.ipynb b/01_ea.ipynb new file mode 100644 index 0000000..9d0b8c8 --- /dev/null +++ b/01_ea.ipynb @@ -0,0 +1,1027 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A Jupyter Notebook környezet\n", + "\n", + "- A [Jupyter Notebook](https://jupyter-notebook.readthedocs.io/en/stable/) egy böngésző alapú, interaktív munkakörnyezet.\n", + "- Elsődlegesen a Python nyelvhez fejlesztették ki, de más programozási nyelvekkel is használható.\n", + "- Egy notebook cellákból áll, a cellák lehetnek szöveges (Markdown) vagy kód (Code) típusúak.\n", + "- A kódcellákat le lehet futtatni, akár többször is egymás után. A futtatás eredménye megjelenik az adott kódcella utáni kimenetben.\n", + "- A notebook használata kétféle üzemmódban történik:\n", + " + Parancsmódban tudjuk elvégezni a cellaszintű műveleteket (pl. új cella beszúrása, cella törlése, cellák mozgatása, lépegetés a cellák között, stb). Néhány billentyűparancs:\n", + " - ```b```: Új kódcella beszúrása az aktuális cella után.\n", + " - ```m```: Az aktuális cella típusának átállítása szövegesre.\n", + " - ```dd```: Az aktuális cella törlése.\n", + " - ```Enter```: Átlépés szerkesztőmódba (az aktuális cella tartalmának szerkesztése).\n", + " + Szerkesztőmódban tudjuk szerkeszteni a cellák tartalmát. Néhány billentyűparancs:\n", + " - ```Ctrl+Enter```: Az aktuális cella futtatása.\n", + " - ```Esc```: Visszalépés parancsmódba.\n", + "- A billentyűparancsokról a Help / Keyboard Shortcuts menü ad részletesebb leírást." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Egyszerű adattípusok" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [Egész szám](https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A számok között a szokásos módon végezhetünk műveleteket.\n", + "1 + 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Megjegyzések:\n", + "- A szóközök nem számítanak, a fenti írásmód a PEP 8 kódolási stílust követi.\n", + "- A Jupyter a futtatás után megjeleníti a cella utolsó kifejezését." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "20" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Ha szeretnénk felülbírálni a precedenciát, használjunk zárójelezést!\n", + "(2 + 3) * 4" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111112" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A Python képes tetszőleges hosszúságú egész számokkal dolgozni, nincsen túlcsordulási hiba.\n", + "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 + 1" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Hozzunk létre egy i nevű változót, és tegyük bele a 11 értéket!\n", + "i = 11" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Megjegyzések:\n", + "- Az = az értékadás műveleti jele.\n", + "- i felveszi a megadott értéket, de magának az értékadásnak nincs eredménye. Emiatt a cella kimenete üres." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "22" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A változóra a továbbiakban is lehet hivatkozni.\n", + "i * 2" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# A változó értéke természetesen változtatható.\n", + "i = 42" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "42" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "i" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# Az értékadást lehet kombinálni a többi művelettel.\n", + "i += 1 # ekvivalens az i = i + 1 értékadással" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "43" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "i" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.3333333333333335" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Lebegőpontos osztás.\n", + "7 / 3" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Egészosztás (levágja a törtrészt). Sok hibalehetőséget megelőz, hogy külön műveleti jele van.\n", + "7 // 3" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Maradékképzés.\n", + "7 % 3" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1024" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Van hatványozás is, ** a műveleti jele.\n", + "2**10" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [Lebegőpontos szám](https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex)\n", + "\n", + "- A [lebegőpontos számábrázolás](https://hu.wikipedia.org/wiki/Lebeg%C5%91pontos_sz%C3%A1m%C3%A1br%C3%A1zol%C3%A1s) lehetővé teszi a valós számokkal történő, közelítő számolást.\n", + "- A Python lebegőpontos típusa az IEEE-754 szabvány dupla pontosságú (64 bites double) típusát valósítja meg." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3.44" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Lebegőpontos állandókat a tizedespont használatával tudunk megadni.\n", + "2.34 + 1.1" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.4142135623730951" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Gyök kettő (közelítő) kiszámítása.\n", + "2**0.5" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "# Hozzunk létre egy f nevű, lebegőpontos típusú változót!\n", + "f = 2.6" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "float" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A type függvénnyel tudjuk lekérdezni f típusát.\n", + "type(f)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "int" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...vagy bármely más érték típusát.\n", + "type(2 * 3 - 10)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "# Tegyünk most f-be egy int típusú értéket!\n", + "# Python-ban ez minden probléma nélkül megtehető.\n", + "f = 20" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "20" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "f" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "int" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(f)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [Komplex szám](https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex)\n", + "- A Python támogatja a komplex számokkal való számolást, külső könyvtárak használata nélkül." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-0.2+0.4j)" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Osztás algebrai alakban.\n", + "(1 + 2j) / (3 - 4j)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(3.6709073923227765e-14+1j)" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A képzetes egység hatványozása.\n", + "1j**2021" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [Sztring](https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str)\n", + "\n", + "- A sztring adattípus szöveges értékek tárolására szolgál.\n", + "- Pythonban a sztring nem más mint [Unicode](https://hu.wikipedia.org/wiki/Unicode) szimbólumok (másnéven Unicode karakterek) nem módosítható sorozata." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'alma'" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A sztringállandót ' jelekkel határoljuk.\n", + "'alma'" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'körte'" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...de lehet használni \" jeleket is.\n", + "\"körte\"" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "alma\n" + ] + } + ], + "source": [ + "# Az előző cellák kimenetében a ' nem a sztring része, csak az adattípust jelzi.\n", + "# Írjuk ki a sztring tartalmát, határoló jelek nélkül!\n", + "print('alma')" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "str" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A type függvény most is működik.\n", + "type('alma')" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'I ♥ ♬'" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Unicode szimbólumokat tartalmazó sztring.\n", + "'I ♥ ♬'" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "5" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A sztring hossza (Unicode szimbólumok száma):\n", + "len('I ♥ ♬')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [Logikai érték](https://docs.python.org/3/library/stdtypes.html#boolean-values)\n", + "- A logikai igaz értéket a *True*, a hamisat a *False* jelöli. A nagy kezdőbetű fontos, a Python különbözőnek tekinti a kis- és nagybetűket." + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "# Hozzunk létre logikai típusú változót!\n", + "b = True" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "bool" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(b)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n", + "False\n" + ] + } + ], + "source": [ + "# Logikai ÉS művelet.\n", + "print(True and True)\n", + "print(True and False)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "False\n", + "True\n" + ] + } + ], + "source": [ + "# Logikai VAGY művelet.\n", + "print(False or False)\n", + "print(False or True)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Logikai tagadás.\n", + "not True" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az összehasonlító műveletek eredménye logikai érték.\n", + "2 < 3" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "5 >= 11" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Pythonban az egyenlőségvizsgálat műveleti jele ==.\n", + "2 == 3" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "4 == 4" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "10 != 20 # != jelentése: nem egyenlő" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [None](https://docs.python.org/3/library/stdtypes.html#the-null-object)\n", + "- A szó jelentése *semmi* vagy *egyik sem*. A Pythonban a None értéknek helykitöltő szerepe van. Ezzel jelölhetjük pl. a hiányzó vagy érvénytelen eredményt vagy az alapértelmezett beállítást. " + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "NoneType" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A None érték típusa.\n", + "type(None)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "# Ha a cella utolsó kifejezése None értékű, akkor nincs kimenet.\n", + "1 + 1\n", + "None" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Konverzió\n", + "\n", + "Az adattípusok neve függvényként használható az adott adattípusra való konvertálásra, amennyiben a konverziónak van értelme." + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "12" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "int('12') # str => int" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "int(2.7) # float => int" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "int(True) # bool => int" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.7" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "float('2.7') # str => float" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "bool(0) # int => bool" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "invalid literal for int() with base 10: 'sör'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[47], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;28mint\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124msör\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", + "\u001b[1;31mValueError\u001b[0m: invalid literal for int() with base 10: 'sör'" + ] + } + ], + "source": [ + "int('sör')" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/01_gyak.ipynb b/01_gyak.ipynb new file mode 100644 index 0000000..29ffffd --- /dev/null +++ b/01_gyak.ipynb @@ -0,0 +1,156 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Előadás anyag\n", + "Nézzük meg az 1. előadás anyagát tartalmazó Jupyter notebook (01_ea.ipynb) tartalmát! Futtassuk az egyes cellákat, módosítsunk, kisérletezzünk szabadon!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Feladatok\n", + "Határozzuk meg az alábbi kifejezések értékét! Ahol szükséges, ott használjunk változókat, amelyek értékeit értékadó utasításokkal adjuk meg! Az eredményeket jelenítsük meg kétféle módon is: kifejezésként megadva, ill. a print függvény segítségével!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Hányszor van meg a 111-ben a 27 és mennyi a maradék?\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Egy síkbeli pont távolsága az origótól\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Egy adott sugarú kör területe és kerülete\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Egy adott karakter ASCII kódja\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Egy adott karakter angol kisbetű-e?\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Egy komplex szám abszolút értéke\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Négyzetgyök 2 értéke komplex szám(ok) segítségével meghatározva\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Használjuk a type függvényt különféle típusú kifejezések eredménytípusának a meghatározására!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Próbáljon ki néhány típuskonverziót!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Mutassa meg, hogy az előjel vagy a hatványozás művelet az erősebb prioritású a Python-ban!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Házi feladatok\n", + "- Két adott, zárt intervallum a valós számagyenesen átfed-e vagy sem?\n", + "- Két adott, síkbeli körnek van-e közös pontja vagy sem?\n", + "- Készítsünk kifejezést a kizáró vagy (xor) logikai műveletre! Ez egy kétoperandusú művelet, ami pontosan akkor igaz, ha az egyik operandus igaz, a másik nem!" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/02_ea.ipynb b/02_ea.ipynb new file mode 100644 index 0000000..e43f253 --- /dev/null +++ b/02_ea.ipynb @@ -0,0 +1,702 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## [Standard adatfolyamok](https://en.wikipedia.org/wiki/Standard_streams)\n", + "\n", + "Az operációs rendszer indításkor minden folyamathoz hozzárendel 3 szabványos adatfolyamot: a [standard bemenetet](https://docs.python.org/3/library/sys.html#sys.stdin), a [standard kimenetet](https://docs.python.org/3/library/sys.html#sys.stdout), és a [standard hibakimenetet](https://docs.python.org/3/library/sys.html#sys.stderr). Alapértelmezés szerint a standard bemenet a billentyűzettel, a standard kimenet és hibakimenet pedig a képernyővel van összekötve. Ez a beállítás módosítható, pl. a standard bemenet érkezhet egy fájlból vagy egy másik programból, a standard kimenet és hibakimenet pedig íródhat fájlba vagy továbbítódhat másik programnak." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Standard bemenet\n", + "\n", + "- A standard bemenetről adatokat bekérni az [input](https://docs.python.org/3/library/functions.html#input) függvény segítségével lehet.\n", + "- Az eredmény sztring típusú. Ha más adattípusra van szükség, akkor a konvertálni kell." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Kérek egy szöveget: alma\n" + ] + }, + { + "data": { + "text/plain": [ + "'alma'" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Sztring típusú adat beolvasása.\n", + "s = input('Kérek egy szöveget: ')\n", + "s" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Kérek egy egész számot: 23\n" + ] + }, + { + "data": { + "text/plain": [ + "23" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Egész típusú adat beolvasása.\n", + "n = int(input('Kérek egy egész számot: '))\n", + "n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Standard kimenet és hibakimenet\n", + "\n", + "- A standard kimenetre és hibakimenetre kiírni a [print](https://docs.python.org/3/library/functions.html#print) függvény segítségével lehet." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "hello\n", + "bello\n" + ] + } + ], + "source": [ + "# Kiírás a standard kimenetre.\n", + "print('hello')\n", + "print('bello')" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "hellobello" + ] + } + ], + "source": [ + "# Kiírás soremelés nélkül.\n", + "print('hello', end='')\n", + "print('bello', end='')" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "# Egyetlen soremelés kiírása.\n", + "print()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Hiba történt!\n" + ] + } + ], + "source": [ + "# Kiírás a standard hibakimenetre.\n", + "import sys\n", + "print('Hiba történt!', file=sys.stderr)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [Formázott kiírás](https://docs.python.org/3/tutorial/inputoutput.html#fancier-output-formatting)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Az első megoldás 2.5, a második megoldás 4.78.\n" + ] + } + ], + "source": [ + "# Formázott kiírás f-sztringgel.\n", + "x1 = 2.5\n", + "x2 = 4.78\n", + "print(f'Az első megoldás {x1}, a második megoldás {x2}.')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "első megoldás: 2.5, második megoldás: 4.8\n" + ] + } + ], + "source": [ + "# Kiírás 1 tizedesjegy pontossággal.\n", + "print(f'első megoldás: {x1:.1f}, második megoldás: {x2:.1f}')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "egész szám: 42, sztring: alma\n" + ] + } + ], + "source": [ + "# Egész szám ill. sztring kiírása.\n", + "i = 42\n", + "s = 'alma'\n", + "print(f'egész szám: {i}, sztring: {s}')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Az első megoldás 2.500000, a második megoldás 4.780000.\n" + ] + } + ], + "source": [ + "# Formázott kiírás % operátorral.\n", + "x1 = 2.5\n", + "x2 = 4.78\n", + "print('Az első megoldás %f, a második megoldás %f.' % (x1, x2))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Az első megoldás 2.5, a második megoldás 4.8.\n" + ] + } + ], + "source": [ + "# Kiírás 1 tizedesjegy pontossággal.\n", + "print('Az első megoldás %.1f, a második megoldás %.1f.' % (x1, x2))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Az első megoldás 2.500\n" + ] + } + ], + "source": [ + "# Kiírás adott tizedesjegy pontossággal.\n", + "t = 3\n", + "print(f'Az első megoldás {x1:.{t}f}')" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Az első megoldás 2.500\n" + ] + } + ], + "source": [ + "# Kiírás adott tizedesjegy pontossággal.\n", + "t = 3\n", + "print('Az első megoldás %.*f' % (t, x1))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "egész szám: 42, sztring: alma\n" + ] + } + ], + "source": [ + "# Egész szám ill. sztring kiírása.\n", + "i = 42\n", + "s = 'alma'\n", + "print('egész szám: %d, sztring: %s' % (i, s))" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Egy meg egy az 2.'" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Megjegyzés: A f-sztring ill. a % operátor\n", + "# kiírás nélkül is alkalmazható, sztringműveletként.\n", + "f'Egy meg egy az {1 + 1}.'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Vezérlési szerkezetek\n", + "\n", + "- Pythonban a vezérlési szerkezetek belsejét indentálással (azaz beljebb írással) kell jelölni.\n", + "- Emiatt garantált, hogy a program megjelenése és logikai jelentése összhangban van." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [if utasítás](https://docs.python.org/3/reference/compound_stmts.html#the-if-statement)\n", + "\n", + "- Szintaxis:\n", + "```\n", + " if FELTÉTEL1:\n", + " UTASÍTÁS1\n", + " elif FELTÉTEL2:\n", + " UTASÍTÁS2\n", + " else:\n", + " UTASÍTÁS3\n", + "```\n", + "\n", + "- Működés:\n", + "``` \n", + " +-----------+ igaz +-----------+\n", + " --->| FELTÉTEL1 |---+-------->| UTASÍTÁS1 |-----------------------------+--->\n", + " +-----------+ | +-----------+ |\n", + " | |\n", + " | hamis +-----------+ igaz +-----------+ |\n", + " +-------->| FELTÉTEL2 |---+-------->| UTASÍTÁS2 |---+\n", + " +-----------+ | +-----------+ |\n", + " | |\n", + " | hamis +-----------+ |\n", + " +-------->| UTASÍTÁS3 |---+\n", + " +-----------+\n", + "```\n", + "- Megjegyzések:\n", + " + Több elif ág is szerepelhet.\n", + " + Az elif ágak és az else ág is elhagyható.\n", + " + Ha az utasítás 1 soros, akkor írható az if-fel elif-fel ill. az else-szel azonos sorba." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hány éves vagy? 16\n", + "Sajnos nem adhatok sört.\n" + ] + } + ], + "source": [ + "# Példa: Kérsz sört?\n", + "x = int(input('Hány éves vagy? '))\n", + "if x < 18:\n", + " print('Sajnos nem adhatok sört.') \n", + "else:\n", + " print('Kérsz sört?')" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a: 1\n", + "b: -3\n", + "c: 2\n", + "x1=2.0, x2=1.0\n" + ] + } + ], + "source": [ + "# Példa: Másodfokú egyenlet megoldó.\n", + "\n", + "# együtthatók bekérése\n", + "a = float(input('a: '))\n", + "b = float(input('b: '))\n", + "c = float(input('c: '))\n", + "\n", + "# diszkrimináns kiszámítása\n", + "d = b**2 - 4 * a * c\n", + "\n", + "# elágazás\n", + "if d > 0: \n", + " # 2 megoldás\n", + " x1 = (-b + d**0.5) / (2 * a)\n", + " x2 = (-b - d**0.5) / (2 * a)\n", + " print(f'x1={x1}, x2={x2}')\n", + "elif d == 0: \n", + " # 1 megoldás\n", + " x1 = -b / (2 * a)\n", + " print(f'x1={x1}')\n", + "else:\n", + " # 0 megoldás\n", + " print('Nincs valós megoldása.')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [while utasítás](https://docs.python.org/3/reference/compound_stmts.html#the-while-statement)\n", + "\n", + "- Szintaxis:\n", + "```\n", + " while FELTÉTEL:\n", + " UTASÍTÁS\n", + "```\n", + "\n", + "- Működés:\n", + "```\n", + " +----------+ igaz\n", + " +<-----| UTASÍTÁS |--------+\n", + " | +----------+ |\n", + " | |\n", + " | +----------+ | hamis\n", + " ---+----->| FELTÉTEL |--------+-------->\n", + " +----------+ \n", + "```\n", + "- Megjegyzések:\n", + " + Egy jól megírt program esetén az utasítás a feltételt előbb-utóbb hamisra állítja. (Ellenkező esetben, ha a feltétel igaz, akkor az is marad, így végtelen ciklus keletkezik.)\n", + " + Akkor érdemes while ciklust alkalmazni, ha a ciklus elején még nem tudjuk pontosan az iterációk számát." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hány pontot értél el? 10\n", + "Sajnos nem sikerült. Tanulj még!\n", + "Hány pontot értél el? 8\n", + "Sajnos nem sikerült. Tanulj még!\n", + "Hány pontot értél el? 12\n", + "Gratulálok, átmentél!\n" + ] + } + ], + "source": [ + "# Példa: Móricka a programozásvizsgán.\n", + "while int(input('Hány pontot értél el? ')) < 12:\n", + " print('Sajnos nem sikerült. Tanulj még!')\n", + "print('Gratulálok, átmentél!')" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "# Példa végtelen ciklusra.\n", + "#while True:\n", + "# pass # üres utasítás" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [for utasítás](https://docs.python.org/3/reference/compound_stmts.html#the-for-statement)\n", + "\n", + "- Szintaxis:\n", + "```\n", + " for ELEM in SZEKVENCIA:\n", + " UTASÍTÁS\n", + "```\n", + "\n", + "- Működés:\n", + "```\n", + " +----------+ van még elem\n", + " +<-----| UTASÍTÁS |<----------------+ \n", + " | +----------+ |\n", + " | |\n", + " | +---------------------+ |\n", + " ------+----->| vegyük a SZEKVENCIA |------+------------------->\n", + " | következő ELEMÉt | nincs több elem\n", + " +---------------------+\n", + "```\n", + "- Megjegyzések:\n", + " + A szekvencia lehet egész számok folytonos sorozata, de lehet más is (pl. sztring, tuple, lista, halmaz, szótár, megnyitott fájl).\n", + " + Akkor érdemes for ciklust alkalmazni, ha A) a szekvencia már rendelkezésre áll vagy B) a ciklus kezdetekor tudjuk az iterációk számát." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "range(0, 5)" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Értéktartomány (range) létrehozása.\n", + "r = range(5)\n", + "r" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0, 1, 2, 3, 4]" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list(r)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list(range(10, 20))" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[3, 5, 7, 9, 11]" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list(range(3, 12, 2))" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "n: 5\n", + "1\n", + "4\n", + "9\n", + "16\n", + "25\n" + ] + } + ], + "source": [ + "# Példa: Első n négyzetszám kiírása.\n", + "n = int(input('n: '))\n", + "for i in range(1, n + 1):\n", + " print(i**2)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "n: 5\n", + "*****" + ] + } + ], + "source": [ + "# Példa: n darab * karakter kiírása.\n", + "n = int(input('n: '))\n", + "for i in range(n):\n", + " print('*', end='')" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/02_gyak.ipynb b/02_gyak.ipynb new file mode 100644 index 0000000..d169429 --- /dev/null +++ b/02_gyak.ipynb @@ -0,0 +1,109 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Előadás anyag\n", + "Nézzük meg a 2. heti előadás anyagát tartalmazó Jupyter notebook (02_ea.ipynb) tartalmát! Futtassuk az egyes cellákat, módosítsunk, kisérletezzünk szabadon!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Feladatok\n", + "Készítsünk programokat az alábbi feladatokra!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Szekvencia\n", + "- Adott egy téglatest három oldalának a hossza. Határozzuk meg a test térfogatát és felszínét!\n", + "- Adott két hallgató a nevével és a tanulmányi átlageredményével. Írjuk ki az adatokat két sorban úgy, hogy egy sorban egy hallgató legyen a két adatával, először a név, aztán az eredmény. Az eredmények legyenek 2 tizedesjegyűek és egymás alá igazítottak!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Szelekció\n", + "- Adott két szám, mint input adat. Kérjük be őket és írjuk ki a kisebbiket! Pl. 3, 2 -> 2; 1, 1 -> 1. A megoldáshoz ne használja a min függvényt!\n", + "- Oldjuk meg a fentebbi két hallgató adatainak kiírását abban az esetben is, amikor nem tudjuk a nevek, ill. az érdemjegyek maximális hosszát (pl. az eredmények ne 1-től 5-ig terjedő valós számok, hanem tetszőleges valós számok legyenek)!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Iteráció\n", + "- Írjuk ki 1-től 10-ig az egész számokat (mindkét ciklusfajtával)!\n", + "- Csak a páros számokat írjuk ki (az előbbi intervallumból)!\n", + "- Általánosítsuk az előző feladatot egy $[a, b]$ zárt intervallumba eső, $c$-vel maradék nélkül osztható egész számok kiírására, ahol $a, b, c$ egész számok!\n", + "- A számokat egy sorba írjuk ki (egy-egy szóközzel elválasztva)!\n", + "- Írjuk ki a valós számokat 0-tól 1-ig egytizedes lépésekkel!\n", + "- Írjunk ki egy $nxn$ -es háromszöget * karakterekből két, egymásba ágyazott for ciklussal!\n", + "- Döntsük el két, pozitív egész számról azt, hogy [relatív prímek](https://hu.wikipedia.org/wiki/Relatív_prímek)-e vagy sem!\n", + "- Határozzuk meg a [binomiális együttható](https://hu.wikipedia.org/wiki/Binomiális_együttható) értékét adott $n>0$ és $n>=k>0$ egész számokra!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Házi feladatok\n", + "- Egy szobát szeretnénk kifesteni. Ismerjuk a szoba (mint téglatest) három oldalának hosszát (méterben), az ablakok és az ajtók összes felületét (négyzetméterben), valamint azt, hogy 1 liter festék hány négyzetméter lefestésére elegendő. Meghatározandó, hogy hány liter festék szükséges a szoba falainak és mennyezetének egyszeri lefestéséhez (a padlót, az ablakokat és az ajtókat nem kell lefesteni)!\n", + "- Kérjünk be három számot és írjuk ki a legkisebbet! A megoldáshoz ne használja a min függvényt!\n", + "- Határozzuk meg két adott, síkbeli egyenes metszéspontját!\n", + "- Bővítsük az előadás másodfokú egyenlet megoldó programját úgy, hogy az komplex gyököket is meghatározzon!\n", + "- Képzeljünk el egy olyan céltáblát, aminek a középpontja az origó és a találati körök sugara egyesével nő, azaz a legkisebb kör 1, a legnagyobb 10 sugarú. Meghatározandó egy adott lövés (mint síkbeli pont) találata! Ha a lövés a legkisebb (1 sugarú) körben van, akkor 10-t ér, ha abban nincs, de a 2 sugarú körben benne van, akkor 9-t, és így tovább. Ha a 10-es sugarú körben sincs benne, akkor 0-t ér. Egy köríven lévő pontot a körbe esőnek vegyünk (pl. az (1, 0) pont 10-est ér). A megoldást (lehetőleg) ne egy 11 ágú szelekcióval (vagy iterációval) végezzük!\n", + "- Határozzuk meg két pozitív egész szám legnagyobb közös osztóját, ill. legkisebb közös többszörösét!\n", + "- Írjuk ki a [Pascal háromszög](https://hu.wikipedia.org/wiki/Pascal-háromszög) első $n$ darab sorát, ahol $n$ értéke legyen input adat!" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/03_ea.ipynb b/03_ea.ipynb new file mode 100644 index 0000000..f6b8b91 --- /dev/null +++ b/03_ea.ipynb @@ -0,0 +1,1066 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### A [math](https://docs.python.org/3/library/math.html) modul\n", + "- Alapvető matematikai függvényeket tartalmaz.\n", + "- Jótanács: Egy NumPy (lásd később) alapú kódban ne a math modul függvényeit használjuk, hanem a NumPy beépített függvényeit!" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# A math modul importálása.\n", + "import math" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.718281828459045" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Exponenciális függvény.\n", + "math.exp(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.302585092994046" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Természetes alapú logaritmus.\n", + "math.log(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3.0" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Adott alapú (most 2-es) logaritmus.\n", + "math.log(8, 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.0" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Trigonometrikus függvények és inverzeik (a szöget radiánban adjuk meg).\n", + "math.sin(0)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "math.cos(0)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.0" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "math.asin(0)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.0" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "math.acos(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3.141592653589793" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Fok => radián átváltás.\n", + "math.radians(180)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "179.99469134034814" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Radián => fok átváltás.\n", + "math.degrees(3.1415)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.9999999999999999" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "math.tan(math.radians(45))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3.141592653589793" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# pi\n", + "math.pi" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.718281828459045" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# e\n", + "math.e" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [Sztring](https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str)\n", + "\n", + "- A sztring adattípus szöveges értékek tárolására szolgál.\n", + "- Python-ban a sztring nem más mint [Unicode](https://hu.wikipedia.org/wiki/Unicode) szimbólumok (másnéven Unicode karakterek) nem módosítható sorozata." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'alma'" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A sztringállandót ' jelekkel határoljuk.\n", + "'alma'" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'körte'" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...de lehet használni \" jeleket is.\n", + "\"körte\"" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "alma\n" + ] + } + ], + "source": [ + "# Az előző cellák kimenetében a ' nem a sztring része, csak az adattípust jelzi.\n", + "# Írjuk ki a sztring tartalmát, határoló jelek nélkül!\n", + "print('alma')" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "str" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A type függvény most is működik.\n", + "type('alma')" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'I ♥ ♬'" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A sztringben természetesen használhatunk Unicode szimbólumokat.\n", + "'I ♥ ♬'" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "foo\"bar\n", + "foo'bar\n" + ] + } + ], + "source": [ + "# A kétféle határoló értelme:\n", + "print('foo\"bar')\n", + "print(\"foo'bar\")" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "foo'bar\n", + "foo\"bar\n" + ] + } + ], + "source": [ + "# ...egyébként le kéne védeni az ' ill. \" karaktert.\n", + "print('foo\\'bar')\n", + "print(\"foo\\\"bar\")" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "# Hozzunk létre egy s nevű sztringváltozót!\n", + "s = 'sör'" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'s'" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# s karaktereinek kinyerése. Az indexelés 0-tól indul!\n", + "s[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'ö'" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'r'" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s[2]" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "str" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A kinyert karaktert egy 1 hosszú sztring formájában kapjuk vissza.\n", + "type(s[0])" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "ename": "IndexError", + "evalue": "string index out of range", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[26], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# Túlindexelés esetén hibaüzenetet kapunk.\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m s[\u001b[38;5;241m3\u001b[39m]\n", + "\u001b[1;31mIndexError\u001b[0m: string index out of range" + ] + } + ], + "source": [ + "# Túlindexelés esetén hibaüzenetet kapunk.\n", + "s[3]" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'str' object does not support item assignment", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[27], line 3\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# A sztring karaktereit nem lehet módosítani!\u001b[39;00m\n\u001b[0;32m 2\u001b[0m \u001b[38;5;66;03m# (Majd később meglátjuk, hogy miért.)\u001b[39;00m\n\u001b[1;32m----> 3\u001b[0m s[\u001b[38;5;241m0\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m'\u001b[39m\n", + "\u001b[1;31mTypeError\u001b[0m: 'str' object does not support item assignment" + ] + } + ], + "source": [ + "# A sztring karaktereit nem lehet módosítani!\n", + "# (Majd később meglátjuk, hogy miért.)\n", + "s[0] = 'b'" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "# Természetesen s-nek adhatunk új értéket.\n", + "s = 'xör'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Megjegyzés: Az értékadás megtörténik, de magának az értékadó kifejezésnek nincs eredménye. Emiatt a cellának nincsen kimenete." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "xör\n" + ] + } + ], + "source": [ + "# Írjuk ki s tartalmát!\n", + "print(s)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "5" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A sztring hossza (Unicode szimbólumok száma):\n", + "len('Béla♥')" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'sörbor'" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Sztringek összefűzése.\n", + "'sör' + 'bor'" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Tartalmazásvizsgálat.\n", + "'ka' in 'abrakadabra'" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "'xyz' in 'abrakadabra'" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "b'B\\xc3\\xa9la\\xe2\\x99\\xa5'" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Sztringből a kódolás műveletével képezhetünk bájtsorozatot.\n", + "'Béla♥'.encode('utf-8')" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "bytes" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az eredmény típusa.\n", + "type('Béla♥'.encode('utf-8'))" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "8" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A bájtok száma nagyobb lehet, mint a Unicode szimbólumok száma!\n", + "len('Béla♥'.encode('utf-8'))" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n", + "2\n", + "2\n", + "2\n", + "2\n", + "2\n", + "2\n", + "2\n", + "2\n" + ] + } + ], + "source": [ + "# Hány bájton tárolódnak a magyar ábécé ékezetes kisbetűi UTF-8 kódolás esetén?\n", + "print(len('á'.encode('utf-8')))\n", + "print(len('é'.encode('utf-8')))\n", + "print(len('í'.encode('utf-8')))\n", + "print(len('ó'.encode('utf-8')))\n", + "print(len('ö'.encode('utf-8')))\n", + "print(len('ő'.encode('utf-8')))\n", + "print(len('ú'.encode('utf-8')))\n", + "print(len('ü'.encode('utf-8')))\n", + "print(len('ű'.encode('utf-8')))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "🤔🤔🤔 A fenti kód tele van ismétléssel. Gyakorlaton feladat lesz ezt rövidebben megoldani!" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "3\n", + "3\n" + ] + } + ], + "source": [ + "# Hány bájton tárolódik a ♥ és a ♬ szimbólum?\n", + "print(len('♥'.encode('utf-8')))\n", + "print(len('♬'.encode('utf-8')))" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Béla♥'" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Bájtsorozatból a dekódolás műveletével képezhetünk sztringet.\n", + "b'B\\xc3\\xa9la\\xe2\\x99\\xa5'.decode('utf-8')" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "''" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Üres sztring létrehozása.\n", + "''" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len('')" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'valami'" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Fehér karakterek (szóköz, tabulátor, sortörés) eltávolítása a sztring elejéről és végéről.\n", + "' valami\\t\\n'.strip()" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'valami'" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Megadott karakterek eltávolítása a sztring elejéről és végéről.\n", + "'++++valami---++----'.strip('+-')" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'álmos'" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Kisbetűssé alakítás.\n", + "'Álmos'.lower()" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'KUTYA13'" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Nagybetűssé alakítás.\n", + "'kutya13'.upper()" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'hahaha'" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Sztring ismétlése.\n", + "'ha' * 3" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a\n", + "l\n", + "m\n", + "a\n" + ] + } + ], + "source": [ + "# Iterálás egy sztring karakterein.\n", + "s = 'alma'\n", + "for c in s:\n", + " print(c)" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a\n", + "l\n", + "m\n", + "a\n" + ] + } + ], + "source": [ + "# Iterálás egy sztring karakterein index segítségével.\n", + "s = 'alma'\n", + "for i in range(len(s)):\n", + " print(s[i])" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "# A random modul importálása\n", + "import random" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n" + ] + } + ], + "source": [ + "# A random modul randint függvényének használata\n", + "# Egy véletlen 5-ös lottószám generálása\n", + "print(random.randint(1, 90))" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/03_gyak.ipynb b/03_gyak.ipynb new file mode 100644 index 0000000..cefc777 --- /dev/null +++ b/03_gyak.ipynb @@ -0,0 +1,77 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Előadás anyag\n", + "Nézzük meg a 3. heti előadás anyagát tartalmazó Jupyter notebook (03_ea.ipynb) tartalmát! Futtassuk az egyes cellákat, módosítsunk, kisérletezzünk szabadon!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Próbáljunk ki (hívjunk meg) néhány, sztringekhez tartozó metódust (pl. count, strip, ... )!\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Feladatok\n", + "Készítsünk programokat az alábbi feladatokra!\n", + "- Határozzuk meg egy komplex szám konjugáltját, valós és képzetes részét!\n", + "- Számoljuk ki 60 fok színuszát! Ellenőrizzük a megoldást úgy, hogy kiszámoljuk négyzetgyök 3 felét is!\n", + "- Határozzuk meg egy polárkoordinátákkal adott (r, φ) síkbeli pont derékszögű koordinátáit! A φ szög fokban adott! Pl. (1, 90) -> (0, 1)\n", + "- Alakítsunk át egy angol kisbetűt úgy, hogy az ábécé következő karakterét kapjuk! A 'z' betűből 'a' legyen! Pl. 'a' -> 'b'\n", + "- Generáljunk véletlenszerűen egy angol betűt! Próbáljuk szelekció nélkül (is) megoldani a feladatot!\n", + "- Generáljunk véletlenszerűen egy Neptun kódot! A Neptun kód egy 6 db karakterből álló sztring, amelyben angol nagybetűk és számjegy karakterek lehetnek!\n", + "- Írjuk ki azt, hogy hány bájton tárolódnak a magyar ékezetes kisbetűk! A megoldás ne csak szekvenciát tartalmazzon!\n", + "- Írjunk ki egy $nxn$ -es háromszöget * karakterekből egy db ciklus segítségével!\n", + "- Írjuk ki egy sztring karaktereit fordított sorrendben! Pl. 'abc' -> 'cba'\n", + "- Fordítsuk meg egy sztring karaktereinek sorrendjét! Pl. 'Réti pipitér' -> 'rétipip itéR'\n", + "- Határozzuk meg az angol kisbetűs magánhangzók darabszámát egy sztringben! Pl. 'Almafa, körtefa' -> 4" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Házi feladatok\n", + "- Készítsünk egyszerű számkitalálós játékot! Generáljunk egy véletlen egész számot 1-től 100-ig, majd kérjünk be tippeket a felhasználótól mindaddig, amíg a felhasználó el nem találja a generált számot! A program minden tipp után írja ki, hogy a megadott tipp kicsi, nagy vagy helyes volt-e!\n", + "- Valósítsuk meg a Caesar-kódolást adott eltolással egy csak angol kisbetűket tartalmazó szövegre! Pl. az 'abz' szöveg 1-es eltolással kódolt alakja: 'bca', a 'venividivici' szöveg 3-as eltolással kódolt alakja: 'yhqlylglylfl'." + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/04_ea.ipynb b/04_ea.ipynb new file mode 100644 index 0000000..66031ca --- /dev/null +++ b/04_ea.ipynb @@ -0,0 +1,990 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Kollekciók" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [Tuple](https://docs.python.org/3/library/stdtypes.html#tuples)\n", + "\n", + "- A tuple természetes számokkal indexelhető, nem módosítható tömb.\n", + "- Az elemeknek nem kell azonos típusúnak lenniük.\n", + "- Az indexelés O(1), a tartalmazásvizsgálat O(n) időben fut le, ahol n a tuple elemszáma." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Hozzunk létre egy t nevű, 3 elemű tuple változót!\n", + "t = (20, 30, 40)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(20, 30, 40)" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tuple" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Ellenőrizzük t típusát!\n", + "type(t)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az elemek számát a len függvénnyel kérdezhetjük le.\n", + "len(t)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "20" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Tuple elemeinek elérése (az indexelés 0-tól indul).\n", + "t[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "30" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "40" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t[2]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'tuple' object does not support item assignment", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[8], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# Az elemeken nem lehet módosítani!\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m t[\u001b[38;5;241m0\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m100\u001b[39m\n", + "\u001b[1;31mTypeError\u001b[0m: 'tuple' object does not support item assignment" + ] + } + ], + "source": [ + "# Az elemeken nem lehet módosítani!\n", + "t[0] = 100" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# A t változó persze kaphat új értéket.\n", + "t = (100, 30, 40)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# Az elemeknek nem kell azonos típusúnak lenniük.\n", + "t = (10, 2.5, 'alma', False, (10, 20))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(10, 2.5, 'alma', False, (10, 20))" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Tartalmazásvizsgálat.\n", + "'alma' in t" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "'körte' in t" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# Amennyiben nem okoz kétértelműséget, a ( és ) határoló elhagyható!\n", + "t = 20, 30, 40" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(20, 30, 40)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tuple" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(t)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "()" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Üres tuple létrehozása.\n", + "()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "# Egy elemű tuple létrehozása.\n", + "t = (42,)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(42,)" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "t" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [Lista](https://docs.python.org/3/library/stdtypes.html#lists)\n", + "\n", + "- A tuple módosítható változata. Új elemet is hozzá lehet adni, ill. meglévő elemeken is lehet módosítani.\n", + "- Az indexelés O(1), a tartalmazásvizsgálat O(n) időben fut le itt is." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "# Hozzunk létre egy l nevű, 4 elemű listaváltozót!\n", + "# Az elemeknek nem kell azonos típusúnak lenniük.\n", + "l = [2, 3, 4, 'körte']" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(list, 4)" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Ellenőrizzük l típusát, és kérdezzük le az elemek számát!\n", + "type(l), len(l)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Lista elemeinek elérése (az indexelés 0-tól indul).\n", + "l[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "l[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "ename": "IndexError", + "evalue": "list index out of range", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mIndexError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[24], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m l[\u001b[38;5;241m4\u001b[39m]\n", + "\u001b[1;31mIndexError\u001b[0m: list index out of range" + ] + } + ], + "source": [ + "l[4]" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "# Listaelem módosítása.\n", + "l[0] = 100" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[100, 3, 4, 'körte']" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "l" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "# Listába elemként beágyazhatunk másik listát.\n", + "l = [10, 20, 30, [40, 50]]" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[10, 20, 30, [40, 50]]" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "l" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "# Elem hozzáfűzése a lista végére.\n", + "l.append('sör')" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[10, 20, 30, [40, 50], 'sör']" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "l" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "# Elem beszúrása a lista adott indexű helyére.\n", + "l.insert(1, 'bor')" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[10, 'bor', 20, 30, [40, 50], 'sör']" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "l" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Tartalmazásvizsgálat.\n", + "'sör' in l" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "40 in l" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Elem indexének meghatározása (az első előfordulásé).\n", + "l.index(20)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "42 is not in list", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[37], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m l\u001b[38;5;241m.\u001b[39mindex(\u001b[38;5;241m42\u001b[39m)\n", + "\u001b[1;31mValueError\u001b[0m: 42 is not in list" + ] + } + ], + "source": [ + "l.index(42)" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[10, 20, 30, 40, 50]" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Egy szekvencia összes elemének hozzáfűzése a listához.\n", + "l = [10, 20, 30]\n", + "l.extend([40, 50])\n", + "l" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[10, 20, 30, [40, 50]]" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az extend különbözik az append-től!\n", + "l = [10, 20, 30]\n", + "l.append([40, 50])\n", + "l" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "30" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Adott indexű elem törlése.\n", + "l.pop(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[10, 20, [40, 50]]" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "l" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[40, 50]" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Utolsó elem törlése.\n", + "l.pop()" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[10, 20]" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "l" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[10, 20, 30, 'Pisti', 'Józsi']" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Két lista összefűzése egy új listába.\n", + "[10, 20, 30] + ['Pisti', 'Józsi']" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1]" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Lista többszörözése.\n", + "[0, 1] * 10" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Üres lista létrehozása.\n", + "[]" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[1, 2, 3], [4, 5, 6]]" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Egy 2x3-as mátrix\n", + "m = [[1, 2, 3], [4, 5, 6]]\n", + "m" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Konverzió\n", + "\n", + "Ezen adattípusok nevei is használhatók függvényként az adott adattípusra való konvertálásra, amennyiben a konverziónak van értelme." + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(1, 2, 3)" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tuple([1, 2, 3]) # list => tuple" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[4, 5, 6]" + ] + }, + "execution_count": 49, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list((4, 5, 6)) # tuple => list" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'[10, 20]'" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "str([10, 20])" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "int() argument must be a string, a bytes-like object or a real number, not 'list'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[51], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;28mint\u001b[39m([\u001b[38;5;241m10\u001b[39m, \u001b[38;5;241m20\u001b[39m])\n", + "\u001b[1;31mTypeError\u001b[0m: int() argument must be a string, a bytes-like object or a real number, not 'list'" + ] + } + ], + "source": [ + "int([10, 20])" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/04_gyak.ipynb b/04_gyak.ipynb new file mode 100644 index 0000000..f07456c --- /dev/null +++ b/04_gyak.ipynb @@ -0,0 +1,73 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Előadás anyag\n", + "Nézzük meg a 4. heti előadás anyagát tartalmazó Jupyter notebook (04_ea.ipynb) tartalmát! Futtassuk az egyes cellákat, módosítsunk, kisérletezzünk szabadon!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Próbáljunk ki (hívjunk meg) néhány, a sorokhoz, ill. a listákhoz tartozó metódust (pl. count, pop, ... )!\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Feladatok\n", + "Készítsünk programokat az alábbi feladatokra! Ne használjon olyan dolgokat, amelyekről még nem volt szó az előadáson (pl. sum, min, max függvények)!\n", + "- Határozzuk meg az összegét, átlagát, legkisebb és legnagyobb elemét egy számokat tartalmazó adatsornak! Pl. 3, 5, 2, 6 => összeg: 16, átlag: 4.0, minimum: 2, maximum: 6.\n", + "- Fizessünk ki egy euróban adott egész összeget a lehető legkevesebb címlet felhasználásával! Az euró címletei: 500, 200, 100, 50, 20, 10, 5, 2, 1 (amiket egy tuple segítségével kezeljünk)! Pl. 905 -> 1 db 500, 2 db 200, 1 db 5. \n", + "- Fordítsuk meg egy sztring karaktereinek sorrendjét lista segítségével! Pl. 'abc' -> 'cba'. (Tipp: használja a list.reverse és a str.join metódusokat!)\n", + "- Töröljünk ki egy adatsorból egy adott értéket, ahányszor csak előfordul! Pl. 1, 2, 1, 3-ból az 1-t -> 2, 3.\n", + "- Határozzuk meg egy adott mátrix sorminimumait! Feltehető, hogy a mátrix (mint listák listája) helyes (azaz minden sora ugyanolyan hosszú, minden elem azonos típusú, amelyekre értelmezett az összehasonlítás)! Az eredmény egy listába kerüljön!\n", + "- Oldjuk meg az előző feladatot úgy, hogy a sorminimumok helyett az oszlopmaximumokat határozzuk meg!\n", + "- Döntsük el egy négyzetes mátrixról, hogy szimmetrikus-e vagy sem! Ha minden elem megegyezik a főátlóra vetített tükörképével ($a_{i,j}=a_{j,i}$) akkor szimmetrikus, egyébként nem." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Házi feladatok\n", + "- Egy műkorcsolyaversenyen N (>=1) versenyző indul és M (>=3) bíró pontoz. Minden versenyző minden bírótól pontosan egy db pontot kap (ami 0-tól 6-ig egy valós szám)! Ismerjük a versenyzők nevét, nemzetiségét (3 betűs sztring), és a bíróktól kapott pontjaikat. Számítsuk ki a versenyzők átlagpontjait, majd készítsünk olyan listát, amelyben a versenyzők összes adata (név, nemzetiség, pontok, átlagpont) szerepel! Minden versenyző legyen külön sorban, a pontok két tizedesjeggyel jelenjenek meg, egymás alá igazítva!\n", + "- Oldjuk meg a feladatot úgy is, hogy az átlagpontba az adott versenyző legnagyobb és legkisebb pontjának egy-egy előfordulását nem számítjuk be (a bírók részrehajlását elkerülendő)!" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/05_ea.ipynb b/05_ea.ipynb new file mode 100644 index 0000000..157ba2b --- /dev/null +++ b/05_ea.ipynb @@ -0,0 +1,836 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Kollekciók" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [Halmaz](https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset)\n", + "\n", + "- A halmaz adattípus a matematikai halmazfogalom számítógépes megfelelője.\n", + "- Halmazt indexelni nem lehet, a tartalmazásvizsgálat O(1) időben fut le." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Hozzunk létre egy s nevű halmazváltozót!\n", + "s = {10, 20, 30}" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(set, 3)" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Ellenőrizzük s típusát és elemszámát!\n", + "type(s), len(s)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Tartalmazásvizsgálat.\n", + "20 in s" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "21 in s" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# Elem hozzáadása a halmazhoz.\n", + "s.add(40)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{10, 20, 30, 40}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{1, 2, 3, 4, 5, 6, 7}" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Halmazműveletek.\n", + "{1, 2, 3, 4, 5} | {4, 5, 6, 7} # unió" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{4, 5}" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "{1, 2, 3, 4, 5} & {4, 5, 6, 7} # metszet" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{1, 2, 3}" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "{1, 2, 3, 4, 5} - {4, 5, 6, 7} # kivonás" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{6, 7}" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "{4, 5, 6, 7} - {1, 2, 3, 4, 5}" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{10, 2.5, 'alma'}" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az elemek típusa nem feltétlenül azonos.\n", + "{10, 2.5, 'alma'}" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{(20, 30), 10, 2.5, 'alma'}" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A halmazba bármilyen nem módosítható típusú elemet be lehet tenni.\n", + "{10, 2.5, 'alma', (20, 30)}" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "unhashable type: 'list'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[13], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# ...módosíthatót viszont nem lehet!\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m {\u001b[38;5;241m10\u001b[39m, \u001b[38;5;241m2.5\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124malma\u001b[39m\u001b[38;5;124m'\u001b[39m, [\u001b[38;5;241m20\u001b[39m, \u001b[38;5;241m30\u001b[39m]}\n", + "\u001b[1;31mTypeError\u001b[0m: unhashable type: 'list'" + ] + } + ], + "source": [ + "# ...módosíthatót viszont nem lehet!\n", + "{10, 2.5, 'alma', [20, 30]}" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "# Elem eltávolítása.\n", + "s = {20, 30, 40}\n", + "s.remove(20)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{30, 40}" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "40\n", + "20\n", + "30\n" + ] + } + ], + "source": [ + "# Iterálás egy halmaz elemein (a sorrend meglepő is lehet).\n", + "s = {20, 30, 40}\n", + "for x in s:\n", + " print(x)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "set()" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Üres halmaz létrehozása.\n", + "set()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [Szótár](https://docs.python.org/3/library/stdtypes.html#mapping-types-dict)\n", + "\n", + "- A szótár kulcs-érték párok halmaza, ahol a kulcsok egyediek.\n", + "- A kulcs lehet egyszerű típus, tuple vagy bármely módosíthatatlan adatszerkezet.\n", + "- Indexelni a kulccsal lehet, O(1) időben." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "# Hozzunk létre egy d nevű szótárváltozót!\n", + "d = {'a': 10, 'b': 20}" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'a': 10, 'b': 20}" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Ellenőrizzük le d típusát és elemszámát!\n", + "type(d)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(d)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "20" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Létező kulcshoz tartozó érték lekérdezése.\n", + "d['b']" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "ename": "KeyError", + "evalue": "'banán'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[23], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# Nem létező kulcshoz tartozó érték lekérdezése.\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m d[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mbanán\u001b[39m\u001b[38;5;124m'\u001b[39m]\n", + "\u001b[1;31mKeyError\u001b[0m: 'banán'" + ] + } + ], + "source": [ + "# Nem létező kulcshoz tartozó érték lekérdezése.\n", + "d['banán']" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "# Kulcshoz tartozó érték módosítása.\n", + "d['a'] = 100" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'a': 100, 'b': 20}" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "# Új kulcs-érték pár beszúrása.\n", + "d['cc'] = 'valami'" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'a': 100, 'b': 20, 'cc': 'valami'}" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "# Kulcs-érték pár törlése.\n", + "del d['b']" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'a': 100, 'cc': 'valami'}" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Benne van-e egy kulcs a szótárban?\n", + "'cc' in d" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "'xx' in d" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "100 in d" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{(10, 20): 'sör', (30, 40): 'bor'}" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Akár tuple is lehet szótárkulcs.\n", + "{(10, 20): 'sör', (30, 40): 'bor'}" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a\n", + "b\n", + "c\n" + ] + } + ], + "source": [ + "# Iterálás egy szótár elemein.\n", + "d = {'a': 1, 'b': 2, 'c': 3}\n", + "for x in d:\n", + " # x-ben csak az aktuális kulcs van.\n", + " print(x)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "a 1\n", + "b 2\n", + "c 3\n" + ] + } + ], + "source": [ + "# Iterálás egy szótár elemein.\n", + "d = {'a': 1, 'b': 2, 'c': 3}\n", + "for x in d:\n", + " # Most a kulcsokhoz tartozó értékeket is kiírjuk.\n", + " print(x, d[x])" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{}" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Üres szótár létrehozása.\n", + "{}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Konverzió\n", + "\n", + "Ezen adattípusok nevei is használhatók függvényként az adott adattípusra való konvertálásra, amennyiben a konverziónak van értelme." + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{1, 2}" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "set((1, 1, 2)) # tuple => set" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{1, 2}" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "set([1, 1, 2]) # list => set" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'a': 1, 'b': 2}" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dict([('a', 1), ('b', 2)]) # párok listája => dict" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['a', 'b']" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list({'a': 1, 'b': 2}) # szótárkulcsok listája" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('a', 1), ('b', 2)]" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "list({'a': 1, 'b': 2}.items()) # dict => párok listája" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/05_gyak.ipynb b/05_gyak.ipynb new file mode 100644 index 0000000..0312fa8 --- /dev/null +++ b/05_gyak.ipynb @@ -0,0 +1,83 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Előadás anyag\n", + "Nézzük meg az 5. heti előadás anyagát tartalmazó Jupyter notebook (05_ea.ipynb) tartalmát! Futtassuk az egyes cellákat, módosítsunk, kisérletezzünk szabadon!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Egy hallgatói adatnyilvántartás\n", + "Készítsünk megfelelő adatszerkezete(ke)t egy hallgatói adatnyilvántartáshoz! A megkötéseket több lépésben adjuk meg, így a megoldások is több lépésben készíthetők el (mindig csak az adott lépésre fókuszálva)!\n", + "1. Egy hallgató adatai: név, Neptun kód, érdemjegyek. Minden hallgató ugyanazokat a tárgyakat tanulja (pl. 3 db tárgyat) és egy tárgyból mindenkinek pontosan egy db jegye van. \n", + "2. Legyen több (pl. két) hallgató a nyilvántartásban!\n", + "3. A tárgyaknak legyenek nevei!\n", + "4. A Neptun kód csak egyedi lehessen!\n", + "5. A hallgatók tanulhassanak különböző tárgyakat!\n", + "6. A hallgatók egy tárgyból több jegyet is kaphassanak!\n", + "7. A hallgatóknak lehessenek kedvenc tárgyai!\n", + "8. A hallgatók egyes adatait ne indexekkel, hanem nevekkel (Név, Neptun kód, Jegyek, Kedvencek) lehessen hivatkozni!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Feladatok\n", + "Készítsünk programokat az alábbi feladatokra! A megoldásoknál csak a tananyagban eddig elhangzott ismereteket használjuk!\n", + "- Határozzuk meg egy sztring különböző karaktereinek számát!\n", + "- Generáljunk véletlenszerűen ötöslottó számokat, azaz 5 db különböző egész számot az [1, 90] intervallumból!\n", + "- Generáljuk az $1, 2, ..., n$ számoknak egy véletlenszerű permutációját/sorrendjét!\n", + "- Adott $n$ személy életkora és testsúlya, amelyek egész számok. Határozzuk meg az egyes életkorokra vonatkozó átlagos testsúly értékeket! " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Házi feladat\n", + "- 'Gyúrjuk egybe' a hallgatói adatnyilvántartás lépéseit, azaz készítsünk olyan adatstruktúrát, ami az összes felmerült igényt képes 'kiszolgálni'!" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/05_gyak_mego.ipynb b/05_gyak_mego.ipynb new file mode 100644 index 0000000..62b3e8b --- /dev/null +++ b/05_gyak_mego.ipynb @@ -0,0 +1,761 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Egy hallgatói adatnyilvántartás\n", + "A megoldásokat több lépésben készítjük el, az adott lépésekre fókuszálva." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. lépés \n", + "Egy hallgató adatai: név, Neptun kód, érdemjegyek. Minden hallgató ugyanazokat a tárgyakat tanulja (pl. 3 db tárgyat) és egy tárgyból mindenkinek pontosan egy db jegye van." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('Gipsz Jakab', 'ABC123', 1, 2, 3)" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Ha az adatok nem módusulnak, akkor a tuple is megfelelő \n", + "('Gipsz Jakab', 'ABC123', 1, 2, 3)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Gipsz Jakab', 'ABC123', 1, 2, 3]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Ha az adatok módusulhatnak, akkor a lista a megfelelő \n", + "['Gipsz Jakab', 'ABC123', 1, 2, 3]" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'ABC123'" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Egy változóban is tárolhatók az adatok, ha később hivatkozni szeretnénk rá\n", + "h = ('Gipsz Jakab', 'ABC123', 1, 2, 3)\n", + "# A hallgató Neptun kódja (feltételezve a fenti adatsorrendet)\n", + "h[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Gipsz Jakab', 'XYZ000', 1, 2, 3]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Lista esetén módosíthatók is az adatok\n", + "h = ['Gipsz Jakab', 'ABC123', 1, 2, 3]\n", + "# A Neptun kód módosítása\n", + "h[1] = 'XYZ000'\n", + "h" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. lépés \n", + "Legyen több hallgató a nyilvántartásban!" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gipsz Jakab\n", + "5\n" + ] + } + ], + "source": [ + "# A hallgatókat (most két hallgatót) egy tuple-ben adjuk meg\n", + "\n", + "# Egy hallgató adatai tuple-ben\n", + "h = (('Gipsz Jakab', 'ABC123', 1, 2, 3),\n", + " ('Wincs Eszter', 'XYZ000', 2, 4, 5))\n", + "\n", + "# Az első hallgató neve\n", + "print(h[0][0])\n", + "\n", + "# Az utolsó hallgató 3. jegye\n", + "print(h[len(h) - 1][4])" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'tuple' object does not support item assignment", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# Az adatok nem módosíthatók\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mh\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m4\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m: 'tuple' object does not support item assignment" + ] + } + ], + "source": [ + "# Az adatok nem módosíthatók\n", + "h[1][4] = 2" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[['Gipsz Jakab', 'ABC123', 1, 2, 3], ['Wincs Eszter', 'XYZ000', 2, 4, 5]]\n", + "[['Móricka', 'XXX999', 1, 1, 1], ['Wincs Eszter', 'XYZ000', 2, 4, 5]]\n", + "[['Móricka', 'XXX999', 1, 1, 1], ['Wincs Eszter', 'XYZ000', 2, 4, 3]]\n" + ] + } + ], + "source": [ + "# A hallgatókat (most két hallgatót) egy listában adjuk meg\n", + "\n", + "# Egy hallgató adatai listában\n", + "h = [['Gipsz Jakab', 'ABC123', 1, 2, 3],\n", + " ['Wincs Eszter', 'XYZ000', 2, 4, 5]]\n", + "\n", + "print(h)\n", + "\n", + "# Az adatok módosíthatók\n", + "h[0] = ['Móricka', 'XXX999', 1, 1, 1]\n", + "print(h)\n", + "h[1][4] = 3 \n", + "print(h)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A jegyek elkülönítve is kezelhetők (például egy-egy listában)\n", + "h1 = [['Gipsz Jakab', 'ABC123', [1, 2, 3]],\n", + " ['Wincs Eszter', 'XYZ000', [2, 4, 5]]]\n", + "# Az első hallgató első jegye\n", + "h1[0][2][0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. lépés \n", + "A tárgyaknak legyenek nevei!" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "('Matematika', 'Fizika', 'Programozás')" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Egy külön változóba vesszük fel a tárgyak neveit (ahelyett, hogy minden hallgatóhoz felvennénk őket)\n", + "t = ('Matematika', 'Fizika', 'Programozás')\n", + "t" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[['Móricka', 'XXX999', 1, 1, 1], ['Wincs Eszter', 'XYZ000', 2, 4, 3]]\n", + "Móricka 1 Matematika\n" + ] + } + ], + "source": [ + "# A jegyek és a tárgyak sorrendje megegyező\n", + "print(h)\n", + "# Az első hallgató neve, első jegye és hozzá tartozó tárgy neve\n", + "print(h[0][0], h[0][2], t[0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4. lépés \n", + "A Neptun kód legyen egyedi!" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[['Gipsz Jakab', 'ABC123', 1, 2, 3],\n", + " ['Móricka', 'XXX999', 1, 1, 1],\n", + " ['Wincs Eszter', 'ABC123', 2, 4, 5]]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A lista nem 'védi' az egyediséget (azaz megenged egyforma Neptun kódokat)\n", + "h = [['Gipsz Jakab', 'ABC123', 1, 2, 3],\n", + " ['Móricka', 'XXX999', 1, 1, 1],\n", + " ['Wincs Eszter', 'ABC123', 2, 4, 5]]\n", + "h" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'ABC123': ['Wincs Eszter', 2, 4, 5], 'XXX999': ['Móricka', 1, 1, 1]}" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A szótár viszont csak egyedi kulcsokat enged meg\n", + "# A Neptun kód a kulcs, az értékek pedig az egyes hallgatók adatai egy-egy listában\n", + "# Azonos kulcs esetén az utoljára felvett adat marad csak meg a szótárban\n", + "h = {'ABC123':['Gipsz Jakab', 1, 2, 3],\n", + " 'XXX999':['Móricka', 1, 1, 1],\n", + " 'ABC123':['Wincs Eszter', 2, 4, 5]}\n", + "h" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "ename": "KeyError", + "evalue": "0", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;31m# A hallgatók elérése a szótárban már nem történhet index segítségével\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mh\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;31mKeyError\u001b[0m: 0" + ] + } + ], + "source": [ + "# A hallgatók elérése a szótárban már nem történhet index segítségével\n", + "h[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Wincs Eszter', 2, 4, 5]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A kulccsal kell indexelni\n", + "h['ABC123']" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Wincs Eszter'" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Egy adat elérése is csak a 'hallgatón keresztül' történhet\n", + "# Az ABC123 Neptun kódú hallgató neve\n", + "h['ABC123'][0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5. lépés \n", + "A hallgatók tanulhassanak különböző tárgyakat!" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[['Gipsz Jakab', 'ABC123', {'Matematika': 1, 'Fizika': 2, 'Programozás': 3}],\n", + " ['Móricka', 'XXX999', {'Mechanika': 1}],\n", + " ['Wincs Eszter', 'AAA123', {'Fizika': 2, 'Testnevelés': 5}]]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A tantárgyaknak a hallgatókhoz kell tartozni, így szótár a megfelelő adatstruktúra\n", + "h = [['Gipsz Jakab', 'ABC123', {'Matematika':1, 'Fizika':2, 'Programozás':3}],\n", + " ['Móricka', 'XXX999', {'Mechanika':1}],\n", + " ['Wincs Eszter', 'AAA123', {'Fizika':2, 'Testnevelés':5}]]\n", + "h" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az első hallgató hány tárgyat tanul\n", + "len(h[0][2])" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Tanul-e fizikát az első hallgató?\n", + "'Fizika' in h[0][2]" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Hányast kapott belőle?\n", + "h[0][2]['Fizika']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 6. lépés \n", + "A hallgatók egy tárgyból több jegyet is kaphassanak!" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[['Gipsz Jakab',\n", + " 'ABC123',\n", + " {'Matematika': [1, 2], 'Fizika': [2, 3], 'Programozás': [3, 4, 1]}],\n", + " ['Móricka', 'XXX999', {'Mechanika': [1, 1, 1]}],\n", + " ['Wincs Eszter', 'AAA123', {'Fizika': [2], 'Testnevelés': [5, 5, 5]}]]" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A tantárgyakhoz az 1 db érdemjegy helyett többet rendelünk (tuple vagy lista, itt most listát használunk)\n", + "h = [['Gipsz Jakab', 'ABC123', {'Matematika':[1, 2], 'Fizika':[2, 3], 'Programozás':[3, 4, 1]}],\n", + " ['Móricka', 'XXX999', {'Mechanika':[1, 1, 1]}],\n", + " ['Wincs Eszter', 'AAA123', {'Fizika':[2], 'Testnevelés':[5, 5, 5]}]]\n", + "h" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[2, 3]" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az első hallgató jegyei fizikából\n", + "h[0][2]['Fizika']" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['Gipsz Jakab',\n", + " 'ABC123',\n", + " {'Matematika': [1, 2], 'Fizika': [2, 3, 5], 'Programozás': [3, 4, 1]}]" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az első hallgató kapott egy új jegyet (egy 5-t) fizikából\n", + "h[0][2]['Fizika'].append(5)\n", + "h[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 7. lépés \n", + "A hallgatóknak lehessenek kedvenc tárgyai!" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[['Gipsz Jakab',\n", + " 'ABC123',\n", + " {'Matematika': 1, 'Fizika': 2, 'Programozás': 3},\n", + " {'Fizika'}],\n", + " ['Móricka', 'XXX999', {'Mechanika': 1}, {}],\n", + " ['Wincs Eszter',\n", + " 'AAA123',\n", + " {'Fizika': 2, 'Testnevelés': 5},\n", + " {'Fizika', 'Testnevelés'}]]" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A halmaz a megfelelő adatstruktúra a kedvenc tárgyaknak, felvesszük a hallgatókhoz (most utolsó adatként)\n", + "h = [['Gipsz Jakab', 'ABC123', {'Matematika':1, 'Fizika':2, 'Programozás':3}, {'Fizika'}],\n", + " ['Móricka', 'XXX999', {'Mechanika':1}, {}],\n", + " ['Wincs Eszter', 'AAA123', {'Fizika':2, 'Testnevelés':5}, {'Testnevelés', 'Fizika'}]]\n", + "h" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Van-e kedvenc tárgya az első hallgatónak?\n", + "len(h[0][3]) > 0\n" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az utolsó hallgató kedveli-e a Fizikát?\n", + "'Fizika' in h[len(h) - 1][3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 8. lépés \n", + "A hallgatók egyes adatait ne indexekkel, hanem nevekkel (Név, Neptun kód, Jegyek, Kedvencek) lehessen hivatkozni!" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'Név': 'Gipsz Jakab',\n", + " 'Neptun kód': 'ABC123',\n", + " 'Jegyek': {'Fizika': 5},\n", + " 'Kedvencek': {'Fizika'}},\n", + " {'Név': 'Móricka',\n", + " 'Neptun kód': 'XXX999',\n", + " 'Jegyek': {'Mechanika': 1},\n", + " 'Kedvencek': {}},\n", + " {'Név': 'Wincs Eszter',\n", + " 'Neptun kód': 'AAA123',\n", + " 'Jegyek': {'Fizika': 2, 'Testnevelés': 5},\n", + " 'Kedvencek': {'Fizika', 'Testnevelés'}}]" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Ehhez az egyes hallgatók adatait szótárba kell tennünk\n", + "h = [{'Név':'Gipsz Jakab', 'Neptun kód':'ABC123', 'Jegyek':{'Fizika':5}, 'Kedvencek':{'Fizika'}},\n", + " {'Név':'Móricka', 'Neptun kód':'XXX999', 'Jegyek':{'Mechanika':1}, 'Kedvencek':{}},\n", + " {'Név':'Wincs Eszter', 'Neptun kód':'AAA123', 'Jegyek':{'Fizika':2, 'Testnevelés':5}, 'Kedvencek':{'Testnevelés', 'Fizika'}}]\n", + "h" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gipsz Jakab {'Fizika': 5}\n" + ] + } + ], + "source": [ + "# Az első hallgató neve és érdemjegyei\n", + "print(h[0]['Név'], h[0]['Jegyek'])" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Fizika', 'Testnevelés'}" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A harmadik hallgató kedvenc tárgyai\n", + "h[2]['Kedvencek']" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/06_ea.ipynb b/06_ea.ipynb new file mode 100644 index 0000000..ac226ad --- /dev/null +++ b/06_ea.ipynb @@ -0,0 +1,1297 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## [Comprehension-ök](https://python-3-patterns-idioms-test.readthedocs.io/en/latest/Comprehensions.html)\n", + "\n", + "A comprehension egy olyan nyelvi elem a Pythonban, amely szekvenciák tömör megadását teszi lehetővé. A comprehension némileg hasonlít a matematikában alkalmazott, [tulajdonság alapján történő halmazmegadásra](https://en.wikipedia.org/wiki/Set-builder_notation) (példa: a páratlan számok halmaza megadható $\\{2k + 1\\ |\\ k \\in \\mathbb{Z}\\}$ módon)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Feltétel nélküli comprehension" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Állítsuk elő az első 10 négyzetszám listáját gyűjtőváltozó használatával!\n", + "l = []\n", + "for i in range(1, 11):\n", + " l.append(i**2)\n", + "l" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Ugyanez tömörebben, lista comprehension-nel:\n", + "l = [i**2 for i in range(1, 11)]\n", + "l" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{1, 4, 9, 16, 25, 36, 49, 64, 81, 100}" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Állítsuk elő az első 10 négyzetszám halmazát gyűjtőváltozó használatával!\n", + "s = set()\n", + "for i in range(1, 11):\n", + " s.add(i**2)\n", + "s" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{1, 4, 9, 16, 25, 36, 49, 64, 81, 100}" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Ugyanez tömörebben, halmaz comprehension-nel:\n", + "s = {i**2 for i in range(1, 11)}\n", + "s" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'a': 97, 'e': 101, 'i': 105, 'o': 111, 'u': 117}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Állítsunk elő egy szótárat, amely az angol kisbetűs magánhangzókhoz hozzárendeli az ASCII-kódjukat!\n", + "# Használjunk gyűjtőváltozót!\n", + "d = {}\n", + "for ch in 'aeiou':\n", + " d[ch] = ord(ch)\n", + "d" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'a': 97, 'e': 101, 'i': 105, 'o': 111, 'u': 117}" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Ugyanez tömörebben, szótár comprehension-nel:\n", + "d = {ch: ord(ch) for ch in 'aeiou'}\n", + "d" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Megjegyzés: Tuple comprehension nincs." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(10, 'alma'), (20, 'körte'), (30, 'barack')]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Feladat: Párok tagjainak megcserélése egy listában.\n", + "pairs = [('alma', 10), ('körte', 20), ('barack', 30)]\n", + "[(p[1], p[0]) for p in pairs]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Feltételes comprehension" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[4, 16, 36, 64, 100]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Feltételes lista comprehension.\n", + "[i**2 for i in range(1, 11) if i % 2 == 0]" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{4, 16, 36, 64, 100}" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Feltételes halmaz comprehension.\n", + "{i**2 for i in range(1, 11) if i % 2 == 0}" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'a': 97, 'e': 101, 'o': 111, 'u': 117}" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Feltételes szótár comprehension.\n", + "{ch: ord(ch) for ch in 'aeiou' if ch != 'i'}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A sum, min, max függvények" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "12\n", + "3.3000000000000003\n", + "3.3\n", + "(3+5j)\n" + ] + } + ], + "source": [ + "# Számítsuk ki számok összegét a sum függvénnyel.\n", + "\n", + "# Az adatok egész számok egy listában.\n", + "print(sum([1, 8, 3]))\n", + "\n", + "# Az adatok valós számok egy listában.\n", + "print(sum([1.1, 2.2]))\n", + "\n", + "# Az adatok egész és valós számok egy tuple-ban.\n", + "print(sum((1, 2.3)))\n", + "\n", + "# Az adatok complex számok egy halmazban.\n", + "print(sum({1 + 2j, 2 + 3j}))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "unsupported operand type(s) for +: 'int' and 'str'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[12], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# Ha az elemek nem számok, hibát kapunk!\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m \u001b[38;5;28msum\u001b[39m([\u001b[38;5;241m3\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124malma\u001b[39m\u001b[38;5;124m'\u001b[39m])\n", + "\u001b[1;31mTypeError\u001b[0m: unsupported operand type(s) for +: 'int' and 'str'" + ] + } + ], + "source": [ + "# Ha az elemek nem számok, hibát kapunk!\n", + "sum([3, 'alma'])" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2.8\n", + "5\n", + "a\n", + "m\n", + "Lady Marian\n", + "Robin Hood\n" + ] + } + ], + "source": [ + "# Minimum/maximum érték (ahol az adatok összehasonlíthatók).\n", + "\n", + "# Az adatok számok.\n", + "print(min(3, 5, 2.8))\n", + "\n", + "# Az adatok számok egy listában.\n", + "print(max([3, 5, 2.8]))\n", + "\n", + "# Az adat egy db sztring, azaz karakterek egy szekvenciája.\n", + "print(min('alma'))\n", + "print(max('alma'))\n", + "\n", + "# Az adatok sztringek.\n", + "print(min('Little John', 'Lady Marian', 'Robin Hood'))\n", + "\n", + "# Az adatok sztringek egy listában.\n", + "print(max(['Little John', 'Lady Marian', 'Robin Hood']))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'<' not supported between instances of 'str' and 'int'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[14], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# Ha az elemek nem összehasonlíthatók, hibát kapunk!\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m \u001b[38;5;28mmin\u001b[39m(\u001b[38;5;241m3\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124malma\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", + "\u001b[1;31mTypeError\u001b[0m: '<' not supported between instances of 'str' and 'int'" + ] + } + ], + "source": [ + "# Ha az elemek nem összehasonlíthatók, hibát kapunk!\n", + "min(3, 'alma')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Rendezés" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "# Lista rendezése helyben.\n", + "l = [2, 11, 10, 3]\n", + "l.sort()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[2, 3, 10, 11]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "l" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[11, 10, 3, 2]" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Rendezés csökkenő sorrendbe.\n", + "l.sort(reverse=True)\n", + "l" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "'<' not supported between instances of 'str' and 'int'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[18], line 3\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# Fontos, hogy az elemek összehasonlíthatók legyenek!\u001b[39;00m\n\u001b[0;32m 2\u001b[0m l \u001b[38;5;241m=\u001b[39m [\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m2\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124malma\u001b[39m\u001b[38;5;124m'\u001b[39m]\n\u001b[1;32m----> 3\u001b[0m l\u001b[38;5;241m.\u001b[39msort()\n", + "\u001b[1;31mTypeError\u001b[0m: '<' not supported between instances of 'str' and 'int'" + ] + } + ], + "source": [ + "# Fontos, hogy az elemek összehasonlíthatók legyenek!\n", + "l = [1, 2, 'alma']\n", + "l.sort()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "# Ha csak sztringeket tartalmaz a lista, akkor lehet rendezni.\n", + "l = ['alma', 'szilva', 'körte']\n", + "l.sort()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['alma', 'körte', 'szilva']" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "l" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2, 11, 10, 3]\n", + "[2, 3, 10, 11]\n" + ] + } + ], + "source": [ + "# Kollekció rendezése listába.\n", + "l1 = [2, 11, 10, 3]\n", + "l2 = sorted(l1)\n", + "print(l1)\n", + "print(l2)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[10, 30, 35, 40]" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Tuple elemeit is rendezhetjük új listába.\n", + "sorted((40, 10, 30, 35))" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[10, 30, 35, 40]" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ... és halmaz elemeit is.\n", + "sorted({40, 10, 30, 35})" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['alma', 'cseresznye', 'körte']" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Szótár esetén a sorted a kulcsokat rendezi.\n", + "d = {'cseresznye': 10, 'alma': 20, 'körte': 30}\n", + "sorted(d)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['a', 'a', 'i', 'l', 'm', 'v']" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Sztring esetén a sorted a karaktereket rendezi.\n", + "sorted('valami')" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('bor', 5), ('bor', 20), ('pálinka', 30), ('sör', 10)]" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Párok listájának rendezése (lexikografikusan).\n", + "pairs = [('sör', 10), ('bor', 20), ('pálinka', 30), ('bor', 5)]\n", + "sorted(pairs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Megjegyzés:\n", + "- A Python rendező algoritmusa a Timsort.\n", + "- Időigény: O(n*log(n)), ahol n a rendezendő szekvencia hossza.\n", + "- A rendező algoritmus stabil (egyenlőség esetén megőrzi az eredeti sorrendet)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Kicsomagolás ([unpacking](https://treyhunner.com/2018/03/tuple-unpacking-improves-python-code-readability/))" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [], + "source": [ + "# Általános eset.\n", + "x, [y, z] = (10, 20, 30), ['alma', [1, 2]]" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(10, 20, 30)" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'alma'" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 2]" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "z" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "too many values to unpack (expected 2)", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[31], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# Ha a bal és jobb oldal nem illeszthető egymásra, hibát kapunk.\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m x, y \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m10\u001b[39m, \u001b[38;5;241m20\u001b[39m, \u001b[38;5;241m30\u001b[39m\n", + "\u001b[1;31mValueError\u001b[0m: too many values to unpack (expected 2)" + ] + } + ], + "source": [ + "# Ha a bal és jobb oldal nem illeszthető egymásra, hibát kapunk.\n", + "x, y = 10, 20, 30" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "20\n", + "30\n" + ] + } + ], + "source": [ + "# Többszörös értékadás.\n", + "x, y = 20, 30\n", + "print(x)\n", + "print(y)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "30\n", + "20\n" + ] + } + ], + "source": [ + "# Csere.\n", + "x = 20\n", + "y = 30\n", + "x, y = y, x\n", + "print(x)\n", + "print(y)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tulipán 10\n", + "rózsa 20\n", + "liliom 30\n" + ] + } + ], + "source": [ + "# Kicsomagolás alkalmazása for ciklusnál.\n", + "pairs = [('tulipán', 10), ('rózsa', 20), ('liliom', 30)]\n", + "for x, y in pairs:\n", + " print(x, y)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10 100\n", + "20 200\n" + ] + } + ], + "source": [ + "# Kicsomagolás alkalmazása szótárnál.\n", + "d = {10: 100, 20: 200}\n", + "for x, y in d.items():\n", + " print(x, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Haladó indexelés ([slicing](https://docs.python.org/3/library/functions.html#slice))\n", + "\n", + "- A slice jelölésmód szintaxisa [alsó határ: felső határ: lépésköz].\n", + "- A kiválasztás intervalluma felülről nyitott, azaz a felső határ adja meg az első olyan indexet, amelyet már éppen nem választunk ki." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "# Példák haladó indexelésre.\n", + "\n", + "# 0 1 2 3 4 5 6 7\n", + "####################################################\n", + "data = ['alma', 'tulipán', 10, 20, 15, 25, 100, 200]" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['tulipán', 10, 20, 15, 25]" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Elemek kiválasztása az 1.-től az 5. indexig.\n", + "data[1: 6: 1]" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['tulipán', 20, 25]" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az 1-es, 3-as és 5-ös indexű elem kiválasztása.\n", + "data[1: 7: 2]" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['alma', 'tulipán', 10, 20]" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az alsó határ, a felső határ és a lépésköz is elhagyható.\n", + "# Az első 4 elem kiválasztása.\n", + "data[:4]" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['tulipán', 20, 25, 200]" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Minden 2. elem kiválasztása, az 1-es elemtől kezdve.\n", + "data[1::2]" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['alma', 'tulipán', 10, 20, 15, 25, 100]" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Használhatunk negatív indexeket is, a mínusz 1-edik jelenti az utolsó elemet.\n", + "# Az utolsó kivételével az összes elem kiválasztása.\n", + "data[:-1]" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "100" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A negatív indexek hagyományos indexelésnél is használhatók.\n", + "# Az utolsó előtti elem kiválasztása.\n", + "data[-2]" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[200, 100, 25, 15, 20, 10, 'tulipán', 'alma']" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A lépésköz is lehet negatív.\n", + "# A lista megfordítása.\n", + "data[::-1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Haladó iterálási technikák" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [enumerate](https://docs.python.org/3/library/functions.html#enumerate)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 kék\n", + "1 lila\n", + "2 sárga\n", + "3 zöld\n" + ] + } + ], + "source": [ + "# Iterálás az elemeken és indexeken egyszerre, hagyományos megoldás.\n", + "x = ['kék', 'lila', 'sárga', 'zöld']\n", + "for i in range(len(x)):\n", + " print(i, x[i])" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 kék\n", + "1 lila\n", + "2 sárga\n", + "3 zöld\n" + ] + } + ], + "source": [ + "# Ugyanez elegánsabban, enumerate-tel:\n", + "for i, xi in enumerate(x):\n", + " print(i, xi)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "enumerate" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az enumerate eredménye egy iterálható objektum.\n", + "type(enumerate(x))" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[(0, 'kék'), (1, 'lila'), (2, 'sárga'), (3, 'zöld')]" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Átalakítás párok listájává.\n", + "list(enumerate(x))" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0 kék\n", + "1 lila\n", + "2 sárga\n", + "3 zöld\n" + ] + } + ], + "source": [ + "# Az enumerate kicsomagolás nélkül is használható.\n", + "for y in enumerate(x):\n", + " print(y[0], y[1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [zip](https://docs.python.org/3/library/functions.html#zip)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "sör 10\n", + "bor 20\n", + "rum 30\n" + ] + } + ], + "source": [ + "# Iterálás több szekvencián egyszerre, hagyományos megoldás.\n", + "x = ['sör', 'bor', 'rum']\n", + "y = [10, 20, 30]\n", + "for i in range(len(x)):\n", + " print(x[i], y[i])" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "sör 10\n", + "bor 20\n", + "rum 30\n" + ] + } + ], + "source": [ + "# Ugyanez elegánsabban, zip-pel:\n", + "for xi, yi in zip(x, y):\n", + " print(xi, yi)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "zip" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A zip eredménye egy iterálható objektum.\n", + "type(zip(x, y))" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('sör', 10), ('bor', 20), ('rum', 30)]" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Átalakítás listává.\n", + "list(zip(x, y))" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "sör 10\n", + "bor 20\n", + "rum 30\n" + ] + } + ], + "source": [ + "# A zip kicsomagolás nélkül is használható.\n", + "for z in zip(x, y):\n", + " print(z[0], z[1])" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "sör 10\n", + "bor 20\n", + "rum 30\n" + ] + } + ], + "source": [ + "# Ha szekvenciák hossza nem azonos, akkor az eredmény a rövidebb hosszát veszi fel.\n", + "x = ['sör', 'bor', 'rum', 'pálinka']\n", + "y = [10, 20, 30]\n", + "for xi, yi in zip(x, y):\n", + " print(xi, yi)" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "sör 10 True\n", + "bor 20 False\n", + "rum 30 True\n" + ] + } + ], + "source": [ + "# A zip kettőnél több szekvenciára is alkalmazható.\n", + "x = ['sör', 'bor', 'rum']\n", + "y = [10, 20, 30]\n", + "z = [True, False, True]\n", + "for xi, yi, zi in zip(x, y, z):\n", + " print(xi, yi, zi)" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/06_gyak.ipynb b/06_gyak.ipynb new file mode 100644 index 0000000..aeca061 --- /dev/null +++ b/06_gyak.ipynb @@ -0,0 +1,105 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Előadás anyag\n", + "Nézzük meg a 6. heti előadás anyagát tartalmazó Jupyter notebook (06_ea.ipynb) tartalmát! Futtassuk az egyes cellákat, módosítsunk, kisérletezzünk szabadon!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. feladat\n", + "Készítsünk különbségsorozatot az $a_1$, ..., $a_n$ számsorozatból, ahol a különbségsorozat $i$. eleme $a_{i+1}$ - $a_i$! Pl: 2, 5, 7, 15 => 3, 2, 8" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[3, 2, 8]\n", + "[3, 2, 8]\n", + "[3, 2, 8]\n" + ] + } + ], + "source": [ + "# A számsorozat\n", + "a = [2, 5, 7, 15]\n", + "\n", + "# 1. megoldás (nem használva a 6. előadás dolgait))\n", + "diff = []\n", + "for i in range(len(a) - 1):\n", + " diff.append(a[i + 1] - a[i])\n", + "print(diff)\n", + "\n", + "# 2. megoldás (comprehension és indexelés)\n", + "diff = [a[i + 1] - a[i] for i in range(len(a) - 1)]\n", + "print(diff)\n", + "\n", + "# 3. megoldás (comprehension, unpacking, slicing és zip)\n", + "diff = [x - y for x, y in zip(a[1:], a[:-1])]\n", + "print(diff)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Feladatok\n", + "Készítsünk programokat az alábbi feladatokra! A megoldásoknál használjuk az előadáson elhangzottakat (pl. comprehension, haladó indexelés, kicsomagolás, zip, ...)!\n", + "- Állítsuk elő comprehension-nel a [100, 90, 80, 70, 60, 50, 40, 30, 20, 10] listát!\n", + "- Gyűjtsük ki feltételes comprehension-nel egy számokból álló lista pozitív elemeit egy új listába! Pl. [-1, 2, 0, 3] => [2, 3] \n", + "- Fordítsuk meg egy sztring karaktereinek sorrendjét haladó indexeléssel! Pl. 'abc' => 'cba'.\n", + "- Készítsünk szótárat egy `KULCS_1,ÉRTÉK_1, ... KULCS_n,ÉRTÉK_n` formátumú sztringből! Pl. 'alma,10,körte,20,barack,30' => {'alma': 10, 'körte': 20, 'barack': 30} (Tipp: a sztring darabolásához használjuk a split metódust!)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Házi feladatok\n", + "Készítsünk programokat az alábbi feladatokra! A megoldásoknál használjuk az előadáson elhangzottakat (pl. sum, min, max, sorted függvények)!\n", + "- Egy műkorcsolyaversenyen N (>=1) versenyző indul és M (>=3) bíró pontoz. Minden versenyző minden bírótól pontosan egy db pontot kap (ami 0-tól 6-ig egy valós szám)! Ismerjük a versenyzők nevét, nemzetiségét (3 betűs sztring), és a bíróktól kapott pontjaikat. Számítsuk ki a versenyzők átlagpontjait, majd készítsünk olyan listát, amelyben a versenyzők összes adata (név, nemzetiség, pontok, átlagpont) szerepel! Minden versenyző legyen külön sorban, a pontok két tizedesjeggyel jelenjenek meg, egymás alá igazítva!\n", + "- Oldjuk meg a feladatot úgy is, hogy az átlagpontba az adott versenyző legnagyobb és legkisebb pontjának egy-egy előfordulását nem számítjuk be (a bírók részrehajlását elkerülendő)!\n", + "- Oldjuk meg a feladatot úgy is, hogy a lista eredménylista legyen (azaz olyan lista, amely az átlagpont szerint csökkenően rendezett)!" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/07_ea.ipynb b/07_ea.ipynb new file mode 100644 index 0000000..030d88a --- /dev/null +++ b/07_ea.ipynb @@ -0,0 +1,761 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## [Függvények](https://docs.python.org/3/tutorial/controlflow.html#defining-functions)\n", + "\n", + "### Alapfogalmak\n", + "\n", + "- A függvény névvel ellátott alprogram, amely a program más részeiből meghívható.\n", + "- Függvények használatával a számítási feladatok kisebb egységekre oszthatók. A gyakran használt függvények kódját könyvtárakba rendezhetjük.\n", + "- A matematikában egy függvénynek nincsenek mellékhatásai. Egy Python nyelvű függvénynek lehetnek!\n", + "\n", + "\n", + "- Pythonban a függvények \"teljes jogú állampolgárok\":\n", + " + Egy változónak értékül adhatunk egy függvényt.\n", + " + Függvényeket egymásba lehet ágyazni.\n", + " + Egy függvény kaphat paraméterként függvényt ill. adhat eredményül függvényt.\n", + " \n", + "\n", + "- Fontos különbséget tenni egy függvény *definíciója* és *meghívása* között:\n", + " + A függvény definíciója megadja, hogy milyen bemenethez milyen kimenet rendelődjön (és milyen mellékhatások hajtódjanak végre). A függvény definíciója a programban általában csak egy helyen szerepel (ha több helyen szerepel, akkor az utolsó definíció lesz az érvényes.)\n", + " + A függvény meghívása azt jelenti, hogy egy adott bemenethez kiszámítjuk a hozzárendelt értéket. Egy függvényt a programban többször is meg lehet hívni." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Példa: n-edik gyök függvény definiálása.\n", + "def root(x, n=2):\n", + " '''Returns the n-th root of x.'''\n", + " return x**(1 / n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ha a függvény első utasítása egy sztring, akkor ez lesz a függvény dokumentációs sztringje." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Returns the n-th root of x.'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Dokumentációs sztring (docstring) lekérdezése.\n", + "root.__doc__ # \"dunder doc\"" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# A __doc__ attribútum egy közönséges sztring, tetszés szerint végezhetünk vele műveleteket.\n", + "root.__doc__ *= 10" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- Pythonban a függvényeknek *pozícionális* és *kulcsszó* paraméterei lehetnek.\n", + " + Függvénydefiníciókor először a pozícionális majd a kulcsszó paramétereket kell felsorolni.\n", + " + A pozícionális paramétereknek nincs alapértelmezett értékük, a kulcsszó paramétereknek van.\n", + " + Mindegyik paramétertípusból lehet nulla darab is.\n", + "- Függvényhíváskor...\n", + " + Az összes pozícionális paraméter értékét meg kell adni, olyan sorrendben, ahogy a definíciónál szerepeltek,\n", + " + A kulcsszó paraméterek értékét nem kötelező megadni." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.4142135623730951" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Gyök 2 kiszámítása.\n", + "root(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.2599210498948732" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Köbgyök 2 kiszámítása.\n", + "root(2, n=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.2599210498948732" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A második paramétert nem kell nevesíteni.\n", + "root(2, 3)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Változónak értékül adhatunk függvényt.\n", + "f = root" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "function" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(f)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.0" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "f(16, n=4)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# Példa egymásba ágyazásra ill. függvényt visszaadó függvényre.\n", + "def f(y):\n", + " def g(x):\n", + " return x * y\n", + " return g" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# f egy \"függvénygyár\"\n", + "g2 = f(2) # kétszerező függvény\n", + "g3 = f(3) # háromszorozó függvény" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "20" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g2(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "60" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g3(20)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Gyakorlás" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Prímtesztelés\n", + "\n", + "Készítsünk függvényt, amely eldönti egy természetes számról, hogy prím-e!" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "True\n" + ] + } + ], + "source": [ + "# 1. változat: függvény nélkül\n", + "n = 17\n", + "\n", + "is_prime = True\n", + "for i in range(2, int(n**0.5) + 1):\n", + " if n % i == 0:\n", + " is_prime = False\n", + " break\n", + " \n", + "print(is_prime and n > 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "# 2. változat: függvénnyel\n", + "def is_prime(n):\n", + " for i in range(2, int(n**0.5) + 1):\n", + " if n % i == 0:\n", + " return False\n", + " return n > 1" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "is_prime(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "is_prime(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "is_prime(12)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "is_prime(13)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Legnagyobb közös osztó\n", + "\n", + "Készítsünk függvényt két természetes szám legnagyobb közös osztójának a meghatározására!" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "6\n" + ] + } + ], + "source": [ + "# 1. változat: függvény nélkül\n", + "a = 18\n", + "b = 12\n", + "\n", + "for i in range(min(a, b), 0, -1):\n", + " if a % i == 0 and b % i == 0: # i közös osztó?\n", + " break\n", + " \n", + "print(i)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "# 2. változat: függvénnyel\n", + "def calc_gcd(a, b):\n", + " for i in range(min(a, b), 0, -1):\n", + " if a % i == 0 and b % i == 0: # i közös osztó?\n", + " return i" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "6" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "calc_gcd(12, 18)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "calc_gcd(13, 18)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Másodfokú egyenlet megoldó\n", + "\n", + "Készítsünk másodfokú egyenlet megoldó függvényt!" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "def solve_quadratic(a, b, c):\n", + " '''Solve quadratic equation a*x^2 + b*x + c = 0,\n", + " and return solutions in a list.'''\n", + " \n", + " # diszkrimináns kiszámítása\n", + " d = b**2 - 4 * a * c\n", + "\n", + " # elágazás\n", + " if d > 0: # 2 megoldás\n", + " x1 = (-b + d**0.5) / (2 * a)\n", + " x2 = (-b - d**0.5) / (2 * a)\n", + " return [x1, x2]\n", + " elif d == 0: # 1 megoldás\n", + " return [-b / (2 * a)]\n", + " else:\n", + " return []" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[2.0, 1.0]" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "solve_quadratic(1, -3, 2)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[-1.0]" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "solve_quadratic(1, 2, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "solve_quadratic(1, 1, 10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## [Lambda kifejezések](https://docs.python.org/3/reference/expressions.html#lambda)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- A lambda kifejezés nem más, mint egysoros, névtelen függvény.\n", + "- (A [funkcionális programozás](https://en.wikipedia.org/wiki/Functional_programming) egyéb elemei a Pythonban: [map](https://docs.python.org/3/library/functions.html#map), [filter](https://docs.python.org/3/library/functions.html#filter).)" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "142" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Példa lambda kifejezésre.\n", + "f = lambda x: x + 42\n", + "f(100)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "30" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Egynél több bemenet is megengedett.\n", + "g = lambda x, y: x + y\n", + "g(10, 20)" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "100" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...de akár nulla bemenet is lehet.\n", + "h = lambda: 100\n", + "h()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Lambda kifejezés alkalmazása rendezésnél" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('körte', 11), ('alma', 22), ('barack', 33)]" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Párok listájának rendezése a második elem szerint.\n", + "pairs = [('alma', 22), ('körte', 11), ('barack', 33)]\n", + "sorted(pairs, key=lambda p: p[1])" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('körte', 11), ('alma', 22), ('barack', 33)]" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az előző feladat megoldása lambda kifejezés nélkül.\n", + "pairs = [('alma', 22), ('körte', 11), ('barack', 33)]\n", + "def key_func(p):\n", + " return p[1]\n", + "sorted(pairs, key=key_func)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['king', 'queen', 'denmark']" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Szótárkulcsok rendezése az értékek szerint csökkenő sorrendbe.\n", + "words = {'king': 203, 'denmark': 24, 'queen': 192}\n", + "sorted(words, key=lambda k: words[k], reverse=True)" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/07_gyak.ipynb b/07_gyak.ipynb new file mode 100644 index 0000000..4697517 --- /dev/null +++ b/07_gyak.ipynb @@ -0,0 +1,70 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Előadás anyag\n", + "Nézzük meg a 7. heti előadás anyagát tartalmazó Jupyter notebook (07_ea.ipynb) tartalmát! Futtassuk az egyes cellákat, módosítsunk, kisérletezzünk szabadon!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Feladatok\n", + "Készítsünk függvényeket az alábbi feladatok megoldására, majd teszteljük a függvények működését (azaz hívjuk meg őket valamilyen tesztadattal és írjuk ki a kapott eredményeket)!\n", + "- Határozzuk meg két szám összegét!\n", + "- Egy sztring karakterei különbözőek-e vagy sem? (Pl. 'Alma' -> igen, 'alma' -> nem)\n", + "- Bővítsük az előadásanyagban szereplő másodfokú egyenlet megoldó függvényt (solve_quadratic) egy új, opcionális paraméterrel, amivel kérhető legyen a komplex gyökök kiszámítása is! A paraméter alapértelmezett értéke esetén csak valós gyököket számoljunk!\n", + "- Határozzuk meg egy sztringként megadott pozitív, bináris egész szám decimális értékét! (Pl. '110' -> 6)\n", + "- Egy számsorozat számtani sorozatot alkot-e vagy sem? (Pl. [1, 2, 3] -> igen, [1, 2, 2] -> nem)\n", + "- Határozzuk meg egy pozitív egész szám, mint euróban kifizetendő pénzösszeg kifizetéséhez szükséges legkevesebb címletet! (Pl. 213: 2 db 100-as, 1 db 10-es, 3 db 1-es)\n", + "- Definiáljuk egy általunk készített függvény doc sztringjét és nézzük meg a használatát is (pl. kérjünk help-et a függvényünkre)!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Házi feladatok\n", + "Készítsünk függvényeket az alábbi feladatok megoldására!\n", + "- Egy sztring tartalmaz-e angol nagybetűt vagy sem?\n", + "- Egy sztringben helyes angol név van-e vagy sem? Egy név helyes, ha:\n", + " - pontosan egy darab szóköz van benne, de az nincs az elején és a végén,\n", + " - az egy db szóközön kívül csak angol kis- és nagybetűk vannak benne,\n", + " - a vezetéknév és a keresztnév első betűje nagybetű, a többi kisbetű. (Pl: \"Little John\" -> helyes, \"nemecsek ernő\" -> nem helyes)\n", + "- Adottak síkbeli pontok a derékszögű koordinátáikkal! Határozzuk meg azt a pontot, amelyik a legközelebb van a pontok súlypontjához! Az eredmény a megfelelő pont(ok)ból álló lista legyen! (Pl. [(1, 0), (-1, 0), (0. 3)] -> [(1, 0), (-1, 0)])\n", + "- Oldjuk meg az előző (6.) heti korcsolyaversenyes feladatot úgy, hogy a rendezésnél lambda függvényt használunk!" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/08_ea.ipynb b/08_ea.ipynb new file mode 100644 index 0000000..3ef38fc --- /dev/null +++ b/08_ea.ipynb @@ -0,0 +1,1015 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## [Modulok](https://docs.python.org/3/tutorial/modules.html) és [csomagok](https://docs.python.org/3/tutorial/modules.html#packages)\n", + "\n", + "**Modul**: Python nyelvű fájl.\n", + "- Definíciókat és utasításokat tartalmaz.\n", + "- Ha a modulhoz az `xyz.py` fájl tartozik, akkor a modulra `xyz` néven lehet hivatkozni.\n", + "- A modulok más Python programokból importálhatók.\n", + "\n", + "**Csomag**: Modulok gyűjteménye.\n", + "- Egy csomag alcsomagokat/almodulokat is tartalmazhat. A hierarchiát a csomagon belüli könyvtárszerkezet határozza meg.\n", + "- A standard csomagok és modulok a standard könyvtárban találhatók, és nem igényelnek telepítést.\n", + "- A külső csomagok gyűjtőhelye a PyPI (https://pypi.python.org/pypi)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Modul/csomag importálása.\n", + "import random" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "77" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "random.randint(1, 100)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "15" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Függvény importálása egy modulból/csomagból.\n", + "from random import randint\n", + "randint(1, 100)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-0.24241318164150646" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Modul/csomag teljes tartalmának importálása. (Megjegyzés: Ez a megoldás általában kerülendő.)\n", + "from random import *\n", + "normalvariate(0, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'/tmp'" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Függvény importálása almodulból/alcsomagból.\n", + "from os.path import dirname\n", + "dirname('/tmp/pistike.txt')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Modul/csomag importálása rövidített néven.\n", + "import numpy as np # a numpy csomag importálása np néven\n", + " # (a numpy külső csomag)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.cos(0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fejezetek a [standard könyvtárból](https://docs.python.org/3/library/index.html) I.\n", + "\n", + "- A Python standard könyvtára több mint 200 csomagot ill. modult tartalmaz. Szabványos megoldást biztosít a programozás mindennapjaiban felmerülő számos feladatra.\n", + "- A kurzuson csak a standard könyvtár egy kis részének az áttekintésére vállalkozunk.\n", + "- A jó programozó nem találja fel újra a spanyolviaszt. Ha lehetséges, akkor a standard könyvtár eszközeivel oldja meg a feladatot." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### [datetime](https://docs.python.org/3/library/datetime.html)\n", + "- Dátum- és időkezelésre biztosít eszközöket.\n", + "- Támogatja a dátumaritmetikát, kezeli az időzónákat, óraátállítást, szökőéveket stb.\n", + "- Időzónamentes és időzónával rendelkező dátumokat is megenged." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "import datetime" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "datetime.datetime(2021, 3, 8, 9, 0, 10, 300)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Mikroszekundum pontosságú időpont megadása.\n", + "dt1 = datetime.datetime(2021, 3, 8, 9, 0, 10, 300)\n", + "dt1" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "datetime.datetime" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(dt1)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "datetime.date(2020, 12, 6)" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Nap pontosságú dátum megadása.\n", + "d1 = datetime.date(2020, 12, 6)\n", + "d1" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "datetime.date" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(d1)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "# Időpont aritmetika.\n", + "dt2 = datetime.datetime(2021, 1, 15, 12, 0, 10)\n", + "diff = dt1 - dt2" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "datetime.timedelta(days=51, seconds=75600, microseconds=300)" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "diff" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "datetime.timedelta" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(diff)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "51\n", + "75600\n", + "300\n" + ] + } + ], + "source": [ + "# Az eltérés 51 nap + 75600 másodperc 300 mikroszekundum.\n", + "print(diff.days)\n", + "print(diff.seconds)\n", + "print(diff.microseconds)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4482000.0003" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Másodpercben kifejezve:\n", + "diff.total_seconds()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "datetime.datetime(2021, 3, 16, 4, 0)" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Adjunk hozzá 8 órát egy időponthoz!\n", + "datetime.datetime(2021, 3, 15, 20, 0) + datetime.timedelta(0, 8 * 3600)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "44261" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Aritmetika nap pontosságú dátumokkal.\n", + "(datetime.date(2021, 3, 8) - datetime.date(1900, 1, 1)).days" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Feladat\n", + "- Kérjünk be egy dátumot (év, hónap, nap), majd írjuk ki azt, hogy a dátum hányadik nap az adott évben!" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Kérek egy dátumot (éééé.hh.nn): 2023.01.02\n", + "2\n" + ] + } + ], + "source": [ + "# Megoldás\n", + "import datetime\n", + "\n", + "s = input('Kérek egy dátumot (éééé.hh.nn): ')\n", + "t = s.split('.')\n", + "dt = datetime.date(int(t[0]), int(t[1]), int(t[2]))\n", + "n = (dt - datetime.date(dt.year, 1, 1)).days + 1\n", + "print(n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Feladat\n", + "- Adott egy lista, amelyben személyek neve és születési dátuma szerepel! Készítsünk életkor szerint növekvően rendezett listát a személyek adatairól!" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Békés Farkas', datetime.date(2014, 7, 30)),\n", + " ('Git Áron', datetime.date(1995, 2, 28)),\n", + " ('Har Mónika', datetime.date(1995, 2, 27)),\n", + " ('Bank Aranka', datetime.date(1980, 9, 1)),\n", + " ('Wincs Eszter', datetime.date(1980, 5, 7)),\n", + " ('Trab Antal', datetime.date(1961, 4, 1)),\n", + " ('Gipsz Jakab', datetime.date(1957, 11, 21))]" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Megoldás\n", + "import datetime\n", + "\n", + "people = [\n", + " # név, születési dátum\n", + " ('Gipsz Jakab', datetime.date(1957, 11, 21)),\n", + " ('Wincs Eszter', datetime.date(1980, 5, 7)),\n", + " ('Békés Farkas', datetime.date(2014, 7, 30)),\n", + " ('Har Mónika', datetime.date(1995, 2, 27)),\n", + " ('Trab Antal', datetime.date(1961, 4, 1)),\n", + " ('Git Áron', datetime.date(1995, 2, 28)),\n", + " ('Bank Aranka', datetime.date(1980, 9, 1))\n", + "]\n", + "sorted(people, key=lambda p: p[1], reverse=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "datetime.datetime(2023, 11, 7, 11, 38, 32, 206260)" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Aktuális idő lekérdezése.\n", + "dt = datetime.datetime.now()\n", + "dt" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2023\n", + "11\n", + "7\n", + "11\n", + "38\n", + "32\n", + "206260\n" + ] + } + ], + "source": [ + "# A datetime objektum mezőinek lekérése.\n", + "print(dt.year)\n", + "print(dt.month)\n", + "print(dt.day)\n", + "print(dt.hour)\n", + "print(dt.minute)\n", + "print(dt.second)\n", + "print(dt.microsecond)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A hét napjának lekérdezése (0=hétfő, ..., 6=vasárnap):\n", + "dt.weekday()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Feladat\n", + "- Hány db péntek 13-adika volt a 20. században (azaz 1901.01.01-től 2000.12.31-ig)?" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "171\n", + "171\n" + ] + } + ], + "source": [ + "import datetime\n", + "\n", + "# Megoldás 1: a 20. század összes napját megvizsgáljuk.\n", + "db = 0\n", + "dt = datetime.date(1901, 1, 1)\n", + "while dt <= datetime.date(2000, 12, 31):\n", + " if dt.weekday() == 4 and dt.day == 13:\n", + " db += 1\n", + " dt += datetime.timedelta(1)\n", + "print(db)\n", + "\n", + "# Megoldás 2: csak minden érintett hónap 13. napját vizsgáljuk meg.\n", + "db = 0\n", + "for y in range(1901, 2001): # végigmegyünk az éveken\n", + " for m in range(1, 13): # azon belül a hónapokon\n", + " if datetime.date(y, m, 13).weekday() == 4:\n", + " db += 1\n", + "print(db)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### [time](https://docs.python.org/3/library/time.html)\n", + "- Alacsony szintű időkezelésre ad eszközöket, ide tartozik pl. az időtartam mérés és a várakozás." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "import time" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1699353589.2763045" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Aktuális idő lekérdezése (UNIX időbélyegként).\n", + "time.time() # 1970-01-01 óta eltelt idő, másodpercben" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "s=1.64493306684777, dt=0.23554015159606934\n" + ] + } + ], + "source": [ + "# Időtartam mérés.\n", + "t0 = time.time()\n", + "s = 0\n", + "for k in range(1, 1000000):\n", + " s += 1 / k**2\n", + "dt = time.time() - t0\n", + "print(f's={s}, dt={dt}')" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "# Várakozás 2 másodpercig.\n", + "time.sleep(2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### [random](https://docs.python.org/3/library/random.html)\n", + "- Álvéletlenszám-generálásra biztosít eszközöket." + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "import random" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "60" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Egész szám sorsolása egy intervallumból.\n", + "random.randint(1, 100)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "93" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Ha a felső határt ki akarjuk zárni:\n", + "# 1 és 99 közötti véletlen egész számot generál.\n", + "random.randrange(1, 100)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "-1.6302778550631207" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Valós szám sorsolása egy intervallumból.\n", + "random.uniform(-2.2, 5.4)" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.675777119325788" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Sorsolás standard normális eloszlásból.\n", + "random.normalvariate(0, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "82\n", + "15\n", + "4\n" + ] + } + ], + "source": [ + "# Véletlenszám generátor állapotának beállítása.\n", + "random.seed(42)\n", + "print(random.randint(1, 100))\n", + "print(random.randint(1, 100))\n", + "print(random.randint(1, 100))" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "82\n", + "15\n", + "4\n" + ] + } + ], + "source": [ + "random.seed(42)\n", + "print(random.randint(1, 100))\n", + "print(random.randint(1, 100))\n", + "print(random.randint(1, 100))" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [], + "source": [ + "# Az állapot visszaállítása véletlenszerűre.\n", + "random.seed()" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "82\n", + "82\n", + "15\n", + "15\n" + ] + } + ], + "source": [ + "# Véletlenszám generátor objektum létrehozása.\n", + "r1 = random.Random(42)\n", + "r2 = random.Random(42)\n", + "\n", + "print(r1.randint(1, 100))\n", + "print(r2.randint(1, 100))\n", + "print(r1.randint(1, 100))\n", + "print(r2.randint(1, 100))" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'alma'" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Elem kisorsolása egy szekvenciából.\n", + "random.choice(['alma', 'körte', 'szilva'])" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[49, 58, 30, 62, 88]" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Visszatevés nélküli mintavétel.\n", + "random.sample(range(1, 91), 5)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['körte', 'alma', 'szilva']" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Véletlen keverés.\n", + "l = ['alma', 'körte', 'szilva']\n", + "random.shuffle(l)\n", + "l" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Feladat\n", + "- Rakjuk egy szöveg karaktereit véletlenszerű sorrendbe!" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ailntcaspa\n", + "aclsitpaan\n" + ] + } + ], + "source": [ + "s = 'palacsinta'\n", + "\n", + "# Megoldás 1: random.sample-vel\n", + "print(''.join(random.sample(s, len(s))))\n", + "\n", + "# Megoldás 2: random.shuffle-vel\n", + "l = list(s)\n", + "random.shuffle(l)\n", + "print(''.join(l))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Feladat\n", + "- Szimuláljunk egy 10000 hosszú dobás sorozatot 2 db dobókockával, majd írjuk ki azt, hogy az esetek hány százalékában volt a dobások összege 2, 3, ..., 12!" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 2: 2.45\n", + " 3: 5.66\n", + " 4: 8.45\n", + " 5: 11.48\n", + " 6: 14.17\n", + " 7: 16.33\n", + " 8: 13.72\n", + " 9: 11.13\n", + "10: 8.20\n", + "11: 5.64\n", + "12: 2.77\n" + ] + } + ], + "source": [ + "# Megoldás\n", + "n = 10000\n", + "freq = [0] * 13\n", + "for i in range(n):\n", + " # dobások szimulálása\n", + " s = random.randint(1, 6) + random.randint(1, 6)\n", + " # megfelelő számláló növelése\n", + " freq[s] += 1 \n", + " \n", + "# kiírás\n", + "for s in range(2, 13):\n", + " print(f'{s:2}: {freq[s] / n * 100:.2f}')" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/08_gyak.ipynb b/08_gyak.ipynb new file mode 100644 index 0000000..98b3123 --- /dev/null +++ b/08_gyak.ipynb @@ -0,0 +1,249 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Előadás anyag\n", + "Nézzük meg a 8. heti előadás anyagát tartalmazó Jupyter notebook (08_ea.ipynb) tartalmát! Futtassuk az egyes cellákat, módosítsunk, kisérletezzünk szabadon!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. feladat\n", + "Készítsünk programot, amely szimulál egy n hosszú pénzfeldobás sorozatot, majd kiírja a fejek és írások darabszámát!" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "51\n", + "49\n" + ] + } + ], + "source": [ + "# 1. megoldás\n", + "import random\n", + "n = 100\n", + "nheads = 0\n", + "ntails = 0\n", + "for i in range(n):\n", + " x = random.choice('HT')\n", + " if x == 'H': \n", + " nheads += 1\n", + " else:\n", + " ntails += 1\n", + "print(ntails)\n", + "print(nheads)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "42\n", + "58\n" + ] + } + ], + "source": [ + "# 2. megoldás\n", + "import random\n", + "n = 100\n", + "x = [random.choice('HT') for i in range(n)]\n", + "print(x.count('H'))\n", + "print(x.count('T'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Oldjuk meg a feladatot 'fej' és 'írás' dobások használatával!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. feladat\n", + "\n", + "Készítsünk programot, amely szimulál egy n hosszú pénzfeldobás sorozatot, majd kiírja a leghosszabb fej ill. írás sorozat hosszát!" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "T T T T T H H T H H H T T H H H T T H H\n", + "3\n", + "5\n" + ] + } + ], + "source": [ + "import random\n", + "\n", + "def longest_sequence(x, sign):\n", + " maxlen = 0\n", + " actlen = 0\n", + " for xi in x:\n", + " if xi == sign:\n", + " actlen += 1\n", + " if actlen > maxlen:\n", + " maxlen = actlen\n", + " else:\n", + " actlen = 0\n", + " return maxlen\n", + "\n", + "n = 20\n", + "x = [random.choice('HT') for i in range(n)]\n", + "\n", + "print(' '.join(x))\n", + "print(longest_sequence(x, 'H'))\n", + "print(longest_sequence(x, 'T'))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "['T', 'H', 'H', 'T', 'T', 'H', 'H', 'H', 'H', 'T']\n", + "4\n" + ] + } + ], + "source": [ + "# ... a leghosszabb sorozat hossza (nem külön-külön számolva)\n", + "\n", + "import random\n", + "n = 10\n", + "sorsolas = [random.choice('HT') for i in range(n)]\n", + "\n", + "sorozat = 1\n", + "sorozat_max = 1\n", + "for x in range(1, n):\n", + " if sorsolas[x] == sorsolas[x - 1]:\n", + " sorozat += 1\n", + " else:\n", + " sorozat = 1\n", + " \n", + " if sorozat > sorozat_max:\n", + " sorozat_max = sorozat\n", + " \n", + "print(sorsolas)\n", + "print(sorozat_max)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Módosítsuk a megoldást úgy, hogy megadjuk azt is, hogy hány db ilyen (maximális hosszú) sorozat létezett a dobássorozatban!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Az előadás anyagához kapcsolódó feladatok\n", + "- Módosítsuk a személyek és születési dátumok rendezett listáját megadó megoldást úgy, hogy az adott személyeknek ne a születési dátumát, hanem az életkorát (a betöltött évek száma) jelenítsük meg!\n", + "- Oldjuk meg a két kockával dobott dobásösszeg gyakoriságok meghatározását szótár segítségével!\n", + "- Hasonlítsuk össze (azaz 'mérjük meg') a 20. századi péntek 13-kák számát meghatározó megoldások futási idejét!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Feladatok\n", + "- Készítsünk egy saját modult (azaz egy py kiterjesztésű szövegfájlt, amiben legyen pl. egy saját függvény)! Használjuk ezt a saját modult (azaz hívjuk meg pl. a modulban lévő függvényt)! \n", + "- Határozzuk meg és írjuk ki azt, hogy hány napot éltünk!\n", + "- Generáljunk véletlenszerűen egy ezévi (helyes) dátumot!\n", + "- Készítsünk programot, amelyik 'kő-papír-olló' játékot szimulál két játékos között! Generáljunk n db véletlen 'választás-párt', értékeljük ki ezeket és adjuk meg, hogy hányszor nyert az első, hányszor a második játékos, ill. hány döntetlen született!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " ### Házi feladatok\n", + " - Az ember nem betűnként olvas, hanem valahogy másképp (pl. 'ránézéssel'). Ennek igazolására alakítsunk át egy mondatot (amelyben a szavak csak kisbetűket tartalmaznak és a szavak között pontosan egy db szóköz található) úgy, hogy a szavak sorrendjét megtartjuk, de a szavakat átalakítjuk! A legfeljebb 3 betűt tartalmazó szavak maradjanak változatlanok, a hosszabbak esetén az első és utolsó betűt a helyükön hagyva, a többi betűt keverjük meg véletlenszerűen! Nézzük meg, hogy el tudjuk-e olvasni az átalakított mondatot is kb. ugyanolyan gyorsan, mint az eredetit! Pl. 'na el tudod ezt is gyorsan olvasni' => 'na el tdoud ezt is gsryaon onslvai'.\n", + " - Nehezítsük az előző feladatot a magyar két (pl. 'gy', 'sz'), ill. hárombetűs ('dzs') 'betűk' kezelésével! Az ilyen 'betűket' egy betűként kezeljük! Pl. a 'gyász' szó így 'hárombetűs' szó lévén nem fog megváltozni, de a 'lándzsa' szó 'ötbetűs', aminek egy átalakítása lehet a 'ldzsána' szó (ahol a 'dzs' betű egyben maradt)!" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/09_ea.ipynb b/09_ea.ipynb new file mode 100644 index 0000000..bd274db --- /dev/null +++ b/09_ea.ipynb @@ -0,0 +1,2891 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## [Fájlkezelés](https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files)\n", + "\n", + "- A fájl valamilyen adathordozón tárolt, logikailag összefüggő adatok összessége.\n", + "- Egy fájl életciklusa a következő lépésekből áll:\n", + " 1. megnyitás\n", + " 2. olvasás, írás, pozícionálás, ...\n", + " 3. bezárás" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Fájl megnyitása (precízebben: létező fájl megnyitása olvasásra).\n", + "f = open('example_file.txt')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "_io.TextIOWrapper" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(f)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Fájl bezárása.\n", + "f.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "# example data\n", + "apple,10\n", + "pear,20\n", + "cherry,30\n", + "\n" + ] + } + ], + "source": [ + "# Fájl tartalmának beolvasása sztringbe.\n", + "f = open('example_file.txt')\n", + "s = f.read()\n", + "f.close()\n", + "print(s)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "# example data\n", + "apple,10\n", + "pear,20\n", + "cherry,30\n", + "\n" + ] + } + ], + "source": [ + "# ...ugyenez rövidebben:\n", + "s = open('example_file.txt').read()\n", + "print(s)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Megjegyzés: CPython értelmező esetén a fájl automatikusan bezáródik, ha minden hivatkozás megszűnik rá." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "# example data\n", + "\n", + "apple,10\n", + "\n" + ] + } + ], + "source": [ + "# Első 2 sor beolvasása.\n", + "f = open('example_file.txt')\n", + "print(f.readline())\n", + "print(f.readline())\n", + "f.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'# example data\\n'" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Megjegyzés: A readline a sortörést is beteszi az eredménybe.\n", + "line = open('example_file.txt').readline()\n", + "line" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'# example data'" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A sortörést pl. a strip függvénnyel vághatjuk le:\n", + "line.strip()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['# example data\\n', 'apple,10\\n', 'pear,20\\n', 'cherry,30\\n']" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Fájl sorainak beolvasása sztringlistába.\n", + "open('example_file.txt').readlines()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['aa', 'bb', 'ccc']" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Sztring darabolása egy határoló jelsorozat mentén (tokenizálás).\n", + "line = 'aa,bb,ccc'\n", + "line.split(',')" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['aa', 'bb', 'ccc']" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Alapértelmezés szerint a split fehér karakterek mentén darabol.\n", + "line = 'aa bb\\tccc\\n'\n", + "line.split()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "# example data\n", + "\n", + "apple,10\n", + "\n", + "pear,20\n", + "\n", + "cherry,30\n", + "\n" + ] + } + ], + "source": [ + "# Iterálás egy szövegfájl sorain.\n", + "for line in open('example_file.txt'):\n", + " print(line)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "# Fájl első sorának átugrása, a további sorok tokenizálása.\n", + "f = open('example_file.txt')\n", + "f.readline() # első sor átugrása\n", + "data = []\n", + "for line in f: # végigmegyünk a további sorokon\n", + " tok = line.strip().split(',')\n", + " rec = tok[0], int(tok[1])\n", + " data.append(rec)\n", + "f.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('apple', 10), ('pear', 20), ('cherry', 30)]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "# Sztring fájlba írása.\n", + "f = open('example_file_2.txt', 'w')\n", + "f.write('Apple\\nBanana\\n')\n", + "f.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "13" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...ugyanez tömörebben:\n", + "open('example_file_2.txt', 'w').write('Apple\\nBanana\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "(CPython értelmező esetén a fájl azonnal bezáródik, mivel nincsen rá több hivatkozás.)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "# Celsius-Fahrenheit táblázatot tartalmazó fájl elkészítése.\n", + "file = open('celsius_fahrenheit.txt', 'w')\n", + "file.write(f' °C °F\\n')\n", + "for c in range(-40, 41, 5):\n", + " f = c * 9 / 5 + 32\n", + " file.write(f'{c:8}{f:8}\\n')\n", + "file.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'a',\n", + " 'az',\n", + " 'csinálja',\n", + " 'egyáltalán',\n", + " 'fortranban',\n", + " 'gépidőelszámolást',\n", + " 'ha',\n", + " 'igazi',\n", + " 'intelligencia',\n", + " 'manipulációt',\n", + " 'megcsinálja',\n", + " 'mesterséges',\n", + " 'már',\n", + " 'programokat',\n", + " 'programozó',\n", + " 'szimbólum',\n", + " 'szövegkezelést'}" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Határozzuk meg az igazi.txt szövegfájlban található szavak halmazát!\n", + "{line.strip() for line in open('igazi.txt', encoding='utf-8')}" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[0, 1, 1, 0, 1, 0, 1, 1, 0, 1],\n", + " [0, 0, 1, 0, 1, 1, 0, 1, 0, 1],\n", + " [0, 0, 1, 0, 0, 0, 1, 1, 0, 0],\n", + " [0, 1, 0, 0, 1, 0, 1, 1, 0, 0],\n", + " [1, 0, 1, 1, 0, 0, 1, 0, 1, 1],\n", + " [1, 0, 1, 0, 0, 1, 1, 0, 1, 0],\n", + " [1, 1, 1, 0, 1, 1, 1, 0, 1, 1],\n", + " [0, 0, 0, 0, 0, 1, 0, 1, 0, 1],\n", + " [1, 1, 0, 1, 0, 1, 1, 1, 0, 0],\n", + " [1, 0, 1, 0, 1, 0, 0, 1, 0, 1]]" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Olvassuk be a matrix.txt szövegfájl tartalmát egész számok listájának listájába!\n", + "matrix = []\n", + "for line in open('matrix.txt'):\n", + " row = [int(x) for x in line.split()]\n", + " matrix.append(row)\n", + "matrix" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[[0, 1, 1, 0, 1, 0, 1, 1, 0, 1],\n", + " [0, 0, 1, 0, 1, 1, 0, 1, 0, 1],\n", + " [0, 0, 1, 0, 0, 0, 1, 1, 0, 0],\n", + " [0, 1, 0, 0, 1, 0, 1, 1, 0, 0],\n", + " [1, 0, 1, 1, 0, 0, 1, 0, 1, 1],\n", + " [1, 0, 1, 0, 0, 1, 1, 0, 1, 0],\n", + " [1, 1, 1, 0, 1, 1, 1, 0, 1, 1],\n", + " [0, 0, 0, 0, 0, 1, 0, 1, 0, 1],\n", + " [1, 1, 0, 1, 0, 1, 1, 1, 0, 0],\n", + " [1, 0, 1, 0, 1, 0, 0, 1, 0, 1]]" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Ugyanez dupla comprehension-nel:\n", + "matrix = [[int(x) for x in l.split()]\n", + " for l in open('matrix.txt')]\n", + "matrix" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Gyakorlás: Szóstatisztika\n", + "\n", + "A [hamlet.txt](hamlet.txt) fájl a [Hamlet](https://hu.wikipedia.org/wiki/Hamlet,_d%C3%A1n_kir%C3%A1lyfi) angol nyelvű szövegkönyvét tartalmazza. Készítsünk programot, amely kiszámítja majd kiírja a szövegkönyvben szereplő 30 leggyakoribb szót! A szó definíciója a következő legyen:\n", + "\n", + "- A szavakat a fehér karakterek (szóköz, tabulátor, soremelés) választják el egymástól.\n", + "- A kis- és nagybetűk ne számítsanak különbözőnek!\n", + "- A szó elején és végén található központozás karakterek ne számítsanak bele a szóba!" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "# Beolvasás kisbetűs szavak listájába.\n", + "words = open('hamlet.txt').read().lower().split()" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "# Központozás karakterek eltávolítása.\n", + "import string\n", + "words = [w.strip(string.punctuation) for w in words]" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "# Szógyakoriságok kiszámítása.\n", + "freq = {} # kulcs: szó, érték: előfordulások száma\n", + "for w in words:\n", + " if w in freq: freq[w] += 1\n", + " else: freq[w] = 1" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "freq2 = sorted([(x[1], x[0]) for x in freq.items()], reverse=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(1145, 'the')\n", + "(973, 'and')\n", + "(736, 'to')\n", + "(674, 'of')\n", + "(565, 'i')\n", + "(539, 'you')\n", + "(534, 'a')\n", + "(513, 'my')\n", + "(431, 'in')\n", + "(409, 'it')\n", + "(381, 'that')\n", + "(358, 'ham')\n", + "(339, 'is')\n", + "(310, 'not')\n", + "(297, 'this')\n", + "(297, 'his')\n", + "(268, 'with')\n", + "(258, 'but')\n", + "(248, 'for')\n", + "(241, 'your')\n", + "(231, 'me')\n", + "(223, 'lord')\n", + "(219, 'as')\n", + "(216, 'be')\n", + "(213, 'he')\n", + "(200, 'what')\n", + "(195, 'king')\n", + "(195, 'him')\n", + "(194, 'so')\n", + "(180, 'have')\n" + ] + } + ], + "source": [ + "# Kiírás.\n", + "for i in range(30):\n", + " print(freq2[i])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Gyakorlás: Premier League tabella\n", + "\n", + "A [pl.txt](pl.txt) szövegfájl a Premier League 2011-12-es szezonjának eredményeit tartalmazza. Készítsünk programot, amely:\n", + "\n", + "- kiírja, hogy a mérkőzések hány százalékán esett gól,\n", + "- kiírja, hogy melyik mérkőzésen esett a legtöbb gól,\n", + "- bekéri a felhasználótól n értékét, majd kiírja a bajnokság állását az n. forduló után (rendezési szempontok: pontszám, gólkülönbség, több rúgott gól)!" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "# Adatok beolvasása szótárak listájába.\n", + "games = []\n", + "f = open('pl.txt')\n", + "\n", + "# első 6 sor átugrása\n", + "for i in range(6): f.readline()\n", + " \n", + "# további sorok feldolgozása\n", + "for line in f:\n", + " tok = line.split('\\t')\n", + " rec = {\n", + " 'round': int(tok[0]),\n", + " 'hteam': tok[1],\n", + " 'ateam': tok[2],\n", + " 'hgoals': int(tok[3]),\n", + " 'agoals': int(tok[4])\n", + " }\n", + " games.append(rec)\n", + " \n", + "f.close()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[{'round': 1,\n", + " 'hteam': 'Blackburn Rovers',\n", + " 'ateam': 'Wolverhampton Wanderers',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 1,\n", + " 'hteam': 'Fulham FC',\n", + " 'ateam': 'Aston Villa',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 1,\n", + " 'hteam': 'Liverpool FC',\n", + " 'ateam': 'Sunderland AFC',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 1,\n", + " 'hteam': 'Queens Park Rangers',\n", + " 'ateam': 'Bolton Wanderers',\n", + " 'hgoals': 0,\n", + " 'agoals': 4},\n", + " {'round': 1,\n", + " 'hteam': 'Wigan Athletic',\n", + " 'ateam': 'Norwich City',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 1,\n", + " 'hteam': 'Newcastle United',\n", + " 'ateam': 'Arsenal FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 1,\n", + " 'hteam': 'Stoke City',\n", + " 'ateam': 'Chelsea FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 1,\n", + " 'hteam': 'West Bromwich Albion',\n", + " 'ateam': 'Manchester United',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 1,\n", + " 'hteam': 'Manchester City',\n", + " 'ateam': 'Swansea City',\n", + " 'hgoals': 4,\n", + " 'agoals': 0},\n", + " {'round': 1,\n", + " 'hteam': 'Tottenham Hotspur',\n", + " 'ateam': 'Everton FC',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 2,\n", + " 'hteam': 'Sunderland AFC',\n", + " 'ateam': 'Newcastle United',\n", + " 'hgoals': 0,\n", + " 'agoals': 1},\n", + " {'round': 2,\n", + " 'hteam': 'Arsenal FC',\n", + " 'ateam': 'Liverpool FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 2},\n", + " {'round': 2,\n", + " 'hteam': 'Aston Villa',\n", + " 'ateam': 'Blackburn Rovers',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 2,\n", + " 'hteam': 'Everton FC',\n", + " 'ateam': 'Queens Park Rangers',\n", + " 'hgoals': 0,\n", + " 'agoals': 1},\n", + " {'round': 2,\n", + " 'hteam': 'Swansea City',\n", + " 'ateam': 'Wigan Athletic',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 2,\n", + " 'hteam': 'Chelsea FC',\n", + " 'ateam': 'West Bromwich Albion',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 2,\n", + " 'hteam': 'Norwich City',\n", + " 'ateam': 'Stoke City',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 2,\n", + " 'hteam': 'Wolverhampton Wanderers',\n", + " 'ateam': 'Fulham FC',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 2,\n", + " 'hteam': 'Bolton Wanderers',\n", + " 'ateam': 'Manchester City',\n", + " 'hgoals': 2,\n", + " 'agoals': 3},\n", + " {'round': 2,\n", + " 'hteam': 'Manchester United',\n", + " 'ateam': 'Tottenham Hotspur',\n", + " 'hgoals': 3,\n", + " 'agoals': 0},\n", + " {'round': 3,\n", + " 'hteam': 'Aston Villa',\n", + " 'ateam': 'Wolverhampton Wanderers',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 3,\n", + " 'hteam': 'Wigan Athletic',\n", + " 'ateam': 'Queens Park Rangers',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 3,\n", + " 'hteam': 'Blackburn Rovers',\n", + " 'ateam': 'Everton FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 1},\n", + " {'round': 3,\n", + " 'hteam': 'Chelsea FC',\n", + " 'ateam': 'Norwich City',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 3,\n", + " 'hteam': 'Swansea City',\n", + " 'ateam': 'Sunderland AFC',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 3,\n", + " 'hteam': 'Liverpool FC',\n", + " 'ateam': 'Bolton Wanderers',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 3,\n", + " 'hteam': 'Newcastle United',\n", + " 'ateam': 'Fulham FC',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 3,\n", + " 'hteam': 'Tottenham Hotspur',\n", + " 'ateam': 'Manchester City',\n", + " 'hgoals': 1,\n", + " 'agoals': 5},\n", + " {'round': 3,\n", + " 'hteam': 'West Bromwich Albion',\n", + " 'ateam': 'Stoke City',\n", + " 'hgoals': 0,\n", + " 'agoals': 1},\n", + " {'round': 3,\n", + " 'hteam': 'Manchester United',\n", + " 'ateam': 'Arsenal FC',\n", + " 'hgoals': 8,\n", + " 'agoals': 2},\n", + " {'round': 4,\n", + " 'hteam': 'Arsenal FC',\n", + " 'ateam': 'Swansea City',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 4,\n", + " 'hteam': 'Everton FC',\n", + " 'ateam': 'Aston Villa',\n", + " 'hgoals': 2,\n", + " 'agoals': 2},\n", + " {'round': 4,\n", + " 'hteam': 'Manchester City',\n", + " 'ateam': 'Wigan Athletic',\n", + " 'hgoals': 3,\n", + " 'agoals': 0},\n", + " {'round': 4,\n", + " 'hteam': 'Stoke City',\n", + " 'ateam': 'Liverpool FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 4,\n", + " 'hteam': 'Sunderland AFC',\n", + " 'ateam': 'Chelsea FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 4,\n", + " 'hteam': 'Wolverhampton Wanderers',\n", + " 'ateam': 'Tottenham Hotspur',\n", + " 'hgoals': 0,\n", + " 'agoals': 2},\n", + " {'round': 4,\n", + " 'hteam': 'Bolton Wanderers',\n", + " 'ateam': 'Manchester United',\n", + " 'hgoals': 0,\n", + " 'agoals': 5},\n", + " {'round': 4,\n", + " 'hteam': 'Norwich City',\n", + " 'ateam': 'West Bromwich Albion',\n", + " 'hgoals': 0,\n", + " 'agoals': 1},\n", + " {'round': 4,\n", + " 'hteam': 'Fulham FC',\n", + " 'ateam': 'Blackburn Rovers',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 4,\n", + " 'hteam': 'Queens Park Rangers',\n", + " 'ateam': 'Newcastle United',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 5,\n", + " 'hteam': 'Blackburn Rovers',\n", + " 'ateam': 'Arsenal FC',\n", + " 'hgoals': 4,\n", + " 'agoals': 3},\n", + " {'round': 5,\n", + " 'hteam': 'Aston Villa',\n", + " 'ateam': 'Newcastle United',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 5,\n", + " 'hteam': 'Bolton Wanderers',\n", + " 'ateam': 'Norwich City',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 5,\n", + " 'hteam': 'Everton FC',\n", + " 'ateam': 'Wigan Athletic',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 5,\n", + " 'hteam': 'Swansea City',\n", + " 'ateam': 'West Bromwich Albion',\n", + " 'hgoals': 3,\n", + " 'agoals': 0},\n", + " {'round': 5,\n", + " 'hteam': 'Wolverhampton Wanderers',\n", + " 'ateam': 'Queens Park Rangers',\n", + " 'hgoals': 0,\n", + " 'agoals': 3},\n", + " {'round': 5,\n", + " 'hteam': 'Tottenham Hotspur',\n", + " 'ateam': 'Liverpool FC',\n", + " 'hgoals': 4,\n", + " 'agoals': 0},\n", + " {'round': 5,\n", + " 'hteam': 'Fulham FC',\n", + " 'ateam': 'Manchester City',\n", + " 'hgoals': 2,\n", + " 'agoals': 2},\n", + " {'round': 5,\n", + " 'hteam': 'Sunderland AFC',\n", + " 'ateam': 'Stoke City',\n", + " 'hgoals': 4,\n", + " 'agoals': 0},\n", + " {'round': 5,\n", + " 'hteam': 'Manchester United',\n", + " 'ateam': 'Chelsea FC',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 6,\n", + " 'hteam': 'Manchester City',\n", + " 'ateam': 'Everton FC',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 6,\n", + " 'hteam': 'Arsenal FC',\n", + " 'ateam': 'Bolton Wanderers',\n", + " 'hgoals': 3,\n", + " 'agoals': 0},\n", + " {'round': 6,\n", + " 'hteam': 'Chelsea FC',\n", + " 'ateam': 'Swansea City',\n", + " 'hgoals': 4,\n", + " 'agoals': 1},\n", + " {'round': 6,\n", + " 'hteam': 'Liverpool FC',\n", + " 'ateam': 'Wolverhampton Wanderers',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 6,\n", + " 'hteam': 'Newcastle United',\n", + " 'ateam': 'Blackburn Rovers',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 6,\n", + " 'hteam': 'West Bromwich Albion',\n", + " 'ateam': 'Fulham FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 6,\n", + " 'hteam': 'Wigan Athletic',\n", + " 'ateam': 'Tottenham Hotspur',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 6,\n", + " 'hteam': 'Stoke City',\n", + " 'ateam': 'Manchester United',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 6,\n", + " 'hteam': 'Queens Park Rangers',\n", + " 'ateam': 'Aston Villa',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 6,\n", + " 'hteam': 'Norwich City',\n", + " 'ateam': 'Sunderland AFC',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 7,\n", + " 'hteam': 'Everton FC',\n", + " 'ateam': 'Liverpool FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 2},\n", + " {'round': 7,\n", + " 'hteam': 'Aston Villa',\n", + " 'ateam': 'Wigan Athletic',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 7,\n", + " 'hteam': 'Blackburn Rovers',\n", + " 'ateam': 'Manchester City',\n", + " 'hgoals': 0,\n", + " 'agoals': 4},\n", + " {'round': 7,\n", + " 'hteam': 'Manchester United',\n", + " 'ateam': 'Norwich City',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 7,\n", + " 'hteam': 'Sunderland AFC',\n", + " 'ateam': 'West Bromwich Albion',\n", + " 'hgoals': 2,\n", + " 'agoals': 2},\n", + " {'round': 7,\n", + " 'hteam': 'Wolverhampton Wanderers',\n", + " 'ateam': 'Newcastle United',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 7,\n", + " 'hteam': 'Bolton Wanderers',\n", + " 'ateam': 'Chelsea FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 5},\n", + " {'round': 7,\n", + " 'hteam': 'Fulham FC',\n", + " 'ateam': 'Queens Park Rangers',\n", + " 'hgoals': 6,\n", + " 'agoals': 0},\n", + " {'round': 7,\n", + " 'hteam': 'Swansea City',\n", + " 'ateam': 'Stoke City',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 7,\n", + " 'hteam': 'Tottenham Hotspur',\n", + " 'ateam': 'Arsenal FC',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 8,\n", + " 'hteam': 'Liverpool FC',\n", + " 'ateam': 'Manchester United',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 8,\n", + " 'hteam': 'Manchester City',\n", + " 'ateam': 'Aston Villa',\n", + " 'hgoals': 4,\n", + " 'agoals': 1},\n", + " {'round': 8,\n", + " 'hteam': 'Norwich City',\n", + " 'ateam': 'Swansea City',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 8,\n", + " 'hteam': 'Queens Park Rangers',\n", + " 'ateam': 'Blackburn Rovers',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 8,\n", + " 'hteam': 'Stoke City',\n", + " 'ateam': 'Fulham FC',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 8,\n", + " 'hteam': 'Wigan Athletic',\n", + " 'ateam': 'Bolton Wanderers',\n", + " 'hgoals': 1,\n", + " 'agoals': 3},\n", + " {'round': 8,\n", + " 'hteam': 'Chelsea FC',\n", + " 'ateam': 'Everton FC',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 8,\n", + " 'hteam': 'West Bromwich Albion',\n", + " 'ateam': 'Wolverhampton Wanderers',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 8,\n", + " 'hteam': 'Arsenal FC',\n", + " 'ateam': 'Sunderland AFC',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 8,\n", + " 'hteam': 'Newcastle United',\n", + " 'ateam': 'Tottenham Hotspur',\n", + " 'hgoals': 2,\n", + " 'agoals': 2},\n", + " {'round': 9,\n", + " 'hteam': 'Wolverhampton Wanderers',\n", + " 'ateam': 'Swansea City',\n", + " 'hgoals': 2,\n", + " 'agoals': 2},\n", + " {'round': 9,\n", + " 'hteam': 'Aston Villa',\n", + " 'ateam': 'West Bromwich Albion',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 9,\n", + " 'hteam': 'Bolton Wanderers',\n", + " 'ateam': 'Sunderland AFC',\n", + " 'hgoals': 0,\n", + " 'agoals': 2},\n", + " {'round': 9,\n", + " 'hteam': 'Newcastle United',\n", + " 'ateam': 'Wigan Athletic',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 9,\n", + " 'hteam': 'Liverpool FC',\n", + " 'ateam': 'Norwich City',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 9,\n", + " 'hteam': 'Arsenal FC',\n", + " 'ateam': 'Stoke City',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 9,\n", + " 'hteam': 'Fulham FC',\n", + " 'ateam': 'Everton FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 3},\n", + " {'round': 9,\n", + " 'hteam': 'Manchester United',\n", + " 'ateam': 'Manchester City',\n", + " 'hgoals': 1,\n", + " 'agoals': 6},\n", + " {'round': 9,\n", + " 'hteam': 'Blackburn Rovers',\n", + " 'ateam': 'Tottenham Hotspur',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 9,\n", + " 'hteam': 'Queens Park Rangers',\n", + " 'ateam': 'Chelsea FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 10,\n", + " 'hteam': 'Everton FC',\n", + " 'ateam': 'Manchester United',\n", + " 'hgoals': 0,\n", + " 'agoals': 1},\n", + " {'round': 10,\n", + " 'hteam': 'Chelsea FC',\n", + " 'ateam': 'Arsenal FC',\n", + " 'hgoals': 3,\n", + " 'agoals': 5},\n", + " {'round': 10,\n", + " 'hteam': 'Manchester City',\n", + " 'ateam': 'Wolverhampton Wanderers',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 10,\n", + " 'hteam': 'Norwich City',\n", + " 'ateam': 'Blackburn Rovers',\n", + " 'hgoals': 3,\n", + " 'agoals': 3},\n", + " {'round': 10,\n", + " 'hteam': 'Sunderland AFC',\n", + " 'ateam': 'Aston Villa',\n", + " 'hgoals': 2,\n", + " 'agoals': 2},\n", + " {'round': 10,\n", + " 'hteam': 'Swansea City',\n", + " 'ateam': 'Bolton Wanderers',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 10,\n", + " 'hteam': 'Wigan Athletic',\n", + " 'ateam': 'Fulham FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 2},\n", + " {'round': 10,\n", + " 'hteam': 'West Bromwich Albion',\n", + " 'ateam': 'Liverpool FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 2},\n", + " {'round': 10,\n", + " 'hteam': 'Tottenham Hotspur',\n", + " 'ateam': 'Queens Park Rangers',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 10,\n", + " 'hteam': 'Stoke City',\n", + " 'ateam': 'Newcastle United',\n", + " 'hgoals': 1,\n", + " 'agoals': 3},\n", + " {'round': 11,\n", + " 'hteam': 'Newcastle United',\n", + " 'ateam': 'Everton FC',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 11,\n", + " 'hteam': 'Arsenal FC',\n", + " 'ateam': 'West Bromwich Albion',\n", + " 'hgoals': 3,\n", + " 'agoals': 0},\n", + " {'round': 11,\n", + " 'hteam': 'Aston Villa',\n", + " 'ateam': 'Norwich City',\n", + " 'hgoals': 3,\n", + " 'agoals': 2},\n", + " {'round': 11,\n", + " 'hteam': 'Blackburn Rovers',\n", + " 'ateam': 'Chelsea FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 1},\n", + " {'round': 11,\n", + " 'hteam': 'Liverpool FC',\n", + " 'ateam': 'Swansea City',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 11,\n", + " 'hteam': 'Manchester United',\n", + " 'ateam': 'Sunderland AFC',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 11,\n", + " 'hteam': 'Queens Park Rangers',\n", + " 'ateam': 'Manchester City',\n", + " 'hgoals': 2,\n", + " 'agoals': 3},\n", + " {'round': 11,\n", + " 'hteam': 'Wolverhampton Wanderers',\n", + " 'ateam': 'Wigan Athletic',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 11,\n", + " 'hteam': 'Bolton Wanderers',\n", + " 'ateam': 'Stoke City',\n", + " 'hgoals': 5,\n", + " 'agoals': 0},\n", + " {'round': 11,\n", + " 'hteam': 'Fulham FC',\n", + " 'ateam': 'Tottenham Hotspur',\n", + " 'hgoals': 1,\n", + " 'agoals': 3},\n", + " {'round': 12,\n", + " 'hteam': 'Norwich City',\n", + " 'ateam': 'Arsenal FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 12,\n", + " 'hteam': 'Everton FC',\n", + " 'ateam': 'Wolverhampton Wanderers',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 12,\n", + " 'hteam': 'Manchester City',\n", + " 'ateam': 'Newcastle United',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 12,\n", + " 'hteam': 'Stoke City',\n", + " 'ateam': 'Queens Park Rangers',\n", + " 'hgoals': 2,\n", + " 'agoals': 3},\n", + " {'round': 12,\n", + " 'hteam': 'Sunderland AFC',\n", + " 'ateam': 'Fulham FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 12,\n", + " 'hteam': 'West Bromwich Albion',\n", + " 'ateam': 'Bolton Wanderers',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 12,\n", + " 'hteam': 'Wigan Athletic',\n", + " 'ateam': 'Blackburn Rovers',\n", + " 'hgoals': 3,\n", + " 'agoals': 3},\n", + " {'round': 12,\n", + " 'hteam': 'Swansea City',\n", + " 'ateam': 'Manchester United',\n", + " 'hgoals': 0,\n", + " 'agoals': 1},\n", + " {'round': 12,\n", + " 'hteam': 'Chelsea FC',\n", + " 'ateam': 'Liverpool FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 12,\n", + " 'hteam': 'Tottenham Hotspur',\n", + " 'ateam': 'Aston Villa',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 13,\n", + " 'hteam': 'Stoke City',\n", + " 'ateam': 'Blackburn Rovers',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 13,\n", + " 'hteam': 'Bolton Wanderers',\n", + " 'ateam': 'Everton FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 2},\n", + " {'round': 13,\n", + " 'hteam': 'Chelsea FC',\n", + " 'ateam': 'Wolverhampton Wanderers',\n", + " 'hgoals': 3,\n", + " 'agoals': 0},\n", + " {'round': 13,\n", + " 'hteam': 'Manchester United',\n", + " 'ateam': 'Newcastle United',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 13,\n", + " 'hteam': 'Norwich City',\n", + " 'ateam': 'Queens Park Rangers',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 13,\n", + " 'hteam': 'Sunderland AFC',\n", + " 'ateam': 'Wigan Athletic',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 13,\n", + " 'hteam': 'West Bromwich Albion',\n", + " 'ateam': 'Tottenham Hotspur',\n", + " 'hgoals': 1,\n", + " 'agoals': 3},\n", + " {'round': 13,\n", + " 'hteam': 'Arsenal FC',\n", + " 'ateam': 'Fulham FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 13,\n", + " 'hteam': 'Swansea City',\n", + " 'ateam': 'Aston Villa',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 13,\n", + " 'hteam': 'Liverpool FC',\n", + " 'ateam': 'Manchester City',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 14,\n", + " 'hteam': 'Newcastle United',\n", + " 'ateam': 'Chelsea FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 3},\n", + " {'round': 14,\n", + " 'hteam': 'Blackburn Rovers',\n", + " 'ateam': 'Swansea City',\n", + " 'hgoals': 4,\n", + " 'agoals': 2},\n", + " {'round': 14,\n", + " 'hteam': 'Manchester City',\n", + " 'ateam': 'Norwich City',\n", + " 'hgoals': 5,\n", + " 'agoals': 1},\n", + " {'round': 14,\n", + " 'hteam': 'Queens Park Rangers',\n", + " 'ateam': 'West Bromwich Albion',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 14,\n", + " 'hteam': 'Tottenham Hotspur',\n", + " 'ateam': 'Bolton Wanderers',\n", + " 'hgoals': 3,\n", + " 'agoals': 0},\n", + " {'round': 14,\n", + " 'hteam': 'Wigan Athletic',\n", + " 'ateam': 'Arsenal FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 4},\n", + " {'round': 14,\n", + " 'hteam': 'Aston Villa',\n", + " 'ateam': 'Manchester United',\n", + " 'hgoals': 0,\n", + " 'agoals': 1},\n", + " {'round': 14,\n", + " 'hteam': 'Everton FC',\n", + " 'ateam': 'Stoke City',\n", + " 'hgoals': 0,\n", + " 'agoals': 1},\n", + " {'round': 14,\n", + " 'hteam': 'Wolverhampton Wanderers',\n", + " 'ateam': 'Sunderland AFC',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 14,\n", + " 'hteam': 'Fulham FC',\n", + " 'ateam': 'Liverpool FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 15,\n", + " 'hteam': 'Arsenal FC',\n", + " 'ateam': 'Everton FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 15,\n", + " 'hteam': 'Bolton Wanderers',\n", + " 'ateam': 'Aston Villa',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 15,\n", + " 'hteam': 'Liverpool FC',\n", + " 'ateam': 'Queens Park Rangers',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 15,\n", + " 'hteam': 'Manchester United',\n", + " 'ateam': 'Wolverhampton Wanderers',\n", + " 'hgoals': 4,\n", + " 'agoals': 1},\n", + " {'round': 15,\n", + " 'hteam': 'Norwich City',\n", + " 'ateam': 'Newcastle United',\n", + " 'hgoals': 4,\n", + " 'agoals': 2},\n", + " {'round': 15,\n", + " 'hteam': 'Swansea City',\n", + " 'ateam': 'Fulham FC',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 15,\n", + " 'hteam': 'West Bromwich Albion',\n", + " 'ateam': 'Wigan Athletic',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 15,\n", + " 'hteam': 'Sunderland AFC',\n", + " 'ateam': 'Blackburn Rovers',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 15,\n", + " 'hteam': 'Stoke City',\n", + " 'ateam': 'Tottenham Hotspur',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 15,\n", + " 'hteam': 'Chelsea FC',\n", + " 'ateam': 'Manchester City',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 16,\n", + " 'hteam': 'Blackburn Rovers',\n", + " 'ateam': 'West Bromwich Albion',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 16,\n", + " 'hteam': 'Everton FC',\n", + " 'ateam': 'Norwich City',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 16,\n", + " 'hteam': 'Fulham FC',\n", + " 'ateam': 'Bolton Wanderers',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 16,\n", + " 'hteam': 'Newcastle United',\n", + " 'ateam': 'Swansea City',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 16,\n", + " 'hteam': 'Wolverhampton Wanderers',\n", + " 'ateam': 'Stoke City',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 16,\n", + " 'hteam': 'Wigan Athletic',\n", + " 'ateam': 'Chelsea FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 16,\n", + " 'hteam': 'Queens Park Rangers',\n", + " 'ateam': 'Manchester United',\n", + " 'hgoals': 0,\n", + " 'agoals': 2},\n", + " {'round': 16,\n", + " 'hteam': 'Aston Villa',\n", + " 'ateam': 'Liverpool FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 2},\n", + " {'round': 16,\n", + " 'hteam': 'Tottenham Hotspur',\n", + " 'ateam': 'Sunderland AFC',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 16,\n", + " 'hteam': 'Manchester City',\n", + " 'ateam': 'Arsenal FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 17,\n", + " 'hteam': 'Wolverhampton Wanderers',\n", + " 'ateam': 'Norwich City',\n", + " 'hgoals': 2,\n", + " 'agoals': 2},\n", + " {'round': 17,\n", + " 'hteam': 'Blackburn Rovers',\n", + " 'ateam': 'Bolton Wanderers',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 17,\n", + " 'hteam': 'Aston Villa',\n", + " 'ateam': 'Arsenal FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 17,\n", + " 'hteam': 'Manchester City',\n", + " 'ateam': 'Stoke City',\n", + " 'hgoals': 3,\n", + " 'agoals': 0},\n", + " {'round': 17,\n", + " 'hteam': 'Newcastle United',\n", + " 'ateam': 'West Bromwich Albion',\n", + " 'hgoals': 2,\n", + " 'agoals': 3},\n", + " {'round': 17,\n", + " 'hteam': 'Queens Park Rangers',\n", + " 'ateam': 'Sunderland AFC',\n", + " 'hgoals': 2,\n", + " 'agoals': 3},\n", + " {'round': 17,\n", + " 'hteam': 'Wigan Athletic',\n", + " 'ateam': 'Liverpool FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 17,\n", + " 'hteam': 'Everton FC',\n", + " 'ateam': 'Swansea City',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 17,\n", + " 'hteam': 'Fulham FC',\n", + " 'ateam': 'Manchester United',\n", + " 'hgoals': 0,\n", + " 'agoals': 5},\n", + " {'round': 17,\n", + " 'hteam': 'Tottenham Hotspur',\n", + " 'ateam': 'Chelsea FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 18,\n", + " 'hteam': 'Chelsea FC',\n", + " 'ateam': 'Fulham FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 18,\n", + " 'hteam': 'Bolton Wanderers',\n", + " 'ateam': 'Newcastle United',\n", + " 'hgoals': 0,\n", + " 'agoals': 2},\n", + " {'round': 18,\n", + " 'hteam': 'Liverpool FC',\n", + " 'ateam': 'Blackburn Rovers',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 18,\n", + " 'hteam': 'Manchester United',\n", + " 'ateam': 'Wigan Athletic',\n", + " 'hgoals': 5,\n", + " 'agoals': 0},\n", + " {'round': 18,\n", + " 'hteam': 'Sunderland AFC',\n", + " 'ateam': 'Everton FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 18,\n", + " 'hteam': 'West Bromwich Albion',\n", + " 'ateam': 'Manchester City',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 18,\n", + " 'hteam': 'Stoke City',\n", + " 'ateam': 'Aston Villa',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 18,\n", + " 'hteam': 'Arsenal FC',\n", + " 'ateam': 'Wolverhampton Wanderers',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 18,\n", + " 'hteam': 'Swansea City',\n", + " 'ateam': 'Queens Park Rangers',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 18,\n", + " 'hteam': 'Norwich City',\n", + " 'ateam': 'Tottenham Hotspur',\n", + " 'hgoals': 0,\n", + " 'agoals': 2},\n", + " {'round': 19,\n", + " 'hteam': 'Liverpool FC',\n", + " 'ateam': 'Newcastle United',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 19,\n", + " 'hteam': 'Manchester United',\n", + " 'ateam': 'Blackburn Rovers',\n", + " 'hgoals': 2,\n", + " 'agoals': 3},\n", + " {'round': 19,\n", + " 'hteam': 'Arsenal FC',\n", + " 'ateam': 'Queens Park Rangers',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 19,\n", + " 'hteam': 'Bolton Wanderers',\n", + " 'ateam': 'Wolverhampton Wanderers',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 19,\n", + " 'hteam': 'Chelsea FC',\n", + " 'ateam': 'Aston Villa',\n", + " 'hgoals': 1,\n", + " 'agoals': 3},\n", + " {'round': 19,\n", + " 'hteam': 'Norwich City',\n", + " 'ateam': 'Fulham FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 19,\n", + " 'hteam': 'Stoke City',\n", + " 'ateam': 'Wigan Athletic',\n", + " 'hgoals': 2,\n", + " 'agoals': 2},\n", + " {'round': 19,\n", + " 'hteam': 'Swansea City',\n", + " 'ateam': 'Tottenham Hotspur',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 19,\n", + " 'hteam': 'West Bromwich Albion',\n", + " 'ateam': 'Everton FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 1},\n", + " {'round': 19,\n", + " 'hteam': 'Sunderland AFC',\n", + " 'ateam': 'Manchester City',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 20,\n", + " 'hteam': 'Blackburn Rovers',\n", + " 'ateam': 'Stoke City',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 20,\n", + " 'hteam': 'Aston Villa',\n", + " 'ateam': 'Swansea City',\n", + " 'hgoals': 0,\n", + " 'agoals': 2},\n", + " {'round': 20,\n", + " 'hteam': 'Queens Park Rangers',\n", + " 'ateam': 'Norwich City',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 20,\n", + " 'hteam': 'Wolverhampton Wanderers',\n", + " 'ateam': 'Chelsea FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 20,\n", + " 'hteam': 'Fulham FC',\n", + " 'ateam': 'Arsenal FC',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 20,\n", + " 'hteam': 'Tottenham Hotspur',\n", + " 'ateam': 'West Bromwich Albion',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 20,\n", + " 'hteam': 'Wigan Athletic',\n", + " 'ateam': 'Sunderland AFC',\n", + " 'hgoals': 1,\n", + " 'agoals': 4},\n", + " {'round': 20,\n", + " 'hteam': 'Manchester City',\n", + " 'ateam': 'Liverpool FC',\n", + " 'hgoals': 3,\n", + " 'agoals': 0},\n", + " {'round': 20,\n", + " 'hteam': 'Everton FC',\n", + " 'ateam': 'Bolton Wanderers',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 20,\n", + " 'hteam': 'Newcastle United',\n", + " 'ateam': 'Manchester United',\n", + " 'hgoals': 3,\n", + " 'agoals': 0},\n", + " {'round': 21,\n", + " 'hteam': 'Aston Villa',\n", + " 'ateam': 'Everton FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 21,\n", + " 'hteam': 'Blackburn Rovers',\n", + " 'ateam': 'Fulham FC',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 21,\n", + " 'hteam': 'Chelsea FC',\n", + " 'ateam': 'Sunderland AFC',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 21,\n", + " 'hteam': 'Liverpool FC',\n", + " 'ateam': 'Stoke City',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 21,\n", + " 'hteam': 'Manchester United',\n", + " 'ateam': 'Bolton Wanderers',\n", + " 'hgoals': 3,\n", + " 'agoals': 0},\n", + " {'round': 21,\n", + " 'hteam': 'Tottenham Hotspur',\n", + " 'ateam': 'Wolverhampton Wanderers',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 21,\n", + " 'hteam': 'West Bromwich Albion',\n", + " 'ateam': 'Norwich City',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 21,\n", + " 'hteam': 'Newcastle United',\n", + " 'ateam': 'Queens Park Rangers',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 21,\n", + " 'hteam': 'Swansea City',\n", + " 'ateam': 'Arsenal FC',\n", + " 'hgoals': 3,\n", + " 'agoals': 2},\n", + " {'round': 21,\n", + " 'hteam': 'Wigan Athletic',\n", + " 'ateam': 'Manchester City',\n", + " 'hgoals': 0,\n", + " 'agoals': 1},\n", + " {'round': 22,\n", + " 'hteam': 'Norwich City',\n", + " 'ateam': 'Chelsea FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 22,\n", + " 'hteam': 'Everton FC',\n", + " 'ateam': 'Blackburn Rovers',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 22,\n", + " 'hteam': 'Fulham FC',\n", + " 'ateam': 'Newcastle United',\n", + " 'hgoals': 5,\n", + " 'agoals': 2},\n", + " {'round': 22,\n", + " 'hteam': 'Queens Park Rangers',\n", + " 'ateam': 'Wigan Athletic',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 22,\n", + " 'hteam': 'Stoke City',\n", + " 'ateam': 'West Bromwich Albion',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 22,\n", + " 'hteam': 'Sunderland AFC',\n", + " 'ateam': 'Swansea City',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 22,\n", + " 'hteam': 'Wolverhampton Wanderers',\n", + " 'ateam': 'Aston Villa',\n", + " 'hgoals': 2,\n", + " 'agoals': 3},\n", + " {'round': 22,\n", + " 'hteam': 'Bolton Wanderers',\n", + " 'ateam': 'Liverpool FC',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 22,\n", + " 'hteam': 'Manchester City',\n", + " 'ateam': 'Tottenham Hotspur',\n", + " 'hgoals': 3,\n", + " 'agoals': 2},\n", + " {'round': 22,\n", + " 'hteam': 'Arsenal FC',\n", + " 'ateam': 'Manchester United',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 23,\n", + " 'hteam': 'Swansea City',\n", + " 'ateam': 'Chelsea FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 23,\n", + " 'hteam': 'Tottenham Hotspur',\n", + " 'ateam': 'Wigan Athletic',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 23,\n", + " 'hteam': 'Wolverhampton Wanderers',\n", + " 'ateam': 'Liverpool FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 3},\n", + " {'round': 23,\n", + " 'hteam': 'Manchester United',\n", + " 'ateam': 'Stoke City',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 23,\n", + " 'hteam': 'Everton FC',\n", + " 'ateam': 'Manchester City',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 23,\n", + " 'hteam': 'Aston Villa',\n", + " 'ateam': 'Queens Park Rangers',\n", + " 'hgoals': 2,\n", + " 'agoals': 2},\n", + " {'round': 23,\n", + " 'hteam': 'Bolton Wanderers',\n", + " 'ateam': 'Arsenal FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 23,\n", + " 'hteam': 'Sunderland AFC',\n", + " 'ateam': 'Norwich City',\n", + " 'hgoals': 3,\n", + " 'agoals': 0},\n", + " {'round': 23,\n", + " 'hteam': 'Fulham FC',\n", + " 'ateam': 'West Bromwich Albion',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 23,\n", + " 'hteam': 'Blackburn Rovers',\n", + " 'ateam': 'Newcastle United',\n", + " 'hgoals': 0,\n", + " 'agoals': 2},\n", + " {'round': 24,\n", + " 'hteam': 'Arsenal FC',\n", + " 'ateam': 'Blackburn Rovers',\n", + " 'hgoals': 7,\n", + " 'agoals': 1},\n", + " {'round': 24,\n", + " 'hteam': 'Norwich City',\n", + " 'ateam': 'Bolton Wanderers',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 24,\n", + " 'hteam': 'Queens Park Rangers',\n", + " 'ateam': 'Wolverhampton Wanderers',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 24,\n", + " 'hteam': 'Stoke City',\n", + " 'ateam': 'Sunderland AFC',\n", + " 'hgoals': 0,\n", + " 'agoals': 1},\n", + " {'round': 24,\n", + " 'hteam': 'West Bromwich Albion',\n", + " 'ateam': 'Swansea City',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 24,\n", + " 'hteam': 'Wigan Athletic',\n", + " 'ateam': 'Everton FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 24,\n", + " 'hteam': 'Manchester City',\n", + " 'ateam': 'Fulham FC',\n", + " 'hgoals': 3,\n", + " 'agoals': 0},\n", + " {'round': 24,\n", + " 'hteam': 'Newcastle United',\n", + " 'ateam': 'Aston Villa',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 24,\n", + " 'hteam': 'Chelsea FC',\n", + " 'ateam': 'Manchester United',\n", + " 'hgoals': 3,\n", + " 'agoals': 3},\n", + " {'round': 24,\n", + " 'hteam': 'Liverpool FC',\n", + " 'ateam': 'Tottenham Hotspur',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 25,\n", + " 'hteam': 'Manchester United',\n", + " 'ateam': 'Liverpool FC',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 25,\n", + " 'hteam': 'Blackburn Rovers',\n", + " 'ateam': 'Queens Park Rangers',\n", + " 'hgoals': 3,\n", + " 'agoals': 2},\n", + " {'round': 25,\n", + " 'hteam': 'Bolton Wanderers',\n", + " 'ateam': 'Wigan Athletic',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 25,\n", + " 'hteam': 'Everton FC',\n", + " 'ateam': 'Chelsea FC',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 25,\n", + " 'hteam': 'Fulham FC',\n", + " 'ateam': 'Stoke City',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 25,\n", + " 'hteam': 'Sunderland AFC',\n", + " 'ateam': 'Arsenal FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 25,\n", + " 'hteam': 'Swansea City',\n", + " 'ateam': 'Norwich City',\n", + " 'hgoals': 2,\n", + " 'agoals': 3},\n", + " {'round': 25,\n", + " 'hteam': 'Tottenham Hotspur',\n", + " 'ateam': 'Newcastle United',\n", + " 'hgoals': 5,\n", + " 'agoals': 0},\n", + " {'round': 25,\n", + " 'hteam': 'Wolverhampton Wanderers',\n", + " 'ateam': 'West Bromwich Albion',\n", + " 'hgoals': 1,\n", + " 'agoals': 5},\n", + " {'round': 25,\n", + " 'hteam': 'Aston Villa',\n", + " 'ateam': 'Manchester City',\n", + " 'hgoals': 0,\n", + " 'agoals': 1},\n", + " {'round': 26,\n", + " 'hteam': 'Chelsea FC',\n", + " 'ateam': 'Bolton Wanderers',\n", + " 'hgoals': 3,\n", + " 'agoals': 0},\n", + " {'round': 26,\n", + " 'hteam': 'Newcastle United',\n", + " 'ateam': 'Wolverhampton Wanderers',\n", + " 'hgoals': 2,\n", + " 'agoals': 2},\n", + " {'round': 26,\n", + " 'hteam': 'Queens Park Rangers',\n", + " 'ateam': 'Fulham FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 1},\n", + " {'round': 26,\n", + " 'hteam': 'West Bromwich Albion',\n", + " 'ateam': 'Sunderland AFC',\n", + " 'hgoals': 4,\n", + " 'agoals': 0},\n", + " {'round': 26,\n", + " 'hteam': 'Wigan Athletic',\n", + " 'ateam': 'Aston Villa',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 26,\n", + " 'hteam': 'Manchester City',\n", + " 'ateam': 'Blackburn Rovers',\n", + " 'hgoals': 3,\n", + " 'agoals': 0},\n", + " {'round': 26,\n", + " 'hteam': 'Arsenal FC',\n", + " 'ateam': 'Tottenham Hotspur',\n", + " 'hgoals': 5,\n", + " 'agoals': 2},\n", + " {'round': 26,\n", + " 'hteam': 'Norwich City',\n", + " 'ateam': 'Manchester United',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 26,\n", + " 'hteam': 'Stoke City',\n", + " 'ateam': 'Swansea City',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 26,\n", + " 'hteam': 'Liverpool FC',\n", + " 'ateam': 'Everton FC',\n", + " 'hgoals': 3,\n", + " 'agoals': 0},\n", + " {'round': 27,\n", + " 'hteam': 'Liverpool FC',\n", + " 'ateam': 'Arsenal FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 27,\n", + " 'hteam': 'Blackburn Rovers',\n", + " 'ateam': 'Aston Villa',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 27,\n", + " 'hteam': 'Manchester City',\n", + " 'ateam': 'Bolton Wanderers',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 27,\n", + " 'hteam': 'Queens Park Rangers',\n", + " 'ateam': 'Everton FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 27,\n", + " 'hteam': 'Stoke City',\n", + " 'ateam': 'Norwich City',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 27,\n", + " 'hteam': 'West Bromwich Albion',\n", + " 'ateam': 'Chelsea FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 27,\n", + " 'hteam': 'Wigan Athletic',\n", + " 'ateam': 'Swansea City',\n", + " 'hgoals': 0,\n", + " 'agoals': 2},\n", + " {'round': 27,\n", + " 'hteam': 'Newcastle United',\n", + " 'ateam': 'Sunderland AFC',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 27,\n", + " 'hteam': 'Fulham FC',\n", + " 'ateam': 'Wolverhampton Wanderers',\n", + " 'hgoals': 5,\n", + " 'agoals': 0},\n", + " {'round': 27,\n", + " 'hteam': 'Tottenham Hotspur',\n", + " 'ateam': 'Manchester United',\n", + " 'hgoals': 1,\n", + " 'agoals': 3},\n", + " {'round': 28,\n", + " 'hteam': 'Bolton Wanderers',\n", + " 'ateam': 'Queens Park Rangers',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 28,\n", + " 'hteam': 'Aston Villa',\n", + " 'ateam': 'Fulham FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 28,\n", + " 'hteam': 'Chelsea FC',\n", + " 'ateam': 'Stoke City',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 28,\n", + " 'hteam': 'Sunderland AFC',\n", + " 'ateam': 'Liverpool FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 28,\n", + " 'hteam': 'Wolverhampton Wanderers',\n", + " 'ateam': 'Blackburn Rovers',\n", + " 'hgoals': 0,\n", + " 'agoals': 2},\n", + " {'round': 28,\n", + " 'hteam': 'Everton FC',\n", + " 'ateam': 'Tottenham Hotspur',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 28,\n", + " 'hteam': 'Manchester United',\n", + " 'ateam': 'West Bromwich Albion',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 28,\n", + " 'hteam': 'Swansea City',\n", + " 'ateam': 'Manchester City',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 28,\n", + " 'hteam': 'Norwich City',\n", + " 'ateam': 'Wigan Athletic',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 28,\n", + " 'hteam': 'Arsenal FC',\n", + " 'ateam': 'Newcastle United',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 29,\n", + " 'hteam': 'Fulham FC',\n", + " 'ateam': 'Swansea City',\n", + " 'hgoals': 0,\n", + " 'agoals': 3},\n", + " {'round': 29,\n", + " 'hteam': 'Wigan Athletic',\n", + " 'ateam': 'West Bromwich Albion',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 29,\n", + " 'hteam': 'Wolverhampton Wanderers',\n", + " 'ateam': 'Manchester United',\n", + " 'hgoals': 0,\n", + " 'agoals': 5},\n", + " {'round': 29,\n", + " 'hteam': 'Newcastle United',\n", + " 'ateam': 'Norwich City',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 29,\n", + " 'hteam': 'Blackburn Rovers',\n", + " 'ateam': 'Sunderland AFC',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 29,\n", + " 'hteam': 'Manchester City',\n", + " 'ateam': 'Chelsea FC',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 29,\n", + " 'hteam': 'Tottenham Hotspur',\n", + " 'ateam': 'Stoke City',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 29,\n", + " 'hteam': 'Everton FC',\n", + " 'ateam': 'Arsenal FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 1},\n", + " {'round': 29,\n", + " 'hteam': 'Queens Park Rangers',\n", + " 'ateam': 'Liverpool FC',\n", + " 'hgoals': 3,\n", + " 'agoals': 2},\n", + " {'round': 29,\n", + " 'hteam': 'Aston Villa',\n", + " 'ateam': 'Bolton Wanderers',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 30,\n", + " 'hteam': 'Chelsea FC',\n", + " 'ateam': 'Tottenham Hotspur',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 30,\n", + " 'hteam': 'Arsenal FC',\n", + " 'ateam': 'Aston Villa',\n", + " 'hgoals': 3,\n", + " 'agoals': 0},\n", + " {'round': 30,\n", + " 'hteam': 'Bolton Wanderers',\n", + " 'ateam': 'Blackburn Rovers',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 30,\n", + " 'hteam': 'Liverpool FC',\n", + " 'ateam': 'Wigan Athletic',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 30,\n", + " 'hteam': 'Norwich City',\n", + " 'ateam': 'Wolverhampton Wanderers',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 30,\n", + " 'hteam': 'Sunderland AFC',\n", + " 'ateam': 'Queens Park Rangers',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 30,\n", + " 'hteam': 'Swansea City',\n", + " 'ateam': 'Everton FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 2},\n", + " {'round': 30,\n", + " 'hteam': 'Stoke City',\n", + " 'ateam': 'Manchester City',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 30,\n", + " 'hteam': 'West Bromwich Albion',\n", + " 'ateam': 'Newcastle United',\n", + " 'hgoals': 1,\n", + " 'agoals': 3},\n", + " {'round': 30,\n", + " 'hteam': 'Manchester United',\n", + " 'ateam': 'Fulham FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 31,\n", + " 'hteam': 'Aston Villa',\n", + " 'ateam': 'Chelsea FC',\n", + " 'hgoals': 2,\n", + " 'agoals': 4},\n", + " {'round': 31,\n", + " 'hteam': 'Everton FC',\n", + " 'ateam': 'West Bromwich Albion',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 31,\n", + " 'hteam': 'Fulham FC',\n", + " 'ateam': 'Norwich City',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 31,\n", + " 'hteam': 'Manchester City',\n", + " 'ateam': 'Sunderland AFC',\n", + " 'hgoals': 3,\n", + " 'agoals': 3},\n", + " {'round': 31,\n", + " 'hteam': 'Queens Park Rangers',\n", + " 'ateam': 'Arsenal FC',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 31,\n", + " 'hteam': 'Wigan Athletic',\n", + " 'ateam': 'Stoke City',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 31,\n", + " 'hteam': 'Wolverhampton Wanderers',\n", + " 'ateam': 'Bolton Wanderers',\n", + " 'hgoals': 2,\n", + " 'agoals': 3},\n", + " {'round': 31,\n", + " 'hteam': 'Newcastle United',\n", + " 'ateam': 'Liverpool FC',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 31,\n", + " 'hteam': 'Tottenham Hotspur',\n", + " 'ateam': 'Swansea City',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 31,\n", + " 'hteam': 'Blackburn Rovers',\n", + " 'ateam': 'Manchester United',\n", + " 'hgoals': 0,\n", + " 'agoals': 2},\n", + " {'round': 32,\n", + " 'hteam': 'Swansea City',\n", + " 'ateam': 'Newcastle United',\n", + " 'hgoals': 0,\n", + " 'agoals': 2},\n", + " {'round': 32,\n", + " 'hteam': 'Sunderland AFC',\n", + " 'ateam': 'Tottenham Hotspur',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 32,\n", + " 'hteam': 'Bolton Wanderers',\n", + " 'ateam': 'Fulham FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 3},\n", + " {'round': 32,\n", + " 'hteam': 'Chelsea FC',\n", + " 'ateam': 'Wigan Athletic',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 32,\n", + " 'hteam': 'Liverpool FC',\n", + " 'ateam': 'Aston Villa',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 32,\n", + " 'hteam': 'Norwich City',\n", + " 'ateam': 'Everton FC',\n", + " 'hgoals': 2,\n", + " 'agoals': 2},\n", + " {'round': 32,\n", + " 'hteam': 'West Bromwich Albion',\n", + " 'ateam': 'Blackburn Rovers',\n", + " 'hgoals': 3,\n", + " 'agoals': 0},\n", + " {'round': 32,\n", + " 'hteam': 'Stoke City',\n", + " 'ateam': 'Wolverhampton Wanderers',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 32,\n", + " 'hteam': 'Manchester United',\n", + " 'ateam': 'Queens Park Rangers',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 32,\n", + " 'hteam': 'Arsenal FC',\n", + " 'ateam': 'Manchester City',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 33,\n", + " 'hteam': 'Everton FC',\n", + " 'ateam': 'Sunderland AFC',\n", + " 'hgoals': 4,\n", + " 'agoals': 0},\n", + " {'round': 33,\n", + " 'hteam': 'Newcastle United',\n", + " 'ateam': 'Bolton Wanderers',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 33,\n", + " 'hteam': 'Tottenham Hotspur',\n", + " 'ateam': 'Norwich City',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 33,\n", + " 'hteam': 'Aston Villa',\n", + " 'ateam': 'Stoke City',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 33,\n", + " 'hteam': 'Fulham FC',\n", + " 'ateam': 'Chelsea FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 33,\n", + " 'hteam': 'Blackburn Rovers',\n", + " 'ateam': 'Liverpool FC',\n", + " 'hgoals': 2,\n", + " 'agoals': 3},\n", + " {'round': 33,\n", + " 'hteam': 'Manchester City',\n", + " 'ateam': 'West Bromwich Albion',\n", + " 'hgoals': 4,\n", + " 'agoals': 0},\n", + " {'round': 33,\n", + " 'hteam': 'Wigan Athletic',\n", + " 'ateam': 'Manchester United',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 33,\n", + " 'hteam': 'Wolverhampton Wanderers',\n", + " 'ateam': 'Arsenal FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 3},\n", + " {'round': 33,\n", + " 'hteam': 'Queens Park Rangers',\n", + " 'ateam': 'Swansea City',\n", + " 'hgoals': 3,\n", + " 'agoals': 0},\n", + " {'round': 34,\n", + " 'hteam': 'Norwich City',\n", + " 'ateam': 'Manchester City',\n", + " 'hgoals': 1,\n", + " 'agoals': 6},\n", + " {'round': 34,\n", + " 'hteam': 'Sunderland AFC',\n", + " 'ateam': 'Wolverhampton Wanderers',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 34,\n", + " 'hteam': 'Swansea City',\n", + " 'ateam': 'Blackburn Rovers',\n", + " 'hgoals': 3,\n", + " 'agoals': 0},\n", + " {'round': 34,\n", + " 'hteam': 'West Bromwich Albion',\n", + " 'ateam': 'Queens Park Rangers',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 34,\n", + " 'hteam': 'Manchester United',\n", + " 'ateam': 'Aston Villa',\n", + " 'hgoals': 4,\n", + " 'agoals': 0},\n", + " {'round': 34,\n", + " 'hteam': 'Arsenal FC',\n", + " 'ateam': 'Wigan Athletic',\n", + " 'hgoals': 1,\n", + " 'agoals': 2},\n", + " {'round': 34,\n", + " 'hteam': 'Liverpool FC',\n", + " 'ateam': 'Fulham FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 1},\n", + " {'round': 34,\n", + " 'hteam': 'Stoke City',\n", + " 'ateam': 'Everton FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 34,\n", + " 'hteam': 'Chelsea FC',\n", + " 'ateam': 'Newcastle United',\n", + " 'hgoals': 0,\n", + " 'agoals': 2},\n", + " {'round': 34,\n", + " 'hteam': 'Bolton Wanderers',\n", + " 'ateam': 'Tottenham Hotspur',\n", + " 'hgoals': 1,\n", + " 'agoals': 4},\n", + " {'round': 35,\n", + " 'hteam': 'Arsenal FC',\n", + " 'ateam': 'Chelsea FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 35,\n", + " 'hteam': 'Aston Villa',\n", + " 'ateam': 'Sunderland AFC',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 35,\n", + " 'hteam': 'Blackburn Rovers',\n", + " 'ateam': 'Norwich City',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 35,\n", + " 'hteam': 'Bolton Wanderers',\n", + " 'ateam': 'Swansea City',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 35,\n", + " 'hteam': 'Fulham FC',\n", + " 'ateam': 'Wigan Athletic',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 35,\n", + " 'hteam': 'Newcastle United',\n", + " 'ateam': 'Stoke City',\n", + " 'hgoals': 3,\n", + " 'agoals': 0},\n", + " {'round': 35,\n", + " 'hteam': 'Queens Park Rangers',\n", + " 'ateam': 'Tottenham Hotspur',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 35,\n", + " 'hteam': 'Manchester United',\n", + " 'ateam': 'Everton FC',\n", + " 'hgoals': 4,\n", + " 'agoals': 4},\n", + " {'round': 35,\n", + " 'hteam': 'Liverpool FC',\n", + " 'ateam': 'West Bromwich Albion',\n", + " 'hgoals': 0,\n", + " 'agoals': 1},\n", + " {'round': 35,\n", + " 'hteam': 'Wolverhampton Wanderers',\n", + " 'ateam': 'Manchester City',\n", + " 'hgoals': 0,\n", + " 'agoals': 2},\n", + " {'round': 36,\n", + " 'hteam': 'Everton FC',\n", + " 'ateam': 'Fulham FC',\n", + " 'hgoals': 4,\n", + " 'agoals': 0},\n", + " {'round': 36,\n", + " 'hteam': 'Stoke City',\n", + " 'ateam': 'Arsenal FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 36,\n", + " 'hteam': 'Sunderland AFC',\n", + " 'ateam': 'Bolton Wanderers',\n", + " 'hgoals': 2,\n", + " 'agoals': 2},\n", + " {'round': 36,\n", + " 'hteam': 'Swansea City',\n", + " 'ateam': 'Wolverhampton Wanderers',\n", + " 'hgoals': 4,\n", + " 'agoals': 4},\n", + " {'round': 36,\n", + " 'hteam': 'West Bromwich Albion',\n", + " 'ateam': 'Aston Villa',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 36,\n", + " 'hteam': 'Wigan Athletic',\n", + " 'ateam': 'Newcastle United',\n", + " 'hgoals': 4,\n", + " 'agoals': 0},\n", + " {'round': 36,\n", + " 'hteam': 'Norwich City',\n", + " 'ateam': 'Liverpool FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 3},\n", + " {'round': 36,\n", + " 'hteam': 'Chelsea FC',\n", + " 'ateam': 'Queens Park Rangers',\n", + " 'hgoals': 6,\n", + " 'agoals': 1},\n", + " {'round': 36,\n", + " 'hteam': 'Tottenham Hotspur',\n", + " 'ateam': 'Blackburn Rovers',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 36,\n", + " 'hteam': 'Manchester City',\n", + " 'ateam': 'Manchester United',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 37,\n", + " 'hteam': 'Arsenal FC',\n", + " 'ateam': 'Norwich City',\n", + " 'hgoals': 3,\n", + " 'agoals': 3},\n", + " {'round': 37,\n", + " 'hteam': 'Newcastle United',\n", + " 'ateam': 'Manchester City',\n", + " 'hgoals': 0,\n", + " 'agoals': 2},\n", + " {'round': 37,\n", + " 'hteam': 'Aston Villa',\n", + " 'ateam': 'Tottenham Hotspur',\n", + " 'hgoals': 1,\n", + " 'agoals': 1},\n", + " {'round': 37,\n", + " 'hteam': 'Bolton Wanderers',\n", + " 'ateam': 'West Bromwich Albion',\n", + " 'hgoals': 2,\n", + " 'agoals': 2},\n", + " {'round': 37,\n", + " 'hteam': 'Fulham FC',\n", + " 'ateam': 'Sunderland AFC',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 37,\n", + " 'hteam': 'Queens Park Rangers',\n", + " 'ateam': 'Stoke City',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 37,\n", + " 'hteam': 'Wolverhampton Wanderers',\n", + " 'ateam': 'Everton FC',\n", + " 'hgoals': 0,\n", + " 'agoals': 0},\n", + " {'round': 37,\n", + " 'hteam': 'Manchester United',\n", + " 'ateam': 'Swansea City',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 37,\n", + " 'hteam': 'Blackburn Rovers',\n", + " 'ateam': 'Wigan Athletic',\n", + " 'hgoals': 0,\n", + " 'agoals': 1},\n", + " {'round': 37,\n", + " 'hteam': 'Liverpool FC',\n", + " 'ateam': 'Chelsea FC',\n", + " 'hgoals': 4,\n", + " 'agoals': 1},\n", + " {'round': 38,\n", + " 'hteam': 'Chelsea FC',\n", + " 'ateam': 'Blackburn Rovers',\n", + " 'hgoals': 2,\n", + " 'agoals': 1},\n", + " {'round': 38,\n", + " 'hteam': 'Everton FC',\n", + " 'ateam': 'Newcastle United',\n", + " 'hgoals': 3,\n", + " 'agoals': 1},\n", + " {'round': 38,\n", + " 'hteam': 'Manchester City',\n", + " 'ateam': 'Queens Park Rangers',\n", + " 'hgoals': 3,\n", + " 'agoals': 2},\n", + " {'round': 38,\n", + " 'hteam': 'Norwich City',\n", + " 'ateam': 'Aston Villa',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 38,\n", + " 'hteam': 'Stoke City',\n", + " 'ateam': 'Bolton Wanderers',\n", + " 'hgoals': 2,\n", + " 'agoals': 2},\n", + " {'round': 38,\n", + " 'hteam': 'Sunderland AFC',\n", + " 'ateam': 'Manchester United',\n", + " 'hgoals': 0,\n", + " 'agoals': 1},\n", + " {'round': 38,\n", + " 'hteam': 'Swansea City',\n", + " 'ateam': 'Liverpool FC',\n", + " 'hgoals': 1,\n", + " 'agoals': 0},\n", + " {'round': 38,\n", + " 'hteam': 'Tottenham Hotspur',\n", + " 'ateam': 'Fulham FC',\n", + " 'hgoals': 2,\n", + " 'agoals': 0},\n", + " {'round': 38,\n", + " 'hteam': 'West Bromwich Albion',\n", + " 'ateam': 'Arsenal FC',\n", + " 'hgoals': 2,\n", + " 'agoals': 3},\n", + " {'round': 38,\n", + " 'hteam': 'Wigan Athletic',\n", + " 'ateam': 'Wolverhampton Wanderers',\n", + " 'hgoals': 3,\n", + " 'agoals': 2}]" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "games" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "92.89473684210526" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A mérkőzések hány százalékán esett gól?\n", + "count = 0\n", + "for g in games:\n", + " if g['hgoals'] + g['agoals'] > 0:\n", + " count += 1\n", + "count / len(games) * 100" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "92.89473684210526" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...ugyanez tömörebben:\n", + "sum([g['hgoals'] + g['agoals'] > 0 for g in games]) / len(games) * 100" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'round': 3,\n", + " 'hteam': 'Manchester United',\n", + " 'ateam': 'Arsenal FC',\n", + " 'hgoals': 8,\n", + " 'agoals': 2}" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Melyik mérkőzésen esett a legtöbb gól?\n", + "maxgoals = 0\n", + "for g in games:\n", + " goals = g['hgoals'] + g['hgoals']\n", + " if goals > maxgoals:\n", + " maxgoals = goals\n", + " bestgame = g\n", + "bestgame" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'round': 3,\n", + " 'hteam': 'Manchester United',\n", + " 'ateam': 'Arsenal FC',\n", + " 'hgoals': 8,\n", + " 'agoals': 2}" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...ugyanez tömörebben:\n", + "max([(g['hgoals'] + g['agoals'], g) for g in games], key=lambda x: x[0])[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'round': 3,\n", + " 'hteam': 'Manchester United',\n", + " 'ateam': 'Arsenal FC',\n", + " 'hgoals': 8,\n", + " 'agoals': 2}" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...még tömörebben:\n", + "max(games, key=lambda g: g['hgoals'] + g['agoals'])" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "n: 2\n" + ] + } + ], + "source": [ + "# A bajnokság állása az n. forduló után (rendezési szempontok: pontszám, gólkülönbség, több rúgott gól).\n", + "# - a győztes 3, a vesztes 0 pontot kap\n", + "# - döntetlen esetén mindkét csapat 1 pontot kap\n", + "\n", + "# n bekérése\n", + "n = int(input('n: '))" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [], + "source": [ + "teams = {} # kulcs: csapatnév, érték: [pontszám, gólkülönbség, rúgott gólok száma] - az n. forduló után\n", + "\n", + "# csapatok felvétele\n", + "for g in games:\n", + " teams[g['hteam']] = [0, 0, 0]\n", + " \n", + "# statisztikák frissítése\n", + "for g in games:\n", + " if g['round'] <= n:\n", + " hstats = teams[g['hteam']]\n", + " astats = teams[g['ateam']]\n", + " \n", + " # pontszám frissítése\n", + " if g['hgoals'] > g['agoals']:\n", + " hstats[0] += 3\n", + " elif g['hgoals'] == g['agoals']:\n", + " hstats[0] += 1\n", + " astats[0] += 1\n", + " else:\n", + " astats[0] += 3\n", + " \n", + " # gólkülönbség frissítése\n", + " gdiff = g['hgoals'] - g['agoals']\n", + " hstats[1] += gdiff\n", + " astats[1] -= gdiff\n", + " \n", + " # rúgott gólok számának frissítése\n", + " hstats[2] += g['hgoals']\n", + " astats[2] += g['agoals']" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Blackburn Rovers': [0, -3, 2],\n", + " 'Fulham FC': [1, -2, 0],\n", + " 'Liverpool FC': [4, 2, 3],\n", + " 'Queens Park Rangers': [3, -3, 1],\n", + " 'Wigan Athletic': [2, 0, 1],\n", + " 'Newcastle United': [4, 1, 1],\n", + " 'Stoke City': [2, 0, 1],\n", + " 'West Bromwich Albion': [0, -2, 2],\n", + " 'Manchester City': [6, 5, 7],\n", + " 'Tottenham Hotspur': [3, -1, 2],\n", + " 'Sunderland AFC': [1, -1, 1],\n", + " 'Arsenal FC': [1, -2, 0],\n", + " 'Aston Villa': [4, 2, 3],\n", + " 'Everton FC': [0, -3, 0],\n", + " 'Swansea City': [1, -4, 0],\n", + " 'Chelsea FC': [4, 1, 2],\n", + " 'Norwich City': [2, 0, 2],\n", + " 'Wolverhampton Wanderers': [6, 3, 4],\n", + " 'Bolton Wanderers': [3, 3, 6],\n", + " 'Manchester United': [6, 4, 5]}" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "teams" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "# A statisztikák frissítése, tömörebben:\n", + "\n", + "teams = {} # kulcs: csapatnév, érték: [pontszám, gólkülönbség, rúgott gólok száma] - az n. forduló után\n", + "for g in games:\n", + " teams[g['hteam']] = [0, 0, 0] # inicializálás\n", + "\n", + "def update_stats(mgoals, ogoals, stats):\n", + " if mgoals > ogoals: stats[0] += 3\n", + " elif mgoals == ogoals: stats[0] += 1\n", + " \n", + " stats[1] += mgoals - ogoals\n", + " stats[2] += mgoals\n", + "\n", + "# statisztikák frissítése\n", + "for g in games:\n", + " if g['round'] <= n:\n", + " update_stats(g['hgoals'], g['agoals'], teams[g['hteam']]) # hazai \"nézőpont\"\n", + " update_stats(g['agoals'], g['hgoals'], teams[g['ateam']]) # vendég \"nézőpont\"" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Blackburn Rovers': [0, -3, 2],\n", + " 'Fulham FC': [1, -2, 0],\n", + " 'Liverpool FC': [4, 2, 3],\n", + " 'Queens Park Rangers': [3, -3, 1],\n", + " 'Wigan Athletic': [2, 0, 1],\n", + " 'Newcastle United': [4, 1, 1],\n", + " 'Stoke City': [2, 0, 1],\n", + " 'West Bromwich Albion': [0, -2, 2],\n", + " 'Manchester City': [6, 5, 7],\n", + " 'Tottenham Hotspur': [3, -1, 2],\n", + " 'Sunderland AFC': [1, -1, 1],\n", + " 'Arsenal FC': [1, -2, 0],\n", + " 'Aston Villa': [4, 2, 3],\n", + " 'Everton FC': [0, -3, 0],\n", + " 'Swansea City': [1, -4, 0],\n", + " 'Chelsea FC': [4, 1, 2],\n", + " 'Norwich City': [2, 0, 2],\n", + " 'Wolverhampton Wanderers': [6, 3, 4],\n", + " 'Bolton Wanderers': [3, 3, 6],\n", + " 'Manchester United': [6, 4, 5]}" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "teams" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "# rendezés\n", + "ranking = sorted(teams, key=lambda t: teams[t], reverse=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " 1. Manchester City 5 7 6\n", + " 2. Manchester United 4 5 6\n", + " 3. Wolverhampton Wanderers 3 4 6\n", + " 4. Liverpool FC 2 3 4\n", + " 5. Aston Villa 2 3 4\n", + " 6. Chelsea FC 1 2 4\n", + " 7. Newcastle United 1 1 4\n", + " 8. Bolton Wanderers 3 6 3\n", + " 9. Tottenham Hotspur -1 2 3\n", + "10. Queens Park Rangers -3 1 3\n", + "11. Norwich City 0 2 2\n", + "12. Wigan Athletic 0 1 2\n", + "13. Stoke City 0 1 2\n", + "14. Sunderland AFC -1 1 1\n", + "15. Fulham FC -2 0 1\n", + "16. Arsenal FC -2 0 1\n", + "17. Swansea City -4 0 1\n", + "18. West Bromwich Albion -2 2 0\n", + "19. Blackburn Rovers -3 2 0\n", + "20. Everton FC -3 0 0\n" + ] + } + ], + "source": [ + "# formázott kiírás\n", + "idx = 0\n", + "for t in ranking:\n", + " idx += 1\n", + " s = teams[t]\n", + " print(f'{idx:2}. {t:25} {s[1]:4} {s[2]:4} {s[0]:4}')" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/09_gyak.ipynb b/09_gyak.ipynb new file mode 100644 index 0000000..1187f5e --- /dev/null +++ b/09_gyak.ipynb @@ -0,0 +1,54 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Előadás anyag\n", + "Nézzük meg a 9. heti előadás anyagát tartalmazó Jupyter notebook (09_ea.ipynb) tartalmát! Futtassuk az egyes cellákat, módosítsunk, kisérletezzünk szabadon!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Feladatok\n", + "Készítsünk programokat az alábbi feladatokra!\n", + "- Olvassuk be a 'matrix.txt' adatait, majd határozzuk meg minden egyes oszlopra az 1-esek darabszámát!\n", + "- Határozzuk meg az 'igazi.txt' fájlban található leghosszabb és legrövidebb szót!\n", + "- Hány olyan szó van a 'hamlet.txt' fájlban, amiben csak betű van?\n", + "- Határozzuk meg a 'hamlet.txt' fájl szavaira azt, hogy a szavak hányadrésze tartalmaz angol nagybetűt!\n", + "- Határozzuk meg a Premier League adatok ('pl.txt') alapján (a tabella elkészítése nélkül), hogy egy adott csapat (pl. 'Liverpool FC') hány gólt rúgott a szezonban!\n", + "- A Premier League eredménytáblázatát (a tabellát) ne a képernyőre, hanem szövegfájlba írjuk ki, ahol a fájl nevében szerepeljen a forduló sorszáma is (amellyel bezárólag készül a tabella, például: 'pl_tab_02.txt' a 2. forduló utáni tabellát tartalmazza)!" + ] + }, + { + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/10_ea.ipynb b/10_ea.ipynb new file mode 100644 index 0000000..bbde958 --- /dev/null +++ b/10_ea.ipynb @@ -0,0 +1,1019 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## [Kivételkezelés](https://docs.python.org/3/tutorial/errors.html)\n", + "\n", + "- A kivételkezelés egy modern megközelítés a hibakezelésre. Lehetővé teszi hogy a legalkalmasabb helyen végezzük el a hibakezelést.\n", + "- A korábban uralkodó a hibakód alapú nehézkesebb. Tegyük fel, hogy a függvényhívási stack sokadik szintjén lép fel egy hiba. A hibát a kód sok pontján kell kezelni (a hívó függvényben, a hívót hívó függvényben stb.), ami kódduplikáláshoz vagy GOTO utasítások alkalmazásához vezet.\n", + "- A kivételeket a [raise](https://docs.python.org/3/reference/simple_stmts.html#the-raise-statement) utasítás segítségével lehet létrehozni, és a [try](https://docs.python.org/3/reference/compound_stmts.html#the-try-statement) utasítás segítségével lehet elkapni.\n", + "- A beépített kivétel típusok hierarchiája [itt](https://docs.python.org/3/library/exceptions.html#exception-hierarchy) tekinthető át." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Kérek egy páros számot: 11\n" + ] + }, + { + "ename": "ValueError", + "evalue": "n páratlan", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[1], line 4\u001b[0m\n\u001b[0;32m 2\u001b[0m n \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mint\u001b[39m(\u001b[38;5;28minput\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mKérek egy páros számot: \u001b[39m\u001b[38;5;124m'\u001b[39m))\n\u001b[0;32m 3\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m n \u001b[38;5;241m%\u001b[39m \u001b[38;5;241m2\u001b[39m \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m1\u001b[39m:\n\u001b[1;32m----> 4\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mn páratlan\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m 5\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mVÉGE\u001b[39m\u001b[38;5;124m'\u001b[39m)\n", + "\u001b[1;31mValueError\u001b[0m: n páratlan" + ] + } + ], + "source": [ + "# Kivétel létrehozása.\n", + "n = int(input('Kérek egy páros számot: '))\n", + "if n % 2 == 1:\n", + " raise ValueError('n páratlan')\n", + "print('VÉGE')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x: asd\n", + "ValueError\n", + "FOO\n", + "VÉGE\n" + ] + } + ], + "source": [ + "# Kivétel elkapása.\n", + "try:\n", + " x = float(input('x: '))\n", + " y = float(input('y: '))\n", + " print(x / y)\n", + "except ValueError:\n", + " print('ValueError')\n", + "except ZeroDivisionError:\n", + " print('ZeroDivisionError')\n", + "finally:\n", + " print('FOO')\n", + " \n", + "print('VÉGE')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Hibakeresés" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "ename": "ZeroDivisionError", + "evalue": "division by zero", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mZeroDivisionError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[3], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# Első lépés: A hibaüzenetet MINDIG olvassuk el! :-)\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m \u001b[38;5;241m1\u001b[39m \u001b[38;5;241m/\u001b[39m \u001b[38;5;241m0\u001b[39m\n", + "\u001b[1;31mZeroDivisionError\u001b[0m: division by zero" + ] + } + ], + "source": [ + "# Első lépés: A hibaüzenetet MINDIG olvassuk el! :-)\n", + "1 / 0" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Példa egy hibás függvényre.\n", + "def calc_average(list_of_lists):\n", + " joined = []\n", + " for l in list_of_lists:\n", + " joined.append(l)\n", + " return sum(joined) / len(joined)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "unsupported operand type(s) for +: 'int' and 'list'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[5], line 3\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# Számítsuk ki az alábbi számok átlagát!\u001b[39;00m\n\u001b[0;32m 2\u001b[0m sequences \u001b[38;5;241m=\u001b[39m [[\u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m2\u001b[39m, \u001b[38;5;241m3\u001b[39m], [\u001b[38;5;241m4\u001b[39m, \u001b[38;5;241m5\u001b[39m], [\u001b[38;5;241m6\u001b[39m, \u001b[38;5;241m7\u001b[39m]]\n\u001b[1;32m----> 3\u001b[0m \u001b[38;5;28mprint\u001b[39m(calc_average(sequences))\n", + "Cell \u001b[1;32mIn[4], line 6\u001b[0m, in \u001b[0;36mcalc_average\u001b[1;34m(list_of_lists)\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m l \u001b[38;5;129;01min\u001b[39;00m list_of_lists:\n\u001b[0;32m 5\u001b[0m joined\u001b[38;5;241m.\u001b[39mappend(l)\n\u001b[1;32m----> 6\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28msum\u001b[39m(joined) \u001b[38;5;241m/\u001b[39m \u001b[38;5;28mlen\u001b[39m(joined)\n", + "\u001b[1;31mTypeError\u001b[0m: unsupported operand type(s) for +: 'int' and 'list'" + ] + } + ], + "source": [ + "# Számítsuk ki az alábbi számok átlagát!\n", + "sequences = [[1, 2, 3], [4, 5], [6, 7]]\n", + "print(calc_average(sequences))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "> \u001b[1;32mc:\\users\\puszt\\appdata\\local\\temp\\ipykernel_20788\\261683529.py\u001b[0m(6)\u001b[0;36mcalc_average\u001b[1;34m()\u001b[0m\n", + "\n", + "ipdb> print(joined)\n", + "[[1, 2, 3], [4, 5], [6, 7]]\n", + "ipdb> q\n" + ] + } + ], + "source": [ + "# Keressük meg a hibát a %debug parancs segítségével!\n", + "%debug" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "4.0\n" + ] + } + ], + "source": [ + "# A függvény javított változata.\n", + "def calc_average(list_of_lists):\n", + " joined = []\n", + " for l in list_of_lists:\n", + " joined.extend(l)\n", + " return sum(joined) / len(joined)\n", + "\n", + "print(calc_average(sequences))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fejezetek a [standard könyvtárból](https://docs.python.org/3/library/index.html) II." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### [collections](https://docs.python.org/3/library/collections.html)\n", + "- Specializált konténer adattípusokat tartalmaz." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "import collections" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Counter({'a': 5, 'b': 2, 'r': 2, 'k': 1, 'd': 1})" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Gyakoriságszámító szótár (Counter).\n", + "s = 'abrakadabra'\n", + "collections.Counter(s)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('the', 1145),\n", + " ('and', 973),\n", + " ('to', 736),\n", + " ('of', 674),\n", + " ('i', 565),\n", + " ('you', 539),\n", + " ('a', 534),\n", + " ('my', 513),\n", + " ('in', 431),\n", + " ('it', 409),\n", + " ('that', 381),\n", + " ('ham', 358),\n", + " ('is', 339),\n", + " ('not', 310),\n", + " ('his', 297),\n", + " ('this', 297),\n", + " ('with', 268),\n", + " ('but', 258),\n", + " ('for', 248),\n", + " ('your', 241),\n", + " ('me', 231),\n", + " ('lord', 223),\n", + " ('as', 219),\n", + " ('be', 216),\n", + " ('he', 213),\n", + " ('what', 200),\n", + " ('king', 195),\n", + " ('him', 195),\n", + " ('so', 194),\n", + " ('have', 180)]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A szavak gyakorisága a Hamletben, Counterrel kiszámolva.\n", + "import collections, string\n", + "words = open('hamlet.txt').read().lower().split()\n", + "words = [w.strip(string.punctuation) for w in words]\n", + "collections.Counter(words).most_common(30)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# Alapértelmezett értékkel rendelkező szótár (defaultdict).\n", + "d = collections.defaultdict(list)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# Új kulcs-érték pár hozzáadása.\n", + "d['aa'] = [1, 2, 3]" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1, 2, 3]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d['aa']" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Hivatkozás nem létező kulcsra.\n", + "# Nem fog hibát adni, hanem az alapértelmezett értéket rendeli a kulcshoz.\n", + "# Az alapértelmezett érték a list() függvényhívással jön létre.\n", + "d['bb']" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "defaultdict(list, {'aa': [1, 2, 3], 'bb': []})" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "# Hivatkozás nem létező kulcsra, majd egy elem hozzáfűzése.\n", + "d['cc'].append(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "defaultdict(list, {'aa': [1, 2, 3], 'bb': [], 'cc': [10]})" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'aa': [1, 2, 3], 'bb': [], 'cc': [10]}" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Hagyományos szótárrá konvertálás.\n", + "d2 = dict(d)\n", + "d2" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "defaultdict(, {'asdf': {10, 20, 30}})" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Defaultdict egyedi default értékkel.\n", + "def moricka():\n", + " return {10, 20}\n", + "\n", + "d3 = collections.defaultdict(moricka)\n", + "d3['asdf'].add(30)\n", + "d3" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "defaultdict(()>, {'asdf': {10, 20, 30}})" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "d3 = collections.defaultdict(lambda: {10, 20})\n", + "d3['asdf'].add(30)\n", + "d3" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "# Nevesített elemekkel rendelkező tuple (namedtuple).\n", + "Game = collections.namedtuple('Game', ['round', 'hteam', 'ateam', 'hgoals', 'agoals'])" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Game(round=10, hteam='Liverpool', ateam='Arsenal', hgoals=1, agoals=2)" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Tuple stílusú használat.\n", + "g = Game(10, 'Liverpool', 'Arsenal', 1, 2)\n", + "g" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "10" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "g[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Liverpool'" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Struktúra stílusú használat.\n", + "g.hteam" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{Game(round=10, hteam='Liverpool', ateam='Arsenal', hgoals=1, agoals=2): 'alma'}" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A namedtuple típus használható szótárkulcsként.\n", + "{g: 'alma'}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### [copy](https://docs.python.org/3/library/copy.html)\n", + "- Sekély (shallow) és mély (deep) másoló függvényt tartalmaz." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "import copy" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[100, 20, 30]" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Pythonban az értékadás NEM végez másolást, csak hivatkozást hoz létre.\n", + "a = [10, 20, 30]\n", + "b = a # <= NEM készül másolat!\n", + "b[0] = 100\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[10, 20, 30]\n", + "[100, 20, 30]\n" + ] + } + ], + "source": [ + "# Sekély másolat készítése.\n", + "a = [10, 20, 30]\n", + "b = copy.copy(a) # sekély másolat készítése\n", + "b[0] = 100\n", + "print(a)\n", + "print(b)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[100], [20], [30]]\n", + "[[100], [20], [30]]\n" + ] + } + ], + "source": [ + "# Sekély másolat készítése egy listák listája objektumról.\n", + "a = [[10], [20], [30]]\n", + "b = copy.copy(a) # sekély másolat készítése\n", + "b[0][0] = 100\n", + "print(a)\n", + "print(b)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A copy.copy() csak az adatszerkezet legfelső szintjén végez másolást!" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[10], [20], [30]]\n", + "[[100], [20], [30]]\n" + ] + } + ], + "source": [ + "# Mély másolat készítése egy listák listája objektumról.\n", + "a = [[10], [20], [30]]\n", + "b = copy.deepcopy(a) # mély másolat készítése\n", + "b[0][0] = 100\n", + "print(a)\n", + "print(b)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### [glob](https://docs.python.org/3/library/glob.html)\n", + "- Tartalmaz egy függvényt adott mintára illeszkedő fájlnevek összegyűjtésére." + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "import glob" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "['celsius_fahrenheit.txt',\n", + " 'example_file.txt',\n", + " 'example_file_2.txt',\n", + " 'hamlet.txt',\n", + " 'hotels.txt',\n", + " 'igazi.txt',\n", + " 'investments.txt',\n", + " 'matrix.txt',\n", + " 'openair.txt',\n", + " 'pl.txt',\n", + " 'unicef.txt']" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# .txt kiterjeszésű fájlok az aktuális könyvtárban.\n", + "glob.glob('*.txt')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### [gzip](https://docs.python.org/3/library/gzip.html)\n", + "\n", + "- GZIP formátumú tömörített fájlok olvasására és írására biztosít eszközöket.\n", + "- Megjegyzés: Egyéb tömörített formátumokat is támogat a standard könyvtár (pl. BZ2, LZMA, ZIP, TAR)." + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "import gzip" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "200" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# GZIP formátumú fájl elkészítése.\n", + "text = 'Móricka Pythonozik. ' * 10\n", + "gzip.open('moricka.gz', 'wt').write(text)" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'Móricka Pythonozik. Móricka Pythonozik. Móricka Pythonozik. Móricka Pythonozik. Móricka Pythonozik. Móricka Pythonozik. Móricka Pythonozik. Móricka Pythonozik. Móricka Pythonozik. Móricka Pythonozik. '" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# GZIP formátumú fájl beolvasása.\n", + "gzip.open('moricka.gz', 'rt').read()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### [os](https://docs.python.org/3/library/os.html)\n", + "\n", + "- Az operációs rendszer bizonyos szolgáltatásaihoz nyújt elérést." + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [], + "source": [ + "import os" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Létezik-e hamlet.txt nevű fájl az aktuális könyvtárban?\n", + "os.path.exists('hamlet.txt')" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'/tmp/xyz'" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Könyvtárnév kinyerése egy elérési útvonalból.\n", + "os.path.dirname('/tmp/xyz/hamlet.txt')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### [pickle](https://docs.python.org/3/library/pickle.html)\n", + "\n", + "- Python adatszerkezetek szerializálására (azaz bájtsorozattá alakítására) és deszerializálására nyújt egy megoldást.\n", + "- A \"pickle\" szó jelentése főnévként \"ecetes lé\", \"pác\", igeként \"savanyítás\" :-)." + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "import pickle" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "# Összetett objektum szerializálása fájlba.\n", + "data = [10, 20, {'abc', 'de'}]\n", + "pickle.dump(data, open('data.pkl', 'wb'))" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[10, 20, {'abc', 'de'}]" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Deszerializálás.\n", + "data2 = pickle.load(open('data.pkl', 'rb'))\n", + "data2" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "b'\\x80\\x04\\x95\\x18\\x00\\x00\\x00\\x00\\x00\\x00\\x00]\\x94(K\\nK\\x14\\x8f\\x94(\\x8c\\x02de\\x94\\x8c\\x03abc\\x94\\x90e.'" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Szerializálás bájtsorozatba.\n", + "data = [10, 20, {'abc', 'de'}]\n", + "b = pickle.dumps(data)\n", + "b" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[10, 20, {'abc', 'de'}]" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Deszerializálás.\n", + "pickle.loads(b)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [], + "source": [ + "# Két hasznos segédfüggvény.\n", + "\n", + "def to_pickle(obj, fname, protocol=4):\n", + " '''Serialize object to file.'''\n", + " pickle.dump(obj, open(fname, 'wb'), protocol)\n", + " \n", + "def from_pickle(fname):\n", + " '''Deserialize object from file.'''\n", + " return pickle.load(open(fname, 'rb'))" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "to_pickle(data, 'data.pkl')" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[10, 20, {'abc', 'de'}]" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from_pickle('data.pkl')" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/10_gyak.ipynb b/10_gyak.ipynb new file mode 100644 index 0000000..67302fc --- /dev/null +++ b/10_gyak.ipynb @@ -0,0 +1,115 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Előadás anyag\n", + "Nézzük meg a 10. heti előadás anyagát tartalmazó Jupyter notebook (10_ea.ipynb) tartalmát! Futtassuk az egyes cellákat, módosítsunk, kisérletezzünk szabadon!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. feladat\n", + "\n", + "Hány olyan kétjegyű természetes szám van, amely osztható a számjegyei összegével?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. feladat\n", + "\n", + "Az $a$, $b$ és $c$ pozitív egész számok pitagoraszi számhármast alkotnak, ha $a^2 + b^2 = c^2$. Például a $(3, 4, 5)$ számhármas pitagoraszi, mivel $3^2 + 4^2 = 5^2$.\n", + "\n", + "- Hány olyan pitagoraszi számhármas létezik, melyre $c \\leq 500$? Az $(a, b, c)$ és a $(b, a, c)$ hármast ne tekintsük különbözőnek!\n", + "- Az előbbi számhármasok között hány primitív van, azaz hány olyan van, melyre $a$ és $b$ relatív prímek?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. feladat\n", + "Készítsünk programot, amely:\n", + "- Egy 1 és 99 közötti arab számot római számmá alakít!\n", + "- Egy I és XCIX közötti római számot arab számmá alakít!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Bővítsük az előző feladatot úgy, hogy a használható egész számok intervalluma az [1, 99] helyett az [1, 3000] (ill. [I, MMM]) lehessen!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4. feladat\n", + "\n", + "Készítsünk programot, amely a [Conway-féle életjátékot](https://hu.wikipedia.org/wiki/%C3%89letj%C3%A1t%C3%A9k) valósítja meg!" + ] + }, + { + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/10_gyak_mego.ipynb b/10_gyak_mego.ipynb new file mode 100644 index 0000000..2e206a7 --- /dev/null +++ b/10_gyak_mego.ipynb @@ -0,0 +1,509 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. feladat\n", + "\n", + "Hány olyan kétjegyű természetes szám van, amely osztható a számjegyei összegével?" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "23\n" + ] + } + ], + "source": [ + "# 1. megoldás\n", + "n = 0\n", + "for i in range(10, 100): # végigmegyünk a kétjegyű számokon\n", + " s = sum([int(d) for d in str(i)]) # számjegyek összege\n", + " if i % s == 0:\n", + " n += 1\n", + "print(n)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "23\n" + ] + } + ], + "source": [ + "# 2. megoldás\n", + "n = 0\n", + "for t in range(1, 10): # tízesek\n", + " for e in range(10): # egyesek\n", + " if (t * 10 + e) % (t + e) == 0:\n", + " n += 1\n", + "print(n)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. feladat\n", + "\n", + "Az $a$, $b$ és $c$ pozitív egész számok pitagoraszi számhármast alkotnak, ha $a^2 + b^2 = c^2$. Például a $(3, 4, 5)$ számhármas pitagoraszi, mivel $3^2 + 4^2 = 5^2$.\n", + "\n", + "- Hány olyan pitagoraszi számhármas létezik, melyre $c \\leq 500$? Az $(a, b, c)$ és a $(b, a, c)$ hármast ne tekintsük különbözőnek!" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# 1. megoldás\n", + "triplets = set()\n", + "for c in range(1, 501):\n", + " for a in range(1, c):\n", + " for b in range(a, c):\n", + " if b**2 + a**2 == c**2:\n", + " triplets.add((a, b, c))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "386" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(triplets)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# 2. megoldás\n", + "triplets = set()\n", + "for c in range(1, 501):\n", + " for a in range(1, c):\n", + " b = int((c**2 - a**2)**0.5 + 0.5)\n", + " if b >= a and a**2 + b**2 == c**2:\n", + " triplets.add((a, b, c))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "386" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "len(triplets)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Megjegyzés: Az előző megoldásokban a hármasokat egy listába tettük (az esetleges ellenőrzés végett, noha nem írtuk ki őket), a darabszám meghatározása (ami a feladat volt) enélkül is elvégezhető lett volna (pl. egy darabszámot adminisztráló változó használatával)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Az előbbi számhármasok között hány primitív van, azaz hány olyan van, melyre $a$ és $b$ relatív prímek?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. feladat\n", + "Készítsünk programot, amely egy 1 és 99 közötti arab számot római számmá alakít!" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'XXIII'" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 1. megoldás\n", + "a = 23\n", + "r_ones = ['', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX']\n", + "r_tens = ['', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC']\n", + "r = r_tens[a // 10] + r_ones[a % 10]\n", + "r" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "# 2. megoldás: függvénybe csomagolva\n", + "def arabic_to_roman(a):\n", + " r_ones = ['', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX']\n", + " r_tens = ['', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC']\n", + " return r_tens[a // 10] + r_ones[a % 10]" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'XLVII'" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "arabic_to_roman(47)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Készítsünk programot, amely egy I és XCIX közötti római számot arab számmá alakít!" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# Konverziós szótár\n", + "roman_to_arabic = {arabic_to_roman(a): a for a in range(1, 100)}" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "64" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "roman_to_arabic['LXIV']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4. feladat\n", + "\n", + "Készítsünk programot, amely a [Conway-féle életjátékot](https://hu.wikipedia.org/wiki/%C3%89letj%C3%A1t%C3%A9k) valósítja meg!" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# Adjuk meg a kezdőállapotot egy sztringben!\n", + "# (Lehetne fájlból is beolvasni, de az egyszerűség kedvéért használjunk most sztringet!)\n", + "\n", + "worldstr = '''\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + ".........oo.........\n", + "........oo..........\n", + ".........o..........\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "'''.strip()" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# kezdőállapot beolvasása listák listájába\n", + "world = [list(row) for row in worldstr.split('\\n')]" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def display_world(world):\n", + " for row in world:\n", + " print(''.join(row))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Szabályok:\n", + "- A sejt túléli a kört, ha két vagy három szomszédja van.\n", + "- A sejt elpusztul, ha kettőnél kevesebb (elszigetelődés), vagy háromnál több (túlnépesedés) szomszédja van.\n", + "- Új sejt születik minden olyan cellában, melynek környezetében pontosan három sejt található.\n", + "- Az átlós szomszédság is számít." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import copy\n", + "\n", + "def count_neighbors(world, i, j):\n", + " nb = 0 # szomszédok száma\n", + " for di in [-1, 0, 1]: # végigmegyünk a szomszédos sorokon\n", + " for dj in [-1, 0, 1]: # végigmegyünk a szomszédos oszlopokon\n", + " if di == 0 and dj == 0: # önmagát ne számítsuk szomszédként\n", + " continue\n", + " if j + dj < 0 or i + di < 0: # negatív indext ne használjunk\n", + " continue\n", + " try:\n", + " if world[i + di][j + dj] == 'o': # ha találtunk szomszédot\n", + " nb += 1\n", + " except IndexError:\n", + " pass\n", + " return nb\n", + "\n", + "def update_world(world):\n", + " nrows = len(world)\n", + " ncols = len(world[0])\n", + " new_world = copy.deepcopy(world) # másolat készítése\n", + " for i in range(nrows):\n", + " for j in range(ncols):\n", + " nb = count_neighbors(world, i, j)\n", + " if nb < 2 or nb > 3: # elpusztul a sejt\n", + " new_world[i][j] = '.'\n", + " elif nb == 3: # új sejt születik\n", + " new_world[i][j] = 'o'\n", + " return new_world" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + ".........oo.........\n", + "........oo..........\n", + ".........o..........\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "........ooo.........\n", + "........o...........\n", + "........oo..........\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + ".........o..........\n", + "........oo..........\n", + ".......o..o.........\n", + "........oo..........\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "Interrupted by user", + "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[0;32m 2\u001b[0m \u001b[0mdisplay_world\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mworld\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mworld\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mupdate_world\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mworld\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0minput\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\u001b[0m in \u001b[0;36mraw_input\u001b[1;34m(self, prompt)\u001b[0m\n\u001b[0;32m 858\u001b[0m \u001b[1;34m\"raw_input was called, but this frontend does not support input requests.\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 859\u001b[0m )\n\u001b[1;32m--> 860\u001b[1;33m return self._input_request(str(prompt),\n\u001b[0m\u001b[0;32m 861\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_parent_ident\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 862\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_parent_header\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\u001b[0m in \u001b[0;36m_input_request\u001b[1;34m(self, prompt, ident, parent, password)\u001b[0m\n\u001b[0;32m 902\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mKeyboardInterrupt\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 903\u001b[0m \u001b[1;31m# re-raise KeyboardInterrupt, to truncate traceback\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 904\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mKeyboardInterrupt\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Interrupted by user\"\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 905\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 906\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlog\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwarning\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Invalid Message:\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexc_info\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mKeyboardInterrupt\u001b[0m: Interrupted by user" + ] + } + ], + "source": [ + "while True:\n", + " display_world(world)\n", + " world = update_world(world)\n", + " input()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4. feladat - egyebek\n", + "- Teszteljük a játékot más kiinduló állapottal!\n", + "- Módosítsuk úgy a játékot, hogy:\n", + " - a játék addig folytatódjon, amíg a felhasználó a 'q' betűt meg nem adja (azaz minden más input esetén folytassuk, de a 'q' inputra fejezzük be a futást)\n", + " - a 'világ' más méretű legyen (pl. 10x10-es)\n", + " - érvényesítsünk más szabály(oka)t (pl. más feltételek mellett szülessen új sejt, vagy pusztuljon el egy élő sejt)" + ] + }, + { + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/11_ea.ipynb b/11_ea.ipynb new file mode 100644 index 0000000..d0f782d --- /dev/null +++ b/11_ea.ipynb @@ -0,0 +1,872 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## [Objektumorientált programozás](https://docs.python.org/3/tutorial/classes.html), nulladik közelítésben\n", + "\n", + "Az objektumorientált programozás(OOP) olyan programozási módszertan, ahol az egymással kapcsolatban álló programegységek hierarchiájának megtervezése áll a középpontban.\n", + "- A korábban uralkodó procedurális megközelítés a műveletek megalkotására fókuszált.\n", + "- OOP esetén adatokat és az őket kezelő függvényeket egységbezárjuk (encapsulation).\n", + "- Az OOP másik fontos sajátossága az öröklődés (inheritance)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "10 20\n" + ] + } + ], + "source": [ + "# Példa: téglalap osztály.\n", + "\n", + "class Rectangle:\n", + " def __init__(self, a, b): # konstruktor\n", + " self.a = a\n", + " self.b = b\n", + " \n", + " def calc_area(self): # területszámító metódus definiálása\n", + " return self.a * self.b\n", + "\n", + " def calc_perimeter(self): # kerületszámító metódus definiálása\n", + " return (self.a + self.b) * 2\n", + " \n", + "r1 = Rectangle(10, 20) # téglalap objektum létrehozása\n", + "print(r1.a, r1.b)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "200" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "r1.calc_area() # metódus meghívása" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "200" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A Python a metódushívást a színfalak mögött függvényhívássá alakítja át.\n", + "Rectangle.calc_area(r1)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...ez a beépített típusokra is igaz.\n", + "(1).__add__(1)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "int.__add__(1, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "314.1592653589793\n", + "125.66370614359172\n" + ] + } + ], + "source": [ + "# Példa: kör osztály.\n", + "\n", + "import math\n", + "\n", + "class Circle:\n", + " def __init__(self, r): # konstruktor\n", + " self.r = r\n", + " \n", + " def calc_area(self): # területszámító metódus definiálása\n", + " return self.r**2 * math.pi\n", + "\n", + " def calc_perimeter(self): # kerületszámító metódus definiálása\n", + " return 2 * self.r * math.pi\n", + " \n", + "c1 = Circle(10)\n", + "c2 = Circle(20)\n", + "print(c1.calc_area())\n", + "print(c2.calc_perimeter())" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# A kerület-terület arány kiszámítása téglalapok és körök esetén ugyanúgy történik.\n", + "# Hozzunk létre egy egy síkidom ősosztályt, származtassuk ebből a téglalapot és a kört!\n", + "# A kerület-terület arány számítást az ősosztályba tegyük!\n", + "\n", + "class Shape:\n", + " def calc_pa_ratio(self):\n", + " return self.calc_perimeter() / self.calc_area()\n", + "\n", + "class Rectangle(Shape): # a téglalap a síkidomból származik\n", + " def __init__(self, a, b): # konstruktor\n", + " self.a = a\n", + " self.b = b\n", + " \n", + " def calc_area(self): # területszámító metódus definiálása\n", + " return self.a * self.b\n", + "\n", + " def calc_perimeter(self): # kerületszámító metódus definiálása\n", + " return (self.a + self.b) * 2\n", + "\n", + "class Circle(Shape): # a kör a síkidomból származik\n", + " def __init__(self, r): # konstruktor\n", + " self.r = r\n", + " \n", + " def calc_area(self): # területszámító metódus definiálása\n", + " return self.r**2 * math.pi\n", + "\n", + " def calc_perimeter(self): # kerületszámító metódus definiálása\n", + " return 2 * self.r * math.pi" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.6\n", + "1.6666666666666667\n", + "0.19999999999999998\n" + ] + } + ], + "source": [ + "shapes = [Rectangle(10, 5), Rectangle(2, 3), Circle(10)]\n", + "for s in shapes:\n", + " print(s.calc_pa_ratio())" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "def solve_quadratic(a, b, c):\n", + " '''Solve quadratic equation a*x^2 + b*x + c = 0,\n", + " and return solutions in a list.'''\n", + " \n", + " # diszkrimináns kiszámítása\n", + " d = b**2 - 4 * a * c\n", + "\n", + " # elágazás\n", + " if d > 0: # 2 megoldás\n", + " x1 = (-b + d**0.5) / (2 * a)\n", + " x2 = (-b - d**0.5) / (2 * a)\n", + " return [x1, x2]\n", + " elif d == 0: # 1 megoldás\n", + " return [-b / (2 * a)]\n", + " else:\n", + " return []" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# Feladat: Készítsünk másodfokú egyenlet megoldó osztályt!\n", + "class QuadraticEquation:\n", + " def __init__(self, a, b, c):\n", + " self.a = a\n", + " self.b = b\n", + " self.c = c\n", + "\n", + " def _calc_d(self):\n", + " return self.b**2 - 4 * self.a * self.c\n", + " \n", + " def nsolutions(self):\n", + " d = self._calc_d()\n", + " if d > 0: return 2\n", + " elif d == 0: return 1\n", + " else: return 0\n", + " \n", + " def solve(self):\n", + " '''Solve quadratic equation a*x^2 + b*x + c = 0,\n", + " and return solutions in a list.'''\n", + " \n", + " a, b, c = self.a, self.b, self.c\n", + "\n", + " # diszkrimináns kiszámítása\n", + " d = self._calc_d()\n", + "\n", + " # elágazás\n", + " if d > 0: # 2 megoldás\n", + " x1 = (-b + d**0.5) / (2 * a)\n", + " x2 = (-b - d**0.5) / (2 * a)\n", + " return [x1, x2]\n", + " elif d == 0: # 1 megoldás\n", + " return [-b / (2 * a)]\n", + " else:\n", + " return []" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[-1.0, -2.0]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "QuadraticEquation(1, 3, 2).solve()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[-1.0]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "QuadraticEquation(1, 2, 1).solve()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "QuadraticEquation(1, 1, 3).solve()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n", + "[-1.0, -2.0]\n" + ] + } + ], + "source": [ + "eq = QuadraticEquation(1, 3, 2)\n", + "print(eq.nsolutions())\n", + "print(eq.solve())" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "# Feladat: \"Éhes kutyák\".\n", + "\n", + "class Dog:\n", + " def __init__(self, name, is_hungry=False):\n", + " self.name = name\n", + " self.is_hungry = is_hungry\n", + "\n", + " def eat(self):\n", + " self.is_hungry = False\n", + " \n", + "dogs = [\n", + " Dog('Borzas', True),\n", + " Dog('Vadász', False),\n", + " Dog('Nokedli'),\n", + " Dog('Cézár', True),\n", + " Dog('Csibész', True)\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Borzas\n", + "Cézár\n", + "Csibész\n" + ] + } + ], + "source": [ + "# Nézzük meg, hogy kik éhesek!\n", + "for d in dogs:\n", + " if d.is_hungry:\n", + " print(d.name)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "# Etessük meg az összes éhes kutyát!\n", + "for d in dogs:\n", + " if d.is_hungry:\n", + " d.eat()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Borzas False\n", + "Vadász False\n", + "Nokedli False\n", + "Cézár False\n", + "Csibész False\n" + ] + } + ], + "source": [ + "# Nézzük meg, hogy mi az etetés eredmény!\n", + "for d in dogs:\n", + " print(d.name, d.is_hungry)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "# Éhezzenek meg a kutyák!\n", + "for d in dogs:\n", + " d.is_hungry = True" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Borzas\n", + "Vadász\n", + "Nokedli\n", + "Cézár\n", + "Csibész\n" + ] + } + ], + "source": [ + "# Újra nézzük meg, hogy kik éhesek!\n", + "for d in dogs:\n", + " if d.is_hungry:\n", + " print(d.name)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Borzas\n", + "Cézár\n", + "Csibész\n" + ] + } + ], + "source": [ + "# Oldjuk meg az \"éhes kutyák\" feladatot osztályok használata nélkül!\n", + "dogs = [\n", + " {'name': 'Borzas', 'is_hungry': True},\n", + " {'name': 'Vadász', 'is_hungry': False},\n", + " {'name': 'Nokedli', 'is_hungry': False},\n", + " {'name': 'Cézár', 'is_hungry': True},\n", + " {'name': 'Csibész', 'is_hungry': True}\n", + "]\n", + "\n", + "for d in dogs:\n", + " if d['is_hungry']:\n", + " print(d['name'])\n", + " \n", + "# ..." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Speciális (\"dunder\") [attribútumok](https://docs.python.org/3/reference/datamodel.html#the-standard-type-hierarchy) és [metódusok](https://docs.python.org/3/reference/datamodel.html#special-method-names)\n", + "\n", + "- `__doc__`, `__class__`, `__init__()`, `__hash__()`, `__code__`, ...\n", + "- attribútumtárolásra: `__dict__`, `__dir__()`\n", + "- kiírásra: `__repr__()`, `__str__()`\n", + "- műveletvégzésre: `__add__()`, `__mul__()`, ...\n", + "- indexelésre: `__getitem__()`, `__setitem__()`, `__len__()`\n", + "- iterálásra: `__iter__()`, `__next__()`\n", + "- kontextuskezelésre: `__enter__()`, `__exit__()`\n", + "- ..." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "# Példa: __repr__ metódussal rendelkező osztály.\n", + "class Student:\n", + " def __init__(self, name, neptun):\n", + " self.name = name\n", + " self.neptun = neptun\n", + " \n", + " def __repr__(self):\n", + " return f\"Student('{self.name}', '{self.neptun}')\"" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Student('Gipsz Jakab', 'ABC123')" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Student('Gipsz Jakab', 'ABC123')" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[10, 20, 30]\n" + ] + } + ], + "source": [ + "# A __repr__ metódus a beépített osztályokra is meg van valósítva.\n", + "l = [10, 20, 30]\n", + "print(l.__repr__())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Gyakorlás\n", + "\n", + "Készítsünk vektor osztályt, amely támogatja a vektorok közötti elemenkénti alapműveleteket (+, -, *, /), a vektor elemszámának lekérdezését, a haladó indexelést valamint a vektor sztringgé alakítását! Elvárt működés:\n", + "```\n", + "v1 = Vector([1.0, 2.0, 3.0])\n", + "v2 = Vector([4.0, 5.0, 6.0])\n", + "print(len(v1), v1[0], v1[:2]) # => 3 1.0 [1.0, 2.0]\n", + "print(v1 + v2) # => Vector([5.0, 7.0, 9.0])\n", + "print(v1 * v2) # => Vector([4.0, 10.0, 18.0]\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "class Vector:\n", + " def __init__(self, data):\n", + " self.data = data\n", + " \n", + " def __repr__(self):\n", + " return f'Vector({str(self.data)})'\n", + " \n", + " def __add__(self, other):\n", + " return Vector([x + y for x, y in zip(self.data, other.data)])\n", + "\n", + " def __sub__(self, other):\n", + " return Vector([x - y for x, y in zip(self.data, other.data)])\n", + "\n", + " def __mul__(self, other):\n", + " return Vector([x * y for x, y in zip(self.data, other.data)])\n", + "\n", + " def __truediv__(self, other):\n", + " return Vector([x / y for x, y in zip(self.data, other.data)])\n", + " \n", + " def __len__(self):\n", + " return len(self.data)\n", + " \n", + " def __getitem__(self, idx):\n", + " return self.data[idx]" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "# 2 vektor létrehozása\n", + "v1 = Vector([1.0, 2.0, 3.0])\n", + "v2 = Vector([4.0, 5.0, 6.0])" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Vector([1.0, 2.0, 3.0])" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v1" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Vector([5.0, 7.0, 9.0])" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# műveletek\n", + "v1 + v2" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Vector([-3.0, -3.0, -3.0])" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v1 - v2" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Vector([4.0, 10.0, 18.0])" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v1 * v2" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Vector([0.25, 0.4, 0.5])" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "v1 / v2" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# elemszám lekérdezés\n", + "len(v1)" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1.0" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# indexelés\n", + "v1[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[1.0, 2.0]" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# haladó indexelés\n", + "v1[:2]" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Vector([5.0, 7.0, 9.0])" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A műveletek a háttérben egyszerű függvényhívássá alakulnak át.\n", + "v1 + v2" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Vector([5.0, 7.0, 9.0])" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "Vector.__add__(v1, v2)" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/11_gyak.ipynb b/11_gyak.ipynb new file mode 100644 index 0000000..bb7d27e --- /dev/null +++ b/11_gyak.ipynb @@ -0,0 +1,174 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Előadás anyag\n", + "Nézzük meg a 11. heti előadás anyagát tartalmazó Jupyter notebook (11_ea.ipynb) tartalmát! Futtassuk az egyes cellákat, módosítsunk, kisérletezzünk szabadon!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. Feladat\n", + "- A Jupyter notebook súgójával (help) derítsük ki azt, hogy milyen műveletei (dunder metódusai) vannak a bool osztálynak! Melyik ősétől mit örökölt?\n", + "- Próbáljuk ki néhány (pl. az előadás anyagában megemlített) dunder attribútum, ill. metódus használatát!\n", + "- Egészítsük ki az előadás anyagában szereplő Dog osztályt egy megfelelő `__repr__` metódussal és teszteljük ennek működését!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. feladat\n", + "\n", + "Készítsük el a [Conway-féle életjáték](https://hu.wikipedia.org/wiki/%C3%89letj%C3%A1t%C3%A9k) objektumorientált változatát!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "worldstr = '''\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + ".........oo.........\n", + "........oo..........\n", + ".........o..........\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "'''.strip()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# kezdőállapot beolvasása listák listájába\n", + "world = [list(row) for row in worldstr.split('\\n')]\n", + "\n", + "def display_world(world):\n", + " for row in world:\n", + " print(''.join(row))\n", + " \n", + "def count_neighbors(world, i, j):\n", + " nb = 0 # szomszédok szám\n", + " for di in [-1, 0, 1]: # végigmegyünk a szomszédos sorokon\n", + " for dj in [-1, 0, 1]: # végigmegyünk a szomszédos oszlopokon\n", + " if di == 0 and dj == 0: # önmagát ne számítsuk szomszédként\n", + " continue\n", + " if j + dj < 0 or i + di < 0: # negatív indext ne használjunk\n", + " continue\n", + " \n", + " try:\n", + " if world[i + di][j + dj] == 'o': # ha találtunk szomszédot\n", + " nb += 1\n", + " except IndexError:\n", + " pass\n", + " return nb\n", + "\n", + "import copy\n", + "\n", + "def update_world(world):\n", + " nrows = len(world)\n", + " ncols = len(world[0])\n", + " new_world = copy.deepcopy(world) # másolat készítése\n", + " for i in range(nrows):\n", + " for j in range(ncols):\n", + " nb = count_neighbors(world, i, j)\n", + " if nb < 2 or nb > 3: # elpusztul a sejt\n", + " new_world[i][j] = '.'\n", + " elif nb == 3: # új sejt születik\n", + " new_world[i][j] = 'o'\n", + " return new_world\n", + "\n", + "while True:\n", + " display_world(world)\n", + " world = update_world(world)\n", + " input()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. Feladat\n", + "- Definiáljunk egy osztályt (pl. Allat néven) az alábbiak szerint!\n", + " - Az osztályhoz tartozó objektumok rendelkezzenek névvel és egy vagy több táplálékkal! Az objektumok adatai (pl. 'medve', {'méz', 'málna'}) létrehozáskor (azaz a konstruktor meghívásakor) legyenek megadhatók!\n", + " - Definiáljuk az osztály `__repr__` metódusát!\n", + " - Legyen az osztálynak egy olyan metódusa, amellyel bővíteni lehessen egy adott objektum táplálékait!\n", + " - Teszteljük az osztályt, azaz hozzunk létre egy ehhez az osztályhoz tartozó objektumot, majd használjuk (pl. írjuk ki a képernyőre, hívjuk meg valamelyik metódusát, stb.)!\n", + "- Nehezítsük a feladatot úgy, hogy definiálunk egy másik osztályt is (pl. Kedvenc néven) az alábbiak szerint!\n", + " - Az új osztály az előzőleg elkészített osztályból származzon! \n", + " - Az osztály példányai rendelkezzenek egy becenévvel és egy vagy több tevékenységgel is (azon felül, amelyekkel, mint Allat objektumok rendelkeznek)!\n", + " - Az osztályhoz tartozó objektumok adatai (pl. 'medve', {'méz', 'málna'}, 'Brumi', {'mézet lejmol', 'brummog', 'téli álmot alszik'}) itt is példányosításkor legyenek megadhatók!\n", + " - A konstruktor (`__init__`) a szülő osztály konstruktorát használja az örökölt adatok értékeinek beállítására (lásd a `super` függvényt a súgóban)!\n", + " - Definiáljuk az osztály `__repr__` metódusát!\n", + " - Legyen az osztálynak egy olyan metódusa (pl. mit_csinal néven), amelyik egy véletlenszerűen kiválasztott tevékenységet ad eredményül!\n", + " - Teszteljük az osztályt, azaz hozzunk létre egy ehhez az osztályhoz tartozó objektumot, majd használjuk (pl. írjuk ki a képernyőre, hívjuk meg valamelyik metódusát, stb.)!\n", + "- Teszteljük együtt a két osztályt úgy, hogy hozzunk létre objektumokat (Allat és Kedvenc osztályhoz tartozókat is, pl. egy listában), majd használjuk ezeket az objektumokat (pl. Kedvenc típusú objektum esetén írjuk ki a képernyőre a becenevét és a `mit_csinal` függvény egy hívásának eredményét, egyébként meg, Allat típusú objektum esetén, a nevét és a táplálékát/táplálékait)! Egy adott objektum egy adott osztályhoz való 'tartozásának' eldöntésére használjuk a `isinstance` függvényt (lásd súgó)! \n" + ] + }, + { + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/11_gyak_2_feladat_mego.ipynb b/11_gyak_2_feladat_mego.ipynb new file mode 100644 index 0000000..6650946 --- /dev/null +++ b/11_gyak_2_feladat_mego.ipynb @@ -0,0 +1,309 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. feladat\n", + "\n", + "Készítsük el a [Conway-féle életjáték](https://hu.wikipedia.org/wiki/%C3%89letj%C3%A1t%C3%A9k) objektumorientált változatát!" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "worldstr = '''\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + ".........oo.........\n", + "........oo..........\n", + ".........o..........\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "'''.strip()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + ".........oo.........\n", + "........oo..........\n", + ".........o..........\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "........ooo.........\n", + "........o...........\n", + "........oo..........\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "Interrupted by user", + "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[0;32m 40\u001b[0m \u001b[0mdisplay_world\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mworld\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 41\u001b[0m \u001b[0mworld\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mupdate_world\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mworld\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 42\u001b[1;33m \u001b[0minput\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\u001b[0m in \u001b[0;36mraw_input\u001b[1;34m(self, prompt)\u001b[0m\n\u001b[0;32m 858\u001b[0m \u001b[1;34m\"raw_input was called, but this frontend does not support input requests.\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 859\u001b[0m )\n\u001b[1;32m--> 860\u001b[1;33m return self._input_request(str(prompt),\n\u001b[0m\u001b[0;32m 861\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_parent_ident\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 862\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_parent_header\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32mC:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel\\kernelbase.py\u001b[0m in \u001b[0;36m_input_request\u001b[1;34m(self, prompt, ident, parent, password)\u001b[0m\n\u001b[0;32m 902\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mKeyboardInterrupt\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 903\u001b[0m \u001b[1;31m# re-raise KeyboardInterrupt, to truncate traceback\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 904\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mKeyboardInterrupt\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Interrupted by user\"\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 905\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 906\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlog\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwarning\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"Invalid Message:\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mexc_info\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mKeyboardInterrupt\u001b[0m: Interrupted by user" + ] + } + ], + "source": [ + "# kezdőállapot beolvasása listák listájába\n", + "world = [list(row) for row in worldstr.split('\\n')]\n", + "\n", + "def display_world(world):\n", + " for row in world:\n", + " print(''.join(row))\n", + " \n", + "def count_neighbors(world, i, j):\n", + " nb = 0 # szomszédok szám\n", + " for di in [-1, 0, 1]: # végigmegyünk a szomszédos sorokon\n", + " for dj in [-1, 0, 1]: # végigmegyünk a szomszédos oszlopokon\n", + " if di == 0 and dj == 0: # önmagát ne számítsuk szomszédként\n", + " continue\n", + " if j + dj < 0 or i + di < 0: # negatív indext ne használjunk\n", + " continue\n", + " \n", + " try:\n", + " if world[i + di][j + dj] == 'o': # ha találtunk szomszédot\n", + " nb += 1\n", + " except IndexError:\n", + " pass\n", + " return nb\n", + "\n", + "import copy\n", + "\n", + "def update_world(world):\n", + " nrows = len(world)\n", + " ncols = len(world[0])\n", + " new_world = copy.deepcopy(world) # másolat készítése\n", + " for i in range(nrows):\n", + " for j in range(ncols):\n", + " nb = count_neighbors(world, i, j)\n", + " if nb < 2 or nb > 3: # elpusztul a sejt\n", + " new_world[i][j] = '.'\n", + " elif nb == 3: # új sejt születik\n", + " new_world[i][j] = 'o'\n", + " return new_world\n", + "\n", + "while True:\n", + " display_world(world)\n", + " world = update_world(world)\n", + " input()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "import copy\n", + "\n", + "class Game:\n", + " def __init__(self, worldstr):\n", + " # kezdőállapot beolvasása listák listájába\n", + " self.world = [list(row) for row in worldstr.split('\\n')]\n", + " \n", + " def run(self, nsteps=None):\n", + " step = 0\n", + " while nsteps == None or step < nsteps:\n", + " self.display_world() # megjelenítés\n", + " self.world = self.update_world() # léptetés\n", + " input() # enter bekérése\n", + " step += 1\n", + " \n", + " def update_world(self):\n", + " nrows = len(self.world)\n", + " ncols = len(self.world[0])\n", + " new_world = copy.deepcopy(self.world) # másolat készítése\n", + " for i in range(nrows):\n", + " for j in range(ncols):\n", + " nb = self.count_neighbors(i, j)\n", + " if nb < 2 or nb > 3: # elpusztul a sejt\n", + " new_world[i][j] = '.'\n", + " elif nb == 3: # új sejt születik\n", + " new_world[i][j] = 'o'\n", + " return new_world\n", + " \n", + " def display_world(self):\n", + " for row in self.world:\n", + " print(''.join(row))\n", + " \n", + " def count_neighbors(self, i, j):\n", + " nb = 0 # szomszédok száma\n", + " for di in [-1, 0, 1]: # végigmegyünk a szomszédos sorokon\n", + " for dj in [-1, 0, 1]: # végigmegyünk a szomszédos oszlopokon\n", + " if di == 0 and dj == 0: # önmagát ne számítsuk szomszédként\n", + " continue\n", + " if j + dj < 0 or i + di < 0: # negatív indext ne használjunk\n", + " continue\n", + "\n", + " try:\n", + " if self.world[i + di][j + dj] == 'o': # ha találtunk szomszédot\n", + " nb += 1\n", + " except IndexError:\n", + " pass\n", + " return nb" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + ".........oo.........\n", + "........oo..........\n", + ".........o..........\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "........ooo.........\n", + "........o...........\n", + "........oo..........\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + ".........o..........\n", + "........oo..........\n", + ".......o..o.........\n", + "........oo..........\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "....................\n", + "\n" + ] + } + ], + "source": [ + "Game(worldstr).run(3)" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/12_ea.ipynb b/12_ea.ipynb new file mode 100644 index 0000000..11b8db8 --- /dev/null +++ b/12_ea.ipynb @@ -0,0 +1,1757 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## [NumPy](http://www.numpy.org/)\n", + "\n", + "A NumPy egy alacsony szintű matematikai csomag, numerikus számításokhoz.\n", + "\n", + "- Alapvető adatszerkezete az [n dimenziós tömb](https://docs.scipy.org/doc/numpy/reference/arrays.ndarray.html).\n", + "- C nyelven íródott. A szokásos tömbműveletek hatékonyan vannak benne megvalósítva.\n", + "- Többek között tartalmaz lineáris algebrai és véletlenszám generáló almodult.\n", + "- Számos magasabb szintű csomag (pl. scipy, matplotlib, pandas, scikit-learn) épül rá.\n", + "\n", + "A NumPy külső csomag, a telepítésére többféle lehetőség van, például:\n", + "- `pip install numpy --user`\n", + "- `sudo apt-get install python3-numpy`\n", + "- `conda install numpy`" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# A NumPy modul importálása np néven.\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'1.24.3'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Verzió lekérdezése.\n", + "np.__version__" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Tömbök létrehozása" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# 1 dimenziós, egész számokból álló tömb létrehozása.\n", + "a = np.array([2, 3, 4])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([2, 3, 4])" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "numpy.ndarray" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A tömb objektum típusa.\n", + "type(a)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Hány dimenziós a tömb?\n", + "a.ndim" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(3,)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A dimenziók mérete.\n", + "a.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dtype('int32')" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az elemek típusának lekérdezése.\n", + "# A NumPy tömbök homogének (kivéve az objektumtömböt).\n", + "a.dtype" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "# 2 dimenziós, lebegőpontos tömb létrehozása.\n", + "b = np.array([[2.0, 3.0, 4.0], [5.5, 6.6, 7.7]])" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[2. , 3. , 4. ],\n", + " [5.5, 6.6, 7.7]])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "b" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "2\n", + "(2, 3)\n", + "float64\n" + ] + } + ], + "source": [ + "# Dimenziók száma, mérete, az elemek típusa.\n", + "print(b.ndim)\n", + "print(b.shape)\n", + "print(b.dtype)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([3, 4, 5, 6], dtype=uint8)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az elemek adattípusának beállítása, 1. példa.\n", + "np.array([3, 4, 5, 6], dtype='uint8')" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([3.3, 4.4], dtype=float32)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az elemek adattípusának beállítása, 2. példa.\n", + "np.array([3.3, 4.4], dtype='float32')" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0., 1., 1., 0., 1., 0., 1., 1., 0., 1.],\n", + " [0., 0., 1., 0., 1., 1., 0., 1., 0., 1.],\n", + " [0., 0., 1., 0., 0., 0., 1., 1., 0., 0.],\n", + " [0., 1., 0., 0., 1., 0., 1., 1., 0., 0.],\n", + " [1., 0., 1., 1., 0., 0., 1., 0., 1., 1.],\n", + " [1., 0., 1., 0., 0., 1., 1., 0., 1., 0.],\n", + " [1., 1., 1., 0., 1., 1., 1., 0., 1., 1.],\n", + " [0., 0., 0., 0., 0., 1., 0., 1., 0., 1.],\n", + " [1., 1., 0., 1., 0., 1., 1., 1., 0., 0.],\n", + " [1., 0., 1., 0., 1., 0., 0., 1., 0., 1.]])" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Tömb betöltése szövegfájlból.\n", + "np.genfromtxt('matrix.txt')" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Nullákból álló tömb létrehozása, 1. példa.\n", + "np.zeros(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0, 0],\n", + " [0, 0],\n", + " [0, 0]], dtype=int16)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Nullákból álló tömb létrehozása, 2. példa.\n", + "np.zeros((3, 2), dtype='int16')" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1, 1, 1, 1, 1, 1, 1], dtype=uint32)" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Egyesekből álló tömb létrehozása, 1. példa.\n", + "np.ones(7, dtype='uint32')" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[[1., 1.],\n", + " [1., 1.]],\n", + "\n", + " [[1., 1.],\n", + " [1., 1.]]])" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Egyesekből álló tömb létrehozása, 2. példa.\n", + "np.ones((2, 2, 2))" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 0., 0., 0., 0.],\n", + " [0., 1., 0., 0., 0.],\n", + " [0., 0., 1., 0., 0.],\n", + " [0., 0., 0., 1., 0.],\n", + " [0., 0., 0., 0., 1.]])" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Egységmátrix létrehozása.\n", + "np.eye(5)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0. , 0.4, 0.8, 1.2, 1.6])" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Értéktartomány létrehozása a lépésköz megadásával.\n", + "np.arange(0, 2, 0.4)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-1. , -0.5, 0. , 0.5, 1. , 1.5, 2. ])" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Értéktartomány létrehozása az elemszám megadásával.\n", + "np.linspace(-1, 2, 7)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([2, 3, 4, 5, 6])" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Vektorok összefűzése.\n", + "a = np.array([2, 3])\n", + "b = np.array([4, 5, 6])\n", + "np.concatenate([a, b])" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[2, 3, 4, 2, 3, 4],\n", + " [5, 6, 7, 5, 6, 7]])" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Mátrixok összefűzése vízszintesen.\n", + "a = np.array([[2, 3, 4],\n", + " [5, 6, 7]])\n", + "np.hstack([a, a])" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[2, 3, 4],\n", + " [5, 6, 7],\n", + " [2, 3, 4],\n", + " [5, 6, 7],\n", + " [2, 3, 4],\n", + " [5, 6, 7]])" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Mátrixok összefűzése függőlegesen.\n", + "np.vstack([a, a, a])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Elemek és résztömbök" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "# Hozzunk létre egy példamátrixot!\n", + "a = np.array([[3, 4, 5],\n", + " [6, 7, 8]])" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Elem kiválasztása (az indexelés 0-tól indul).\n", + "a[0, 1] # 0. sor, 1. oszlop" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a[(0, 1)]" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "4" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...a háttérben ez történik:\n", + "np.ndarray.__getitem__(a, (0, 1))" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([6, 7, 8])" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Teljes sor kiválasztása.\n", + "a[1, :]" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([6, 7, 8])" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Így is lehetne.\n", + "a[1]" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A kiválasztott sor egy 1 dimenziós tömb.\n", + "a[1].ndim" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([5, 8])" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Oszlop kiválasztása.\n", + "a[:, 2]" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[3, 4],\n", + " [6, 7]])" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Résztömb kiválasztása.\n", + "a[:, :-1]" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[4, 3, 4],\n", + " [7, 6, 7]])" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Adott indexű oszlopok kiválasztása.\n", + "a[:, [1, 0, 1]]" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([4, 6, 8])" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Elemek kiválasztása logikai feltétel alapján.\n", + "# (Az eredmény 1 dimenziós.)\n", + "a[a % 2 == 0]" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[100, 4, 5],\n", + " [ 6, 7, 8]])" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A tömb elemei módosíthatók.\n", + "a[0, 0] = 100\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[100, 20, 5],\n", + " [ 6, 30, 8]])" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Oszlop módosítása.\n", + "a[:, 1] = [20, 30]\n", + "a" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Tömbműveletek" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "# Hozzunk létre 2 példatömböt!\n", + "a = np.array([[1, 2 ,3],\n", + " [4, 5, 6]])\n", + "b = np.array([[1, 1, 1],\n", + " [2, 2, 2]])" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[2, 3, 4],\n", + " [6, 7, 8]])" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Elemenkénti összeadás.\n", + "a + b" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0, 1, 2],\n", + " [2, 3, 4]])" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Elemenkénti kivonás.\n", + "a - b" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1, 2, 3],\n", + " [ 8, 10, 12]])" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Elemenkénti szorzás.\n", + "a * b" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1. , 2. , 3. ],\n", + " [2. , 2.5, 3. ]])" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Elemenkénti osztás.\n", + "a / b" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 2, 3],\n", + " [2, 2, 3]])" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Elemenkénti egészosztás.\n", + "a // b" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1, 2, 3],\n", + " [16, 25, 36]])" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Elemenkénti hatványozás.\n", + "a**b" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "operands could not be broadcast together with shapes (3,) (2,) ", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[45], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# A művelet nem feltétlenül végezhető el.\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m np\u001b[38;5;241m.\u001b[39marray([\u001b[38;5;241m2\u001b[39m, \u001b[38;5;241m3\u001b[39m, \u001b[38;5;241m4\u001b[39m]) \u001b[38;5;241m+\u001b[39m np\u001b[38;5;241m.\u001b[39marray([\u001b[38;5;241m5\u001b[39m, \u001b[38;5;241m6\u001b[39m])\n", + "\u001b[1;31mValueError\u001b[0m: operands could not be broadcast together with shapes (3,) (2,) " + ] + } + ], + "source": [ + "# A művelet nem feltétlenül végezhető el.\n", + "np.array([2, 3, 4]) + np.array([5, 6])" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1, 2, 3],\n", + " [4, 5, 6]])" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Jelenítsük meg újra az \"a\" tömböt!\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 2.71828183, 7.3890561 , 20.08553692],\n", + " [ 54.59815003, 148.4131591 , 403.42879349]])" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Elemenkénti függvények (exp, log, sin, cos, ...).\n", + "np.exp(a)" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0.84147098, 0.90929743, 0.14112001],\n", + " [-0.7568025 , -0.95892427, -0.2794155 ]])" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.sin(a)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1 6 21 3.5 1.707825127659933\n" + ] + } + ], + "source": [ + "# Statisztikai műveletek: min, max, sum, mean (átlag), std (szórás).\n", + "print(a.min(), a.max(), a.sum(), a.mean(), a.std())" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([5, 7, 9])" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Oszloponkénti statisztikák.\n", + "# A 0. dimenzió azaz a sorok mentén aggregálunk, ezért ez a dimenzió fog eltűnni.\n", + "a.sum(axis=0) # oszloponkénti összeg" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([3, 6])" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Soronkénti statisztikák.\n", + "# A 1. dimenzió azaz az oszlopok mentén aggregálunk, ezért ez a dimenzió fog eltűnni.\n", + "a.max(axis=1) # soronkénti maximum" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 2., 3.],\n", + " [4., 5., 6.]], dtype=float32)" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Típuskonverzió.\n", + "b = a.astype('float32')\n", + "b" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[1 2 3]\n", + " [4 5 6]]\n", + "[[1 4]\n", + " [2 5]\n", + " [3 6]]\n" + ] + } + ], + "source": [ + "# Transzponálás.\n", + "print(a)\n", + "print(a.T)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 1, 20, 3],\n", + " [ 4, 5, 6]])" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A transzponálás nem végez másolást, csak egy új nézetet hoz létre az eredeti adattartalomra.\n", + "a.T[1, 0] = 20\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Hozzunk létre egy 12 elemű példatömböt!\n", + "a = np.arange(12)\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0, 1, 2, 3, 4, 5],\n", + " [ 6, 7, 8, 9, 10, 11]])" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Átalakítás 2×6-ossá.\n", + "a.reshape((2, 6))" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0, 1, 2, 3, 4, 5],\n", + " [ 6, 7, 8, 9, 10, 11]])" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Elég csak az egyik dimenzió méretét megadni, a másik helyére írhatunk (-1)-et.\n", + "a.reshape((2, -1))" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 0, 1, 2],\n", + " [ 3, 4, 5],\n", + " [ 6, 7, 8],\n", + " [ 9, 10, 11]])" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Átalakítás 4×3-assá.\n", + "a.reshape((-1, 3))" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "cannot reshape array of size 12 into shape (5,newaxis)", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[49], line 2\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[38;5;66;03m# Ha olyan méretet adunk meg, ahol az összelemszám nem jöhet ki 12-re, akkor hibaüzenetet kapunk.\u001b[39;00m\n\u001b[1;32m----> 2\u001b[0m a\u001b[38;5;241m.\u001b[39mreshape((\u001b[38;5;241m5\u001b[39m, \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m))\n", + "\u001b[1;31mValueError\u001b[0m: cannot reshape array of size 12 into shape (5,newaxis)" + ] + } + ], + "source": [ + "# Ha olyan méretet adunk meg, ahol az összelemszám nem jöhet ki 12-re, akkor hibaüzenetet kapunk.\n", + "a.reshape((5, -1))" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[[ 0, 1, 2],\n", + " [ 3, 4, 5]],\n", + "\n", + " [[ 6, 7, 8],\n", + " [ 9, 10, 11]]])" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Átalakítás 2×2×3-assá.\n", + "a.reshape((2, 2, 3))" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([200, 3, 4])" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az értékadás NumPy esetén sem végez másolást.\n", + "a = np.array([2, 3, 4])\n", + "b = a\n", + "b[0] = 200\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([2, 3, 4])" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Másolni a copy metódussal lehet.\n", + "a = np.array([2, 3, 4])\n", + "b = a.copy()\n", + "b[0] = 200\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0, 3], dtype=int64)" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Keresés.\n", + "# Példa: Mely indexeknél találhatók az 5-nél kisebb elemek?\n", + "a = np.array([3, 10, 11, 4, 7, 8])\n", + "idxs = np.where(a < 5)[0]\n", + "idxs" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([3, 4])" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a[idxs]" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 3, 4, 7, 8, 10, 11])" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Rendezés helyben.\n", + "a = np.array([3, 10, 11, 4, 7, 8])\n", + "a.sort()\n", + "a" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 3 10 11 4 7 8]\n", + "[ 3 4 7 8 10 11]\n" + ] + } + ], + "source": [ + "# Rendezés új tömbbe.\n", + "a = np.array([3, 10, 11, 4, 7, 8])\n", + "b = np.sort(a)\n", + "print(a)\n", + "print(b)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Megjegyzés:\n", + "- NumPy tömbök rendezésére ne használjuk a standard sorted függvényt!\n", + "- Ugyanígy, NumPy tömbök esetén ne használjuk a standard math modul függvényeit!" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([11, 10, 8, 7, 4, 3])" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Rendezés csökkenő sorrendbe.\n", + "np.sort(a)[::-1]" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 3 10 11 4 7 8]\n", + "[0 3 4 5 1 2]\n" + ] + } + ], + "source": [ + "# A rendezett tömb elemei mely indexeknél találhatók az eredeti tömbben?\n", + "idxs = a.argsort()\n", + "print(a)\n", + "print(idxs)" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 3, 4, 7, 8, 10, 11])" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A tömb rendezése az indextömb segítségével.\n", + "a[idxs]" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Van argmin és argmax függvény is.\n", + "a.argmax()" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "24" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Két vektor skaláris szorzata.\n", + "a = np.array([3, 4, 5])\n", + "b = np.array([2, 2, 2])\n", + "a @ b" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 29, 56],\n", + " [ 56, 110]])" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Mátrixszorzás.\n", + "A = np.array([[2, 3, 4],\n", + " [5, 6, 7]])\n", + "A @ A.T" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[29, 36, 43],\n", + " [36, 45, 54],\n", + " [43, 54, 65]])" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "A.T @ A" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### [Broadcastolás](https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html)\n", + "- A broadcastolás a különböző alakú operandusok kezelésére szolgál.\n", + "- Példa: \n", + "```\n", + "A (4d tömb): 8 x 1 x 6 x 5\n", + "B (3d tömb): 7 x 1 x 5\n", + "Eredmény (4d tömb): 8 x 7 x 6 x 5\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([20, 30, 40])" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Vektor szorzása skalárral.\n", + "a = np.array([2, 3, 4])\n", + "b = 10\n", + "\n", + "# a: 3\n", + "# b: -\n", + "\n", + "a * b" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "operands could not be broadcast together with shapes (2,) (3,) ", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[1;32mIn[65], line 8\u001b[0m\n\u001b[0;32m 3\u001b[0m b \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39marray([\u001b[38;5;241m4\u001b[39m, \u001b[38;5;241m5\u001b[39m, \u001b[38;5;241m6\u001b[39m])\n\u001b[0;32m 5\u001b[0m \u001b[38;5;66;03m# a: 2\u001b[39;00m\n\u001b[0;32m 6\u001b[0m \u001b[38;5;66;03m# b: 3\u001b[39;00m\n\u001b[1;32m----> 8\u001b[0m a \u001b[38;5;241m+\u001b[39m b\n", + "\u001b[1;31mValueError\u001b[0m: operands could not be broadcast together with shapes (2,) (3,) " + ] + } + ], + "source": [ + "# Példa nem broadcastolható tömbökre.\n", + "a = np.array([2, 3])\n", + "b = np.array([4, 5, 6])\n", + "\n", + "# a: 2\n", + "# b: 3\n", + "\n", + "a + b" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 3, 8, 15],\n", + " [ 5, 12, 21]])" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Mátrix szorzása vektorral.\n", + "A = np.array([[3, 4, 5],\n", + " [5, 6, 7]])\n", + "b = np.array([1, 2, 3])\n", + "\n", + "# A: 2 3\n", + "# b: - 3\n", + "\n", + "A * b # Oszloponkénti szorzás." + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ 3, 4, 5],\n", + " [10, 12, 14]])" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Soronkénti szorzás.\n", + "A = np.array([[3, 4, 5],\n", + " [5, 6, 7]])\n", + "b = np.array([1, 2])\n", + "(A.T * b).T" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/12_gyak.ipynb b/12_gyak.ipynb new file mode 100644 index 0000000..b00ba25 --- /dev/null +++ b/12_gyak.ipynb @@ -0,0 +1,184 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Előadás anyag\n", + "Nézzük meg a 12. heti előadás anyagát tartalmazó Jupyter notebook (12_ea.ipynb) tartalmát! Futtassuk az egyes cellákat, módosítsunk, kisérletezzünk szabadon!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. feladat\n", + "\n", + "Hozzunk létre egy 3×3-as, csupa True logikai értéket tartalmazó, NumPy tömböt!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. feladat\n", + "\n", + "Írjuk ki a páratlan elemeket az alábbi 2 dimenziós NumPy tömbben!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. feladat\n", + "\n", + "Írjuk ki a 3-nál nagyobb elemeket az alábbi 2 dimenziós NumPy tömbben!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4. feladat\n", + "\n", + "Írjuk ki az átlag feletti elemeket az alábbi NumPy tömbben!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5. feladat\n", + "\n", + "Készítsünk programot, amely egyenletes eloszlás szerint generál 1000 db térbeli pontot az egységkockában, majd meghatározza az 1. ponttól legtávolabb eső pontot!" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 6. feladat\n", + "\n", + "Készítsünk olyan programot (a lineáris regresszió feladat megoldása alapján), ami nem a magassághoz ad testsúlyt, hanem fordítva, testsúlyhoz magasságot! Kell-e új modellparamétert számolnunk, vagy használhatjuk a magasság-testsúly meghatározás modellparaméterét? A kétféle megközelítés, ill. számolás miért számol másmilyen eredményt?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 7. feladat\n", + "\n", + "Készítsen függvényt, amely egy adott $n$ pozitív egész számra (mint bemenő paraméter) eredményként előállít egy olyan négyzetes mátrixot (mint numpy tömböt), amelyik négy db $n*n$-es részmátrixból áll úgy, hogy a bal felső részmátrix 1-eseket, a jobb felső 2-eseket, a bal alsó 3-asokat, és a jobb alsó 4-eseket tartalmazzon!\n", + "\n", + "Példák:\n", + "```\n", + "n = 1 n = 2 n = 3 \n", + "1 2 1 1 2 2 1 1 1 2 2 2\n", + "3 4 1 1 2 2 1 1 1 2 2 2\n", + " 3 3 4 4 1 1 1 2 2 2\n", + " 3 3 4 4 3 3 3 4 4 4\n", + " 3 3 3 4 4 4\n", + " 3 3 3 4 4 4\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 8. feladat\n", + "\n", + "Készítsünk függvényt, amely egy paraméterként kapott mátrix (mint kétdimenziós numpy tömb) alapján előállít egy új mátrixot (mint kétdimenziós numpy tömböt), ami már nem tartalmazza a mátrix egy adott indexű oszlopát!\n", + "\n", + "Elvárt működés:\n", + "```\n", + " Input Output\n", + "\n", + " A mátrix A mátrix\n", + " 1.0, 2.0, 3.0 1.0, 3.0\n", + " 4.0, 5.0, 6.0 4.0, 6.0\n", + " \n", + " A törlendő oszlop indexe\n", + " 1\n", + "```" + ] + }, + { + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/12_gyak_mego.ipynb b/12_gyak_mego.ipynb new file mode 100644 index 0000000..889e797 --- /dev/null +++ b/12_gyak_mego.ipynb @@ -0,0 +1,418 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 1. feladat\n", + "\n", + "Hozzunk létre egy 3×3-as, csupa True logikai értéket tartalmazó, NumPy tömböt!" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ True, True, True],\n", + " [ True, True, True],\n", + " [ True, True, True]])" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 1. megoldás\n", + "np.array([[True] * 3] * 3)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[ True, True, True],\n", + " [ True, True, True],\n", + " [ True, True, True]])" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# 2. megoldás\n", + "np.ones((3, 3), dtype='bool')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 2. feladat\n", + "\n", + "Írjuk ki a páratlan elemeket az alábbi 2 dimenziós NumPy tömbben!" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[3 5 7]\n" + ] + } + ], + "source": [ + "b = np.array([[2, 3, 4], [5, 6, 7]])\n", + "print(b[b % 2 == 1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 3. feladat\n", + "\n", + "Írjuk ki a 3-nál nagyobb elemeket az alábbi 2 dimenziós NumPy tömbben!" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[4 5 6 7]\n" + ] + } + ], + "source": [ + "b = np.array([[2, 3, 4], [5, 6, 7]])\n", + "print(b[b > 3])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 4. feladat\n", + "\n", + "Írjuk ki az átlag feletti elemeket az alábbi NumPy tömbben!" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[10 8 9]\n" + ] + } + ], + "source": [ + "b = np.array([1, 10, 2, 8, 3, 5, 9])\n", + "print(b[b > b.mean()])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 5. feladat\n", + "\n", + "Készítsünk programot, amely egyenletes eloszlás szerint generál 1000 db térbeli pontot az egységkockában, majd meghatározza az 1. ponttól legtávolabb eső pontot!" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[0.37454012, 0.95071431, 0.73199394],\n", + " [0.59865848, 0.15601864, 0.15599452],\n", + " [0.05808361, 0.86617615, 0.60111501],\n", + " ...,\n", + " [0.80000348, 0.55270708, 0.39655368],\n", + " [0.13171503, 0.86529576, 0.15727321],\n", + " [0.30978786, 0.29004553, 0.87141403]])" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# pontok generálása\n", + "rs = np.random.RandomState(42)\n", + "P = rs.uniform(size=(1000, 3))\n", + "P" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[0.89633582 0.01300192 0.08550853]\n" + ] + } + ], + "source": [ + "# legtávolabbi pont kiszámítása, 1. megoldás\n", + "\n", + "p = P[0]\n", + "dmax = 0\n", + "for pi in P:\n", + " act = ((p[0] - pi[0])**2 + (p[1] - pi[1])**2 +(p[2] - pi[2])**2)**0.5\n", + " if act > dmax:\n", + " dmax = act\n", + " pmax = pi\n", + "print(pmax)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([0.89633582, 0.01300192, 0.08550853])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# legtávolabbi pont kiszámítása, 2. megoldás (vektorizálással)\n", + "\n", + "# P: 1000 3\n", + "# p: - 3\n", + "\n", + "P[((P - p)**2).sum(axis=1).argmax()]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### 6. feladat\n", + "\n", + "A [baseball.txt](baseball.txt) szövegfájl professzionális baseball játékosok testmagasságáról és testsúlyáról tartalmaz adatokat. Készítsünk programot, amely lineáris modellt ad a testsúly testmagasságból történő előrejelzésére! Részfeladatok:\n", + "- Határozzuk meg a minimális SSE (sum squared error) hibát adó modellparamétert!\n", + "- Adjunk becslést egy 180 cm magas játékos testsúlyára!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[188., 82.],\n", + " [188., 98.],\n", + " [183., 95.],\n", + " ...,\n", + " [190., 93.],\n", + " [190., 86.],\n", + " [185., 88.]])" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Adatok betöltése.\n", + "data = np.genfromtxt('baseball.txt', delimiter=',')\n", + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "# bemeneti vektor\n", + "x = data[:, 0]\n", + "\n", + "# célvektor\n", + "y = data[:, 1]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# átlag kivonása\n", + "xm = x.mean()\n", + "ym = y.mean()\n", + "x -= xm\n", + "y -= ym" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 0.92836399, 0.92836399, -4.07163601, ..., 2.92836399,\n", + " 2.92836399, -2.07163601])" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "x" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-9.50338819, 6.49661181, 3.49661181, ..., 1.49661181,\n", + " -5.50338819, -3.50338819])" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "y" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.8561919786085497" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Optimális modellparaméter.\n", + "w = (x @ y) / (x @ x)\n", + "w" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "85.4487101609531" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Becslés egy 180 cm magas játékos testsúlyára.\n", + "(180 - xm) * w + ym" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/13_ea.ipynb b/13_ea.ipynb new file mode 100644 index 0000000..0fa88a5 --- /dev/null +++ b/13_ea.ipynb @@ -0,0 +1,2808 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## [pandas](https://pandas.pydata.org/)\n", + "\n", + "- A pandas egy NumPy-ra épülő adatfeldolgozó és elemző eszköz. Alapötleteit az R nyelvből vette.\n", + "- Alapvető adattípusa a DataFrame (tábla) és a Series (oszlop). Segítségükkel memóriabeli, oszlopalapú adatbázis kezelés valósítható meg.\n", + "- https://pandas.pydata.org/docs/user_guide/10min.html." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# A pandas modul importálása pd néven.\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'1.5.3'" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A pandas verziószáma.\n", + "pd.__version__" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# DataFrame létrehozása oszlopokból.\n", + "# A bemenet egy szótár, ahol a kulcsok az oszlopnevek, az értékek az oszlopok.\n", + "df1 = pd.DataFrame({'aa': [1, 2, 3], 'bb': ['x', 'y', 'z']})" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
aabb
01x
12y
23z
\n", + "
" + ], + "text/plain": [ + " aa bb\n", + "0 1 x\n", + "1 2 y\n", + "2 3 z" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df1" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.frame.DataFrame" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az eredmény típusa.\n", + "type(df1)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['aa', 'bb'], dtype='object')" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Oszlopnevek.\n", + "df1.columns" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "aa\n", + "bb\n" + ] + } + ], + "source": [ + "# Iterálás az oszlopneveken.\n", + "for c in df1:\n", + " print(c)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "3" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Sorok száma.\n", + "len(df1)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(3, 2)" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A DataFrame alakja.\n", + "df1.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 3 entries, 0 to 2\n", + "Data columns (total 2 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 aa 3 non-null int64 \n", + " 1 bb 3 non-null object\n", + "dtypes: int64(1), object(1)\n", + "memory usage: 180.0+ bytes\n" + ] + } + ], + "source": [ + "# Összesítő információ.\n", + "df1.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
aa
count3.0
mean2.0
std1.0
min1.0
25%1.5
50%2.0
75%2.5
max3.0
\n", + "
" + ], + "text/plain": [ + " aa\n", + "count 3.0\n", + "mean 2.0\n", + "std 1.0\n", + "min 1.0\n", + "25% 1.5\n", + "50% 2.0\n", + "75% 2.5\n", + "max 3.0" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Alapvető oszlopstatisztikák (a numerikus oszlopokról).\n", + "df1.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "# DataFrame létrehozása sorokból.\n", + "# A bemenet szótárak listája, ahol minden szótár egy sort reprezentál.\n", + "data = [\n", + " {'alma': 10, 'körte': 20},\n", + " {'alma': 30},\n", + " {'alma': 40, 'körte': 50}\n", + "]\n", + "df2 = pd.DataFrame(data)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
almakörte
01020.0
130NaN
24050.0
\n", + "
" + ], + "text/plain": [ + " alma körte\n", + "0 10 20.0\n", + "1 30 NaN\n", + "2 40 50.0" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- A pandas a hiányzó adatokat NaN (\"not a number\") értékkel reprezentálja.\n", + "- Ez hatékony, de vannak veszélyei." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "False" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import numpy as np\n", + "np.nan == np.nan" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "RangeIndex(start=0, stop=3, step=1)" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Minden DataFrame-hez (és Series-hez) tartozik index.\n", + "# Alapértelmezés szerint az index 0-tól induló, 1-esével növekedő sorszám.\n", + "df2.index" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
almakörte
x1020.0
y30NaN
z4050.0
\n", + "
" + ], + "text/plain": [ + " alma körte\n", + "x 10 20.0\n", + "y 30 NaN\n", + "z 40 50.0" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Másfajta indexet is használhatunk.\n", + "df3 = pd.DataFrame(data, ['x', 'y', 'z'])\n", + "df3" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['x', 'y', 'z'], dtype='object')" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df3.index" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 20\n", + "1 30\n", + "2 40\n", + "dtype: int64" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Series létrehozása index megadása nélkül.\n", + "se1 = pd.Series([20, 30, 40])\n", + "se1" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.series.Series" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az eredmény típusa.\n", + "type(se1)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dtype('int64')" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "se1.dtype" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "aa 20\n", + "bb 30\n", + "cc 40\n", + "dtype: int64" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Series létrehozása index megadásával.\n", + "se2 = pd.Series([20, 30, 40], ['aa', 'bb', 'cc'])\n", + "se2" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
aabb
01x
12y
23z
\n", + "
" + ], + "text/plain": [ + " aa bb\n", + "0 1 x\n", + "1 2 y\n", + "2 3 z" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# DataFrame-ből [] operátorral lehet kiválasztani oszlopot.\n", + "df1" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 1\n", + "1 2\n", + "2 3\n", + "Name: aa, dtype: int64" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df1['aa']" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.series.Series" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(df1['aa'])" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 1\n", + "1 2\n", + "2 3\n", + "Name: aa, dtype: int64" + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...illetve ha az oszlop neve érvényes azonosítónév, akkor . operátorral is.\n", + "df1.aa" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
bbaa
0x1
1y2
2z3
\n", + "
" + ], + "text/plain": [ + " bb aa\n", + "0 x 1\n", + "1 y 2\n", + "2 z 3" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Több oszlop kiválasztása.\n", + "df1[['bb', 'aa']]" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
bb
0x
1y
2z
\n", + "
" + ], + "text/plain": [ + " bb\n", + "0 x\n", + "1 y\n", + "2 z" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Ha 1 elemű listával indexelünk, akkor az eredmény DataFrame típusú.\n", + "df1[['bb']]" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.frame.DataFrame" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "type(df1[['bb']])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Megjegyzés\n", + "- Az 1 oszlopos DataFrame nem ugyanaz, mint a Series!" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
almakörte
x1020.0
y30NaN
z4050.0
\n", + "
" + ], + "text/plain": [ + " alma körte\n", + "x 10 20.0\n", + "y 30 NaN\n", + "z 40 50.0" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Sor(ok) kiválasztása DataFrame-ből.\n", + "df3" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "alma 10.0\n", + "körte 20.0\n", + "Name: x, dtype: float64" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Egy sor kiválasztása.\n", + "df3.loc['x']" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
almakörte
x1020.0
z4050.0
\n", + "
" + ], + "text/plain": [ + " alma körte\n", + "x 10 20.0\n", + "z 40 50.0" + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Több sor kiválasztása.\n", + "df3.loc[['x', 'z']]" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "alma 10.0\n", + "körte 20.0\n", + "Name: x, dtype: float64" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...pozíció alapján is lehet sort kiválasztani.\n", + "df3.iloc[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
almakörte
x1020.0
y30NaN
\n", + "
" + ], + "text/plain": [ + " alma körte\n", + "x 10 20.0\n", + "y 30 NaN" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...első néhány elem kiválasztása.\n", + "df3[:2]" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "aa 20\n", + "bb 30\n", + "cc 40\n", + "dtype: int64" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A se2 tartalma (mert ezt fogjuk használni az alábbi néhány példában).\n", + "se2" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "30" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Egy elem kiválasztása Series-ből.\n", + "se2['bb']" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "cc 40\n", + "bb 30\n", + "dtype: int64" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Több elem kiválasztása Series-ből.\n", + "se2[['cc', 'bb']]" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([20, 30, 40], dtype=int64)" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Nyers adattartalom kinyerése Series-ből.\n", + "se2.values" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "numpy.ndarray" + ] + }, + "execution_count": 38, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...és annak típusa.\n", + "type(se2.values)" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[10., 20.],\n", + " [30., nan],\n", + " [40., 50.]])" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Nyers adattartalom kinyerése DataFrame-ből.\n", + "df2.values" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [Kiválasztás](https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html) (SELECT)" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
tanulótantárgyosztályzat
0Gipsz JakabMatematika5
1Gipsz JakabTestnevelés2
2Bank ArankaMatematika3
3Bank ArankaMatematika5
4Bank ArankaTestnevelés4
5Rontó RóbertMatematika1
6Rontó RóbertMatematika2
7Rontó RóbertTestnevelés5
\n", + "
" + ], + "text/plain": [ + " tanuló tantárgy osztályzat\n", + "0 Gipsz Jakab Matematika 5\n", + "1 Gipsz Jakab Testnevelés 2\n", + "2 Bank Aranka Matematika 3\n", + "3 Bank Aranka Matematika 5\n", + "4 Bank Aranka Testnevelés 4\n", + "5 Rontó Róbert Matematika 1\n", + "6 Rontó Róbert Matematika 2\n", + "7 Rontó Róbert Testnevelés 5" + ] + }, + "execution_count": 40, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Hozzunk létre egy példa DataFrame-et!\n", + "df = pd.DataFrame([\n", + " {'tanuló': 'Gipsz Jakab', 'tantárgy': 'Matematika', 'osztályzat': 5},\n", + " {'tanuló': 'Gipsz Jakab', 'tantárgy': 'Testnevelés', 'osztályzat': 2},\n", + " {'tanuló': 'Bank Aranka', 'tantárgy': 'Matematika', 'osztályzat': 3},\n", + " {'tanuló': 'Bank Aranka', 'tantárgy': 'Matematika', 'osztályzat': 5},\n", + " {'tanuló': 'Bank Aranka', 'tantárgy': 'Testnevelés', 'osztályzat': 4},\n", + " {'tanuló': 'Rontó Róbert', 'tantárgy': 'Matematika', 'osztályzat': 1},\n", + " {'tanuló': 'Rontó Róbert', 'tantárgy': 'Matematika', 'osztályzat': 2},\n", + " {'tanuló': 'Rontó Róbert', 'tantárgy': 'Testnevelés', 'osztályzat': 5},\n", + "])\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 True\n", + "1 True\n", + "2 False\n", + "3 False\n", + "4 False\n", + "5 False\n", + "6 False\n", + "7 False\n", + "Name: tanuló, dtype: bool" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Logikai feltétel oszlop.\n", + "df['tanuló'] == 'Gipsz Jakab'" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pandas.core.series.Series" + ] + }, + "execution_count": 42, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...aminek a típusa:\n", + "type(df['tanuló'] == 'Gipsz Jakab')" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
tanulótantárgyosztályzat
0Gipsz JakabMatematika5
1Gipsz JakabTestnevelés2
\n", + "
" + ], + "text/plain": [ + " tanuló tantárgy osztályzat\n", + "0 Gipsz Jakab Matematika 5\n", + "1 Gipsz Jakab Testnevelés 2" + ] + }, + "execution_count": 43, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Gipsz Jakab összes osztályzata.\n", + "df[df['tanuló'] == 'Gipsz Jakab']\n", + "# SQL-ben: SELECT * FROM df WHERE tanuló='Gipsz Jakab'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Műveletek\n", + "A logikai értékű Series adatok műveletei: & (és), | (vagy), ~ (tagadás)" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
tanulótantárgyosztályzat
1Gipsz JakabTestnevelés2
2Bank ArankaMatematika3
4Bank ArankaTestnevelés4
6Rontó RóbertMatematika2
\n", + "
" + ], + "text/plain": [ + " tanuló tantárgy osztályzat\n", + "1 Gipsz Jakab Testnevelés 2\n", + "2 Bank Aranka Matematika 3\n", + "4 Bank Aranka Testnevelés 4\n", + "6 Rontó Róbert Matematika 2" + ] + }, + "execution_count": 44, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az 1-esnél jobb és 5-ösnél rosszabb osztályzatok (az és (&) művelettel).\n", + "df[(df['osztályzat'] > 1) & (df['osztályzat'] < 5)]" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
tanulótantárgyosztályzat
1Gipsz JakabTestnevelés2
2Bank ArankaMatematika3
4Bank ArankaTestnevelés4
6Rontó RóbertMatematika2
\n", + "
" + ], + "text/plain": [ + " tanuló tantárgy osztályzat\n", + "1 Gipsz Jakab Testnevelés 2\n", + "2 Bank Aranka Matematika 3\n", + "4 Bank Aranka Testnevelés 4\n", + "6 Rontó Róbert Matematika 2" + ] + }, + "execution_count": 45, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...mint előbb, a vagy (|) művelettel.\n", + "df[(df['osztályzat'] == 2) | (df['osztályzat'] == 3) | (df['osztályzat'] == 4)]" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
tanulótantárgyosztályzat
1Gipsz JakabTestnevelés2
2Bank ArankaMatematika3
4Bank ArankaTestnevelés4
6Rontó RóbertMatematika2
\n", + "
" + ], + "text/plain": [ + " tanuló tantárgy osztályzat\n", + "1 Gipsz Jakab Testnevelés 2\n", + "2 Bank Aranka Matematika 3\n", + "4 Bank Aranka Testnevelés 4\n", + "6 Rontó Róbert Matematika 2" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...mint előbb, a tagadás (~) művelettel.\n", + "df[~((df['osztályzat'] == 1) | (df['osztályzat'] == 5))]" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "2.6666666666666665" + ] + }, + "execution_count": 47, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Rontó Róbert osztályzatainak átlaga.\n", + "df[df['tanuló'] == 'Rontó Róbert']['osztályzat'].mean()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### [Csoportosítás](https://pandas.pydata.org/pandas-docs/stable/user_guide/groupby.html) (GROUPBY)\n", + "\n", + "Pandas-ban a csoportosítás folyamata az alábbi lépésekből áll:\n", + "\n", + "- Az adatok **felosztása (split)** csoportokra, valamilyen feltétel alapján.\n", + "- Valamely **függvény alkalmazása (apply)** az egyes csoportokra külön-külön.\n", + "- Az eredmények **kombinálása (combine)** egy adatszerkezetbe.\n", + "\n", + "Ezek közül a felosztás a legegyszerűbb. A felosztás kritériuma általában egy oszlopban (vagy oszlop kombinációban) található érték. A függvényalkalmazás lehet aggregáló jellegű (pl. csoportonkénti elemszám, összeg, átlag, minimum, maximum, első rekord, utolsó rekord) vagy egyéb (pl. csoportonkénti standardizálás, adathiány kitöltés vagy szűrés). A kombinálási lépés az aggregáló típusú függvények esetén automatikusan lefut, egyéb esetekben a programozónak kell kezdeményeznie." + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
tanulótantárgyosztályzat
0Gipsz JakabMatematika5
1Gipsz JakabTestnevelés2
2Bank ArankaMatematika3
3Bank ArankaMatematika5
4Bank ArankaTestnevelés4
5Rontó RóbertMatematika1
6Rontó RóbertMatematika2
7Rontó RóbertTestnevelés5
\n", + "
" + ], + "text/plain": [ + " tanuló tantárgy osztályzat\n", + "0 Gipsz Jakab Matematika 5\n", + "1 Gipsz Jakab Testnevelés 2\n", + "2 Bank Aranka Matematika 3\n", + "3 Bank Aranka Matematika 5\n", + "4 Bank Aranka Testnevelés 4\n", + "5 Rontó Róbert Matematika 1\n", + "6 Rontó Róbert Matematika 2\n", + "7 Rontó Róbert Testnevelés 5" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Használjuk az előző DataFrame-et!\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "# Csoportosítás tantárgyak szerint.\n", + "gb = df.groupby('tantárgy')" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 50, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az eredmény típusa.\n", + "gb" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tantárgy\n", + "Matematika 5\n", + "Testnevelés 3\n", + "dtype: int64" + ] + }, + "execution_count": 51, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Hány rekord tartozik az egyes tantárgyakhoz?\n", + "gb.size()" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tantárgy\n", + "Matematika 5\n", + "Testnevelés 3\n", + "dtype: int64" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Ugyanez, az átmeneti GroupBy objektum használata nélkül.\n", + "df.groupby('tantárgy').size()\n", + "# SQL-ben: SELECT tantárgy, COUNT(*) FROM df GROUP BY tantárgy" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tantárgy\n", + "Matematika 3.200000\n", + "Testnevelés 3.666667\n", + "Name: osztályzat, dtype: float64" + ] + }, + "execution_count": 53, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Tantárgyankénti átlag.\n", + "df.groupby('tantárgy')['osztályzat'].mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tantárgy\n", + "Matematika 3.200000\n", + "Testnevelés 3.666667\n", + "Name: osztályzat, dtype: float64" + ] + }, + "execution_count": 54, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...ugyanez csúnyábban:\n", + "df['osztályzat'].groupby(df['tantárgy']).mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tanuló tantárgy \n", + "Bank Aranka Matematika 4.0\n", + " Testnevelés 4.0\n", + "Gipsz Jakab Matematika 5.0\n", + " Testnevelés 2.0\n", + "Rontó Róbert Matematika 1.5\n", + " Testnevelés 5.0\n", + "Name: osztályzat, dtype: float64" + ] + }, + "execution_count": 55, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Tantárgyankénti átlag minden tanulóhoz.\n", + "df.groupby(['tanuló', 'tantárgy'])['osztályzat'].mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
tanulótantárgyosztályzat
0Bank ArankaMatematika4.0
1Bank ArankaTestnevelés4.0
2Gipsz JakabMatematika5.0
3Gipsz JakabTestnevelés2.0
4Rontó RóbertMatematika1.5
5Rontó RóbertTestnevelés5.0
\n", + "
" + ], + "text/plain": [ + " tanuló tantárgy osztályzat\n", + "0 Bank Aranka Matematika 4.0\n", + "1 Bank Aranka Testnevelés 4.0\n", + "2 Gipsz Jakab Matematika 5.0\n", + "3 Gipsz Jakab Testnevelés 2.0\n", + "4 Rontó Róbert Matematika 1.5\n", + "5 Rontó Róbert Testnevelés 5.0" + ] + }, + "execution_count": 56, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az index átalakítása két hagyományos oszloppá.\n", + "df.groupby(['tanuló', 'tantárgy'])['osztályzat'].mean().reset_index()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Rendezés, minimum, maximum" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ab
01020
11229
2821
31519
\n", + "
" + ], + "text/plain": [ + " a b\n", + "0 10 20\n", + "1 12 29\n", + "2 8 21\n", + "3 15 19" + ] + }, + "execution_count": 57, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Példa tábla a rendezéshez.\n", + "df4 = pd.DataFrame([\n", + " {'a': 10, 'b': 20},\n", + " {'a': 12, 'b': 29},\n", + " {'a': 8, 'b': 21},\n", + " {'a': 15, 'b': 19}\n", + "])\n", + "df4" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ab
2821
01020
11229
31519
\n", + "
" + ], + "text/plain": [ + " a b\n", + "2 8 21\n", + "0 10 20\n", + "1 12 29\n", + "3 15 19" + ] + }, + "execution_count": 58, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Rendezés 'a' szerint.\n", + "df4.sort_values('a')" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ab
31519
11229
01020
2821
\n", + "
" + ], + "text/plain": [ + " a b\n", + "3 15 19\n", + "1 12 29\n", + "0 10 20\n", + "2 8 21" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Rendezés csökkenő sorrendbe.\n", + "df4.sort_values('a', ascending=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1 29\n", + "2 21\n", + "0 20\n", + "Name: b, dtype: int64" + ] + }, + "execution_count": 60, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Egy oszlop elemeinek rendezése (a három legnagyobb elem meghatározásához).\n", + "df4['b'].sort_values(ascending=False)[:3]" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "29" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A 'b' oszlop maximuma.\n", + "df4['b'].max()" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1" + ] + }, + "execution_count": 62, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Mely indexnél található a 'b' oszlop maximuma?\n", + "df4['b'].idxmax()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Módosítás" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
abc
0102030
1122941
282129
3151934
\n", + "
" + ], + "text/plain": [ + " a b c\n", + "0 10 20 30\n", + "1 12 29 41\n", + "2 8 21 29\n", + "3 15 19 34" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Új oszlop felvétele.\n", + "df4['c'] = df4['a'] + df4['b']\n", + "df4" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "41" + ] + }, + "execution_count": 64, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Egy elem 'elérése'.\n", + "df4['c'][1]" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "41" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...ugyanez másképp:\n", + "df4.loc[1]['c']" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "41" + ] + }, + "execution_count": 66, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...ugyanez másképp:\n", + "df4.iloc[1]['c']" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
abc
0102030
11229100
282129
3151934
\n", + "
" + ], + "text/plain": [ + " a b c\n", + "0 10 20 30\n", + "1 12 29 100\n", + "2 8 21 29\n", + "3 15 19 34" + ] + }, + "execution_count": 67, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Egy elem módosítása.\n", + "df4['c'][1] = 100\n", + "df4" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
ab
01020
11229
2821
31519
\n", + "
" + ], + "text/plain": [ + " a b\n", + "0 10 20\n", + "1 12 29\n", + "2 8 21\n", + "3 15 19" + ] + }, + "execution_count": 68, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Oszlop törlése.\n", + "del df4['c']\n", + "df4" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/13_gyak.ipynb b/13_gyak.ipynb new file mode 100644 index 0000000..f32b8a9 --- /dev/null +++ b/13_gyak.ipynb @@ -0,0 +1,63 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Előadás anyag\n", + "Nézzük meg a 13. heti előadás anyagát tartalmazó Jupyter notebook (13_ea.ipynb) tartalmát! Futtassuk az egyes cellákat, módosítsunk, kisérletezzünk szabadon!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Feladatok\n", + "\n", + "Oldjuk meg az alábbi feladatokat a pandas segítségével!\n", + "\n", + "A [pl.txt](pl.txt) szövegfájl a Premier League 2011-12-es szezonjának eredményeit tartalmazza. Készítsünk programot, amely:\n", + "- Betölti a fájl adatait egy DataFrame-be!\n", + "- Meghatározza, hogy:\n", + " - hány mérkőzés volt ez egyes fordulókban?\n", + " - hány gól esett az egyes fordulókban?\n", + " - melyik fordulóban esett a legtöbb gól?\n", + " - mennyi volt az átlagos mérkőzésenkénti gólszám az egyes fordulókban?\n", + " - a mérkőzések hány százalékán esett gól?\n", + " - melyik mérkőzésen esett a legtöbb gól?\n", + " - hány gólt rúgott összesen a Manchester United?\n", + "- Kiírja: \n", + " - a tíz leggólgazdagabb fordulót a gólszámokkal együtt!\n", + " - a 10., 20. és 30. fordulóban hány gól esett összesen!" + ] + }, + { + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/13_gyak_mego.ipynb b/13_gyak_mego.ipynb new file mode 100644 index 0000000..69aa506 --- /dev/null +++ b/13_gyak_mego.ipynb @@ -0,0 +1,994 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Feladatok\n", + "Oldjuk meg az alábbi feladatokat a pandas segítségével!\n", + "\n", + "A [pl.txt](pl.txt) szövegfájl a Premier League 2011-12-es szezonjának eredményeit tartalmazza. Készítsünk programot, amely:\n", + "- Betölti a fájl adatait egy DataFrame-be!\n", + "- Meghatározza, hogy:\n", + " - hány mérkőzés volt ez egyes fordulókban?\n", + " - hány gól esett az egyes fordulókban?\n", + " - mennyi volt az átlagos mérkőzésenkénti gólszám az egyes fordulókban?\n", + " - melyik fordulóban esett a legtöbb gól?\n", + " - a mérkőzések hány százalékán esett gól?\n", + " - melyik mérkőzésen esett a legtöbb gól?\n", + " - hány gólt rúgott összesen a Manchester United?\n", + "\n", + "- Kiírja: \n", + " - a tíz leggólgazdagabb fordulót a gólszámokkal együtt!\n", + " - a 10., 20. és 30. fordulóban hány gól esett összesen!" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# A megoldáshoz a pandas-t használjuk.\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
roundhteamateamhgoalsagoals
01Blackburn RoversWolverhampton Wanderers12
11Fulham FCAston Villa00
21Liverpool FCSunderland AFC11
31Queens Park RangersBolton Wanderers04
41Wigan AthleticNorwich City11
..................
37538Sunderland AFCManchester United01
37638Swansea CityLiverpool FC10
37738Tottenham HotspurFulham FC20
37838West Bromwich AlbionArsenal FC23
37938Wigan AthleticWolverhampton Wanderers32
\n", + "

380 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " round hteam ateam hgoals agoals\n", + "0 1 Blackburn Rovers Wolverhampton Wanderers 1 2\n", + "1 1 Fulham FC Aston Villa 0 0\n", + "2 1 Liverpool FC Sunderland AFC 1 1\n", + "3 1 Queens Park Rangers Bolton Wanderers 0 4\n", + "4 1 Wigan Athletic Norwich City 1 1\n", + ".. ... ... ... ... ...\n", + "375 38 Sunderland AFC Manchester United 0 1\n", + "376 38 Swansea City Liverpool FC 1 0\n", + "377 38 Tottenham Hotspur Fulham FC 2 0\n", + "378 38 West Bromwich Albion Arsenal FC 2 3\n", + "379 38 Wigan Athletic Wolverhampton Wanderers 3 2\n", + "\n", + "[380 rows x 5 columns]" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Töltsük be a pl.txt fájl adatait DataFrame-be!\n", + "names = ['round', 'hteam', 'ateam', 'hgoals', 'agoals']\n", + "df = pd.read_csv('pl.txt', sep='\\t', skiprows=6, names=names)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 380 entries, 0 to 379\n", + "Data columns (total 5 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 round 380 non-null int64 \n", + " 1 hteam 380 non-null object\n", + " 2 ateam 380 non-null object\n", + " 3 hgoals 380 non-null int64 \n", + " 4 agoals 380 non-null int64 \n", + "dtypes: int64(3), object(2)\n", + "memory usage: 15.0+ KB\n" + ] + } + ], + "source": [ + "df.info()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
roundhgoalsagoals
count380.000000380.000000380.000000
mean19.5000001.5894741.215789
std10.9803131.3315311.204987
min1.0000000.0000000.000000
25%10.0000001.0000000.000000
50%19.5000001.0000001.000000
75%29.0000002.0000002.000000
max38.0000008.0000006.000000
\n", + "
" + ], + "text/plain": [ + " round hgoals agoals\n", + "count 380.000000 380.000000 380.000000\n", + "mean 19.500000 1.589474 1.215789\n", + "std 10.980313 1.331531 1.204987\n", + "min 1.000000 0.000000 0.000000\n", + "25% 10.000000 1.000000 0.000000\n", + "50% 19.500000 1.000000 1.000000\n", + "75% 29.000000 2.000000 2.000000\n", + "max 38.000000 8.000000 6.000000" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
roundhteamateamhgoalsagoalsgoals
01Blackburn RoversWolverhampton Wanderers123
11Fulham FCAston Villa000
21Liverpool FCSunderland AFC112
31Queens Park RangersBolton Wanderers044
41Wigan AthleticNorwich City112
.....................
37538Sunderland AFCManchester United011
37638Swansea CityLiverpool FC101
37738Tottenham HotspurFulham FC202
37838West Bromwich AlbionArsenal FC235
37938Wigan AthleticWolverhampton Wanderers325
\n", + "

380 rows × 6 columns

\n", + "
" + ], + "text/plain": [ + " round hteam ateam hgoals agoals \\\n", + "0 1 Blackburn Rovers Wolverhampton Wanderers 1 2 \n", + "1 1 Fulham FC Aston Villa 0 0 \n", + "2 1 Liverpool FC Sunderland AFC 1 1 \n", + "3 1 Queens Park Rangers Bolton Wanderers 0 4 \n", + "4 1 Wigan Athletic Norwich City 1 1 \n", + ".. ... ... ... ... ... \n", + "375 38 Sunderland AFC Manchester United 0 1 \n", + "376 38 Swansea City Liverpool FC 1 0 \n", + "377 38 Tottenham Hotspur Fulham FC 2 0 \n", + "378 38 West Bromwich Albion Arsenal FC 2 3 \n", + "379 38 Wigan Athletic Wolverhampton Wanderers 3 2 \n", + "\n", + " goals \n", + "0 3 \n", + "1 0 \n", + "2 2 \n", + "3 4 \n", + "4 2 \n", + ".. ... \n", + "375 1 \n", + "376 1 \n", + "377 2 \n", + "378 5 \n", + "379 5 \n", + "\n", + "[380 rows x 6 columns]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# \"Gólok száma\" oszlop felvétele.\n", + "df['goals'] = df['hgoals'] + df['agoals']\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "round\n", + "1 10\n", + "2 10\n", + "3 10\n", + "4 10\n", + "5 10\n", + "6 10\n", + "7 10\n", + "8 10\n", + "9 10\n", + "10 10\n", + "11 10\n", + "12 10\n", + "13 10\n", + "14 10\n", + "15 10\n", + "16 10\n", + "17 10\n", + "18 10\n", + "19 10\n", + "20 10\n", + "21 10\n", + "22 10\n", + "23 10\n", + "24 10\n", + "25 10\n", + "26 10\n", + "27 10\n", + "28 10\n", + "29 10\n", + "30 10\n", + "31 10\n", + "32 10\n", + "33 10\n", + "34 10\n", + "35 10\n", + "36 10\n", + "37 10\n", + "38 10\n", + "dtype: int64" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Példák csoportosításra (groupby).\n", + "# Hány mérkőzés volt az egyes fordulókban?\n", + "df.groupby('round').size()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "1 10\n", + "29 10\n", + "22 10\n", + "23 10\n", + "24 10\n", + "25 10\n", + "26 10\n", + "27 10\n", + "28 10\n", + "30 10\n", + "2 10\n", + "31 10\n", + "32 10\n", + "33 10\n", + "34 10\n", + "35 10\n", + "36 10\n", + "37 10\n", + "21 10\n", + "20 10\n", + "19 10\n", + "18 10\n", + "3 10\n", + "4 10\n", + "5 10\n", + "6 10\n", + "7 10\n", + "8 10\n", + "9 10\n", + "10 10\n", + "11 10\n", + "12 10\n", + "13 10\n", + "14 10\n", + "15 10\n", + "16 10\n", + "17 10\n", + "38 10\n", + "Name: round, dtype: int64" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# (majdnem) ugyanez, tömörebben\n", + "df['round'].value_counts()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "round\n", + "1 20\n", + "2 23\n", + "3 31\n", + "4 22\n", + "5 38\n", + "6 27\n", + "7 34\n", + "8 32\n", + "9 31\n", + "10 39\n", + "11 31\n", + "12 30\n", + "13 25\n", + "14 30\n", + "15 30\n", + "16 18\n", + "17 31\n", + "18 19\n", + "19 26\n", + "20 29\n", + "21 22\n", + "22 35\n", + "23 23\n", + "24 31\n", + "25 36\n", + "26 30\n", + "27 24\n", + "28 17\n", + "29 27\n", + "30 25\n", + "31 35\n", + "32 23\n", + "33 29\n", + "34 28\n", + "35 22\n", + "36 35\n", + "37 26\n", + "38 32\n", + "Name: goals, dtype: int64" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Hány gól esett az egyes fordulókban?\n", + "df.groupby('round')['goals'].sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "10" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Melyik fordulóban esett a legtöbb gól?\n", + "df.groupby('round')['goals'].sum().idxmax()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "round\n", + "1 2.0\n", + "2 2.3\n", + "3 3.1\n", + "4 2.2\n", + "5 3.8\n", + "6 2.7\n", + "7 3.4\n", + "8 3.2\n", + "9 3.1\n", + "10 3.9\n", + "11 3.1\n", + "12 3.0\n", + "13 2.5\n", + "14 3.0\n", + "15 3.0\n", + "16 1.8\n", + "17 3.1\n", + "18 1.9\n", + "19 2.6\n", + "20 2.9\n", + "21 2.2\n", + "22 3.5\n", + "23 2.3\n", + "24 3.1\n", + "25 3.6\n", + "26 3.0\n", + "27 2.4\n", + "28 1.7\n", + "29 2.7\n", + "30 2.5\n", + "31 3.5\n", + "32 2.3\n", + "33 2.9\n", + "34 2.8\n", + "35 2.2\n", + "36 3.5\n", + "37 2.6\n", + "38 3.2\n", + "Name: goals, dtype: float64" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Az átlagos mérkőzésenkénti gólszám az egyes fordulókban.\n", + "df.groupby('round')['goals'].mean()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "round\n", + "10 39\n", + "5 38\n", + "25 36\n", + "22 35\n", + "36 35\n", + "31 35\n", + "7 34\n", + "38 32\n", + "8 32\n", + "9 31\n", + "Name: goals, dtype: int64" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Írjuk ki a tíz leggólgazdagabb fordulót a gólszámokkal együtt!\n", + "df.groupby('round')['goals'].sum().sort_values(ascending=False).head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "92.89473684210526" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# A mérkőzések hány százalékán esett gól?\n", + "(df['goals'] > 0).mean() * 100" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "round 3\n", + "hteam Manchester United\n", + "ateam Arsenal FC\n", + "hgoals 8\n", + "agoals 2\n", + "goals 10\n", + "Name: 29, dtype: object" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Melyik mérkőzésen esett a legtöbb gól?\n", + "df.loc[df['goals'].idxmax()]" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "93" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Írjuk ki, hogy a 10., 20. és 30. fordulóban hány gól esett összesen!\n", + "df[(df['round'] == 10) | (df['round'] == 20) | (df['round'] == 30)]['goals'].sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "93" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...alternatív megoldás:\n", + "df[df['round'].isin({10, 20, 30})]['goals'].sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "93" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...harmadik megoldás:\n", + "df.groupby('round')['goals'].sum()[[10, 20, 30]].sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "93" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...negyedik megoldás:\n", + "df[(df['round'] % 10 == 0)]['goals'].sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "89" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Hány gólt rúgott összesen a Manchester United?\n", + "df[df['hteam'] == 'Manchester United']['hgoals'].sum() + df[df['ateam'] == 'Manchester United']['agoals'].sum()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "89" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# ...alternatív megoldás:\n", + "sum([df[df[f'{p}team'] == 'Manchester United'][f'{p}goals'].sum() for p in 'ha'])" + ] + } + ], + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/baseball.txt b/baseball.txt new file mode 100644 index 0000000..a1e9aff --- /dev/null +++ b/baseball.txt @@ -0,0 +1,1034 @@ +# height(cm),weight(kg) +188,82 +188,98 +183,95 +183,95 +185,85 +175,80 +175,95 +180,91 +193,105 +180,82 +185,85 +185,82 +188,84 +188,73 +175,82 +178,84 +183,89 +185,86 +190,84 +198,99 +201,104 +193,93 +188,104 +193,88 +183,82 +180,87 +190,102 +196,92 +188,88 +185,83 +188,85 +198,91 +185,82 +190,91 +185,91 +190,111 +190,109 +188,98 +175,84 +180,79 +188,90 +185,91 +185,98 +193,91 +188,93 +188,93 +178,84 +183,85 +196,100 +188,95 +178,88 +193,111 +190,88 +185,91 +190,91 +193,96 +193,102 +198,95 +188,93 +188,100 +193,88 +196,91 +206,118 +198,103 +190,122 +196,91 +190,95 +193,86 +188,100 +183,82 +183,93 +190,95 +185,100 +185,96 +185,91 +178,82 +178,86 +178,77 +193,104 +173,70 +180,84 +183,84 +190,91 +190,102 +190,102 +190,100 +173,73 +188,93 +198,107 +180,113 +185,95 +193,86 +188,73 +188,91 +201,93 +190,101 +185,88 +193,93 +188,100 +188,100 +185,77 +183,84 +188,88 +185,100 +188,104 +183,82 +185,100 +175,82 +183,82 +185,77 +190,95 +190,98 +185,91 +183,97 +183,82 +193,87 +188,107 +183,84 +193,104 +196,107 +188,95 +196,101 +190,95 +193,104 +203,100 +188,82 +188,86 +190,91 +198,95 +185,88 +185,82 +188,86 +190,109 +193,91 +180,90 +185,91 +188,88 +193,95 +193,100 +188,86 +185,95 +188,102 +178,82 +183,84 +185,77 +185,84 +185,84 +185,82 +180,81 +188,79 +188,91 +183,92 +188,96 +180,86 +188,95 +190,109 +185,86 +190,86 +190,84 +201,132 +185,79 +190,84 +193,91 +188,100 +193,77 +198,100 +188,86 +193,100 +183,93 +188,91 +193,113 +188,102 +190,98 +198,95 +190,98 +183,88 +188,91 +183,88 +188,100 +178,82 +180,82 +178,77 +190,88 +180,82 +180,77 +185,93 +183,93 +180,91 +185,102 +183,91 +190,102 +178,102 +188,106 +188,82 +190,102 +185,82 +196,100 +185,82 +193,108 +190,98 +188,86 +193,107 +190,86 +185,82 +180,75 +193,88 +190,91 +183,86 +180,86 +196,84 +185,84 +188,93 +180,86 +183,93 +188,93 +190,100 +185,94 +183,77 +190,88 +190,95 +188,86 +183,96 +188,104 +180,77 +178,84 +190,104 +188,84 +196,109 +196,102 +190,95 +190,79 +198,104 +190,91 +193,98 +185,90 +190,102 +190,126 +201,98 +196,104 +193,109 +180,84 +190,99 +188,77 +175,99 +180,86 +193,102 +183,100 +183,80 +178,86 +183,89 +185,92 +180,76 +183,82 +180,88 +185,100 +183,98 +185,84 +188,86 +188,93 +183,93 +185,91 +190,91 +188,95 +188,98 +196,91 +190,93 +185,96 +183,86 +180,94 +188,91 +196,95 +190,105 +190,104 +190,95 +198,100 +198,95 +188,92 +193,96 +198,102 +193,77 +178,86 +183,91 +203,108 +188,100 +188,77 +180,88 +178,86 +183,68 +180,100 +188,91 +180,86 +183,84 +180,84 +188,91 +175,78 +193,100 +190,102 +190,86 +193,88 +185,99 +193,86 +185,89 +196,91 +185,88 +183,95 +183,80 +196,100 +196,107 +180,82 +188,88 +188,88 +185,86 +198,104 +190,86 +185,91 +178,86 +188,86 +183,91 +185,91 +185,84 +190,91 +190,82 +188,99 +193,85 +185,91 +188,100 +190,93 +185,93 +190,86 +183,77 +185,73 +185,98 +183,79 +188,93 +198,91 +193,97 +185,91 +188,86 +190,82 +178,93 +190,100 +180,86 +183,98 +198,107 +190,87 +185,91 +185,82 +180,91 +190,95 +196,109 +183,84 +175,75 +185,86 +188,84 +183,79 +178,70 +190,95 +178,77 +183,79 +183,100 +188,95 +185,93 +188,91 +190,102 +193,93 +190,88 +203,109 +183,68 +190,91 +185,98 +188,92 +188,91 +185,86 +190,93 +190,86 +180,73 +185,98 +190,84 +188,91 +188,86 +183,95 +188,84 +188,100 +188,86 +185,92 +193,93 +190,100 +183,79 +185,73 +185,86 +185,91 +183,104 +183,93 +183,100 +183,82 +180,88 +190,79 +196,113 +190,85 +188,104 +185,86 +190,91 +201,86 +188,99 +193,107 +185,82 +188,82 +188,82 +183,91 +188,106 +188,84 +190,100 +198,101 +188,91 +188,95 +188,91 +196,95 +178,86 +185,80 +188,103 +185,82 +180,88 +190,90 +180,79 +183,84 +196,109 +188,95 +178,82 +196,88 +185,102 +196,125 +188,88 +183,82 +193,93 +180,88 +193,104 +198,104 +190,100 +185,91 +198,113 +188,86 +201,94 +190,111 +193,113 +183,73 +190,87 +190,100 +178,77 +183,89 +178,70 +188,86 +180,91 +193,100 +185,95 +193,103 +180,86 +175,73 +183,84 +183,82 +175,82 +185,91 +175,80 +185,73 +188,101 +188,96 +183,88 +180,91 +188,95 +185,102 +183,79 +183,93 +193,109 +193,84 +193,118 +188,84 +193,100 +190,93 +180,91 +183,77 +180,91 +185,93 +190,84 +193,93 +190,111 +180,100 +190,95 +188,100 +183,84 +185,79 +185,77 +185,82 +185,91 +193,95 +183,79 +193,100 +185,93 +185,82 +185,95 +190,88 +190,91 +196,91 +185,74 +183,82 +190,100 +178,88 +188,93 +183,77 +203,109 +180,95 +180,88 +188,91 +188,93 +185,87 +190,86 +193,77 +185,109 +196,91 +183,93 +185,79 +196,113 +193,100 +180,102 +190,95 +185,88 +188,82 +196,111 +180,79 +183,82 +185,98 +175,79 +185,82 +178,88 +188,104 +193,104 +185,93 +185,98 +190,88 +185,82 +201,93 +188,82 +185,86 +188,82 +196,86 +190,86 +188,100 +185,95 +196,116 +185,86 +196,104 +188,91 +188,93 +185,95 +196,102 +188,98 +196,100 +190,93 +196,91 +190,100 +180,89 +188,102 +178,85 +201,111 +183,84 +183,84 +178,79 +188,91 +188,82 +183,85 +185,102 +183,91 +188,95 +188,111 +193,97 +208,105 +188,75 +188,103 +178,95 +185,113 +185,87 +188,86 +196,91 +183,98 +193,115 +185,105 +185,82 +183,98 +188,100 +188,82 +180,91 +183,77 +190,88 +188,95 +188,91 +196,100 +178,75 +180,82 +185,91 +193,91 +180,77 +190,102 +188,100 +183,82 +193,90 +201,109 +193,108 +185,84 +193,95 +198,100 +190,91 +193,88 +183,100 +183,104 +185,77 +185,100 +190,104 +180,75 +193,93 +178,87 +190,95 +188,93 +190,91 +185,95 +180,84 +180,88 +183,92 +185,93 +185,88 +183,82 +175,91 +185,84 +198,109 +180,84 +185,100 +190,93 +193,93 +178,82 +188,91 +196,86 +190,94 +201,109 +183,82 +196,104 +185,88 +190,98 +190,86 +190,88 +185,98 +185,98 +193,100 +196,100 +190,104 +178,88 +180,86 +180,88 +190,95 +188,92 +175,77 +178,84 +190,93 +183,79 +190,95 +185,86 +183,82 +183,82 +183,73 +193,107 +190,91 +188,95 +190,102 +175,82 +185,86 +183,89 +183,92 +190,93 +196,77 +193,91 +203,113 +196,91 +193,100 +201,91 +180,86 +190,77 +185,86 +193,100 +196,98 +185,93 +193,98 +178,84 +190,107 +185,85 +190,104 +178,88 +175,76 +180,86 +183,73 +183,91 +185,91 +178,86 +178,82 +185,86 +193,91 +190,100 +183,85 +185,109 +201,86 +180,82 +183,84 +188,95 +188,100 +188,99 +183,86 +193,88 +193,79 +183,82 +183,98 +180,95 +183,91 +183,86 +178,84 +196,100 +188,77 +183,88 +193,93 +180,88 +193,95 +180,86 +185,86 +178,82 +185,100 +185,86 +183,84 +180,84 +180,86 +180,82 +183,86 +183,77 +188,95 +188,109 +188,100 +180,82 +183,95 +190,95 +183,88 +180,73 +183,82 +183,93 +183,91 +183,84 +188,111 +188,86 +196,95 +190,91 +185,91 +190,101 +185,98 +193,109 +183,77 +196,100 +190,71 +183,86 +180,92 +180,100 +190,91 +183,86 +185,95 +185,86 +180,91 +178,75 +190,86 +180,84 +193,104 +185,94 +173,95 +180,79 +183,82 +188,91 +196,93 +183,91 +193,113 +198,95 +206,104 +183,111 +185,92 +193,109 +183,91 +183,98 +188,80 +193,95 +185,77 +193,98 +190,98 +178,90 +180,91 +188,100 +183,77 +185,91 +193,104 +193,105 +185,83 +180,87 +173,76 +180,86 +180,82 +188,82 +196,98 +175,73 +183,93 +193,101 +185,93 +190,79 +193,77 +190,86 +193,109 +183,79 +188,104 +193,101 +188,89 +183,76 +190,88 +198,86 +196,113 +178,86 +183,86 +201,86 +188,77 +180,73 +173,68 +196,102 +190,100 +180,95 +183,95 +178,80 +183,118 +183,88 +185,86 +183,84 +188,82 +183,88 +183,88 +190,99 +183,102 +185,96 +188,92 +183,84 +198,91 +190,95 +183,91 +188,88 +190,103 +190,95 +193,86 +188,96 +188,86 +185,99 +188,100 +180,86 +188,107 +190,95 +193,91 +188,85 +193,95 +193,107 +185,85 +190,98 +190,98 +188,100 +173,82 +183,84 +190,91 +180,95 +178,100 +183,84 +185,105 +183,95 +190,88 +188,91 +178,93 +185,91 +193,91 +180,86 +208,113 +183,84 +185,82 +188,77 +180,82 +190,94 +196,107 +183,98 +188,111 +183,100 +185,84 +198,104 +196,86 +185,91 +185,82 +185,86 +185,89 +185,82 +193,104 +190,102 +178,73 +185,81 +183,93 +185,84 +190,95 +188,82 +185,86 +185,91 +193,117 +185,86 +190,100 +178,75 +196,93 +183,91 +196,94 +188,84 +190,98 +190,77 +190,107 +190,95 +183,77 +188,82 +180,77 +193,86 +180,68 +190,104 +193,92 +211,118 +190,112 +188,84 +193,95 +183,90 +183,95 +190,98 +190,82 +183,91 +196,111 +185,91 +183,87 +178,87 +188,91 +183,87 +188,93 +183,86 +180,84 +178,77 +180,89 +193,99 +188,91 +193,100 +188,94 +188,102 +188,94 +190,96 +190,102 +180,77 +180,86 +188,95 +196,104 +180,95 +188,91 +190,108 +196,106 +193,101 +188,91 +193,86 +183,77 +180,100 +183,101 +190,95 +185,98 +173,89 +183,79 +175,79 +185,86 +185,93 +190,95 +178,82 +178,82 +188,89 +190,100 +188,103 +188,86 +185,92 +188,75 +190,98 +196,100 +185,94 +188,95 +193,98 +188,88 +190,91 +185,98 +193,104 +198,109 +190,94 +185,93 +196,94 +188,84 +183,86 +188,77 +183,94 +180,102 +185,86 +190,102 +185,84 +170,82 +170,75 +193,109 +188,100 +185,96 +178,74 +190,98 +178,79 +183,93 +196,95 +201,93 +198,94 +188,98 +190,82 +190,91 +198,104 +193,96 +190,104 +175,86 +190,100 +183,82 +190,93 +185,86 +188,82 +190,93 +190,86 +185,88 diff --git a/example_file.txt b/example_file.txt new file mode 100644 index 0000000..397f27b --- /dev/null +++ b/example_file.txt @@ -0,0 +1,4 @@ +# example data +apple,10 +pear,20 +cherry,30 diff --git a/hamlet.txt b/hamlet.txt new file mode 100644 index 0000000..e553895 --- /dev/null +++ b/hamlet.txt @@ -0,0 +1,6777 @@ +HAMLET, PRINCE OF DENMARK + +by William Shakespeare + + + + +PERSONS REPRESENTED. + +Claudius, King of Denmark. +Hamlet, Son to the former, and Nephew to the present King. +Polonius, Lord Chamberlain. +Horatio, Friend to Hamlet. +Laertes, Son to Polonius. +Voltimand, Courtier. +Cornelius, Courtier. +Rosencrantz, Courtier. +Guildenstern, Courtier. +Osric, Courtier. +A Gentleman, Courtier. +A Priest. +Marcellus, Officer. +Bernardo, Officer. +Francisco, a Soldier +Reynaldo, Servant to Polonius. +Players. +Two Clowns, Grave-diggers. +Fortinbras, Prince of Norway. +A Captain. +English Ambassadors. +Ghost of Hamlet's Father. + +Gertrude, Queen of Denmark, and Mother of Hamlet. +Ophelia, Daughter to Polonius. + +Lords, Ladies, Officers, Soldiers, Sailors, Messengers, and other +Attendants. + +SCENE. Elsinore. + + + +ACT I. + +Scene I. Elsinore. A platform before the Castle. + +[Francisco at his post. Enter to him Bernardo.] + +Ber. +Who's there? + +Fran. +Nay, answer me: stand, and unfold yourself. + +Ber. +Long live the king! + +Fran. +Bernardo? + +Ber. +He. + +Fran. +You come most carefully upon your hour. + +Ber. +'Tis now struck twelve. Get thee to bed, Francisco. + +Fran. +For this relief much thanks: 'tis bitter cold, +And I am sick at heart. + +Ber. +Have you had quiet guard? + +Fran. +Not a mouse stirring. + +Ber. +Well, good night. +If you do meet Horatio and Marcellus, +The rivals of my watch, bid them make haste. + +Fran. +I think I hear them.--Stand, ho! Who is there? + +[Enter Horatio and Marcellus.] + +Hor. +Friends to this ground. + +Mar. +And liegemen to the Dane. + +Fran. +Give you good-night. + +Mar. +O, farewell, honest soldier; +Who hath reliev'd you? + +Fran. +Bernardo has my place. +Give you good-night. + +[Exit.] + +Mar. +Holla! Bernardo! + +Ber. +Say. +What, is Horatio there? + +Hor. +A piece of him. + +Ber. +Welcome, Horatio:--Welcome, good Marcellus. + +Mar. +What, has this thing appear'd again to-night? + +Ber. +I have seen nothing. + +Mar. +Horatio says 'tis but our fantasy, +And will not let belief take hold of him +Touching this dreaded sight, twice seen of us: +Therefore I have entreated him along +With us to watch the minutes of this night; +That, if again this apparition come +He may approve our eyes and speak to it. + +Hor. +Tush, tush, 'twill not appear. + +Ber. +Sit down awhile, +And let us once again assail your ears, +That are so fortified against our story, +What we two nights have seen. + +Hor. +Well, sit we down, +And let us hear Bernardo speak of this. + +Ber. +Last night of all, +When yond same star that's westward from the pole +Had made his course to illume that part of heaven +Where now it burns, Marcellus and myself, +The bell then beating one,-- + +Mar. +Peace, break thee off; look where it comes again! + +[Enter Ghost, armed.] + +Ber. +In the same figure, like the king that's dead. + +Mar. +Thou art a scholar; speak to it, Horatio. + +Ber. +Looks it not like the King? mark it, Horatio. + +Hor. +Most like:--it harrows me with fear and wonder. + +Ber. +It would be spoke to. + +Mar. +Question it, Horatio. + +Hor. +What art thou, that usurp'st this time of night, +Together with that fair and warlike form +In which the majesty of buried Denmark +Did sometimes march? By heaven I charge thee, speak! + +Mar. +It is offended. + +Ber. +See, it stalks away! + +Hor. +Stay! speak, speak! I charge thee speak! + +[Exit Ghost.] + +Mar. +'Tis gone, and will not answer. + +Ber. +How now, Horatio! You tremble and look pale: +Is not this something more than fantasy? +What think you on't? + +Hor. +Before my God, I might not this believe +Without the sensible and true avouch +Of mine own eyes. + +Mar. +Is it not like the King? + +Hor. +As thou art to thyself: +Such was the very armour he had on +When he the ambitious Norway combated; +So frown'd he once when, in an angry parle, +He smote the sledded Polacks on the ice. +'Tis strange. + +Mar. +Thus twice before, and jump at this dead hour, +With martial stalk hath he gone by our watch. + +Hor. +In what particular thought to work I know not; +But, in the gross and scope of my opinion, +This bodes some strange eruption to our state. + +Mar. +Good now, sit down, and tell me, he that knows, +Why this same strict and most observant watch +So nightly toils the subject of the land; +And why such daily cast of brazen cannon, +And foreign mart for implements of war; +Why such impress of shipwrights, whose sore task +Does not divide the Sunday from the week; +What might be toward, that this sweaty haste +Doth make the night joint-labourer with the day: +Who is't that can inform me? + +Hor. +That can I; +At least, the whisper goes so. Our last king, +Whose image even but now appear'd to us, +Was, as you know, by Fortinbras of Norway, +Thereto prick'd on by a most emulate pride, +Dar'd to the combat; in which our valiant Hamlet,-- +For so this side of our known world esteem'd him,-- +Did slay this Fortinbras; who, by a seal'd compact, +Well ratified by law and heraldry, +Did forfeit, with his life, all those his lands, +Which he stood seiz'd of, to the conqueror: +Against the which, a moiety competent +Was gaged by our king; which had return'd +To the inheritance of Fortinbras, +Had he been vanquisher; as by the same cov'nant, +And carriage of the article design'd, +His fell to Hamlet. Now, sir, young Fortinbras, +Of unimproved mettle hot and full, +Hath in the skirts of Norway, here and there, +Shark'd up a list of lawless resolutes, +For food and diet, to some enterprise +That hath a stomach in't; which is no other,-- +As it doth well appear unto our state,-- +But to recover of us, by strong hand, +And terms compulsatory, those foresaid lands +So by his father lost: and this, I take it, +Is the main motive of our preparations, +The source of this our watch, and the chief head +Of this post-haste and romage in the land. + +Ber. +I think it be no other but e'en so: +Well may it sort, that this portentous figure +Comes armed through our watch; so like the king +That was and is the question of these wars. + +Hor. +A mote it is to trouble the mind's eye. +In the most high and palmy state of Rome, +A little ere the mightiest Julius fell, +The graves stood tenantless, and the sheeted dead +Did squeak and gibber in the Roman streets; +As, stars with trains of fire and dews of blood, +Disasters in the sun; and the moist star, +Upon whose influence Neptune's empire stands, +Was sick almost to doomsday with eclipse: +And even the like precurse of fierce events,-- +As harbingers preceding still the fates, +And prologue to the omen coming on,-- +Have heaven and earth together demonstrated +Unto our climature and countrymen.-- +But, soft, behold! lo, where it comes again! + +[Re-enter Ghost.] + +I'll cross it, though it blast me.--Stay, illusion! +If thou hast any sound, or use of voice, +Speak to me: +If there be any good thing to be done, +That may to thee do ease, and, race to me, +Speak to me: +If thou art privy to thy country's fate, +Which, happily, foreknowing may avoid, +O, speak! +Or if thou hast uphoarded in thy life +Extorted treasure in the womb of earth, +For which, they say, you spirits oft walk in death, +[The cock crows.] +Speak of it:--stay, and speak!--Stop it, Marcellus! + +Mar. +Shall I strike at it with my partisan? + +Hor. +Do, if it will not stand. + +Ber. +'Tis here! + +Hor. +'Tis here! + +Mar. +'Tis gone! + +[Exit Ghost.] + +We do it wrong, being so majestical, +To offer it the show of violence; +For it is, as the air, invulnerable, +And our vain blows malicious mockery. + +Ber. +It was about to speak, when the cock crew. + +Hor. +And then it started, like a guilty thing +Upon a fearful summons. I have heard +The cock, that is the trumpet to the morn, +Doth with his lofty and shrill-sounding throat +Awake the god of day; and at his warning, +Whether in sea or fire, in earth or air, +The extravagant and erring spirit hies +To his confine: and of the truth herein +This present object made probation. + +Mar. +It faded on the crowing of the cock. +Some say that ever 'gainst that season comes +Wherein our Saviour's birth is celebrated, +The bird of dawning singeth all night long; +And then, they say, no spirit dare stir abroad; +The nights are wholesome; then no planets strike, +No fairy takes, nor witch hath power to charm; +So hallow'd and so gracious is the time. + +Hor. +So have I heard, and do in part believe it. +But, look, the morn, in russet mantle clad, +Walks o'er the dew of yon high eastward hill: +Break we our watch up: and by my advice, +Let us impart what we have seen to-night +Unto young Hamlet; for, upon my life, +This spirit, dumb to us, will speak to him: +Do you consent we shall acquaint him with it, +As needful in our loves, fitting our duty? + +Mar. +Let's do't, I pray; and I this morning know +Where we shall find him most conveniently. + +[Exeunt.] + + + +Scene II. Elsinore. A room of state in the Castle. + +[Enter the King, Queen, Hamlet, Polonius, Laertes, Voltimand, +Cornelius, Lords, and Attendant.] + +King. +Though yet of Hamlet our dear brother's death +The memory be green, and that it us befitted +To bear our hearts in grief, and our whole kingdom +To be contracted in one brow of woe; +Yet so far hath discretion fought with nature +That we with wisest sorrow think on him, +Together with remembrance of ourselves. +Therefore our sometime sister, now our queen, +Th' imperial jointress to this warlike state, +Have we, as 'twere with a defeated joy,-- +With an auspicious and one dropping eye, +With mirth in funeral, and with dirge in marriage, +In equal scale weighing delight and dole,-- +Taken to wife; nor have we herein barr'd +Your better wisdoms, which have freely gone +With this affair along:--or all, our thanks. +Now follows, that you know, young Fortinbras, +Holding a weak supposal of our worth, +Or thinking by our late dear brother's death +Our state to be disjoint and out of frame, +Colleagued with this dream of his advantage, +He hath not fail'd to pester us with message, +Importing the surrender of those lands +Lost by his father, with all bonds of law, +To our most valiant brother. So much for him,-- +Now for ourself and for this time of meeting: +Thus much the business is:--we have here writ +To Norway, uncle of young Fortinbras,-- +Who, impotent and bed-rid, scarcely hears +Of this his nephew's purpose,--to suppress +His further gait herein; in that the levies, +The lists, and full proportions are all made +Out of his subject:--and we here dispatch +You, good Cornelius, and you, Voltimand, +For bearers of this greeting to old Norway; +Giving to you no further personal power +To business with the king, more than the scope +Of these dilated articles allow. +Farewell; and let your haste commend your duty. + +Cor. and Volt. +In that and all things will we show our duty. + +King. +We doubt it nothing: heartily farewell. + +[Exeunt Voltimand and Cornelius.] + +And now, Laertes, what's the news with you? +You told us of some suit; what is't, Laertes? +You cannot speak of reason to the Dane, +And lose your voice: what wouldst thou beg, Laertes, +That shall not be my offer, not thy asking? +The head is not more native to the heart, +The hand more instrumental to the mouth, +Than is the throne of Denmark to thy father. +What wouldst thou have, Laertes? + +Laer. +Dread my lord, +Your leave and favour to return to France; +From whence though willingly I came to Denmark, +To show my duty in your coronation; +Yet now, I must confess, that duty done, +My thoughts and wishes bend again toward France, +And bow them to your gracious leave and pardon. + +King. +Have you your father's leave? What says Polonius? + +Pol. +He hath, my lord, wrung from me my slow leave +By laboursome petition; and at last +Upon his will I seal'd my hard consent: +I do beseech you, give him leave to go. + +King. +Take thy fair hour, Laertes; time be thine, +And thy best graces spend it at thy will!-- +But now, my cousin Hamlet, and my son-- + +Ham. +[Aside.] A little more than kin, and less than kind! + +King. +How is it that the clouds still hang on you? + +Ham. +Not so, my lord; I am too much i' the sun. + +Queen. +Good Hamlet, cast thy nighted colour off, +And let thine eye look like a friend on Denmark. +Do not for ever with thy vailed lids +Seek for thy noble father in the dust: +Thou know'st 'tis common,--all that lives must die, +Passing through nature to eternity. + +Ham. +Ay, madam, it is common. + +Queen. +If it be, +Why seems it so particular with thee? + +Ham. +Seems, madam! Nay, it is; I know not seems. +'Tis not alone my inky cloak, good mother, +Nor customary suits of solemn black, +Nor windy suspiration of forc'd breath, +No, nor the fruitful river in the eye, +Nor the dejected 'havior of the visage, +Together with all forms, moods, shows of grief, +That can denote me truly: these, indeed, seem; +For they are actions that a man might play; +But I have that within which passeth show; +These but the trappings and the suits of woe. + +King. +'Tis sweet and commendable in your nature, Hamlet, +To give these mourning duties to your father; +But, you must know, your father lost a father; +That father lost, lost his; and the survivor bound, +In filial obligation, for some term +To do obsequious sorrow: but to persevere +In obstinate condolement is a course +Of impious stubbornness; 'tis unmanly grief; +It shows a will most incorrect to heaven; +A heart unfortified, a mind impatient; +An understanding simple and unschool'd; +For what we know must be, and is as common +As any the most vulgar thing to sense, +Why should we, in our peevish opposition, +Take it to heart? Fie! 'tis a fault to heaven, +A fault against the dead, a fault to nature, +To reason most absurd; whose common theme +Is death of fathers, and who still hath cried, +From the first corse till he that died to-day, +'This must be so.' We pray you, throw to earth +This unprevailing woe; and think of us +As of a father: for let the world take note +You are the most immediate to our throne; +And with no less nobility of love +Than that which dearest father bears his son +Do I impart toward you. For your intent +In going back to school in Wittenberg, +It is most retrograde to our desire: +And we beseech you bend you to remain +Here in the cheer and comfort of our eye, +Our chiefest courtier, cousin, and our son. + +Queen. +Let not thy mother lose her prayers, Hamlet: +I pray thee stay with us; go not to Wittenberg. + +Ham. +I shall in all my best obey you, madam. + +King. +Why, 'tis a loving and a fair reply: +Be as ourself in Denmark.--Madam, come; +This gentle and unforc'd accord of Hamlet +Sits smiling to my heart: in grace whereof, +No jocund health that Denmark drinks to-day +But the great cannon to the clouds shall tell; +And the king's rouse the heaven shall bruit again, +Re-speaking earthly thunder. Come away. + +[Exeunt all but Hamlet.] + +Ham. +O that this too too solid flesh would melt, +Thaw, and resolve itself into a dew! +Or that the Everlasting had not fix'd +His canon 'gainst self-slaughter! O God! O God! +How weary, stale, flat, and unprofitable +Seem to me all the uses of this world! +Fie on't! O fie! 'tis an unweeded garden, +That grows to seed; things rank and gross in nature +Possess it merely. That it should come to this! +But two months dead!--nay, not so much, not two: +So excellent a king; that was, to this, +Hyperion to a satyr; so loving to my mother, +That he might not beteem the winds of heaven +Visit her face too roughly. Heaven and earth! +Must I remember? Why, she would hang on him +As if increase of appetite had grown +By what it fed on: and yet, within a month,-- +Let me not think on't,--Frailty, thy name is woman!-- +A little month; or ere those shoes were old +With which she followed my poor father's body +Like Niobe, all tears;--why she, even she,-- +O God! a beast that wants discourse of reason, +Would have mourn'd longer,--married with mine uncle, +My father's brother; but no more like my father +Than I to Hercules: within a month; +Ere yet the salt of most unrighteous tears +Had left the flushing in her galled eyes, +She married:-- O, most wicked speed, to post +With such dexterity to incestuous sheets! +It is not, nor it cannot come to good; +But break my heart,--for I must hold my tongue! + +[Enter Horatio, Marcellus, and Bernardo.] + +Hor. +Hail to your lordship! + +Ham. +I am glad to see you well: +Horatio,--or I do forget myself. + +Hor. +The same, my lord, and your poor servant ever. + +Ham. +Sir, my good friend; I'll change that name with you: +And what make you from Wittenberg, Horatio?-- +Marcellus? + +Mar. +My good lord,-- + +Ham. +I am very glad to see you.--Good even, sir.-- +But what, in faith, make you from Wittenberg? + +Hor. +A truant disposition, good my lord. + +Ham. +I would not hear your enemy say so; +Nor shall you do my ear that violence, +To make it truster of your own report +Against yourself: I know you are no truant. +But what is your affair in Elsinore? +We'll teach you to drink deep ere you depart. + +Hor. +My lord, I came to see your father's funeral. + +Ham. +I prithee do not mock me, fellow-student. +I think it was to see my mother's wedding. + +Hor. +Indeed, my lord, it follow'd hard upon. + +Ham. +Thrift, thrift, Horatio! The funeral bak'd meats +Did coldly furnish forth the marriage tables. +Would I had met my dearest foe in heaven +Or ever I had seen that day, Horatio!-- +My father,--methinks I see my father. + +Hor. +Where, my lord? + +Ham. +In my mind's eye, Horatio. + +Hor. +I saw him once; he was a goodly king. + +Ham. +He was a man, take him for all in all, +I shall not look upon his like again. + +Hor. +My lord, I think I saw him yesternight. + +Ham. +Saw who? + +Hor. +My lord, the king your father. + +Ham. +The King my father! + +Hor. +Season your admiration for awhile +With an attent ear, till I may deliver, +Upon the witness of these gentlemen, +This marvel to you. + +Ham. +For God's love let me hear. + +Hor. +Two nights together had these gentlemen, +Marcellus and Bernardo, on their watch +In the dead vast and middle of the night, +Been thus encounter'd. A figure like your father, +Armed at point exactly, cap-a-pe, +Appears before them and with solemn march +Goes slow and stately by them: thrice he walk'd +By their oppress'd and fear-surprised eyes, +Within his truncheon's length; whilst they, distill'd +Almost to jelly with the act of fear, +Stand dumb, and speak not to him. This to me +In dreadful secrecy impart they did; +And I with them the third night kept the watch: +Where, as they had deliver'd, both in time, +Form of the thing, each word made true and good, +The apparition comes: I knew your father; +These hands are not more like. + +Ham. +But where was this? + +Mar. +My lord, upon the platform where we watch'd. + +Ham. +Did you not speak to it? + +Hor. +My lord, I did; +But answer made it none: yet once methought +It lifted up it head, and did address +Itself to motion, like as it would speak: +But even then the morning cock crew loud, +And at the sound it shrunk in haste away, +And vanish'd from our sight. + +Ham. +'Tis very strange. + +Hor. +As I do live, my honour'd lord, 'tis true; +And we did think it writ down in our duty +To let you know of it. + +Ham. +Indeed, indeed, sirs, but this troubles me. +Hold you the watch to-night? + +Mar. and Ber. +We do, my lord. + +Ham. +Arm'd, say you? + +Both. +Arm'd, my lord. + +Ham. +From top to toe? + +Both. +My lord, from head to foot. + +Ham. +Then saw you not his face? + +Hor. +O, yes, my lord: he wore his beaver up. + +Ham. +What, look'd he frowningly? + +Hor. +A countenance more in sorrow than in anger. + +Ham. +Pale or red? + +Hor. +Nay, very pale. + +Ham. +And fix'd his eyes upon you? + +Hor. +Most constantly. + +Ham. +I would I had been there. + +Hor. +It would have much amaz'd you. + +Ham. +Very like, very like. Stay'd it long? + +Hor. +While one with moderate haste might tell a hundred. + +Mar. and Ber. +Longer, longer. + +Hor. +Not when I saw't. + +Ham. +His beard was grizzled,--no? + +Hor. +It was, as I have seen it in his life, +A sable silver'd. + +Ham. +I will watch to-night; +Perchance 'twill walk again. + +Hor. +I warr'nt it will. + +Ham. +If it assume my noble father's person, +I'll speak to it, though hell itself should gape +And bid me hold my peace. I pray you all, +If you have hitherto conceal'd this sight, +Let it be tenable in your silence still; +And whatsoever else shall hap to-night, +Give it an understanding, but no tongue: +I will requite your loves. So, fare ye well: +Upon the platform, 'twixt eleven and twelve, +I'll visit you. + +All. +Our duty to your honour. + +Ham. +Your loves, as mine to you: farewell. + +[Exeunt Horatio, Marcellus, and Bernardo.] + +My father's spirit in arms! All is not well; +I doubt some foul play: would the night were come! +Till then sit still, my soul: foul deeds will rise, +Though all the earth o'erwhelm them, to men's eyes. + +[Exit.] + + + +Scene III. A room in Polonius's house. + +[Enter Laertes and Ophelia.] + +Laer. +My necessaries are embark'd: farewell: +And, sister, as the winds give benefit +And convoy is assistant, do not sleep, +But let me hear from you. + +Oph. +Do you doubt that? + +Laer. +For Hamlet, and the trifling of his favour, +Hold it a fashion, and a toy in blood: +A violet in the youth of primy nature, +Forward, not permanent, sweet, not lasting; +The perfume and suppliance of a minute; +No more. + +Oph. +No more but so? + +Laer. +Think it no more: +For nature, crescent, does not grow alone +In thews and bulk; but as this temple waxes, +The inward service of the mind and soul +Grows wide withal. Perhaps he loves you now; +And now no soil nor cautel doth besmirch +The virtue of his will: but you must fear, +His greatness weigh'd, his will is not his own; +For he himself is subject to his birth: +He may not, as unvalu'd persons do, +Carve for himself; for on his choice depends +The safety and health of this whole state; +And therefore must his choice be circumscrib'd +Unto the voice and yielding of that body +Whereof he is the head. Then if he says he loves you, +It fits your wisdom so far to believe it +As he in his particular act and place +May give his saying deed; which is no further +Than the main voice of Denmark goes withal. +Then weigh what loss your honour may sustain +If with too credent ear you list his songs, +Or lose your heart, or your chaste treasure open +To his unmaster'd importunity. +Fear it, Ophelia, fear it, my dear sister; +And keep you in the rear of your affection, +Out of the shot and danger of desire. +The chariest maid is prodigal enough +If she unmask her beauty to the moon: +Virtue itself scopes not calumnious strokes: +The canker galls the infants of the spring +Too oft before their buttons be disclos'd: +And in the morn and liquid dew of youth +Contagious blastments are most imminent. +Be wary then; best safety lies in fear: +Youth to itself rebels, though none else near. + +Oph. +I shall th' effect of this good lesson keep +As watchman to my heart. But, good my brother, +Do not, as some ungracious pastors do, +Show me the steep and thorny way to heaven; +Whilst, like a puff'd and reckless libertine, +Himself the primrose path of dalliance treads +And recks not his own read. + +Laer. +O, fear me not. +I stay too long:--but here my father comes. + +[Enter Polonius.] + +A double blessing is a double grace; +Occasion smiles upon a second leave. + +Pol. +Yet here, Laertes! aboard, aboard, for shame! +The wind sits in the shoulder of your sail, +And you are stay'd for. There,--my blessing with thee! + +[Laying his hand on Laertes's head.] + +And these few precepts in thy memory +Look thou character. Give thy thoughts no tongue, +Nor any unproportion'd thought his act. +Be thou familiar, but by no means vulgar. +Those friends thou hast, and their adoption tried, +Grapple them unto thy soul with hoops of steel; +But do not dull thy palm with entertainment +Of each new-hatch'd, unfledg'd comrade. Beware +Of entrance to a quarrel; but, being in, +Bear't that the opposed may beware of thee. +Give every man thine ear, but few thy voice: +Take each man's censure, but reserve thy judgment. +Costly thy habit as thy purse can buy, +But not express'd in fancy; rich, not gaudy: +For the apparel oft proclaims the man; +And they in France of the best rank and station +Are most select and generous chief in that. +Neither a borrower nor a lender be: +For loan oft loses both itself and friend; +And borrowing dulls the edge of husbandry. +This above all,--to thine own self be true; +And it must follow, as the night the day, +Thou canst not then be false to any man. +Farewell: my blessing season this in thee! + +Laer. +Most humbly do I take my leave, my lord. + +Pol. +The time invites you; go, your servants tend. + +Laer. +Farewell, Ophelia; and remember well +What I have said to you. + +Oph. +'Tis in my memory lock'd, +And you yourself shall keep the key of it. + +Laer. +Farewell. + +[Exit.] + +Pol. +What is't, Ophelia, he hath said to you? + +Oph. +So please you, something touching the Lord Hamlet. + +Pol. +Marry, well bethought: +'Tis told me he hath very oft of late +Given private time to you; and you yourself +Have of your audience been most free and bounteous; +If it be so,--as so 'tis put on me, +And that in way of caution,--I must tell you +You do not understand yourself so clearly +As it behooves my daughter and your honour. +What is between you? give me up the truth. + +Oph. +He hath, my lord, of late made many tenders +Of his affection to me. + +Pol. +Affection! pooh! you speak like a green girl, +Unsifted in such perilous circumstance. +Do you believe his tenders, as you call them? + +Oph. +I do not know, my lord, what I should think. + +Pol. +Marry, I'll teach you: think yourself a baby; +That you have ta'en these tenders for true pay, +Which are not sterling. Tender yourself more dearly; +Or,--not to crack the wind of the poor phrase, +Wronging it thus,--you'll tender me a fool. + +Oph. +My lord, he hath importun'd me with love +In honourable fashion. + +Pol. +Ay, fashion you may call it; go to, go to. + +Oph. +And hath given countenance to his speech, my lord, +With almost all the holy vows of heaven. + +Pol. +Ay, springes to catch woodcocks. I do know, +When the blood burns, how prodigal the soul +Lends the tongue vows: these blazes, daughter, +Giving more light than heat,--extinct in both, +Even in their promise, as it is a-making,-- +You must not take for fire. From this time +Be something scanter of your maiden presence; +Set your entreatments at a higher rate +Than a command to parley. For Lord Hamlet, +Believe so much in him, that he is young; +And with a larger tether may he walk +Than may be given you: in few, Ophelia, +Do not believe his vows; for they are brokers,-- +Not of that dye which their investments show, +But mere implorators of unholy suits, +Breathing like sanctified and pious bawds, +The better to beguile. This is for all,-- +I would not, in plain terms, from this time forth +Have you so slander any moment leisure +As to give words or talk with the Lord Hamlet. +Look to't, I charge you; come your ways. + +Oph. +I shall obey, my lord. + +[Exeunt.] + + + +Scene IV. The platform. + +[Enter Hamlet, Horatio, and Marcellus.] + +Ham. +The air bites shrewdly; it is very cold. + +Hor. +It is a nipping and an eager air. + +Ham. +What hour now? + +Hor. +I think it lacks of twelve. + +Mar. +No, it is struck. + +Hor. +Indeed? I heard it not: then draws near the season +Wherein the spirit held his wont to walk. + +[A flourish of trumpets, and ordnance shot off within.] + +What does this mean, my lord? + +Ham. +The King doth wake to-night and takes his rouse, +Keeps wassail, and the swaggering up-spring reels; +And, as he drains his draughts of Rhenish down, +The kettle-drum and trumpet thus bray out +The triumph of his pledge. + +Hor. +Is it a custom? + +Ham. +Ay, marry, is't; +But to my mind,--though I am native here, +And to the manner born,--it is a custom +More honour'd in the breach than the observance. +This heavy-headed revel east and west +Makes us traduc'd and tax'd of other nations: +They clepe us drunkards, and with swinish phrase +Soil our addition; and, indeed, it takes +From our achievements, though perform'd at height, +The pith and marrow of our attribute. +So oft it chances in particular men +That, for some vicious mole of nature in them, +As in their birth,--wherein they are not guilty, +Since nature cannot choose his origin,-- +By the o'ergrowth of some complexion, +Oft breaking down the pales and forts of reason; +Or by some habit, that too much o'er-leavens +The form of plausive manners;--that these men,-- +Carrying, I say, the stamp of one defect, +Being nature's livery, or fortune's star,-- +Their virtues else,--be they as pure as grace, +As infinite as man may undergo,-- +Shall in the general censure take corruption +From that particular fault: the dram of eale +Doth all the noble substance often doubt +To his own scandal. + +Hor. +Look, my lord, it comes! + +[Enter Ghost.] + +Ham. +Angels and ministers of grace defend us!-- +Be thou a spirit of health or goblin damn'd, +Bring with thee airs from heaven or blasts from hell, +Be thy intents wicked or charitable, +Thou com'st in such a questionable shape +That I will speak to thee: I'll call thee Hamlet, +King, father, royal Dane; O, answer me! +Let me not burst in ignorance; but tell +Why thy canoniz'd bones, hearsed in death, +Have burst their cerements; why the sepulchre, +Wherein we saw thee quietly in-urn'd, +Hath op'd his ponderous and marble jaws +To cast thee up again! What may this mean, +That thou, dead corse, again in complete steel, +Revisit'st thus the glimpses of the moon, +Making night hideous, and we fools of nature +So horridly to shake our disposition +With thoughts beyond the reaches of our souls? +Say, why is this? wherefore? what should we do? + +[Ghost beckons Hamlet.] + +Hor. +It beckons you to go away with it, +As if it some impartment did desire +To you alone. + +Mar. +Look with what courteous action +It waves you to a more removed ground: +But do not go with it! + +Hor. +No, by no means. + +Ham. +It will not speak; then will I follow it. + +Hor. +Do not, my lord. + +Ham. +Why, what should be the fear? +I do not set my life at a pin's fee; +And for my soul, what can it do to that, +Being a thing immortal as itself? +It waves me forth again;--I'll follow it. + +Hor. +What if it tempt you toward the flood, my lord, +Or to the dreadful summit of the cliff +That beetles o'er his base into the sea, +And there assume some other horrible form +Which might deprive your sovereignty of reason, +And draw you into madness? think of it: +The very place puts toys of desperation, +Without more motive, into every brain +That looks so many fadoms to the sea +And hears it roar beneath. + +Ham. +It waves me still.-- +Go on; I'll follow thee. + +Mar. +You shall not go, my lord. + +Ham. +Hold off your hands. + +Hor. +Be rul'd; you shall not go. + +Ham. +My fate cries out, +And makes each petty artery in this body +As hardy as the Nemean lion's nerve.-- + +[Ghost beckons.] + +Still am I call'd;--unhand me, gentlemen;-- + +[Breaking free from them.] + +By heaven, I'll make a ghost of him that lets me!-- +I say, away!--Go on; I'll follow thee. + +[Exeunt Ghost and Hamlet.] + +Hor. +He waxes desperate with imagination. + +Mar. +Let's follow; 'tis not fit thus to obey him. + +Hor. +Have after.--To what issue will this come? + +Mar. +Something is rotten in the state of Denmark. + +Hor. +Heaven will direct it. + +Mar. +Nay, let's follow him. + +[Exeunt.] + + + +Scene V. A more remote part of the Castle. + +[Enter Ghost and Hamlet.] + +Ham. +Whither wilt thou lead me? speak! I'll go no further. + +Ghost. +Mark me. + +Ham. +I will. + +Ghost. +My hour is almost come, +When I to sulph'uous and tormenting flames +Must render up myself. + +Ham. +Alas, poor ghost! + +Ghost. +Pity me not, but lend thy serious hearing +To what I shall unfold. + +Ham. +Speak; I am bound to hear. + +Ghost. +So art thou to revenge, when thou shalt hear. + +Ham. +What? + +Ghost. +I am thy father's spirit; +Doom'd for a certain term to walk the night, +And for the day confin'd to wastein fires, +Till the foul crimes done in my days of nature +Are burnt and purg'd away. But that I am forbid +To tell the secrets of my prison-house, +I could a tale unfold whose lightest word +Would harrow up thy soul; freeze thy young blood; +Make thy two eyes, like stars, start from their spheres; +Thy knotted and combined locks to part, +And each particular hair to stand on end +Like quills upon the fretful porcupine: +But this eternal blazon must not be +To ears of flesh and blood.--List, list, O, list!-- +If thou didst ever thy dear father love-- + +Ham. +O God! + +Ghost. +Revenge his foul and most unnatural murder. + +Ham. +Murder! + +Ghost. +Murder most foul, as in the best it is; +But this most foul, strange, and unnatural. + +Ham. +Haste me to know't, that I, with wings as swift +As meditation or the thoughts of love, +May sweep to my revenge. + +Ghost. +I find thee apt; +And duller shouldst thou be than the fat weed +That rots itself in ease on Lethe wharf, +Wouldst thou not stir in this. Now, Hamlet, hear. +'Tis given out that, sleeping in my orchard, +A serpent stung me; so the whole ear of Denmark +Is by a forged process of my death +Rankly abus'd; but know, thou noble youth, +The serpent that did sting thy father's life +Now wears his crown. + +Ham. +O my prophetic soul! +Mine uncle! + +Ghost. +Ay, that incestuous, that adulterate beast, +With witchcraft of his wit, with traitorous gifts,-- +O wicked wit and gifts, that have the power +So to seduce!--won to his shameful lust +The will of my most seeming-virtuous queen: +O Hamlet, what a falling-off was there! +From me, whose love was of that dignity +That it went hand in hand even with the vow +I made to her in marriage; and to decline +Upon a wretch whose natural gifts were poor +To those of mine! +But virtue, as it never will be mov'd, +Though lewdness court it in a shape of heaven; +So lust, though to a radiant angel link'd, +Will sate itself in a celestial bed +And prey on garbage. +But soft! methinks I scent the morning air; +Brief let me be.--Sleeping within my orchard, +My custom always of the afternoon, +Upon my secure hour thy uncle stole, +With juice of cursed hebenon in a vial, +And in the porches of my ears did pour +The leperous distilment; whose effect +Holds such an enmity with blood of man +That, swift as quicksilver, it courses through +The natural gates and alleys of the body; +And with a sudden vigour it doth posset +And curd, like eager droppings into milk, +The thin and wholesome blood; so did it mine; +And a most instant tetter bark'd about, +Most lazar-like, with vile and loathsome crust +All my smooth body. +Thus was I, sleeping, by a brother's hand, +Of life, of crown, of queen, at once dispatch'd: +Cut off even in the blossoms of my sin, +Unhous'led, disappointed, unanel'd; +No reckoning made, but sent to my account +With all my imperfections on my head: +O, horrible! O, horrible! most horrible! +If thou hast nature in thee, bear it not; +Let not the royal bed of Denmark be +A couch for luxury and damned incest. +But, howsoever thou pursu'st this act, +Taint not thy mind, nor let thy soul contrive +Against thy mother aught: leave her to heaven, +And to those thorns that in her bosom lodge, +To prick and sting her. Fare thee well at once! +The glowworm shows the matin to be near, +And 'gins to pale his uneffectual fire: +Adieu, adieu! Hamlet, remember me. + +[Exit.] + +Ham. +O all you host of heaven! O earth! what else? +And shall I couple hell? O, fie!--Hold, my heart; +And you, my sinews, grow not instant old, +But bear me stiffly up.--Remember thee! +Ay, thou poor ghost, while memory holds a seat +In this distracted globe. Remember thee! +Yea, from the table of my memory +I'll wipe away all trivial fond records, +All saws of books, all forms, all pressures past, +That youth and observation copied there; +And thy commandment all alone shall live +Within the book and volume of my brain, +Unmix'd with baser matter: yes, by heaven!-- +O most pernicious woman! +O villain, villain, smiling, damned villain! +My tables,--meet it is I set it down, +That one may smile, and smile, and be a villain; +At least, I am sure, it may be so in Denmark: + +[Writing.] + +So, uncle, there you are. Now to my word; +It is 'Adieu, adieu! remember me:' +I have sworn't. + +Hor. +[Within.] My lord, my lord,-- + +Mar. +[Within.] Lord Hamlet,-- + +Hor. +[Within.] Heaven secure him! + +Ham. +So be it! + +Mar. +[Within.] Illo, ho, ho, my lord! + +Ham. +Hillo, ho, ho, boy! Come, bird, come. + +[Enter Horatio and Marcellus.] + +Mar. +How is't, my noble lord? + +Hor. +What news, my lord? + +Ham. +O, wonderful! + +Hor. +Good my lord, tell it. + +Ham. +No; you'll reveal it. + +Hor. +Not I, my lord, by heaven. + +Mar. +Nor I, my lord. + +Ham. +How say you then; would heart of man once think it?-- +But you'll be secret? + +Hor. and Mar. +Ay, by heaven, my lord. + +Ham. +There's ne'er a villain dwelling in all Denmark +But he's an arrant knave. + +Hor. +There needs no ghost, my lord, come from the grave +To tell us this. + +Ham. +Why, right; you are i' the right; +And so, without more circumstance at all, +I hold it fit that we shake hands and part: +You, as your business and desires shall point you,-- +For every man hath business and desire, +Such as it is;--and for my own poor part, +Look you, I'll go pray. + +Hor. +These are but wild and whirling words, my lord. + +Ham. +I'm sorry they offend you, heartily; +Yes, faith, heartily. + +Hor. +There's no offence, my lord. + +Ham. +Yes, by Saint Patrick, but there is, Horatio, +And much offence too. Touching this vision here,-- +It is an honest ghost, that let me tell you: +For your desire to know what is between us, +O'ermaster't as you may. And now, good friends, +As you are friends, scholars, and soldiers, +Give me one poor request. + +Hor. +What is't, my lord? we will. + +Ham. +Never make known what you have seen to-night. + +Hor. and Mar. +My lord, we will not. + +Ham. +Nay, but swear't. + +Hor. +In faith, +My lord, not I. + +Mar. +Nor I, my lord, in faith. + +Ham. +Upon my sword. + +Mar. +We have sworn, my lord, already. + +Ham. +Indeed, upon my sword, indeed. + +Ghost. +[Beneath.] Swear. + +Ham. +Ha, ha boy! say'st thou so? art thou there, truepenny?-- +Come on!--you hear this fellow in the cellarage,-- +Consent to swear. + +Hor. +Propose the oath, my lord. + +Ham. +Never to speak of this that you have seen, +Swear by my sword. + +Ghost. +[Beneath.] Swear. + +Ham. +Hic et ubique? then we'll shift our ground.-- +Come hither, gentlemen, +And lay your hands again upon my sword: +Never to speak of this that you have heard, +Swear by my sword. + +Ghost. +[Beneath.] Swear. + +Ham. +Well said, old mole! canst work i' the earth so fast? +A worthy pioner!--Once more remove, good friends. + +Hor. +O day and night, but this is wondrous strange! + +Ham. +And therefore as a stranger give it welcome. +There are more things in heaven and earth, Horatio, +Than are dreamt of in your philosophy. +But come;-- +Here, as before, never, so help you mercy, +How strange or odd soe'er I bear myself,-- +As I, perchance, hereafter shall think meet +To put an antic disposition on,-- +That you, at such times seeing me, never shall, +With arms encumber'd thus, or this head-shake, +Or by pronouncing of some doubtful phrase, +As 'Well, well, we know'; or 'We could, an if we would';-- +Or 'If we list to speak'; or 'There be, an if they might';-- +Or such ambiguous giving out, to note +That you know aught of me:--this is not to do, +So grace and mercy at your most need help you, +Swear. + +Ghost. +[Beneath.] Swear. + +Ham. +Rest, rest, perturbed spirit!--So, gentlemen, +With all my love I do commend me to you: +And what so poor a man as Hamlet is +May do, to express his love and friending to you, +God willing, shall not lack. Let us go in together; +And still your fingers on your lips, I pray. +The time is out of joint:--O cursed spite, +That ever I was born to set it right!-- +Nay, come, let's go together. + +[Exeunt.] + + + +Act II. + +Scene I. A room in Polonius's house. + +[Enter Polonius and Reynaldo.] + +Pol. +Give him this money and these notes, Reynaldo. + +Rey. +I will, my lord. + +Pol. +You shall do marvellous wisely, good Reynaldo, +Before You visit him, to make inquiry +Of his behaviour. + +Rey. +My lord, I did intend it. + +Pol. +Marry, well said; very well said. Look you, sir, +Enquire me first what Danskers are in Paris; +And how, and who, what means, and where they keep, +What company, at what expense; and finding, +By this encompassment and drift of question, +That they do know my son, come you more nearer +Than your particular demands will touch it: +Take you, as 'twere, some distant knowledge of him; +As thus, 'I know his father and his friends, +And in part him;--do you mark this, Reynaldo? + +Rey. +Ay, very well, my lord. + +Pol. +'And in part him;--but,' you may say, 'not well: +But if't be he I mean, he's very wild; +Addicted so and so;' and there put on him +What forgeries you please; marry, none so rank +As may dishonour him; take heed of that; +But, sir, such wanton, wild, and usual slips +As are companions noted and most known +To youth and liberty. + +Rey. +As gaming, my lord. + +Pol. +Ay, or drinking, fencing, swearing, quarrelling, +Drabbing:--you may go so far. + +Rey. +My lord, that would dishonour him. + +Pol. +Faith, no; as you may season it in the charge. +You must not put another scandal on him, +That he is open to incontinency; +That's not my meaning: but breathe his faults so quaintly +That they may seem the taints of liberty; +The flash and outbreak of a fiery mind; +A savageness in unreclaimed blood, +Of general assault. + +Rey. +But, my good lord,-- + +Pol. +Wherefore should you do this? + +Rey. +Ay, my lord, +I would know that. + +Pol. +Marry, sir, here's my drift; +And I believe it is a fetch of warrant: +You laying these slight sullies on my son +As 'twere a thing a little soil'd i' the working, +Mark you, +Your party in converse, him you would sound, +Having ever seen in the prenominate crimes +The youth you breathe of guilty, be assur'd +He closes with you in this consequence; +'Good sir,' or so; or 'friend,' or 'gentleman'-- +According to the phrase or the addition +Of man and country. + +Rey. +Very good, my lord. + +Pol. +And then, sir, does he this,--he does--What was I about to say?-- +By the mass, I was about to say something:--Where did I leave? + +Rey. +At 'closes in the consequence,' at 'friend or so,' and +gentleman.' + +Pol. +At--closes in the consequence'--ay, marry! +He closes with you thus:--'I know the gentleman; +I saw him yesterday, or t'other day, +Or then, or then; with such, or such; and, as you say, +There was he gaming; there o'ertook in's rouse; +There falling out at tennis': or perchance, +'I saw him enter such a house of sale,'-- +Videlicet, a brothel,--or so forth.-- +See you now; +Your bait of falsehood takes this carp of truth: +And thus do we of wisdom and of reach, +With windlaces, and with assays of bias, +By indirections find directions out: +So, by my former lecture and advice, +Shall you my son. You have me, have you not? + +Rey. +My lord, I have. + +Pol. +God b' wi' you, fare you well. + +Rey. +Good my lord! + +Pol. +Observe his inclination in yourself. + +Rey. +I shall, my lord. + +Pol. +And let him ply his music. + +Rey. +Well, my lord. + +Pol. +Farewell! + +[Exit Reynaldo.] + +[Enter Ophelia.] + +How now, Ophelia! what's the matter? + +Oph. +Alas, my lord, I have been so affrighted! + +Pol. +With what, i' the name of God? + +Oph. +My lord, as I was sewing in my chamber, +Lord Hamlet,--with his doublet all unbrac'd; +No hat upon his head; his stockings foul'd, +Ungart'red, and down-gyved to his ankle; +Pale as his shirt; his knees knocking each other; +And with a look so piteous in purport +As if he had been loosed out of hell +To speak of horrors,--he comes before me. + +Pol. +Mad for thy love? + +Oph. +My lord, I do not know; +But truly I do fear it. + +Pol. +What said he? + +Oph. +He took me by the wrist, and held me hard; +Then goes he to the length of all his arm; +And with his other hand thus o'er his brow, +He falls to such perusal of my face +As he would draw it. Long stay'd he so; +At last,--a little shaking of mine arm, +And thrice his head thus waving up and down,-- +He rais'd a sigh so piteous and profound +As it did seem to shatter all his bulk +And end his being: that done, he lets me go: +And, with his head over his shoulder turn'd +He seem'd to find his way without his eyes; +For out o' doors he went without their help, +And to the last bended their light on me. + +Pol. +Come, go with me: I will go seek the king. +This is the very ecstasy of love; +Whose violent property fordoes itself, +And leads the will to desperate undertakings, +As oft as any passion under heaven +That does afflict our natures. I am sorry,-- +What, have you given him any hard words of late? + +Oph. +No, my good lord; but, as you did command, +I did repel his letters and denied +His access to me. + +Pol. +That hath made him mad. +I am sorry that with better heed and judgment +I had not quoted him: I fear'd he did but trifle, +And meant to wreck thee; but beshrew my jealousy! +It seems it as proper to our age +To cast beyond ourselves in our opinions +As it is common for the younger sort +To lack discretion. Come, go we to the king: +This must be known; which, being kept close, might move +More grief to hide than hate to utter love. + +[Exeunt.] + + + +Scene II. A room in the Castle. + +[Enter King, Rosencrantz, Guildenstern, and Attendants.] + +King. +Welcome, dear Rosencrantz and Guildenstern! +Moreover that we much did long to see you, +The need we have to use you did provoke +Our hasty sending. Something have you heard +Of Hamlet's transformation; so I call it, +Since nor the exterior nor the inward man +Resembles that it was. What it should be, +More than his father's death, that thus hath put him +So much from the understanding of himself, +I cannot dream of: I entreat you both +That, being of so young days brought up with him, +And since so neighbour'd to his youth and humour, +That you vouchsafe your rest here in our court +Some little time: so by your companies +To draw him on to pleasures, and to gather, +So much as from occasion you may glean, +Whether aught, to us unknown, afflicts him thus, +That, open'd, lies within our remedy. + +Queen. +Good gentlemen, he hath much talk'd of you, +And sure I am two men there are not living +To whom he more adheres. If it will please you +To show us so much gentry and good-will +As to expend your time with us awhile, +For the supply and profit of our hope, +Your visitation shall receive such thanks +As fits a king's remembrance. + +Ros. +Both your majesties +Might, by the sovereign power you have of us, +Put your dread pleasures more into command +Than to entreaty. + +Guil. +We both obey, +And here give up ourselves, in the full bent, +To lay our service freely at your feet, +To be commanded. + +King. +Thanks, Rosencrantz and gentle Guildenstern. + +Queen. +Thanks, Guildenstern and gentle Rosencrantz: +And I beseech you instantly to visit +My too-much-changed son.--Go, some of you, +And bring these gentlemen where Hamlet is. + +Guil. +Heavens make our presence and our practices +Pleasant and helpful to him! + +Queen. +Ay, amen! + +[Exeunt Rosencrantz, Guildenstern, and some Attendants]. + +[Enter Polonius.] + +Pol. +Th' ambassadors from Norway, my good lord, +Are joyfully return'd. + +King. +Thou still hast been the father of good news. + +Pol. +Have I, my lord? Assure you, my good liege, +I hold my duty, as I hold my soul, +Both to my God and to my gracious king: +And I do think,--or else this brain of mine +Hunts not the trail of policy so sure +As it hath us'd to do,--that I have found +The very cause of Hamlet's lunacy. + +King. +O, speak of that; that do I long to hear. + +Pol. +Give first admittance to the ambassadors; +My news shall be the fruit to that great feast. + +King. +Thyself do grace to them, and bring them in. + +[Exit Polonius.] + +He tells me, my sweet queen, he hath found +The head and source of all your son's distemper. + +Queen. +I doubt it is no other but the main,-- +His father's death and our o'erhasty marriage. + +King. +Well, we shall sift him. + +[Enter Polonius, with Voltimand and Cornelius.] + +Welcome, my good friends! +Say, Voltimand, what from our brother Norway? + +Volt. +Most fair return of greetings and desires. +Upon our first, he sent out to suppress +His nephew's levies; which to him appear'd +To be a preparation 'gainst the Polack; +But, better look'd into, he truly found +It was against your highness; whereat griev'd,-- +That so his sickness, age, and impotence +Was falsely borne in hand,--sends out arrests +On Fortinbras; which he, in brief, obeys; +Receives rebuke from Norway; and, in fine, +Makes vow before his uncle never more +To give th' assay of arms against your majesty. +Whereon old Norway, overcome with joy, +Gives him three thousand crowns in annual fee; +And his commission to employ those soldiers, +So levied as before, against the Polack: +With an entreaty, herein further shown, +[Gives a paper.] +That it might please you to give quiet pass +Through your dominions for this enterprise, +On such regards of safety and allowance +As therein are set down. + +King. +It likes us well; +And at our more consider'd time we'll read, +Answer, and think upon this business. +Meantime we thank you for your well-took labour: +Go to your rest; at night we'll feast together: +Most welcome home! + +[Exeunt Voltimand and Cornelius.] + +Pol. +This business is well ended.-- +My liege, and madam,--to expostulate +What majesty should be, what duty is, +Why day is day, night is night, and time is time. +Were nothing but to waste night, day, and time. +Therefore, since brevity is the soul of wit, +And tediousness the limbs and outward flourishes, +I will be brief:--your noble son is mad: +Mad call I it; for to define true madness, +What is't but to be nothing else but mad? +But let that go. + +Queen. +More matter, with less art. + +Pol. +Madam, I swear I use no art at all. +That he is mad, 'tis true: 'tis true 'tis pity; +And pity 'tis 'tis true: a foolish figure; +But farewell it, for I will use no art. +Mad let us grant him then: and now remains +That we find out the cause of this effect; +Or rather say, the cause of this defect, +For this effect defective comes by cause: +Thus it remains, and the remainder thus. +Perpend. +I have a daughter,--have whilst she is mine,-- +Who, in her duty and obedience, mark, +Hath given me this: now gather, and surmise. +[Reads.] +'To the celestial, and my soul's idol, the most beautified +Ophelia,'-- +That's an ill phrase, a vile phrase; 'beautified' is a vile +phrase: but you shall hear. Thus: +[Reads.] +'In her excellent white bosom, these, &c.' + +Queen. +Came this from Hamlet to her? + +Pol. +Good madam, stay awhile; I will be faithful. +[Reads.] + 'Doubt thou the stars are fire; + Doubt that the sun doth move; + Doubt truth to be a liar; + But never doubt I love. +'O dear Ophelia, I am ill at these numbers; I have not art to +reckon my groans: but that I love thee best, O most best, believe +it. Adieu. + 'Thine evermore, most dear lady, whilst this machine is to him, + HAMLET.' +This, in obedience, hath my daughter show'd me; +And more above, hath his solicitings, +As they fell out by time, by means, and place, +All given to mine ear. + +King. +But how hath she +Receiv'd his love? + +Pol. +What do you think of me? + +King. +As of a man faithful and honourable. + +Pol. +I would fain prove so. But what might you think, +When I had seen this hot love on the wing,-- +As I perceiv'd it, I must tell you that, +Before my daughter told me,-- what might you, +Or my dear majesty your queen here, think, +If I had play'd the desk or table-book, +Or given my heart a winking, mute and dumb; +Or look'd upon this love with idle sight;-- +What might you think? No, I went round to work, +And my young mistress thus I did bespeak: +'Lord Hamlet is a prince, out of thy sphere; +This must not be:' and then I precepts gave her, +That she should lock herself from his resort, +Admit no messengers, receive no tokens. +Which done, she took the fruits of my advice; +And he, repulsed,--a short tale to make,-- +Fell into a sadness; then into a fast; +Thence to a watch; thence into a weakness; +Thence to a lightness; and, by this declension, +Into the madness wherein now he raves, +And all we wail for. + +King. +Do you think 'tis this? + +Queen. +It may be, very likely. + +Pol. +Hath there been such a time,--I'd fain know that-- +That I have positively said ''Tis so,' +When it prov'd otherwise? + +King. +Not that I know. + +Pol. +Take this from this, if this be otherwise: +[Points to his head and shoulder.] +If circumstances lead me, I will find +Where truth is hid, though it were hid indeed +Within the centre. + +King. +How may we try it further? + +Pol. +You know sometimes he walks for hours together +Here in the lobby. + +Queen. +So he does indeed. + +Pol. +At such a time I'll loose my daughter to him: +Be you and I behind an arras then; +Mark the encounter: if he love her not, +And he not from his reason fall'n thereon +Let me be no assistant for a state, +But keep a farm and carters. + +King. +We will try it. + +Queen. +But look where sadly the poor wretch comes reading. + +Pol. +Away, I do beseech you, both away +I'll board him presently:--O, give me leave. + +[Exeunt King, Queen, and Attendants.] + +[Enter Hamlet, reading.] + +How does my good Lord Hamlet? + +Ham. +Well, God-a-mercy. + +Pol. +Do you know me, my lord? + +Ham. +Excellent well; you're a fishmonger. + +Pol. +Not I, my lord. + +Ham. +Then I would you were so honest a man. + +Pol. +Honest, my lord! + +Ham. +Ay, sir; to be honest, as this world goes, is to be one man +picked out of ten thousand. + +Pol. +That's very true, my lord. + +Ham. +For if the sun breed maggots in a dead dog, being a god-kissing +carrion,--Have you a daughter? + +Pol. +I have, my lord. + +Ham. +Let her not walk i' the sun: conception is a blessing, but not +as your daughter may conceive:--friend, look to't. + +Pol. +How say you by that?--[Aside.] Still harping on my daughter:--yet +he knew me not at first; he said I was a fishmonger: he is far +gone, far gone: and truly in my youth I suffered much extremity +for love; very near this. I'll speak to him again.--What do you +read, my lord? + +Ham. +Words, words, words. + +Pol. +What is the matter, my lord? + +Ham. +Between who? + +Pol. +I mean, the matter that you read, my lord. + +Ham. +Slanders, sir: for the satirical slave says here that old men +have grey beards; that their faces are wrinkled; their eyes +purging thick amber and plum-tree gum; and that they have a +plentiful lack of wit, together with most weak hams: all which, +sir, though I most powerfully and potently believe, yet I hold it +not honesty to have it thus set down; for you yourself, sir, +should be old as I am, if, like a crab, you could go backward. + +Pol. +[Aside.] Though this be madness, yet there is a method in't.-- +Will you walk out of the air, my lord? + +Ham. +Into my grave? + +Pol. +Indeed, that is out o' the air. [Aside.] How pregnant sometimes +his replies are! a happiness that often madness hits on, which +reason and sanity could not so prosperously be delivered of. I +will leave him and suddenly contrive the means of meeting between +him and my daughter.--My honourable lord, I will most humbly take +my leave of you. + +Ham. +You cannot, sir, take from me anything that I will more +willingly part withal,--except my life, except my life, except my +life. + +Pol. +Fare you well, my lord. + +Ham. +These tedious old fools! + +[Enter Rosencrantz and Guildenstern.] + +Pol. +You go to seek the Lord Hamlet; there he is. + +Ros. +[To Polonius.] God save you, sir! + +[Exit Polonius.] + +Guil. +My honoured lord! + +Ros. +My most dear lord! + +Ham. +My excellent good friends! How dost thou, Guildenstern? Ah, +Rosencrantz! Good lads, how do ye both? + +Ros. +As the indifferent children of the earth. + +Guil. +Happy in that we are not over-happy; +On fortune's cap we are not the very button. + +Ham. +Nor the soles of her shoe? + +Ros. +Neither, my lord. + +Ham. +Then you live about her waist, or in the middle of her +favours? + +Guil. +Faith, her privates we. + +Ham. +In the secret parts of fortune? O, most true; she is a +strumpet. What's the news? + +Ros. +None, my lord, but that the world's grown honest. + +Ham. +Then is doomsday near; but your news is not true. Let me +question more in particular: what have you, my good friends, +deserved at the hands of fortune, that she sends you to prison +hither? + +Guil. +Prison, my lord! + +Ham. +Denmark's a prison. + +Ros. +Then is the world one. + +Ham. +A goodly one; in which there are many confines, wards, and +dungeons, Denmark being one o' the worst. + +Ros. +We think not so, my lord. + +Ham. +Why, then 'tis none to you; for there is nothing either good +or bad but thinking makes it so: to me it is a prison. + +Ros. +Why, then, your ambition makes it one; 'tis too narrow for your +mind. + +Ham. +O God, I could be bounded in a nutshell, and count myself a +king of infinite space, were it not that I have bad dreams. + +Guil. +Which dreams, indeed, are ambition; for the very substance of +the ambitious is merely the shadow of a dream. + +Ham. +A dream itself is but a shadow. + +Ros. +Truly, and I hold ambition of so airy and light a quality that +it is but a shadow's shadow. + +Ham. +Then are our beggars bodies, and our monarchs and outstretch'd +heroes the beggars' shadows. Shall we to the court? for, by my +fay, I cannot reason. + +Ros. and Guild. +We'll wait upon you. + +Ham. +No such matter: I will not sort you with the rest of my +servants; for, to speak to you like an honest man, I am most +dreadfully attended. But, in the beaten way of friendship, what +make you at Elsinore? + +Ros. +To visit you, my lord; no other occasion. + +Ham. +Beggar that I am, I am even poor in thanks; but I thank you: +and sure, dear friends, my thanks are too dear a halfpenny. Were +you not sent for? Is it your own inclining? Is it a free +visitation? Come, deal justly with me: come, come; nay, speak. + +Guil. +What should we say, my lord? + +Ham. +Why, anything--but to the purpose. You were sent for; and +there is a kind of confession in your looks, which your modesties +have not craft enough to colour: I know the good king and queen +have sent for you. + +Ros. +To what end, my lord? + +Ham. +That you must teach me. But let me conjure you, by the rights +of our fellowship, by the consonancy of our youth, by the +obligation of our ever-preserved love, and by what more dear a +better proposer could charge you withal, be even and direct with +me, whether you were sent for or no. + +Ros. +[To Guildenstern.] What say you? + +Ham. +[Aside.] Nay, then, I have an eye of you.--If you love me, hold +not off. + +Guil. +My lord, we were sent for. + +Ham. +I will tell you why; so shall my anticipation prevent your +discovery, and your secrecy to the king and queen moult no +feather. I have of late,--but wherefore I know not,--lost all my +mirth, forgone all custom of exercises; and indeed, it goes so +heavily with my disposition that this goodly frame, the earth, +seems to me a sterile promontory; this most excellent canopy, the +air, look you, this brave o'erhanging firmament, this majestical +roof fretted with golden fire,--why, it appears no other thing +to me than a foul and pestilent congregation of vapours. What a +piece of work is man! How noble in reason! how infinite in +faculties! in form and moving, how express and admirable! in +action how like an angel! in apprehension, how like a god! the +beauty of the world! the paragon of animals! And yet, to me, what +is this quintessence of dust? Man delights not me; no, nor woman +neither, though by your smiling you seem to say so. + +Ros. +My lord, there was no such stuff in my thoughts. + +Ham. +Why did you laugh then, when I said 'Man delights not me'? + +Ros. +To think, my lord, if you delight not in man, what lenten +entertainment the players shall receive from you: we coted them +on the way; and hither are they coming to offer you service. + +Ham. +He that plays the king shall be welcome,--his majesty shall +have tribute of me; the adventurous knight shall use his foil and +target; the lover shall not sigh gratis; the humorous man shall +end his part in peace; the clown shall make those laugh whose +lungs are tickle o' the sere; and the lady shall say her mind +freely, or the blank verse shall halt for't. What players are +they? + +Ros. +Even those you were wont to take such delight in,--the +tragedians of the city. + +Ham. +How chances it they travel? their residence, both in +reputation and profit, was better both ways. + +Ros. +I think their inhibition comes by the means of the late +innovation. + +Ham. +Do they hold the same estimation they did when I was in the +city? Are they so followed? + +Ros. +No, indeed, are they not. + +Ham. +How comes it? do they grow rusty? + +Ros. +Nay, their endeavour keeps in the wonted pace: but there is, +sir, an aery of children, little eyases, that cry out on the top +of question, and are most tyrannically clapped for't: these are +now the fashion; and so berattle the common stages,--so they call +them,--that many wearing rapiers are afraid of goose-quills and +dare scarce come thither. + +Ham. +What, are they children? who maintains 'em? How are they +escoted? Will they pursue the quality no longer than they can +sing? will they not say afterwards, if they should grow +themselves to common players,--as it is most like, if their means +are no better,--their writers do them wrong to make them exclaim +against their own succession? + +Ros. +Faith, there has been much to do on both sides; and the nation +holds it no sin to tarre them to controversy: there was, for +awhile, no money bid for argument unless the poet and the player +went to cuffs in the question. + +Ham. +Is't possible? + +Guil. +O, there has been much throwing about of brains. + +Ham. +Do the boys carry it away? + +Ros. +Ay, that they do, my lord; Hercules and his load too. + +Ham. +It is not very strange; for my uncle is king of Denmark, and +those that would make mouths at him while my father lived, give +twenty, forty, fifty, a hundred ducats a-piece for his picture in +little. 'Sblood, there is something in this more than natural, if +philosophy could find it out. + +[Flourish of trumpets within.] + +Guil. +There are the players. + +Ham. +Gentlemen, you are welcome to Elsinore. Your hands, come: the +appurtenance of welcome is fashion and ceremony: let me comply +with you in this garb; lest my extent to the players, which I +tell you must show fairly outward, should more appear like +entertainment than yours. You are welcome: but my uncle-father +and aunt-mother are deceived. + +Guil. +In what, my dear lord? + +Ham. +I am but mad north-north-west: when the wind is southerly I +know a hawk from a handsaw. + +[Enter Polonius.] + +Pol. +Well be with you, gentlemen! + +Ham. +Hark you, Guildenstern;--and you too;--at each ear a hearer: that +great baby you see there is not yet out of his swaddling clouts. + +Ros. +Happily he's the second time come to them; for they say an old +man is twice a child. + +Ham. +I will prophesy he comes to tell me of the players; mark it.--You +say right, sir: o' Monday morning; 'twas so indeed. + +Pol. +My lord, I have news to tell you. + +Ham. +My lord, I have news to tell you. When Roscius was an actor in +Rome,-- + +Pol. +The actors are come hither, my lord. + +Ham. +Buzz, buzz! + +Pol. +Upon my honour,-- + +Ham. +Then came each actor on his ass,-- + +Pol. +The best actors in the world, either for tragedy, comedy, +history, pastoral, pastoral-comical, historical-pastoral, +tragical-historical, tragical-comical-historical-pastoral, scene +individable, or poem unlimited: Seneca cannot be too heavy nor +Plautus too light. For the law of writ and the liberty, these are +the only men. + +Ham. +O Jephthah, judge of Israel, what a treasure hadst thou! + +Pol. +What treasure had he, my lord? + +Ham. +Why-- + 'One fair daughter, and no more, + The which he loved passing well.' + + +Pol. +[Aside.] Still on my daughter. + +Ham. +Am I not i' the right, old Jephthah? + +Pol. +If you call me Jephthah, my lord, I have a daughter that I +love passing well. + +Ham. +Nay, that follows not. + +Pol. +What follows, then, my lord? + +Ham. +Why-- + 'As by lot, God wot,' +and then, you know, + 'It came to pass, as most like it was--' +The first row of the pious chanson will show you more; for look +where my abridgment comes. + +[Enter four or five Players.] + +You are welcome, masters; welcome, all:--I am glad to see thee +well.--welcome, good friends.--O, my old friend! Thy face is +valanc'd since I saw thee last; comest thou to beard me in +Denmark?--What, my young lady and mistress! By'r lady, your +ladyship is nearer to heaven than when I saw you last, by the +altitude of a chopine. Pray God, your voice, like a piece of +uncurrent gold, be not cracked within the ring.--Masters, you are +all welcome. We'll e'en to't like French falconers, fly at +anything we see: we'll have a speech straight: come, give us a +taste of your quality: come, a passionate speech. + +I Play. +What speech, my lord? + +Ham. +I heard thee speak me a speech once,--but it was never acted; +or if it was, not above once; for the play, I remember, pleased +not the million, 'twas caviare to the general; but it was,--as I +received it, and others, whose judgments in such matters cried in +the top of mine,--an excellent play, well digested in the scenes, +set down with as much modesty as cunning. I remember, one said +there were no sallets in the lines to make the matter savoury, +nor no matter in the phrase that might indite the author of +affectation; but called it an honest method, as wholesome as +sweet, and by very much more handsome than fine. One speech in it +I chiefly loved: 'twas AEneas' tale to Dido, and thereabout of it +especially where he speaks of Priam's slaughter: if it live in +your memory, begin at this line;--let me see, let me see:-- + +The rugged Pyrrhus, like th' Hyrcanian beast,-- + +it is not so:-- it begins with Pyrrhus:-- + + 'The rugged Pyrrhus,--he whose sable arms, + Black as his purpose, did the night resemble + When he lay couched in the ominous horse,-- + Hath now this dread and black complexion smear'd + With heraldry more dismal; head to foot + Now is he total gules; horridly trick'd + With blood of fathers, mothers, daughters, sons, + Bak'd and impasted with the parching streets, + That lend a tyrannous and a damned light + To their vile murders: roasted in wrath and fire, + And thus o'ersized with coagulate gore, + With eyes like carbuncles, the hellish Pyrrhus + Old grandsire Priam seeks.' + +So, proceed you. + +Pol. +'Fore God, my lord, well spoken, with good accent and good +discretion. + +I Play. + Anon he finds him, + Striking too short at Greeks: his antique sword, + Rebellious to his arm, lies where it falls, + Repugnant to command: unequal match'd, + Pyrrhus at Priam drives; in rage strikes wide; + But with the whiff and wind of his fell sword + The unnerved father falls. Then senseless Ilium, + Seeming to feel this blow, with flaming top + Stoops to his base; and with a hideous crash + Takes prisoner Pyrrhus' ear: for lo! his sword, + Which was declining on the milky head + Of reverend Priam, seem'd i' the air to stick: + So, as a painted tyrant, Pyrrhus stood; + And, like a neutral to his will and matter, + Did nothing. + But as we often see, against some storm, + A silence in the heavens, the rack stand still, + The bold winds speechless, and the orb below + As hush as death, anon the dreadful thunder + Doth rend the region; so, after Pyrrhus' pause, + A roused vengeance sets him new a-work; + And never did the Cyclops' hammers fall + On Mars's armour, forg'd for proof eterne, + With less remorse than Pyrrhus' bleeding sword + Now falls on Priam.-- + Out, out, thou strumpet, Fortune! All you gods, + In general synod, take away her power; + Break all the spokes and fellies from her wheel, + And bowl the round nave down the hill of heaven, + As low as to the fiends! + +Pol. +This is too long. + +Ham. +It shall to the barber's, with your beard.--Pr'ythee say on.-- +He's for a jig or a tale of bawdry, or he sleeps:--say on; come +to Hecuba. + +I Play. + But who, O who, had seen the mobled queen,-- + +Ham. +'The mobled queen'? + +Pol. +That's good! 'Mobled queen' is good. + +I Play. + Run barefoot up and down, threatening the flames + With bisson rheum; a clout upon that head + Where late the diadem stood, and for a robe, + About her lank and all o'erteemed loins, + A blanket, in the alarm of fear caught up;-- + Who this had seen, with tongue in venom steep'd, + 'Gainst Fortune's state would treason have pronounc'd: + But if the gods themselves did see her then, + When she saw Pyrrhus make malicious sport + In mincing with his sword her husband's limbs, + The instant burst of clamour that she made,-- + Unless things mortal move them not at all,-- + Would have made milch the burning eyes of heaven, + And passion in the gods. + +Pol. +Look, whether he has not turn'd his colour, and has tears in's +eyes.--Pray you, no more! + +Ham. +'Tis well. I'll have thee speak out the rest of this soon.-- +Good my lord, will you see the players well bestowed? Do you +hear? Let them be well used; for they are the abstracts and brief +chronicles of the time; after your death you were better have a +bad epitaph than their ill report while you live. + +Pol. +My lord, I will use them according to their desert. + +Ham. +Odd's bodikin, man, better: use every man after his +desert, and who should scape whipping? Use them after your own +honour and dignity: the less they deserve, the more merit is in +your bounty. Take them in. + +Pol. +Come, sirs. + +Ham. +Follow him, friends: we'll hear a play to-morrow. + +[Exeunt Polonius with all the Players but the First.] + +Dost thou hear me, old friend? Can you play 'The Murder of +Gonzago'? + +I Play. +Ay, my lord. + +Ham. +We'll ha't to-morrow night. You could, for a need, study a +speech of some dozen or sixteen lines which I would set down and +insert in't? could you not? + +I Play. +Ay, my lord. + +Ham. +Very well.--Follow that lord; and look you mock him not. + +[Exit First Player.] + +--My good friends [to Ros. and Guild.], I'll leave you till +night: you are welcome to Elsinore. + +Ros. +Good my lord! + +[Exeunt Rosencrantz and Guildenstern.] + +Ham. +Ay, so, God b' wi' ye! +Now I am alone. +O, what a rogue and peasant slave am I! +Is it not monstrous that this player here, +But in a fiction, in a dream of passion, +Could force his soul so to his own conceit +That from her working all his visage wan'd; +Tears in his eyes, distraction in's aspect, +A broken voice, and his whole function suiting +With forms to his conceit? And all for nothing! +For Hecuba? +What's Hecuba to him, or he to Hecuba, +That he should weep for her? What would he do, +Had he the motive and the cue for passion +That I have? He would drown the stage with tears +And cleave the general ear with horrid speech; +Make mad the guilty, and appal the free; +Confound the ignorant, and amaze, indeed, +The very faculties of eyes and ears. +Yet I, +A dull and muddy-mettled rascal, peak, +Like John-a-dreams, unpregnant of my cause, +And can say nothing; no, not for a king +Upon whose property and most dear life +A damn'd defeat was made. Am I a coward? +Who calls me villain? breaks my pate across? +Plucks off my beard and blows it in my face? +Tweaks me by the nose? gives me the lie i' the throat +As deep as to the lungs? who does me this, ha? +'Swounds, I should take it: for it cannot be +But I am pigeon-liver'd, and lack gall +To make oppression bitter; or ere this +I should have fatted all the region kites +With this slave's offal: bloody, bawdy villain! +Remorseless, treacherous, lecherous, kindless villain! +O, vengeance! +Why, what an ass am I! This is most brave, +That I, the son of a dear father murder'd, +Prompted to my revenge by heaven and hell, +Must, like a whore, unpack my heart with words +And fall a-cursing like a very drab, +A scullion! +Fie upon't! foh!--About, my brain! I have heard +That guilty creatures, sitting at a play, +Have by the very cunning of the scene +Been struck so to the soul that presently +They have proclaim'd their malefactions; +For murder, though it have no tongue, will speak +With most miraculous organ, I'll have these players +Play something like the murder of my father +Before mine uncle: I'll observe his looks; +I'll tent him to the quick: if he but blench, +I know my course. The spirit that I have seen +May be the devil: and the devil hath power +To assume a pleasing shape; yea, and perhaps +Out of my weakness and my melancholy,-- +As he is very potent with such spirits,-- +Abuses me to damn me: I'll have grounds +More relative than this.--the play's the thing +Wherein I'll catch the conscience of the king. + +[Exit.] + + + + +ACT III. + +Scene I. A room in the Castle. + +[Enter King, Queen, Polonius, Ophelia, Rosencrantz, and +Guildenstern.] + +King. +And can you, by no drift of circumstance, +Get from him why he puts on this confusion, +Grating so harshly all his days of quiet +With turbulent and dangerous lunacy? + +Ros. +He does confess he feels himself distracted, +But from what cause he will by no means speak. + +Guil. +Nor do we find him forward to be sounded, +But, with a crafty madness, keeps aloof +When we would bring him on to some confession +Of his true state. + +Queen. +Did he receive you well? + +Ros. +Most like a gentleman. + +Guil. +But with much forcing of his disposition. + +Ros. +Niggard of question; but, of our demands, +Most free in his reply. + +Queen. +Did you assay him +To any pastime? + +Ros. +Madam, it so fell out that certain players +We o'er-raught on the way: of these we told him, +And there did seem in him a kind of joy +To hear of it: they are about the court, +And, as I think, they have already order +This night to play before him. + +Pol. +'Tis most true; +And he beseech'd me to entreat your majesties +To hear and see the matter. + +King. +With all my heart; and it doth much content me +To hear him so inclin'd.-- +Good gentlemen, give him a further edge, +And drive his purpose on to these delights. + +Ros. +We shall, my lord. + +[Exeunt Rosencrantz and Guildenstern.] + +King. +Sweet Gertrude, leave us too; +For we have closely sent for Hamlet hither, +That he, as 'twere by accident, may here +Affront Ophelia: +Her father and myself,--lawful espials,-- +Will so bestow ourselves that, seeing, unseen, +We may of their encounter frankly judge; +And gather by him, as he is behav'd, +If't be the affliction of his love or no +That thus he suffers for. + +Queen. +I shall obey you:-- +And for your part, Ophelia, I do wish +That your good beauties be the happy cause +Of Hamlet's wildness: so shall I hope your virtues +Will bring him to his wonted way again, +To both your honours. + +Oph. +Madam, I wish it may. + +[Exit Queen.] + +Pol. +Ophelia, walk you here.--Gracious, so please you, +We will bestow ourselves.--[To Ophelia.] Read on this book; +That show of such an exercise may colour +Your loneliness.--We are oft to blame in this,-- +'Tis too much prov'd,--that with devotion's visage +And pious action we do sugar o'er +The Devil himself. + +King. +[Aside.] O, 'tis too true! +How smart a lash that speech doth give my conscience! +The harlot's cheek, beautied with plastering art, +Is not more ugly to the thing that helps it +Than is my deed to my most painted word: +O heavy burden! + +Pol. +I hear him coming: let's withdraw, my lord. + +[Exeunt King and Polonius.] + +[Enter Hamlet.] + +Ham. +To be, or not to be,--that is the question:-- +Whether 'tis nobler in the mind to suffer +The slings and arrows of outrageous fortune +Or to take arms against a sea of troubles, +And by opposing end them?--To die,--to sleep,-- +No more; and by a sleep to say we end +The heartache, and the thousand natural shocks +That flesh is heir to,--'tis a consummation +Devoutly to be wish'd. To die,--to sleep;-- +To sleep! perchance to dream:--ay, there's the rub; +For in that sleep of death what dreams may come, +When we have shuffled off this mortal coil, +Must give us pause: there's the respect +That makes calamity of so long life; +For who would bear the whips and scorns of time, +The oppressor's wrong, the proud man's contumely, +The pangs of despis'd love, the law's delay, +The insolence of office, and the spurns +That patient merit of the unworthy takes, +When he himself might his quietus make +With a bare bodkin? who would these fardels bear, +To grunt and sweat under a weary life, +But that the dread of something after death,-- +The undiscover'd country, from whose bourn +No traveller returns,--puzzles the will, +And makes us rather bear those ills we have +Than fly to others that we know not of? +Thus conscience does make cowards of us all; +And thus the native hue of resolution +Is sicklied o'er with the pale cast of thought; +And enterprises of great pith and moment, +With this regard, their currents turn awry, +And lose the name of action.--Soft you now! +The fair Ophelia!--Nymph, in thy orisons +Be all my sins remember'd. + +Oph. +Good my lord, +How does your honour for this many a day? + +Ham. +I humbly thank you; well, well, well. + +Oph. +My lord, I have remembrances of yours +That I have longed long to re-deliver. +I pray you, now receive them. + +Ham. +No, not I; +I never gave you aught. + +Oph. +My honour'd lord, you know right well you did; +And with them words of so sweet breath compos'd +As made the things more rich; their perfume lost, +Take these again; for to the noble mind +Rich gifts wax poor when givers prove unkind. +There, my lord. + +Ham. +Ha, ha! are you honest? + +Oph. +My lord? + +Ham. +Are you fair? + +Oph. +What means your lordship? + +Ham. +That if you be honest and fair, your honesty should admit no +discourse to your beauty. + +Oph. +Could beauty, my lord, have better commerce than with honesty? + +Ham. +Ay, truly; for the power of beauty will sooner transform +honesty from what it is to a bawd than the force of honesty can +translate beauty into his likeness: this was sometime a paradox, +but now the time gives it proof. I did love you once. + +Oph. +Indeed, my lord, you made me believe so. + +Ham. +You should not have believ'd me; for virtue cannot so +inoculate our old stock but we shall relish of it: I loved you +not. + +Oph. +I was the more deceived. + +Ham. +Get thee to a nunnery: why wouldst thou be a breeder of +sinners? I am myself indifferent honest; but yet I could accuse +me of such things that it were better my mother had not borne me: +I am very proud, revengeful, ambitious; with more offences at my +beck than I have thoughts to put them in, imagination to give +them shape, or time to act them in. What should such fellows as I +do crawling between earth and heaven? We are arrant knaves, all; +believe none of us. Go thy ways to a nunnery. Where's your +father? + +Oph. +At home, my lord. + +Ham. +Let the doors be shut upon him, that he may play the fool +nowhere but in's own house. Farewell. + +Oph. +O, help him, you sweet heavens! + +Ham. +If thou dost marry, I'll give thee this plague for thy dowry,-- +be thou as chaste as ice, as pure as snow, thou shalt not escape +calumny. Get thee to a nunnery, go: farewell. Or, if thou wilt +needs marry, marry a fool; for wise men know well enough what +monsters you make of them. To a nunnery, go; and quickly too. +Farewell. + +Oph. +O heavenly powers, restore him! + +Ham. +I have heard of your paintings too, well enough; God hath +given you one face, and you make yourselves another: you jig, you +amble, and you lisp, and nickname God's creatures, and make your +wantonness your ignorance. Go to, I'll no more on't; it hath made +me mad. I say, we will have no more marriages: those that are +married already, all but one, shall live; the rest shall keep as +they are. To a nunnery, go. + +[Exit.] + +Oph. +O, what a noble mind is here o'erthrown! +The courtier's, scholar's, soldier's, eye, tongue, sword, +The expectancy and rose of the fair state, +The glass of fashion and the mould of form, +The observ'd of all observers,--quite, quite down! +And I, of ladies most deject and wretched +That suck'd the honey of his music vows, +Now see that noble and most sovereign reason, +Like sweet bells jangled, out of tune and harsh; +That unmatch'd form and feature of blown youth +Blasted with ecstasy: O, woe is me, +To have seen what I have seen, see what I see! + +[Re-enter King and Polonius.] + +King. +Love! his affections do not that way tend; +Nor what he spake, though it lack'd form a little, +Was not like madness. There's something in his soul +O'er which his melancholy sits on brood; +And I do doubt the hatch and the disclose +Will be some danger: which for to prevent, +I have in quick determination +Thus set it down:--he shall with speed to England +For the demand of our neglected tribute: +Haply the seas, and countries different, +With variable objects, shall expel +This something-settled matter in his heart; +Whereon his brains still beating puts him thus +From fashion of himself. What think you on't? + +Pol. +It shall do well: but yet do I believe +The origin and commencement of his grief +Sprung from neglected love.--How now, Ophelia! +You need not tell us what Lord Hamlet said; +We heard it all.--My lord, do as you please; +But if you hold it fit, after the play, +Let his queen mother all alone entreat him +To show his grief: let her be round with him; +And I'll be plac'd, so please you, in the ear +Of all their conference. If she find him not, +To England send him; or confine him where +Your wisdom best shall think. + +King. +It shall be so: +Madness in great ones must not unwatch'd go. + +[Exeunt.] + + + +Scene II. A hall in the Castle. + +[Enter Hamlet and certain Players.] + +Ham. +Speak the speech, I pray you, as I pronounced it to you, +trippingly on the tongue: but if you mouth it, as many of your +players do, I had as lief the town crier spoke my lines. Nor do +not saw the air too much with your hand, thus, but use all +gently: for in the very torrent, tempest, and, as I may say, +whirlwind of passion, you must acquire and beget a +temperance that may give it smoothness. O, it offends me to the +soul, to hear a robustious periwig-pated fellow tear a passion to +tatters, to very rags, to split the ears of the groundlings, who, +for the most part, are capable of nothing but inexplicable dumb +shows and noise: I would have such a fellow whipped for o'erdoing +Termagant; it out-herods Herod: pray you avoid it. + +I Player. +I warrant your honour. + +Ham. +Be not too tame neither; but let your own discretion be your +tutor: suit the action to the word, the word to the action; with +this special observance, that you o'erstep not the modesty of +nature: for anything so overdone is from the purpose of playing, +whose end, both at the first and now, was and is, to hold, as +'twere, the mirror up to nature; to show virtue her own image, +scorn her own image, and the very age and body of the time his +form and pressure. Now, this overdone, or come tardy off, though +it make the unskilful laugh, cannot but make the judicious +grieve; the censure of the which one must in your allowance, +o'erweigh a whole theatre of others. O, there be players that I +have seen play,--and heard others praise, and that highly,--not +to speak it profanely, that, neither having the accent of +Christians, nor the gait of Christian, pagan, nor man, have so +strutted and bellowed that I have thought some of nature's +journeymen had made men, and not made them well, they imitated +humanity so abominably. + +I Player. +I hope we have reform'd that indifferently with us, sir. + +Ham. +O, reform it altogether. And let those that play your clowns +speak no more than is set down for them: for there be of them +that will themselves laugh, to set on some quantity of barren +spectators to laugh too, though in the meantime some necessary +question of the play be then to be considered: that's villanous +and shows a most pitiful ambition in the fool that uses it. Go +make you ready. + +[Exeunt Players.] + +[Enter Polonius, Rosencrantz, and Guildenstern.] + +How now, my lord! will the king hear this piece of work? + +Pol. +And the queen too, and that presently. + +Ham. +Bid the players make haste. + +[Exit Polonius.] + +Will you two help to hasten them? + +Ros. and Guil. +We will, my lord. + +[Exeunt Ros. and Guil.] + +Ham. +What, ho, Horatio! + +[Enter Horatio.] + +Hor. +Here, sweet lord, at your service. + +Ham. +Horatio, thou art e'en as just a man +As e'er my conversation cop'd withal. + +Hor. +O, my dear lord,-- + +Ham. +Nay, do not think I flatter; +For what advancement may I hope from thee, +That no revenue hast, but thy good spirits, +To feed and clothe thee? Why should the poor be flatter'd? +No, let the candied tongue lick absurd pomp; +And crook the pregnant hinges of the knee +Where thrift may follow fawning. Dost thou hear? +Since my dear soul was mistress of her choice, +And could of men distinguish, her election +Hath seal'd thee for herself: for thou hast been +As one, in suffering all, that suffers nothing; +A man that Fortune's buffets and rewards +Hast ta'en with equal thanks: and bles'd are those +Whose blood and judgment are so well commingled +That they are not a pipe for Fortune's finger +To sound what stop she please. Give me that man +That is not passion's slave, and I will wear him +In my heart's core, ay, in my heart of heart, +As I do thee.--Something too much of this.-- +There is a play to-night before the king; +One scene of it comes near the circumstance, +Which I have told thee, of my father's death: +I pr'ythee, when thou see'st that act a-foot, +Even with the very comment of thy soul +Observe mine uncle: if his occulted guilt +Do not itself unkennel in one speech, +It is a damned ghost that we have seen; +And my imaginations are as foul +As Vulcan's stithy. Give him heedful note; +For I mine eyes will rivet to his face; +And, after, we will both our judgments join +In censure of his seeming. + +Hor. +Well, my lord: +If he steal aught the whilst this play is playing, +And scape detecting, I will pay the theft. + +Ham. +They are coming to the play. I must be idle: +Get you a place. + +[Danish march. A flourish. Enter King, Queen, Polonius, Ophelia, +Rosencrantz, Guildenstern, and others.] + +King. +How fares our cousin Hamlet? + +Ham. +Excellent, i' faith; of the chameleon's dish: I eat the air, +promise-crammed: you cannot feed capons so. + +King. +I have nothing with this answer, Hamlet; these words are not +mine. + +Ham. +No, nor mine now. My lord, you play'd once i' the university, you +say? [To Polonius.] + +Pol. +That did I, my lord, and was accounted a good actor. + +Ham. +What did you enact? + +Pol. +I did enact Julius Caesar; I was kill'd i' the Capitol; Brutus +killed me. + +Ham. +It was a brute part of him to kill so capital a calf there.--Be +the players ready? + +Ros. +Ay, my lord; they stay upon your patience. + +Queen. +Come hither, my dear Hamlet, sit by me. + +Ham. +No, good mother, here's metal more attractive. + +Pol. +O, ho! do you mark that? [To the King.] + +Ham. +Lady, shall I lie in your lap? +[Lying down at Ophelia's feet.] + +Oph. +No, my lord. + +Ham. +I mean, my head upon your lap? + +Oph. +Ay, my lord. + +Ham. +Do you think I meant country matters? + +Oph. +I think nothing, my lord. + +Ham. +That's a fair thought to lie between maids' legs. + +Oph. +What is, my lord? + +Ham. +Nothing. + +Oph. +You are merry, my lord. + +Ham. +Who, I? + +Oph. +Ay, my lord. + +Ham. +O, your only jig-maker! What should a man do but be merry? +for look you how cheerfully my mother looks, and my father died +within 's two hours. + +Oph. +Nay, 'tis twice two months, my lord. + +Ham. +So long? Nay then, let the devil wear black, for I'll have a +suit of sables. O heavens! die two months ago, and not forgotten +yet? Then there's hope a great man's memory may outlive his life +half a year: but, by'r lady, he must build churches then; or else +shall he suffer not thinking on, with the hobby-horse, whose +epitaph is 'For, O, for, O, the hobby-horse is forgot!' + +[Trumpets sound. The dumb show enters.] + +[Enter a King and a Queen very lovingly; the Queen embracing +him and he her. She kneels, and makes show of protestation +unto him. He takes her up, and declines his head upon her +neck: lays him down upon a bank of flowers: she, seeing +him asleep, leaves him. Anon comes in a fellow, takes off his +crown, kisses it, pours poison in the king's ears, and exit. The +Queen returns, finds the King dead, and makes passionate action. +The Poisoner with some three or four Mutes, comes in again, +seeming to lament with her. The dead body is carried away. The +Poisoner wooes the Queen with gifts; she seems loth and unwilling +awhile, but in the end accepts his love.] + +[Exeunt.] + +Oph. +What means this, my lord? + +Ham. +Marry, this is miching mallecho; it means mischief. + +Oph. +Belike this show imports the argument of the play. + +[Enter Prologue.] + +Ham. +We shall know by this fellow: the players cannot keep counsel; +they'll tell all. + +Oph. +Will he tell us what this show meant? + +Ham. +Ay, or any show that you'll show him: be not you ashamed to +show, he'll not shame to tell you what it means. + +Oph. +You are naught, you are naught: I'll mark the play. + +Pro. + For us, and for our tragedy, + Here stooping to your clemency, + We beg your hearing patiently. + +Ham. +Is this a prologue, or the posy of a ring? + +Oph. +'Tis brief, my lord. + +Ham. +As woman's love. + +[Enter a King and a Queen.] + +P. King. +Full thirty times hath Phoebus' cart gone round +Neptune's salt wash and Tellus' orbed ground, +And thirty dozen moons with borrow'd sheen +About the world have times twelve thirties been, +Since love our hearts, and Hymen did our hands, +Unite commutual in most sacred bands. + +P. Queen. +So many journeys may the sun and moon +Make us again count o'er ere love be done! +But, woe is me, you are so sick of late, +So far from cheer and from your former state. +That I distrust you. Yet, though I distrust, +Discomfort you, my lord, it nothing must: +For women's fear and love holds quantity; +In neither aught, or in extremity. +Now, what my love is, proof hath made you know; +And as my love is siz'd, my fear is so: +Where love is great, the littlest doubts are fear; +Where little fears grow great, great love grows there. + +P. King. +Faith, I must leave thee, love, and shortly too; +My operant powers their functions leave to do: +And thou shalt live in this fair world behind, +Honour'd, belov'd, and haply one as kind +For husband shalt thou,-- + +P. Queen. +O, confound the rest! +Such love must needs be treason in my breast: +In second husband let me be accurst! +None wed the second but who kill'd the first. + +Ham. +[Aside.] Wormwood, wormwood! + +P. Queen. +The instances that second marriage move +Are base respects of thrift, but none of love. +A second time I kill my husband dead +When second husband kisses me in bed. + +P. King. +I do believe you think what now you speak; +But what we do determine oft we break. +Purpose is but the slave to memory; +Of violent birth, but poor validity: +Which now, like fruit unripe, sticks on the tree; +But fall unshaken when they mellow be. +Most necessary 'tis that we forget +To pay ourselves what to ourselves is debt: +What to ourselves in passion we propose, +The passion ending, doth the purpose lose. +The violence of either grief or joy +Their own enactures with themselves destroy: +Where joy most revels, grief doth most lament; +Grief joys, joy grieves, on slender accident. +This world is not for aye; nor 'tis not strange +That even our loves should with our fortunes change; +For 'tis a question left us yet to prove, +Whether love lead fortune, or else fortune love. +The great man down, you mark his favourite flies, +The poor advanc'd makes friends of enemies; +And hitherto doth love on fortune tend: +For who not needs shall never lack a friend; +And who in want a hollow friend doth try, +Directly seasons him his enemy. +But, orderly to end where I begun,-- +Our wills and fates do so contrary run +That our devices still are overthrown; +Our thoughts are ours, their ends none of our own: +So think thou wilt no second husband wed; +But die thy thoughts when thy first lord is dead. + +P. Queen. +Nor earth to me give food, nor heaven light! +Sport and repose lock from me day and night! +To desperation turn my trust and hope! +An anchor's cheer in prison be my scope! +Each opposite that blanks the face of joy +Meet what I would have well, and it destroy! +Both here and hence pursue me lasting strife, +If, once a widow, ever I be wife! + +Ham. +If she should break it now! [To Ophelia.] + +P. King. +'Tis deeply sworn. Sweet, leave me here awhile; +My spirits grow dull, and fain I would beguile +The tedious day with sleep. +[Sleeps.] + +P. Queen. +Sleep rock thy brain, +And never come mischance between us twain! + +[Exit.] + +Ham. +Madam, how like you this play? + +Queen. +The lady protests too much, methinks. + +Ham. +O, but she'll keep her word. + +King. +Have you heard the argument? Is there no offence in't? + +Ham. +No, no! They do but jest, poison in jest; no offence i' the +world. + +King. +What do you call the play? + +Ham. +The Mouse-trap. Marry, how? Tropically. This play is the +image of a murder done in Vienna: Gonzago is the duke's name; +his wife, Baptista: you shall see anon; 'tis a knavish piece of +work: but what o' that? your majesty, and we that have free +souls, it touches us not: let the gall'd jade wince; our withers +are unwrung. + +[Enter Lucianus.] + +This is one Lucianus, nephew to the King. + +Oph. +You are a good chorus, my lord. + +Ham. +I could interpret between you and your love, if I could see +the puppets dallying. + +Oph. +You are keen, my lord, you are keen. + +Ham. +It would cost you a groaning to take off my edge. + +Oph. +Still better, and worse. + +Ham. +So you must take your husbands.--Begin, murderer; pox, leave +thy damnable faces, and begin. Come:--'The croaking raven doth +bellow for revenge.' + +Luc. +Thoughts black, hands apt, drugs fit, and time agreeing; +Confederate season, else no creature seeing; +Thou mixture rank, of midnight weeds collected, +With Hecate's ban thrice blasted, thrice infected, +Thy natural magic and dire property +On wholesome life usurp immediately. + +[Pours the poison into the sleeper's ears.] + +Ham. +He poisons him i' the garden for's estate. His name's Gonzago: +The story is extant, and written in very choice Italian; you +shall see anon how the murderer gets the love of Gonzago's wife. + +Oph. +The King rises. + +Ham. +What, frighted with false fire! + +Queen. +How fares my lord? + +Pol. +Give o'er the play. + +King. +Give me some light:--away! + +All. +Lights, lights, lights! + +[Exeunt all but Hamlet and Horatio.] + +Ham. + Why, let the strucken deer go weep, + The hart ungalled play; + For some must watch, while some must sleep: + So runs the world away.-- +Would not this, sir, and a forest of feathers--if the rest of my +fortunes turn Turk with me,--with two Provincial roses on my +razed shoes, get me a fellowship in a cry of players, sir? + +Hor. +Half a share. + +Ham. + A whole one, I. + For thou dost know, O Damon dear, + This realm dismantled was + Of Jove himself; and now reigns here + A very, very--pajock. + +Hor. +You might have rhymed. + +Ham. +O good Horatio, I'll take the ghost's word for a thousand +pound! Didst perceive? + +Hor. +Very well, my lord. + +Ham. +Upon the talk of the poisoning?-- + +Hor. +I did very well note him. + +Ham. +Ah, ha!--Come, some music! Come, the recorders!-- + For if the king like not the comedy, + Why then, belike he likes it not, perdy. +Come, some music! + +[Enter Rosencrantz and Guildenstern.] + +Guil. +Good my lord, vouchsafe me a word with you. + +Ham. +Sir, a whole history. + +Guil. +The king, sir-- + +Ham. +Ay, sir, what of him? + +Guil. +Is, in his retirement, marvellous distempered. + +Ham. +With drink, sir? + +Guil. +No, my lord; rather with choler. + +Ham. +Your wisdom should show itself more richer to signify this to +the doctor; for me to put him to his purgation would perhaps +plunge him into far more choler. + +Guil. +Good my lord, put your discourse into some frame, and start +not so wildly from my affair. + +Ham. +I am tame, sir:--pronounce. + +Guil. +The queen, your mother, in most great affliction of spirit, +hath sent me to you. + +Ham. +You are welcome. + +Guil. +Nay, good my lord, this courtesy is not of the right breed. +If it shall please you to make me a wholesome answer, I will do +your mother's commandment: if not, your pardon and my return +shall be the end of my business. + +Ham. +Sir, I cannot. + +Guil. +What, my lord? + +Ham. +Make you a wholesome answer; my wit's diseased: but, sir, such +answer as I can make, you shall command; or rather, as you say, +my mother: therefore no more, but to the matter: my mother, you +say,-- + +Ros. +Then thus she says: your behaviour hath struck her into +amazement and admiration. + +Ham. +O wonderful son, that can so stonish a mother!--But is there no +sequel at the heels of this mother's admiration? + +Ros. +She desires to speak with you in her closet ere you go to bed. + +Ham. +We shall obey, were she ten times our mother. Have you any +further trade with us? + +Ros. +My lord, you once did love me. + +Ham. +And so I do still, by these pickers and stealers. + +Ros. +Good my lord, what is your cause of distemper? you do, surely, +bar the door upon your own liberty if you deny your griefs to +your friend. + +Ham. +Sir, I lack advancement. + +Ros. +How can that be, when you have the voice of the king himself +for your succession in Denmark? + +Ham. +Ay, sir, but 'While the grass grows'--the proverb is something +musty. + +[Re-enter the Players, with recorders.] + +O, the recorders:--let me see one.--To withdraw with you:--why do +you go about to recover the wind of me, as if you would drive me +into a toil? + +Guil. +O my lord, if my duty be too bold, my love is too unmannerly. + +Ham. +I do not well understand that. Will you play upon this pipe? + +Guil. +My lord, I cannot. + +Ham. +I pray you. + +Guil. +Believe me, I cannot. + +Ham. +I do beseech you. + +Guil. +I know, no touch of it, my lord. + +Ham. +'Tis as easy as lying: govern these ventages with your +finger and thumb, give it breath with your mouth, and it will +discourse most eloquent music. Look you, these are the stops. + +Guil. +But these cannot I command to any utterance of harmony; I +have not the skill. + +Ham. +Why, look you now, how unworthy a thing you make of me! You +would play upon me; you would seem to know my stops; you would +pluck out the heart of my mystery; you would sound me from my +lowest note to the top of my compass; and there is much music, +excellent voice, in this little organ, yet cannot you make it +speak. 'Sblood, do you think I am easier to be played on than a +pipe? Call me what instrument you will, though you can fret me, +you cannot play upon me. + +[Enter Polonius.] + +God bless you, sir! + +Pol. +My lord, the queen would speak with you, and presently. + +Ham. +Do you see yonder cloud that's almost in shape of a camel? + +Pol. +By the mass, and 'tis like a camel indeed. + +Ham. +Methinks it is like a weasel. + +Pol. +It is backed like a weasel. + +Ham. +Or like a whale. + +Pol. +Very like a whale. + +Ham. +Then will I come to my mother by and by.--They fool me to the +top of my bent.--I will come by and by. + +Pol. +I will say so. + +[Exit.] + +Ham. +By-and-by is easily said. + +[Exit Polonius.] + +--Leave me, friends. + +[Exeunt Ros, Guil., Hor., and Players.] + +'Tis now the very witching time of night, +When churchyards yawn, and hell itself breathes out +Contagion to this world: now could I drink hot blood, +And do such bitter business as the day +Would quake to look on. Soft! now to my mother.-- +O heart, lose not thy nature; let not ever +The soul of Nero enter this firm bosom: +Let me be cruel, not unnatural; +I will speak daggers to her, but use none; +My tongue and soul in this be hypocrites,-- +How in my words somever she be shent, +To give them seals never, my soul, consent! + +[Exit.] + + + +Scene III. A room in the Castle. + +[Enter King, Rosencrantz, and Guildenstern.] + +King. +I like him not; nor stands it safe with us +To let his madness range. Therefore prepare you; +I your commission will forthwith dispatch, +And he to England shall along with you: +The terms of our estate may not endure +Hazard so near us as doth hourly grow +Out of his lunacies. + +Guil. +We will ourselves provide: +Most holy and religious fear it is +To keep those many many bodies safe +That live and feed upon your majesty. + +Ros. +The single and peculiar life is bound, +With all the strength and armour of the mind, +To keep itself from 'noyance; but much more +That spirit upon whose weal depend and rest +The lives of many. The cease of majesty +Dies not alone; but like a gulf doth draw +What's near it with it: it is a massy wheel, +Fix'd on the summit of the highest mount, +To whose huge spokes ten thousand lesser things +Are mortis'd and adjoin'd; which, when it falls, +Each small annexment, petty consequence, +Attends the boisterous ruin. Never alone +Did the king sigh, but with a general groan. + +King. +Arm you, I pray you, to this speedy voyage; +For we will fetters put upon this fear, +Which now goes too free-footed. + +Ros and Guil. +We will haste us. + +[Exeunt Ros. and Guil.] + +[Enter Polonius.] + +Pol. +My lord, he's going to his mother's closet: +Behind the arras I'll convey myself +To hear the process; I'll warrant she'll tax him home: +And, as you said, and wisely was it said, +'Tis meet that some more audience than a mother, +Since nature makes them partial, should o'erhear +The speech, of vantage. Fare you well, my liege: +I'll call upon you ere you go to bed, +And tell you what I know. + +King. +Thanks, dear my lord. + +[Exit Polonius.] + +O, my offence is rank, it smells to heaven; +It hath the primal eldest curse upon't,-- +A brother's murder!--Pray can I not, +Though inclination be as sharp as will: +My stronger guilt defeats my strong intent; +And, like a man to double business bound, +I stand in pause where I shall first begin, +And both neglect. What if this cursed hand +Were thicker than itself with brother's blood,-- +Is there not rain enough in the sweet heavens +To wash it white as snow? Whereto serves mercy +But to confront the visage of offence? +And what's in prayer but this twofold force,-- +To be forestalled ere we come to fall, +Or pardon'd being down? Then I'll look up; +My fault is past. But, O, what form of prayer +Can serve my turn? Forgive me my foul murder!-- +That cannot be; since I am still possess'd +Of those effects for which I did the murder,-- +My crown, mine own ambition, and my queen. +May one be pardon'd and retain the offence? +In the corrupted currents of this world +Offence's gilded hand may shove by justice; +And oft 'tis seen the wicked prize itself +Buys out the law; but 'tis not so above; +There is no shuffling;--there the action lies +In his true nature; and we ourselves compell'd, +Even to the teeth and forehead of our faults, +To give in evidence. What then? what rests? +Try what repentance can: what can it not? +Yet what can it when one cannot repent? +O wretched state! O bosom black as death! +O limed soul, that, struggling to be free, +Art more engag'd! Help, angels! Make assay: +Bow, stubborn knees; and, heart, with strings of steel, +Be soft as sinews of the new-born babe! +All may be well. + +[Retires and kneels.] + +[Enter Hamlet.] + +Ham. +Now might I do it pat, now he is praying; +And now I'll do't;--and so he goes to heaven; +And so am I reveng'd.--that would be scann'd: +A villain kills my father; and for that, +I, his sole son, do this same villain send +To heaven. +O, this is hire and salary, not revenge. +He took my father grossly, full of bread; +With all his crimes broad blown, as flush as May; +And how his audit stands, who knows save heaven? +But in our circumstance and course of thought, +'Tis heavy with him: and am I, then, reveng'd, +To take him in the purging of his soul, +When he is fit and season'd for his passage? +No. +Up, sword, and know thou a more horrid hent: +When he is drunk asleep; or in his rage; +Or in the incestuous pleasure of his bed; +At gaming, swearing; or about some act +That has no relish of salvation in't;-- +Then trip him, that his heels may kick at heaven; +And that his soul may be as damn'd and black +As hell, whereto it goes. My mother stays: +This physic but prolongs thy sickly days. + +[Exit.] + +[The King rises and advances.] + +King. +My words fly up, my thoughts remain below: +Words without thoughts never to heaven go. + +[Exit.] + + + +Scene IV. Another room in the castle. + +[Enter Queen and Polonius.] + +Pol. +He will come straight. Look you lay home to him: +Tell him his pranks have been too broad to bear with, +And that your grace hath screen'd and stood between +Much heat and him. I'll silence me e'en here. +Pray you, be round with him. + +Ham. +[Within.] Mother, mother, mother! + +Queen. +I'll warrant you: +Fear me not:--withdraw; I hear him coming. + +[Polonius goes behind the arras.] + +[Enter Hamlet.] + +Ham. +Now, mother, what's the matter? + +Queen. +Hamlet, thou hast thy father much offended. + +Ham. +Mother, you have my father much offended. + +Queen. +Come, come, you answer with an idle tongue. + +Ham. +Go, go, you question with a wicked tongue. + +Queen. +Why, how now, Hamlet! + +Ham. +What's the matter now? + +Queen. +Have you forgot me? + +Ham. +No, by the rood, not so: +You are the Queen, your husband's brother's wife, +And,--would it were not so!--you are my mother. + +Queen. +Nay, then, I'll set those to you that can speak. + +Ham. +Come, come, and sit you down; you shall not budge; +You go not till I set you up a glass +Where you may see the inmost part of you. + +Queen. +What wilt thou do? thou wilt not murder me?-- +Help, help, ho! + +Pol. +[Behind.] What, ho! help, help, help! + +Ham. +How now? a rat? [Draws.] +Dead for a ducat, dead! + +[Makes a pass through the arras.] + +Pol. +[Behind.] O, I am slain! + +[Falls and dies.] + +Queen. +O me, what hast thou done? + +Ham. +Nay, I know not: is it the king? + +[Draws forth Polonius.] + +Queen. +O, what a rash and bloody deed is this! + +Ham. +A bloody deed!--almost as bad, good mother, +As kill a king and marry with his brother. + +Queen. +As kill a king! + +Ham. +Ay, lady, 'twas my word.-- +Thou wretched, rash, intruding fool, farewell! +[To Polonius.] +I took thee for thy better: take thy fortune; +Thou find'st to be too busy is some danger.-- +Leave wringing of your hands: peace! sit you down, +And let me wring your heart: for so I shall, +If it be made of penetrable stuff; +If damned custom have not braz'd it so +That it is proof and bulwark against sense. + +Queen. +What have I done, that thou dar'st wag thy tongue +In noise so rude against me? + +Ham. +Such an act +That blurs the grace and blush of modesty; +Calls virtue hypocrite; takes off the rose +From the fair forehead of an innocent love, +And sets a blister there; makes marriage-vows +As false as dicers' oaths: O, such a deed +As from the body of contraction plucks +The very soul, and sweet religion makes +A rhapsody of words: heaven's face doth glow; +Yea, this solidity and compound mass, +With tristful visage, as against the doom, +Is thought-sick at the act. + +Queen. +Ah me, what act, +That roars so loud, and thunders in the index? + +Ham. +Look here upon this picture, and on this,-- +The counterfeit presentment of two brothers. +See what a grace was seated on this brow; +Hyperion's curls; the front of Jove himself; +An eye like Mars, to threaten and command; +A station like the herald Mercury +New lighted on a heaven-kissing hill: +A combination and a form, indeed, +Where every god did seem to set his seal, +To give the world assurance of a man; +This was your husband.--Look you now what follows: +Here is your husband, like a milldew'd ear +Blasting his wholesome brother. Have you eyes? +Could you on this fair mountain leave to feed, +And batten on this moor? Ha! have you eyes? +You cannot call it love; for at your age +The hey-day in the blood is tame, it's humble, +And waits upon the judgment: and what judgment +Would step from this to this? Sense, sure, you have, +Else could you not have motion: but sure that sense +Is apoplex'd; for madness would not err; +Nor sense to ecstacy was ne'er so thrall'd +But it reserv'd some quantity of choice +To serve in such a difference. What devil was't +That thus hath cozen'd you at hoodman-blind? +Eyes without feeling, feeling without sight, +Ears without hands or eyes, smelling sans all, +Or but a sickly part of one true sense +Could not so mope. +O shame! where is thy blush? Rebellious hell, +If thou canst mutine in a matron's bones, +To flaming youth let virtue be as wax, +And melt in her own fire: proclaim no shame +When the compulsive ardour gives the charge, +Since frost itself as actively doth burn, +And reason panders will. + +Queen. +O Hamlet, speak no more: +Thou turn'st mine eyes into my very soul; +And there I see such black and grained spots +As will not leave their tinct. + +Ham. +Nay, but to live +In the rank sweat of an enseamed bed, +Stew'd in corruption, honeying and making love +Over the nasty sty,-- + +Queen. +O, speak to me no more; +These words like daggers enter in mine ears; +No more, sweet Hamlet. + +Ham. +A murderer and a villain; +A slave that is not twentieth part the tithe +Of your precedent lord; a vice of kings; +A cutpurse of the empire and the rule, +That from a shelf the precious diadem stole +And put it in his pocket! + +Queen. +No more. + +Ham. +A king of shreds and patches!-- + +[Enter Ghost.] + +Save me and hover o'er me with your wings, +You heavenly guards!--What would your gracious figure? + +Queen. +Alas, he's mad! + +Ham. +Do you not come your tardy son to chide, +That, laps'd in time and passion, lets go by +The important acting of your dread command? +O, say! + +Ghost. +Do not forget. This visitation +Is but to whet thy almost blunted purpose. +But, look, amazement on thy mother sits: +O, step between her and her fighting soul,-- +Conceit in weakest bodies strongest works,-- +Speak to her, Hamlet. + +Ham. +How is it with you, lady? + +Queen. +Alas, how is't with you, +That you do bend your eye on vacancy, +And with the incorporal air do hold discourse? +Forth at your eyes your spirits wildly peep; +And, as the sleeping soldiers in the alarm, +Your bedded hairs, like life in excrements, +Start up and stand an end. O gentle son, +Upon the heat and flame of thy distemper +Sprinkle cool patience! Whereon do you look? + +Ham. +On him, on him! Look you how pale he glares! +His form and cause conjoin'd, preaching to stones, +Would make them capable.--Do not look upon me; +Lest with this piteous action you convert +My stern effects: then what I have to do +Will want true colour; tears perchance for blood. + +Queen. +To whom do you speak this? + +Ham. +Do you see nothing there? + +Queen. +Nothing at all; yet all that is I see. + +Ham. +Nor did you nothing hear? + +Queen. +No, nothing but ourselves. + +Ham. +Why, look you there! look how it steals away! +My father, in his habit as he liv'd! +Look, where he goes, even now out at the portal! + +[Exit Ghost.] + +Queen. +This is the very coinage of your brain: +This bodiless creation ecstasy +Is very cunning in. + +Ham. +Ecstasy! +My pulse, as yours, doth temperately keep time, +And makes as healthful music: it is not madness +That I have utter'd: bring me to the test, +And I the matter will re-word; which madness +Would gambol from. Mother, for love of grace, +Lay not that flattering unction to your soul +That not your trespass, but my madness speaks: +It will but skin and film the ulcerous place, +Whilst rank corruption, mining all within, +Infects unseen. Confess yourself to heaven; +Repent what's past; avoid what is to come; +And do not spread the compost on the weeds, +To make them ranker. Forgive me this my virtue; +For in the fatness of these pursy times +Virtue itself of vice must pardon beg, +Yea, curb and woo for leave to do him good. + +Queen. +O Hamlet, thou hast cleft my heart in twain. + +Ham. +O, throw away the worser part of it, +And live the purer with the other half. +Good night: but go not to mine uncle's bed; +Assume a virtue, if you have it not. +That monster custom, who all sense doth eat, +Of habits evil, is angel yet in this,-- +That to the use of actions fair and good +He likewise gives a frock or livery +That aptly is put on. Refrain to-night; +And that shall lend a kind of easiness +To the next abstinence: the next more easy; +For use almost can change the stamp of nature, +And either curb the devil, or throw him out +With wondrous potency. Once more, good-night: +And when you are desirous to be bles'd, +I'll blessing beg of you.--For this same lord +[Pointing to Polonius.] +I do repent; but heaven hath pleas'd it so, +To punish me with this, and this with me, +That I must be their scourge and minister. +I will bestow him, and will answer well +The death I gave him. So again, good-night.-- +I must be cruel, only to be kind: +Thus bad begins, and worse remains behind.-- +One word more, good lady. + +Queen. +What shall I do? + +Ham. +Not this, by no means, that I bid you do: +Let the bloat king tempt you again to bed; +Pinch wanton on your cheek; call you his mouse; +And let him, for a pair of reechy kisses, +Or paddling in your neck with his damn'd fingers, +Make you to ravel all this matter out, +That I essentially am not in madness, +But mad in craft. 'Twere good you let him know; +For who that's but a queen, fair, sober, wise, +Would from a paddock, from a bat, a gib, +Such dear concernings hide? who would do so? +No, in despite of sense and secrecy, +Unpeg the basket on the house's top, +Let the birds fly, and, like the famous ape, +To try conclusions, in the basket creep +And break your own neck down. + +Queen. +Be thou assur'd, if words be made of breath, +And breath of life, I have no life to breathe +What thou hast said to me. + +Ham. +I must to England; you know that? + +Queen. +Alack, +I had forgot: 'tis so concluded on. + +Ham. +There's letters seal'd: and my two schoolfellows,-- +Whom I will trust as I will adders fang'd,-- +They bear the mandate; they must sweep my way +And marshal me to knavery. Let it work; +For 'tis the sport to have the enginer +Hoist with his own petard: and 't shall go hard +But I will delve one yard below their mines +And blow them at the moon: O, 'tis most sweet, +When in one line two crafts directly meet.-- +This man shall set me packing: +I'll lug the guts into the neighbour room.-- +Mother, good-night.--Indeed, this counsellor +Is now most still, most secret, and most grave, +Who was in life a foolish peating knave. +Come, sir, to draw toward an end with you:-- +Good night, mother. + +[Exeunt severally; Hamlet, dragging out Polonius.] + + + +ACT IV. + +Scene I. A room in the Castle. + +[Enter King, Queen, Rosencrantz and Guildenstern.] + +King. +There's matter in these sighs. These profound heaves +You must translate: 'tis fit we understand them. +Where is your son? + +Queen. +Bestow this place on us a little while. + +[To Rosencrantz and Guildenstern, who go out.] + +Ah, my good lord, what have I seen to-night! + +King. +What, Gertrude? How does Hamlet? + +Queen. +Mad as the sea and wind, when both contend +Which is the mightier: in his lawless fit +Behind the arras hearing something stir, +Whips out his rapier, cries 'A rat, a rat!' +And in this brainish apprehension, kills +The unseen good old man. + +King. +O heavy deed! +It had been so with us, had we been there: +His liberty is full of threats to all; +To you yourself, to us, to every one. +Alas, how shall this bloody deed be answer'd? +It will be laid to us, whose providence +Should have kept short, restrain'd, and out of haunt +This mad young man. But so much was our love +We would not understand what was most fit; +But, like the owner of a foul disease, +To keep it from divulging, let it feed +Even on the pith of life. Where is he gone? + +Queen. +To draw apart the body he hath kill'd: +O'er whom his very madness, like some ore +Among a mineral of metals base, +Shows itself pure: he weeps for what is done. + +King. +O Gertrude, come away! +The sun no sooner shall the mountains touch +But we will ship him hence: and this vile deed +We must with all our majesty and skill +Both countenance and excuse.--Ho, Guildenstern! + +[Re-enter Rosencrantz and Guildenstern.] + +Friends both, go join you with some further aid: +Hamlet in madness hath Polonius slain, +And from his mother's closet hath he dragg'd him: +Go seek him out; speak fair, and bring the body +Into the chapel. I pray you, haste in this. + +[Exeunt Rosencrantz and Guildenstern.] + +Come, Gertrude, we'll call up our wisest friends; +And let them know both what we mean to do +And what's untimely done: so haply slander,-- +Whose whisper o'er the world's diameter, +As level as the cannon to his blank, +Transports his poison'd shot,--may miss our name, +And hit the woundless air.--O, come away! +My soul is full of discord and dismay. + +[Exeunt.] + +Scene II. Another room in the Castle. + +[Enter Hamlet.] + +Ham. +Safely stowed. + +Ros. and Guil. +[Within.] Hamlet! Lord Hamlet! + +Ham. +What noise? who calls on Hamlet? O, here they come. + +[Enter Rosencrantz and Guildenstern.] + +Ros. +What have you done, my lord, with the dead body? + +Ham. +Compounded it with dust, whereto 'tis kin. + +Ros. +Tell us where 'tis, that we may take it thence, +And bear it to the chapel. + +Ham. +Do not believe it. + +Ros. +Believe what? + +Ham. +That I can keep your counsel, and not mine own. Besides, to be +demanded of a sponge!--what replication should be made by the son +of a king? + +Ros. +Take you me for a sponge, my lord? + +Ham. +Ay, sir; that soaks up the King's countenance, his rewards, +his authorities. But such officers do the king best service in +the end: he keeps them, like an ape, in the corner of his jaw; +first mouthed, to be last swallowed: when he needs what you have +gleaned, it is but squeezing you, and, sponge, you shall be dry +again. + +Ros. +I understand you not, my lord. + +Ham. +I am glad of it: a knavish speech sleeps in a foolish ear. + +Ros. +My lord, you must tell us where the body is and go with us to +the king. + +Ham. +The body is with the king, but the king is not with the body. +The king is a thing,-- + +Guil. +A thing, my lord! + +Ham. +Of nothing: bring me to him. Hide fox, and all after. + +[Exeunt.] + + + +Scene III. Another room in the Castle. + +[Enter King,attended.] + +King. +I have sent to seek him and to find the body. +How dangerous is it that this man goes loose! +Yet must not we put the strong law on him: +He's lov'd of the distracted multitude, +Who like not in their judgment, but their eyes; +And where 'tis so, the offender's scourge is weigh'd, +But never the offence. To bear all smooth and even, +This sudden sending him away must seem +Deliberate pause: diseases desperate grown +By desperate appliance are reliev'd, +Or not at all. + +[Enter Rosencrantz.] + +How now! what hath befall'n? + +Ros. +Where the dead body is bestow'd, my lord, +We cannot get from him. + +King. +But where is he? + +Ros. +Without, my lord; guarded, to know your pleasure. + +King. +Bring him before us. + +Ros. +Ho, Guildenstern! bring in my lord. + +[Enter Hamlet and Guildenstern.] + +King. +Now, Hamlet, where's Polonius? + +Ham. +At supper. + +King. +At supper! where? + +Ham. +Not where he eats, but where he is eaten: a certain +convocation of politic worms are e'en at him. Your worm is your +only emperor for diet: we fat all creatures else to fat us, and +we fat ourselves for maggots: your fat king and your lean beggar +is but variable service,--two dishes, but to one table: that's +the end. + +King. +Alas, alas! + +Ham. +A man may fish with the worm that hath eat of a king, and eat +of the fish that hath fed of that worm. + +King. +What dost thou mean by this? + +Ham. +Nothing but to show you how a king may go a progress through +the guts of a beggar. + +King. +Where is Polonius? + +Ham. +In heaven: send thither to see: if your messenger find him not +there, seek him i' the other place yourself. But, indeed, if you +find him not within this month, you shall nose him as you go up +the stairs into the lobby. + +King. +Go seek him there. [To some Attendants.] + +Ham. +He will stay till you come. + +[Exeunt Attendants.] + +King. +Hamlet, this deed, for thine especial safety,-- +Which we do tender, as we dearly grieve +For that which thou hast done,--must send thee hence +With fiery quickness: therefore prepare thyself; +The bark is ready, and the wind at help, +The associates tend, and everything is bent +For England. + +Ham. +For England! + +King. +Ay, Hamlet. + +Ham. +Good. + +King. +So is it, if thou knew'st our purposes. + +Ham. +I see a cherub that sees them.--But, come; for England!-- +Farewell, dear mother. + +King. +Thy loving father, Hamlet. + +Ham. +My mother: father and mother is man and wife; man and wife is +one flesh; and so, my mother.--Come, for England! + +[Exit.] + +King. +Follow him at foot; tempt him with speed aboard; +Delay it not; I'll have him hence to-night: +Away! for everything is seal'd and done +That else leans on the affair: pray you, make haste. + +[Exeunt Rosencrantz and Guildenstern.] + +And, England, if my love thou hold'st at aught,-- +As my great power thereof may give thee sense, +Since yet thy cicatrice looks raw and red +After the Danish sword, and thy free awe +Pays homage to us,--thou mayst not coldly set +Our sovereign process; which imports at full, +By letters conjuring to that effect, +The present death of Hamlet. Do it, England; +For like the hectic in my blood he rages, +And thou must cure me: till I know 'tis done, +Howe'er my haps, my joys were ne'er begun. + +[Exit.] + + + +Scene IV. A plain in Denmark. + +[Enter Fortinbras, and Forces marching.] + +For. +Go, Captain, from me greet the Danish king: +Tell him that, by his license, Fortinbras +Craves the conveyance of a promis'd march +Over his kingdom. You know the rendezvous. +If that his majesty would aught with us, +We shall express our duty in his eye; +And let him know so. + +Capt. +I will do't, my lord. + +For. +Go softly on. + +[Exeunt all For. and Forces.] + +[Enter Hamlet, Rosencrantz, Guildenstern, &c.] + +Ham. +Good sir, whose powers are these? + +Capt. +They are of Norway, sir. + +Ham. +How purpos'd, sir, I pray you? + +Capt. +Against some part of Poland. + +Ham. +Who commands them, sir? + +Capt. +The nephew to old Norway, Fortinbras. + +Ham. +Goes it against the main of Poland, sir, +Or for some frontier? + +Capt. +Truly to speak, and with no addition, +We go to gain a little patch of ground +That hath in it no profit but the name. +To pay five ducats, five, I would not farm it; +Nor will it yield to Norway or the Pole +A ranker rate, should it be sold in fee. + +Ham. +Why, then the Polack never will defend it. + +Capt. +Yes, it is already garrison'd. + +Ham. +Two thousand souls and twenty thousand ducats +Will not debate the question of this straw: +This is the imposthume of much wealth and peace, +That inward breaks, and shows no cause without +Why the man dies.--I humbly thank you, sir. + +Capt. +God b' wi' you, sir. + +[Exit.] + +Ros. +Will't please you go, my lord? + +Ham. +I'll be with you straight. Go a little before. + +[Exeunt all but Hamlet.] + +How all occasions do inform against me +And spur my dull revenge! What is a man, +If his chief good and market of his time +Be but to sleep and feed? a beast, no more. +Sure he that made us with such large discourse, +Looking before and after, gave us not +That capability and godlike reason +To fust in us unus'd. Now, whether it be +Bestial oblivion, or some craven scruple +Of thinking too precisely on the event,-- +A thought which, quarter'd, hath but one part wisdom +And ever three parts coward,--I do not know +Why yet I live to say 'This thing's to do;' +Sith I have cause, and will, and strength, and means +To do't. Examples, gross as earth, exhort me: +Witness this army, of such mass and charge, +Led by a delicate and tender prince; +Whose spirit, with divine ambition puff'd, +Makes mouths at the invisible event; +Exposing what is mortal and unsure +To all that fortune, death, and danger dare, +Even for an egg-shell. Rightly to be great +Is not to stir without great argument, +But greatly to find quarrel in a straw +When honour's at the stake. How stand I, then, +That have a father kill'd, a mother stain'd, +Excitements of my reason and my blood, +And let all sleep? while, to my shame, I see +The imminent death of twenty thousand men +That, for a fantasy and trick of fame, +Go to their graves like beds; fight for a plot +Whereon the numbers cannot try the cause, +Which is not tomb enough and continent +To hide the slain?--O, from this time forth, +My thoughts be bloody, or be nothing worth! + +[Exit.] + + + +Scene V. Elsinore. A room in the Castle. + +[Enter Queen and Horatio.] + +Queen. +I will not speak with her. + +Gent. +She is importunate; indeed distract: +Her mood will needs be pitied. + +Queen. +What would she have? + +Gent. +She speaks much of her father; says she hears +There's tricks i' the world, and hems, and beats her heart; +Spurns enviously at straws; speaks things in doubt, +That carry but half sense: her speech is nothing, +Yet the unshaped use of it doth move +The hearers to collection; they aim at it, +And botch the words up fit to their own thoughts; +Which, as her winks, and nods, and gestures yield them, +Indeed would make one think there might be thought, +Though nothing sure, yet much unhappily. +'Twere good she were spoken with; for she may strew +Dangerous conjectures in ill-breeding minds. + +Queen. +Let her come in. + +[Exit Horatio.] + +To my sick soul, as sin's true nature is, +Each toy seems Prologue to some great amiss: +So full of artless jealousy is guilt, +It spills itself in fearing to be spilt. + +[Re-enter Horatio with Ophelia.] + +Oph. +Where is the beauteous majesty of Denmark? + +Queen. +How now, Ophelia? + +Oph. [Sings.] + How should I your true love know + From another one? + By his cockle bat and' staff + And his sandal shoon. + +Queen. +Alas, sweet lady, what imports this song? + +Oph. +Say you? nay, pray you, mark. +[Sings.] + He is dead and gone, lady, + He is dead and gone; + At his head a grass green turf, + At his heels a stone. + +Queen. +Nay, but Ophelia-- + +Oph. +Pray you, mark. +[Sings.] + White his shroud as the mountain snow, + +[Enter King.] + +Queen. +Alas, look here, my lord! + +Oph. +[Sings.] + Larded all with sweet flowers; + Which bewept to the grave did go + With true-love showers. + +King. +How do you, pretty lady? + +Oph. +Well, God dild you! They say the owl was a baker's daughter. +Lord, we know what we are, but know not what we may be. God be at +your table! + +King. +Conceit upon her father. + +Oph. +Pray you, let's have no words of this; but when they ask you what +it means, say you this: +[Sings.] + To-morrow is Saint Valentine's day + All in the morning bedtime, + And I a maid at your window, + To be your Valentine. + + Then up he rose and donn'd his clothes, + And dupp'd the chamber door, + Let in the maid, that out a maid + Never departed more. + +King. +Pretty Ophelia! + +Oph. +Indeed, la, without an oath, I'll make an end on't: +[Sings.] + By Gis and by Saint Charity, + Alack, and fie for shame! + Young men will do't if they come to't; + By cock, they are to blame. + + Quoth she, before you tumbled me, + You promis'd me to wed. + So would I ha' done, by yonder sun, + An thou hadst not come to my bed. + +King. +How long hath she been thus? + +Oph. +I hope all will be well. We must be patient: but I cannot +choose but weep, to think they would lay him i' the cold ground. +My brother shall know of it: and so I thank you for your good +counsel.--Come, my coach!--Good night, ladies; good night, sweet +ladies; good night, good night. + +[Exit.] + +King. +Follow her close; give her good watch, I pray you. + +[Exit Horatio.] + +O, this is the poison of deep grief; it springs +All from her father's death. O Gertrude, Gertrude, +When sorrows come, they come not single spies, +But in battalions! First, her father slain: +Next, your son gone; and he most violent author +Of his own just remove: the people muddied, +Thick and and unwholesome in their thoughts and whispers +For good Polonius' death; and we have done but greenly +In hugger-mugger to inter him: poor Ophelia +Divided from herself and her fair judgment, +Without the which we are pictures or mere beasts: +Last, and as much containing as all these, +Her brother is in secret come from France; +Feeds on his wonder, keeps himself in clouds, +And wants not buzzers to infect his ear +With pestilent speeches of his father's death; +Wherein necessity, of matter beggar'd, +Will nothing stick our person to arraign +In ear and ear. O my dear Gertrude, this, +Like to a murdering piece, in many places +Give, me superfluous death. + +[A noise within.] + +Queen. +Alack, what noise is this? + +King. +Where are my Switzers? let them guard the door. + +[Enter a Gentleman.] + +What is the matter? + +Gent. +Save yourself, my lord: +The ocean, overpeering of his list, +Eats not the flats with more impetuous haste +Than young Laertes, in a riotous head, +O'erbears your offices. The rabble call him lord; +And, as the world were now but to begin, +Antiquity forgot, custom not known, +The ratifiers and props of every word, +They cry 'Choose we! Laertes shall be king!' +Caps, hands, and tongues applaud it to the clouds, +'Laertes shall be king! Laertes king!' + +Queen. +How cheerfully on the false trail they cry! +O, this is counter, you false Danish dogs! + +[A noise within.] + +King. +The doors are broke. + +[Enter Laertes, armed; Danes following.] + +Laer. +Where is this king?--Sirs, stand you all without. + +Danes. +No, let's come in. + +Laer. +I pray you, give me leave. + +Danes. +We will, we will. + +[They retire without the door.] + +Laer. +I thank you:--keep the door.--O thou vile king, +Give me my father! + +Queen. +Calmly, good Laertes. + +Laer. +That drop of blood that's calm proclaims me bastard; +Cries cuckold to my father; brands the harlot +Even here, between the chaste unsmirched brow +Of my true mother. + +King. +What is the cause, Laertes, +That thy rebellion looks so giant-like?-- +Let him go, Gertrude; do not fear our person: +There's such divinity doth hedge a king, +That treason can but peep to what it would, +Acts little of his will.--Tell me, Laertes, +Why thou art thus incens'd.--Let him go, Gertrude:-- +Speak, man. + +Laer. +Where is my father? + +King. +Dead. + +Queen. +But not by him. + +King. +Let him demand his fill. + +Laer. +How came he dead? I'll not be juggled with: +To hell, allegiance! vows, to the blackest devil! +Conscience and grace, to the profoundest pit! +I dare damnation:--to this point I stand,-- +That both the worlds, I give to negligence, +Let come what comes; only I'll be reveng'd +Most throughly for my father. + +King. +Who shall stay you? + +Laer. +My will, not all the world: +And for my means, I'll husband them so well, +They shall go far with little. + +King. +Good Laertes, +If you desire to know the certainty +Of your dear father's death, is't writ in your revenge +That, sweepstake, you will draw both friend and foe, +Winner and loser? + +Laer. +None but his enemies. + +King. +Will you know them then? + +Laer. +To his good friends thus wide I'll ope my arms; +And, like the kind life-rendering pelican, +Repast them with my blood. + +King. +Why, now you speak +Like a good child and a true gentleman. +That I am guiltless of your father's death, +And am most sensibly in grief for it, +It shall as level to your judgment pierce +As day does to your eye. + +Danes. +[Within] Let her come in. + +Laer. +How now! What noise is that? + +[Re-enter Ophelia, fantastically dressed with straws and +flowers.] + +O heat, dry up my brains! tears seven times salt, +Burn out the sense and virtue of mine eye!-- +By heaven, thy madness shall be paid by weight, +Till our scale turn the beam. O rose of May! +Dear maid, kind sister, sweet Ophelia!-- +O heavens! is't possible a young maid's wits +Should be as mortal as an old man's life? +Nature is fine in love; and where 'tis fine, +It sends some precious instance of itself +After the thing it loves. + +Oph. +[Sings.] + They bore him barefac'd on the bier + Hey no nonny, nonny, hey nonny + And on his grave rain'd many a tear.-- + +Fare you well, my dove! + +Laer. +Hadst thou thy wits, and didst persuade revenge, +It could not move thus. + +Oph. +You must sing 'Down a-down, an you call him a-down-a.' O, +how the wheel becomes it! It is the false steward, that stole his +master's daughter. + +Laer. +This nothing's more than matter. + +Oph. +There's rosemary, that's for remembrance; pray, love, +remember: and there is pansies, that's for thoughts. + +Laer. +A document in madness,--thoughts and remembrance fitted. + +Oph. +There's fennel for you, and columbines:--there's rue for you; +and here's some for me:--we may call it herb of grace o' +Sundays:--O, you must wear your rue with a difference.--There's a +daisy:--I would give you some violets, but they wither'd all when +my father died:--they say he made a good end,-- +[Sings.] + For bonny sweet Robin is all my joy,-- + +Laer. +Thought and affliction, passion, hell itself, +She turns to favour and to prettiness. + +Oph. +[Sings.] + And will he not come again? + And will he not come again? + No, no, he is dead, + Go to thy death-bed, + He never will come again. + + His beard was as white as snow, + All flaxen was his poll: + He is gone, he is gone, + And we cast away moan: + God ha' mercy on his soul! + +And of all Christian souls, I pray God.--God b' wi' ye. + +[Exit.] + +Laer. +Do you see this, O God? + +King. +Laertes, I must commune with your grief, +Or you deny me right. Go but apart, +Make choice of whom your wisest friends you will, +And they shall hear and judge 'twixt you and me. +If by direct or by collateral hand +They find us touch'd, we will our kingdom give, +Our crown, our life, and all that we call ours, +To you in satisfaction; but if not, +Be you content to lend your patience to us, +And we shall jointly labour with your soul +To give it due content. + +Laer. +Let this be so; +His means of death, his obscure burial,-- +No trophy, sword, nor hatchment o'er his bones, +No noble rite nor formal ostentation,-- +Cry to be heard, as 'twere from heaven to earth, +That I must call't in question. + +King. +So you shall; +And where the offence is let the great axe fall. +I pray you go with me. + +[Exeunt.] + + + +Scene VI. Another room in the Castle. + +[Enter Horatio and a Servant.] + +Hor. +What are they that would speak with me? + +Servant. +Sailors, sir: they say they have letters for you. + +Hor. +Let them come in. + +[Exit Servant.] + +I do not know from what part of the world +I should be greeted, if not from Lord Hamlet. + +[Enter Sailors.] + +I Sailor. +God bless you, sir. + +Hor. +Let him bless thee too. + +Sailor. +He shall, sir, an't please him. There's a letter for you, +sir,--it comes from the ambassador that was bound for England; if +your name be Horatio, as I am let to know it is. + +Hor. +[Reads.] 'Horatio, when thou shalt have overlooked +this, give these fellows some means to the king: they have +letters for him. Ere we were two days old at sea, a pirate of +very warlike appointment gave us chase. Finding ourselves too +slow of sail, we put on a compelled valour, and in the grapple I +boarded them: on the instant they got clear of our ship; so I +alone became their prisoner. They have dealt with me like thieves +of mercy: but they knew what they did; I am to do a good turn for +them. Let the king have the letters I have sent; and repair thou +to me with as much haste as thou wouldst fly death. I have words +to speak in thine ear will make thee dumb; yet are they much too +light for the bore of the matter. These good fellows will bring +thee where I am. Rosencrantz and Guildenstern hold their course +for England: of them I have much to tell thee. Farewell. +He that thou knowest thine, HAMLET.' + +Come, I will give you way for these your letters; +And do't the speedier, that you may direct me +To him from whom you brought them. + +[Exeunt.] + + + +Scene VII. Another room in the Castle. + +[Enter King and Laertes.] + +King. +Now must your conscience my acquittance seal, +And you must put me in your heart for friend, +Sith you have heard, and with a knowing ear, +That he which hath your noble father slain +Pursu'd my life. + +Laer. +It well appears:--but tell me +Why you proceeded not against these feats, +So crimeful and so capital in nature, +As by your safety, wisdom, all things else, +You mainly were stirr'd up. + +King. +O, for two special reasons; +Which may to you, perhaps, seem much unsinew'd, +But yet to me they are strong. The queen his mother +Lives almost by his looks; and for myself,-- +My virtue or my plague, be it either which,-- +She's so conjunctive to my life and soul, +That, as the star moves not but in his sphere, +I could not but by her. The other motive, +Why to a public count I might not go, +Is the great love the general gender bear him; +Who, dipping all his faults in their affection, +Would, like the spring that turneth wood to stone, +Convert his gyves to graces; so that my arrows, +Too slightly timber'd for so loud a wind, +Would have reverted to my bow again, +And not where I had aim'd them. + +Laer. +And so have I a noble father lost; +A sister driven into desperate terms,-- +Whose worth, if praises may go back again, +Stood challenger on mount of all the age +For her perfections:--but my revenge will come. + +King. +Break not your sleeps for that:--you must not think +That we are made of stuff so flat and dull +That we can let our beard be shook with danger, +And think it pastime. You shortly shall hear more: +I lov'd your father, and we love ourself; +And that, I hope, will teach you to imagine,-- + +[Enter a Messenger.] + +How now! What news? + +Mess. +Letters, my lord, from Hamlet: +This to your majesty; this to the queen. + +King. +From Hamlet! Who brought them? + +Mess. +Sailors, my lord, they say; I saw them not: +They were given me by Claudio:--he receiv'd them +Of him that brought them. + +King. +Laertes, you shall hear them. +Leave us. + +[Exit Messenger.] + +[Reads]'High and mighty,--You shall know I am set naked on your +kingdom. To-morrow shall I beg leave to see your kingly eyes: +when I shall, first asking your pardon thereunto, recount the +occasions of my sudden and more strange return. HAMLET.' + +What should this mean? Are all the rest come back? +Or is it some abuse, and no such thing? + +Laer. +Know you the hand? + +King. +'Tis Hamlet's character:--'Naked!'-- +And in a postscript here, he says 'alone.' +Can you advise me? + +Laer. +I am lost in it, my lord. But let him come; +It warms the very sickness in my heart +That I shall live and tell him to his teeth, +'Thus didest thou.' + +King. +If it be so, Laertes,-- +As how should it be so? how otherwise?-- +Will you be rul'd by me? + +Laer. +Ay, my lord; +So you will not o'errule me to a peace. + +King. +To thine own peace. If he be now return'd-- +As checking at his voyage, and that he means +No more to undertake it,--I will work him +To exploit, now ripe in my device, +Under the which he shall not choose but fall: +And for his death no wind shall breathe; +But even his mother shall uncharge the practice +And call it accident. + +Laer. +My lord, I will be rul'd; +The rather if you could devise it so +That I might be the organ. + +King. +It falls right. +You have been talk'd of since your travel much, +And that in Hamlet's hearing, for a quality +Wherein they say you shine: your sum of parts +Did not together pluck such envy from him +As did that one; and that, in my regard, +Of the unworthiest siege. + +Laer. +What part is that, my lord? + +King. +A very riband in the cap of youth, +Yet needful too; for youth no less becomes +The light and careless livery that it wears +Than settled age his sables and his weeds, +Importing health and graveness.--Two months since, +Here was a gentleman of Normandy,-- +I've seen myself, and serv'd against, the French, +And they can well on horseback: but this gallant +Had witchcraft in't: he grew unto his seat; +And to such wondrous doing brought his horse, +As had he been incorps'd and demi-natur'd +With the brave beast: so far he topp'd my thought +That I, in forgery of shapes and tricks, +Come short of what he did. + +Laer. +A Norman was't? + +King. +A Norman. + +Laer. +Upon my life, Lamond. + +King. +The very same. + +Laer. +I know him well: he is the brooch indeed +And gem of all the nation. + +King. +He made confession of you; +And gave you such a masterly report +For art and exercise in your defence, +And for your rapier most especially, +That he cried out, 'twould be a sight indeed +If one could match you: the scrimers of their nation +He swore, had neither motion, guard, nor eye, +If you oppos'd them. Sir, this report of his +Did Hamlet so envenom with his envy +That he could nothing do but wish and beg +Your sudden coming o'er, to play with him. +Now, out of this,-- + +Laer. +What out of this, my lord? + +King. +Laertes, was your father dear to you? +Or are you like the painting of a sorrow, +A face without a heart? + +Laer. +Why ask you this? + +King. +Not that I think you did not love your father; +But that I know love is begun by time, +And that I see, in passages of proof, +Time qualifies the spark and fire of it. +There lives within the very flame of love +A kind of wick or snuff that will abate it; +And nothing is at a like goodness still; +For goodness, growing to a plurisy, +Dies in his own too much: that we would do, +We should do when we would; for this 'would' changes, +And hath abatements and delays as many +As there are tongues, are hands, are accidents; +And then this 'should' is like a spendthrift sigh, +That hurts by easing. But to the quick o' the ulcer:-- +Hamlet comes back: what would you undertake +To show yourself your father's son in deed +More than in words? + +Laer. +To cut his throat i' the church. + +King. +No place, indeed, should murder sanctuarize; +Revenge should have no bounds. But, good Laertes, +Will you do this, keep close within your chamber. +Hamlet return'd shall know you are come home: +We'll put on those shall praise your excellence +And set a double varnish on the fame +The Frenchman gave you; bring you in fine together +And wager on your heads: he, being remiss, +Most generous, and free from all contriving, +Will not peruse the foils; so that with ease, +Or with a little shuffling, you may choose +A sword unbated, and, in a pass of practice, +Requite him for your father. + +Laer. +I will do't: +And for that purpose I'll anoint my sword. +I bought an unction of a mountebank, +So mortal that, but dip a knife in it, +Where it draws blood no cataplasm so rare, +Collected from all simples that have virtue +Under the moon, can save the thing from death +This is but scratch'd withal: I'll touch my point +With this contagion, that, if I gall him slightly, +It may be death. + +King. +Let's further think of this; +Weigh what convenience both of time and means +May fit us to our shape: if this should fail, +And that our drift look through our bad performance. +'Twere better not assay'd: therefore this project +Should have a back or second, that might hold +If this did blast in proof. Soft! let me see:-- +We'll make a solemn wager on your cunnings,-- +I ha't: +When in your motion you are hot and dry,-- +As make your bouts more violent to that end,-- +And that he calls for drink, I'll have prepar'd him +A chalice for the nonce; whereon but sipping, +If he by chance escape your venom'd stuck, +Our purpose may hold there. + +[Enter Queen.] + +How now, sweet queen! + +Queen. +One woe doth tread upon another's heel, +So fast they follow:--your sister's drown'd, Laertes. + +Laer. +Drown'd! O, where? + +Queen. +There is a willow grows aslant a brook, +That shows his hoar leaves in the glassy stream; +There with fantastic garlands did she come +Of crowflowers, nettles, daisies, and long purples, +That liberal shepherds give a grosser name, +But our cold maids do dead men's fingers call them. +There, on the pendant boughs her coronet weeds +Clamb'ring to hang, an envious sliver broke; +When down her weedy trophies and herself +Fell in the weeping brook. Her clothes spread wide; +And, mermaid-like, awhile they bore her up; +Which time she chaunted snatches of old tunes; +As one incapable of her own distress, +Or like a creature native and indu'd +Unto that element: but long it could not be +Till that her garments, heavy with their drink, +Pull'd the poor wretch from her melodious lay +To muddy death. + +Laer. +Alas, then she is drown'd? + +Queen. +Drown'd, drown'd. + +Laer. +Too much of water hast thou, poor Ophelia, +And therefore I forbid my tears: but yet +It is our trick; nature her custom holds, +Let shame say what it will: when these are gone, +The woman will be out.--Adieu, my lord: +I have a speech of fire, that fain would blaze, +But that this folly douts it. + +[Exit.] + +King. +Let's follow, Gertrude; +How much I had to do to calm his rage! +Now fear I this will give it start again; +Therefore let's follow. + +[Exeunt.] + + + +ACT V. + +Scene I. A churchyard. + +[Enter two Clowns, with spades, &c.] + +1 Clown. +Is she to be buried in Christian burial when she wilfully +seeks her own salvation? + +2 Clown. +I tell thee she is; and therefore make her grave straight: the +crowner hath sat on her, and finds it Christian burial. + +1 Clown. +How can that be, unless she drowned herself in her own defence? + +2 Clown. +Why, 'tis found so. + +1 Clown. +It must be se offendendo; it cannot be else. For here lies +the point: if I drown myself wittingly, it argues an act: and an +act hath three branches; it is to act, to do, and to perform: +argal, she drowned herself wittingly. + +2 Clown. +Nay, but hear you, goodman delver,-- + +1 Clown. +Give me leave. Here lies the water; good: here stands the +man; good: if the man go to this water and drown himself, it is, +will he, nill he, he goes,--mark you that: but if the water come +to him and drown him, he drowns not himself; argal, he that is +not guilty of his own death shortens not his own life. + +2 Clown. +But is this law? + +1 Clown. +Ay, marry, is't--crowner's quest law. + +2 Clown. +Will you ha' the truth on't? If this had not been a +gentlewoman, she should have been buried out o' Christian burial. + +1 Clown. +Why, there thou say'st: and the more pity that great folk +should have countenance in this world to drown or hang themselves +more than their even Christian.--Come, my spade. There is no +ancient gentlemen but gardeners, ditchers, and grave-makers: they +hold up Adam's profession. + +2 Clown. +Was he a gentleman? + +1 Clown. +He was the first that ever bore arms. + +2 Clown. +Why, he had none. + +1 Clown. +What, art a heathen? How dost thou understand the Scripture? +The Scripture says Adam digg'd: could he dig without arms? I'll +put another question to thee: if thou answerest me not to the +purpose, confess thyself,-- + +2 Clown. +Go to. + +1 Clown. +What is he that builds stronger than either the mason, the +shipwright, or the carpenter? + +2 Clown. +The gallows-maker; for that frame outlives a thousand tenants. + +1 Clown. +I like thy wit well, in good faith: the gallows does well; +but how does it well? it does well to those that do ill: now, +thou dost ill to say the gallows is built stronger than the +church; argal, the gallows may do well to thee. To't again, come. + +2 Clown. +Who builds stronger than a mason, a shipwright, or a carpenter? + +1 Clown. +Ay, tell me that, and unyoke. + +2 Clown. +Marry, now I can tell. + +1 Clown. +To't. + +2 Clown. +Mass, I cannot tell. + +[Enter Hamlet and Horatio, at a distance.] + +1 Clown. +Cudgel thy brains no more about it, for your dull ass will +not mend his pace with beating; and when you are asked this +question next, say 'a grave-maker;' the houses he makes last +till doomsday. Go, get thee to Yaughan; fetch me a stoup of +liquor. + +[Exit Second Clown.] + +[Digs and sings.] + + In youth when I did love, did love, + Methought it was very sweet; + To contract, O, the time for, ah, my behove, + O, methought there was nothing meet. + +Ham. +Has this fellow no feeling of his business, that he sings at +grave-making? + +Hor. +Custom hath made it in him a property of easiness. + +Ham. +'Tis e'en so: the hand of little employment hath the daintier +sense. + +1 Clown. +[Sings.] + But age, with his stealing steps, + Hath claw'd me in his clutch, + And hath shipp'd me into the land, + As if I had never been such. + +[Throws up a skull.] + +Ham. +That skull had a tongue in it, and could sing once: how the +knave jowls it to the ground,as if 'twere Cain's jawbone, that +did the first murder! This might be the pate of a politician, +which this ass now o'erreaches; one that would circumvent God, +might it not? + +Hor. +It might, my lord. + +Ham. +Or of a courtier, which could say 'Good morrow, sweet lord! +How dost thou, good lord?' This might be my lord such-a-one, that +praised my lord such-a-one's horse when he meant to beg +it,--might it not? + +Hor. +Ay, my lord. + +Ham. +Why, e'en so: and now my Lady Worm's; chapless, and knocked +about the mazard with a sexton's spade: here's fine revolution, +an we had the trick to see't. Did these bones cost no more the +breeding but to play at loggets with 'em? mine ache to think +on't. + +1 Clown. +[Sings.] + A pickaxe and a spade, a spade, + For and a shrouding sheet; + O, a pit of clay for to be made + For such a guest is meet. + +[Throws up another skull]. + +Ham. +There's another: why may not that be the skull of a lawyer? +Where be his quiddits now, his quillets, his cases, his tenures, +and his tricks? why does he suffer this rude knave now to knock +him about the sconce with a dirty shovel, and will not tell him +of his action of battery? Hum! This fellow might be in's time a +great buyer of land, with his statutes, his recognizances, his +fines, his double vouchers, his recoveries: is this the fine of +his fines, and the recovery of his recoveries, to have his fine +pate full of fine dirt? will his vouchers vouch him no more of +his purchases, and double ones too, than the length and breadth +of a pair of indentures? The very conveyances of his lands will +scarcely lie in this box; and must the inheritor himself have no +more, ha? + +Hor. +Not a jot more, my lord. + +Ham. +Is not parchment made of sheep-skins? + +Hor. +Ay, my lord, And of calf-skins too. + +Ham. +They are sheep and calves which seek out assurance in that. I +will speak to this fellow.--Whose grave's this, sir? + +1 Clown. +Mine, sir. +[Sings.] + O, a pit of clay for to be made + For such a guest is meet. + +Ham. +I think it be thine indeed, for thou liest in't. + +1 Clown. +You lie out on't, sir, and therefore 'tis not yours: for my part, +I do not lie in't, yet it is mine. + +Ham. +Thou dost lie in't, to be in't and say it is thine: 'tis for +the dead, not for the quick; therefore thou liest. + +1 Clown. +'Tis a quick lie, sir; 't will away again from me to you. + +Ham. +What man dost thou dig it for? + +1 Clown. +For no man, sir. + +Ham. +What woman then? + +1 Clown. +For none neither. + +Ham. +Who is to be buried in't? + +1 Clown. +One that was a woman, sir; but, rest her soul, she's dead. + +Ham. +How absolute the knave is! We must speak by the card, or +equivocation will undo us. By the Lord, Horatio, these three +years I have taken note of it, the age is grown so picked that +the toe of the peasant comes so near the heel of the courtier he +galls his kibe.--How long hast thou been a grave-maker? + +1 Clown. +Of all the days i' the year, I came to't that day that our +last King Hamlet overcame Fortinbras. + +Ham. +How long is that since? + +1 Clown. +Cannot you tell that? every fool can tell that: it was the +very day that young Hamlet was born,--he that is mad, and sent +into England. + +Ham. +Ay, marry, why was be sent into England? + +1 Clown. +Why, because he was mad: he shall recover his wits there; +or, if he do not, it's no great matter there. + +Ham. +Why? + +1 Clown. +'Twill not he seen in him there; there the men are as mad as he. + +Ham. +How came he mad? + +1 Clown. +Very strangely, they say. + +Ham. +How strangely? + +1 Clown. +Faith, e'en with losing his wits. + +Ham. +Upon what ground? + +1 Clown. +Why, here in Denmark: I have been sexton here, man and boy, +thirty years. + +Ham. +How long will a man lie i' the earth ere he rot? + +1 Clown. +Faith, if he be not rotten before he die,--as we have many +pocky corses now-a-days that will scarce hold the laying in,--he +will last you some eight year or nine year: a tanner will last +you nine year. + +Ham. +Why he more than another? + +1 Clown. +Why, sir, his hide is so tann'd with his trade that he will +keep out water a great while; and your water is a sore decayer of +your whoreson dead body. Here's a skull now; this skull hath lain +in the earth three-and-twenty years. + +Ham. +Whose was it? + +1 Clown. +A whoreson, mad fellow's it was: whose do you think it was? + +Ham. +Nay, I know not. + +1 Clown. +A pestilence on him for a mad rogue! 'a pour'd a flagon of +Rhenish on my head once. This same skull, sir, was Yorick's +skull, the king's jester. + +Ham. +This? + +1 Clown. +E'en that. + +Ham. +Let me see. [Takes the skull.] Alas, poor Yorick!--I knew him, +Horatio; a fellow of infinite jest, of most excellent fancy: he +hath borne me on his back a thousand times; and now, how abhorred +in my imagination it is! my gorge rises at it. Here hung those +lips that I have kiss'd I know not how oft. Where be your gibes +now? your gambols? your songs? your flashes of merriment, that +were wont to set the table on a roar? Not one now, to mock your +own grinning? quite chap-fallen? Now, get you to my lady's +chamber, and tell her, let her paint an inch thick, to this +favour she must come; make her laugh at that.--Pr'ythee, Horatio, +tell me one thing. + +Hor. +What's that, my lord? + +Ham. +Dost thou think Alexander looked o' this fashion i' the earth? + +Hor. +E'en so. + +Ham. +And smelt so? Pah! + +[Throws down the skull.] + +Hor. +E'en so, my lord. + +Ham. +To what base uses we may return, Horatio! Why may not +imagination trace the noble dust of Alexander till he find it +stopping a bung-hole? + +Hor. +'Twere to consider too curiously to consider so. + +Ham. +No, faith, not a jot; but to follow him thither with modesty +enough, and likelihood to lead it: as thus: Alexander died, +Alexander was buried, Alexander returneth into dust; the dust is +earth; of earth we make loam; and why of that loam whereto he +was converted might they not stop a beer-barrel? + Imperious Caesar, dead and turn'd to clay, + Might stop a hole to keep the wind away. + O, that that earth which kept the world in awe + Should patch a wall to expel the winter's flaw! +But soft! but soft! aside!--Here comes the king. + +[Enter priests, &c, in procession; the corpse of Ophelia, +Laertes, and Mourners following; King, Queen, their Trains, &c.] + +The queen, the courtiers: who is that they follow? +And with such maimed rites? This doth betoken +The corse they follow did with desperate hand +Fordo it own life: 'twas of some estate. +Couch we awhile and mark. + +[Retiring with Horatio.] + +Laer. +What ceremony else? + +Ham. +That is Laertes, +A very noble youth: mark. + +Laer. +What ceremony else? + +1 Priest. +Her obsequies have been as far enlarg'd +As we have warranties: her death was doubtful; +And, but that great command o'ersways the order, +She should in ground unsanctified have lodg'd +Till the last trumpet; for charitable prayers, +Shards, flints, and pebbles should be thrown on her, +Yet here she is allowed her virgin rites, +Her maiden strewments, and the bringing home +Of bell and burial. + +Laer. +Must there no more be done? + +1 Priest. +No more be done; +We should profane the service of the dead +To sing a requiem and such rest to her +As to peace-parted souls. + +Laer. +Lay her i' the earth;-- +And from her fair and unpolluted flesh +May violets spring!--I tell thee, churlish priest, +A ministering angel shall my sister be +When thou liest howling. + +Ham. +What, the fair Ophelia? + +Queen. +Sweets to the sweet: farewell. +[Scattering flowers.] +I hop'd thou shouldst have been my Hamlet's wife; +I thought thy bride-bed to have deck'd, sweet maid, +And not have strew'd thy grave. + +Laer. +O, treble woe +Fall ten times treble on that cursed head +Whose wicked deed thy most ingenious sense +Depriv'd thee of!--Hold off the earth awhile, +Till I have caught her once more in mine arms: +[Leaps into the grave.] +Now pile your dust upon the quick and dead, +Till of this flat a mountain you have made, +To o'ertop old Pelion or the skyish head +Of blue Olympus. + +Ham. +[Advancing.] +What is he whose grief +Bears such an emphasis? whose phrase of sorrow +Conjures the wandering stars, and makes them stand +Like wonder-wounded hearers? this is I, +Hamlet the Dane. +[Leaps into the grave.] + +Laer. +The devil take thy soul! +[Grappling with him.] + +Ham. +Thou pray'st not well. +I pr'ythee, take thy fingers from my throat; +For, though I am not splenetive and rash, +Yet have I in me something dangerous, +Which let thy wiseness fear: away thy hand! + +King. +Pluck them asunder. + +Queen. +Hamlet! Hamlet! + +All. +Gentlemen!-- + +Hor. +Good my lord, be quiet. + +[The Attendants part them, and they come out of the grave.] + +Ham. +Why, I will fight with him upon this theme +Until my eyelids will no longer wag. + +Queen. +O my son, what theme? + +Ham. +I lov'd Ophelia; forty thousand brothers +Could not, with all their quantity of love, +Make up my sum.--What wilt thou do for her? + +King. +O, he is mad, Laertes. + +Queen. +For love of God, forbear him! + +Ham. +'Swounds, show me what thou'lt do: +Woul't weep? woul't fight? woul't fast? woul't tear thyself? +Woul't drink up eisel? eat a crocodile? +I'll do't.--Dost thou come here to whine? +To outface me with leaping in her grave? +Be buried quick with her, and so will I: +And, if thou prate of mountains, let them throw +Millions of acres on us, till our ground, +Singeing his pate against the burning zone, +Make Ossa like a wart! Nay, an thou'lt mouth, +I'll rant as well as thou. + +Queen. +This is mere madness: +And thus a while the fit will work on him; +Anon, as patient as the female dove, +When that her golden couplets are disclos'd, +His silence will sit drooping. + +Ham. +Hear you, sir; +What is the reason that you use me thus? +I lov'd you ever: but it is no matter; +Let Hercules himself do what he may, +The cat will mew, and dog will have his day. + +[Exit.] + +King. +I pray thee, good Horatio, wait upon him.-- + +[Exit Horatio.] +[To Laertes] +Strengthen your patience in our last night's speech; +We'll put the matter to the present push.-- +Good Gertrude, set some watch over your son.-- +This grave shall have a living monument: +An hour of quiet shortly shall we see; +Till then in patience our proceeding be. + +[Exeunt.] + + + +Scene II. A hall in the Castle. + +[Enter Hamlet and Horatio.] + +Ham. +So much for this, sir: now let me see the other; +You do remember all the circumstance? + +Hor. +Remember it, my lord! + +Ham. +Sir, in my heart there was a kind of fighting +That would not let me sleep: methought I lay +Worse than the mutinies in the bilboes. Rashly, +And prais'd be rashness for it,--let us know, +Our indiscretion sometime serves us well, +When our deep plots do fail; and that should teach us +There's a divinity that shapes our ends, +Rough-hew them how we will. + +Hor. +That is most certain. + +Ham. +Up from my cabin, +My sea-gown scarf'd about me, in the dark +Grop'd I to find out them: had my desire; +Finger'd their packet; and, in fine, withdrew +To mine own room again: making so bold, +My fears forgetting manners, to unseal +Their grand commission; where I found, Horatio, +O royal knavery! an exact command,-- +Larded with many several sorts of reasons, +Importing Denmark's health, and England's too, +With, ho! such bugs and goblins in my life,-- +That, on the supervise, no leisure bated, +No, not to stay the grinding of the axe, +My head should be struck off. + +Hor. +Is't possible? + +Ham. +Here's the commission: read it at more leisure. +But wilt thou bear me how I did proceed? + +Hor. +I beseech you. + +Ham. +Being thus benetted round with villanies,-- +Or I could make a prologue to my brains, +They had begun the play,--I sat me down; +Devis'd a new commission; wrote it fair: +I once did hold it, as our statists do, +A baseness to write fair, and labour'd much +How to forget that learning; but, sir, now +It did me yeoman's service. Wilt thou know +The effect of what I wrote? + +Hor. +Ay, good my lord. + +Ham. +An earnest conjuration from the king,-- +As England was his faithful tributary; +As love between them like the palm might flourish; +As peace should still her wheaten garland wear +And stand a comma 'tween their amities; +And many such-like as's of great charge,-- +That, on the view and know of these contents, +Without debatement further, more or less, +He should the bearers put to sudden death, +Not shriving-time allow'd. + +Hor. +How was this seal'd? + +Ham. +Why, even in that was heaven ordinant. +I had my father's signet in my purse, +Which was the model of that Danish seal: +Folded the writ up in the form of the other; +Subscrib'd it: gave't the impression; plac'd it safely, +The changeling never known. Now, the next day +Was our sea-fight; and what to this was sequent +Thou know'st already. + +Hor. +So Guildenstern and Rosencrantz go to't. + +Ham. +Why, man, they did make love to this employment; +They are not near my conscience; their defeat +Does by their own insinuation grow: +'Tis dangerous when the baser nature comes +Between the pass and fell incensed points +Of mighty opposites. + +Hor. +Why, what a king is this! + +Ham. +Does it not, thinks't thee, stand me now upon,-- +He that hath kill'd my king, and whor'd my mother; +Popp'd in between the election and my hopes; +Thrown out his angle for my proper life, +And with such cozenage--is't not perfect conscience +To quit him with this arm? and is't not to be damn'd +To let this canker of our nature come +In further evil? + +Hor. +It must be shortly known to him from England +What is the issue of the business there. + +Ham. +It will be short: the interim is mine; +And a man's life is no more than to say One. +But I am very sorry, good Horatio, +That to Laertes I forgot myself; +For by the image of my cause I see +The portraiture of his: I'll court his favours: +But, sure, the bravery of his grief did put me +Into a towering passion. + +Hor. +Peace; who comes here? + +[Enter Osric.] + +Osr. +Your lordship is right welcome back to Denmark. + +Ham. +I humbly thank you, sir. Dost know this water-fly? + +Hor. +No, my good lord. + +Ham. +Thy state is the more gracious; for 'tis a vice to know him. He +hath much land, and fertile: let a beast be lord of beasts, and +his crib shall stand at the king's mess; 'tis a chough; but, as I +say, spacious in the possession of dirt. + +Osr. +Sweet lord, if your lordship were at leisure, I should +impart a thing to you from his majesty. + +Ham. +I will receive it with all diligence of spirit. Put your +bonnet to his right use; 'tis for the head. + +Osr. +I thank your lordship, t'is very hot. + +Ham. +No, believe me, 'tis very cold; the wind is northerly. + +Osr. +It is indifferent cold, my lord, indeed. + +Ham. +Methinks it is very sultry and hot for my complexion. + +Osr. +Exceedingly, my lord; it is very sultry,--as 'twere--I cannot +tell how. But, my lord, his majesty bade me signify to you that +he has laid a great wager on your head. Sir, this is the +matter,-- + +Ham. +I beseech you, remember,-- +[Hamlet moves him to put on his hat.] + +Osr. +Nay, in good faith; for mine ease, in good faith. Sir, here +is newly come to court Laertes; believe me, an absolute +gentleman, full of most excellent differences, of very soft +society and great showing: indeed, to speak feelingly of him, he +is the card or calendar of gentry; for you shall find in him the +continent of what part a gentleman would see. + +Ham. +Sir, his definement suffers no perdition in you;--though, I +know, to divide him inventorially would dizzy the arithmetic of +memory, and yet but yaw neither, in respect of his quick sail. +But, in the verity of extolment, I take him to be a soul of great +article, and his infusion of such dearth and rareness as, to make +true diction of him, his semblable is his mirror, and who else +would trace him, his umbrage, nothing more. + +Osr. +Your lordship speaks most infallibly of him. + +Ham. +The concernancy, sir? why do we wrap the gentleman in our more +rawer breath? + +Osr. +Sir? + +Hor. +Is't not possible to understand in another tongue? You will do't, +sir, really. + +Ham. +What imports the nomination of this gentleman? + +Osr. +Of Laertes? + +Hor. +His purse is empty already; all's golden words are spent. + +Ham. +Of him, sir. + +Osr. +I know, you are not ignorant,-- + +Ham. +I would you did, sir; yet, in faith, if you did, it would not +much approve me.--Well, sir. + +Osr. +You are not ignorant of what excellence Laertes is,-- + +Ham. +I dare not confess that, lest I should compare with him in +excellence; but to know a man well were to know himself. + +Osr. +I mean, sir, for his weapon; but in the imputation laid on +him by them, in his meed he's unfellowed. + +Ham. +What's his weapon? + +Osr. +Rapier and dagger. + +Ham. +That's two of his weapons:--but well. + +Osr. +The king, sir, hath wager'd with him six Barbary horses: +against the which he has imponed, as I take it, six French +rapiers and poniards, with their assigns, as girdle, hangers, and +so: three of the carriages, in faith, are very dear to fancy, +very responsive to the hilts, most delicate carriages, and of +very liberal conceit. + +Ham. +What call you the carriages? + +Hor. +I knew you must be edified by the margent ere you had done. + +Osr. +The carriages, sir, are the hangers. + +Ham. +The phrase would be more german to the matter if we could +carry cannon by our sides. I would it might be hangers till then. +But, on: six Barbary horses against six French swords, their +assigns, and three liberal conceited carriages: that's the French +bet against the Danish: why is this all imponed, as you call it? + +Osr. +The king, sir, hath laid that, in a dozen passes between +your and him, he shall not exceed you three hits: he hath +laid on twelve for nine; and it would come to immediate trial +if your lordship would vouchsafe the answer. + +Ham. +How if I answer no? + +Osr. +I mean, my lord, the opposition of your person in trial. + +Ham. +Sir, I will walk here in the hall: if it please his majesty, +it is the breathing time of day with me: let the foils be +brought, the gentleman willing, and the king hold his purpose, +I will win for him if I can; if not, I will gain nothing but my +shame and the odd hits. + +Osr. +Shall I re-deliver you e'en so? + +Ham. +To this effect, sir; after what flourish your nature will. + +Osr. +I commend my duty to your lordship. + +Ham. +Yours, yours. + +[Exit Osric.] + +He does well to commend it himself; there are no tongues else +for's turn. + +Hor. +This lapwing runs away with the shell on his head. + +Ham. +He did comply with his dug before he suck'd it. Thus has he,--and +many more of the same bevy that I know the drossy age dotes on,-- +only got the tune of the time and outward habit of encounter; +a kind of yesty collection, which carries them through and +through the most fanned and winnowed opinions; and do but blow +them to their trial, the bubbles are out, + +[Enter a Lord.] + +Lord. +My lord, his majesty commended him to you by young Osric, +who brings back to him that you attend him in the hall: he sends +to know if your pleasure hold to play with Laertes, or that you +will take longer time. + +Ham. +I am constant to my purposes; they follow the king's pleasure: +if his fitness speaks, mine is ready; now or whensoever, provided +I be so able as now. + +Lord. +The King and Queen and all are coming down. + +Ham. +In happy time. + +Lord. +The queen desires you to use some gentle entertainment to +Laertes before you fall to play. + +Ham. +She well instructs me. + +[Exit Lord.] + +Hor. +You will lose this wager, my lord. + +Ham. +I do not think so; since he went into France I have been in +continual practice: I shall win at the odds. But thou wouldst not +think how ill all's here about my heart: but it is no matter. + +Hor. +Nay, good my lord,-- + +Ham. +It is but foolery; but it is such a kind of gain-giving as +would perhaps trouble a woman. + +Hor. +If your mind dislike anything, obey it: I will forestall their +repair hither, and say you are not fit. + +Ham. +Not a whit, we defy augury: there's a special providence in +the fall of a sparrow. If it be now, 'tis not to come; if it be +not to come, it will be now; if it be not now, yet it will come: +the readiness is all: since no man has aught of what he leaves, +what is't to leave betimes? + +[Enter King, Queen, Laertes, Lords, Osric, and Attendants with +foils &c.] + +King. +Come, Hamlet, come, and take this hand from me. + +[The King puts Laertes' hand into Hamlet's.] + +Ham. +Give me your pardon, sir: I have done you wrong: +But pardon't, as you are a gentleman. +This presence knows, and you must needs have heard, +How I am punish'd with sore distraction. +What I have done +That might your nature, honour, and exception +Roughly awake, I here proclaim was madness. +Was't Hamlet wrong'd Laertes? Never Hamlet: +If Hamlet from himself be ta'en away, +And when he's not himself does wrong Laertes, +Then Hamlet does it not, Hamlet denies it. +Who does it, then? His madness: if't be so, +Hamlet is of the faction that is wrong'd; +His madness is poor Hamlet's enemy. +Sir, in this audience, +Let my disclaiming from a purpos'd evil +Free me so far in your most generous thoughts +That I have shot my arrow o'er the house +And hurt my brother. + +Laer. +I am satisfied in nature, +Whose motive, in this case, should stir me most +To my revenge. But in my terms of honour +I stand aloof; and will no reconcilement +Till by some elder masters of known honour +I have a voice and precedent of peace +To keep my name ungor'd. But till that time +I do receive your offer'd love like love, +And will not wrong it. + +Ham. +I embrace it freely; +And will this brother's wager frankly play.-- +Give us the foils; come on. + +Laer. +Come, one for me. + +Ham. +I'll be your foil, Laertes; in mine ignorance +Your skill shall, like a star in the darkest night, +Stick fiery off indeed. + +Laer. +You mock me, sir. + +Ham. +No, by this hand. + +King. +Give them the foils, young Osric. Cousin Hamlet, +You know the wager? + +Ham. +Very well, my lord; +Your grace has laid the odds o' the weaker side. + +King. +I do not fear it; I have seen you both; +But since he's better'd, we have therefore odds. + +Laer. +This is too heavy, let me see another. + +Ham. +This likes me well. These foils have all a length? + +[They prepare to play.] + +Osr. +Ay, my good lord. + +King. +Set me the stoups of wine upon that table,-- +If Hamlet give the first or second hit, +Or quit in answer of the third exchange, +Let all the battlements their ordnance fire; +The king shall drink to Hamlet's better breath; +And in the cup an union shall he throw, +Richer than that which four successive kings +In Denmark's crown have worn. Give me the cups; +And let the kettle to the trumpet speak, +The trumpet to the cannoneer without, +The cannons to the heavens, the heavens to earth, +'Now the king drinks to Hamlet.'--Come, begin:-- +And you, the judges, bear a wary eye. + +Ham. +Come on, sir. + +Laer. +Come, my lord. + +[They play.] + +Ham. +One. + +Laer. +No. + +Ham. +Judgment! + +Osr. +A hit, a very palpable hit. + +Laer. +Well;--again. + +King. +Stay, give me drink.--Hamlet, this pearl is thine; +Here's to thy health.-- + +[Trumpets sound, and cannon shot off within.] + +Give him the cup. + +Ham. +I'll play this bout first; set it by awhile.-- +Come.--Another hit; what say you? + +[They play.] + +Laer. +A touch, a touch, I do confess. + +King. +Our son shall win. + +Queen. +He's fat, and scant of breath.-- +Here, Hamlet, take my napkin, rub thy brows: +The queen carouses to thy fortune, Hamlet. + +Ham. +Good madam! + +King. +Gertrude, do not drink. + +Queen. +I will, my lord; I pray you pardon me. + +King. +[Aside.] It is the poison'd cup; it is too late. + +Ham. +I dare not drink yet, madam; by-and-by. + +Queen. +Come, let me wipe thy face. + +Laer. +My lord, I'll hit him now. + +King. +I do not think't. + +Laer. +[Aside.] And yet 'tis almost 'gainst my conscience. + +Ham. +Come, for the third, Laertes: you but dally; +I pray you pass with your best violence: +I am afeard you make a wanton of me. + +Laer. +Say you so? come on. + +[They play.] + +Osr. +Nothing, neither way. + +Laer. +Have at you now! + +[Laertes wounds Hamlet; then, in scuffling, they +change rapiers, and Hamlet wounds Laertes.] + +King. +Part them; they are incens'd. + +Ham. +Nay, come again! + +[The Queen falls.] + +Osr. +Look to the queen there, ho! + +Hor. +They bleed on both sides.--How is it, my lord? + +Osr. +How is't, Laertes? + +Laer. +Why, as a woodcock to my own springe, Osric; +I am justly kill'd with mine own treachery. + +Ham. +How does the Queen? + +King. +She swoons to see them bleed. + +Queen. +No, no! the drink, the drink!--O my dear Hamlet!-- +The drink, the drink!--I am poison'd. + +[Dies.] + +Ham. +O villany!--Ho! let the door be lock'd: +Treachery! seek it out. + +[Laertes falls.] + +Laer. +It is here, Hamlet: Hamlet, thou art slain; +No medicine in the world can do thee good; +In thee there is not half an hour of life; +The treacherous instrument is in thy hand, +Unbated and envenom'd: the foul practice +Hath turn'd itself on me; lo, here I lie, +Never to rise again: thy mother's poison'd: +I can no more:--the king, the king's to blame. + +Ham. +The point envenom'd too!-- +Then, venom, to thy work. + +[Stabs the King.] + +Osric and Lords. +Treason! treason! + +King. +O, yet defend me, friends! I am but hurt. + +Ham. +Here, thou incestuous, murderous, damned Dane, +Drink off this potion.--Is thy union here? +Follow my mother. + +[King dies.] + +Laer. +He is justly serv'd; +It is a poison temper'd by himself.-- +Exchange forgiveness with me, noble Hamlet: +Mine and my father's death come not upon thee, +Nor thine on me! + +[Dies.] + +Ham. +Heaven make thee free of it! I follow thee.-- +I am dead, Horatio.--Wretched queen, adieu!-- +You that look pale and tremble at this chance, +That are but mutes or audience to this act, +Had I but time,--as this fell sergeant, death, +Is strict in his arrest,--O, I could tell you,-- +But let it be.--Horatio, I am dead; +Thou liv'st; report me and my cause aright +To the unsatisfied. + +Hor. +Never believe it: +I am more an antique Roman than a Dane.-- +Here's yet some liquor left. + +Ham. +As thou'rt a man, +Give me the cup; let go; by heaven, I'll have't.-- +O good Horatio, what a wounded name, +Things standing thus unknown, shall live behind me! +If thou didst ever hold me in thy heart, +Absent thee from felicity awhile, +And in this harsh world draw thy breath in pain, +To tell my story.-- + +[March afar off, and shot within.] + +What warlike noise is this? + +Osr. +Young Fortinbras, with conquest come from Poland, +To the ambassadors of England gives +This warlike volley. + +Ham. +O, I die, Horatio; +The potent poison quite o'er-crows my spirit: +I cannot live to hear the news from England; +But I do prophesy the election lights +On Fortinbras: he has my dying voice; +So tell him, with the occurrents, more and less, +Which have solicited.--the rest is silence. + +[Dies.] + +Hor. +Now cracks a noble heart.--Good night, sweet prince, +And flights of angels sing thee to thy rest! +Why does the drum come hither? + +[March within.] + +[Enter Fortinbras, the English Ambassadors, and others.] + +Fort. +Where is this sight? + +Hor. +What is it you will see? +If aught of woe or wonder, cease your search. + +Fort. +This quarry cries on havoc.--O proud death, +What feast is toward in thine eternal cell, +That thou so many princes at a shot +So bloodily hast struck? + +1 Ambassador. +The sight is dismal; +And our affairs from England come too late: +The ears are senseless that should give us hearing, +To tell him his commandment is fulfill'd +That Rosencrantz and Guildenstern are dead: +Where should we have our thanks? + +Hor. +Not from his mouth, +Had it the ability of life to thank you: +He never gave commandment for their death. +But since, so jump upon this bloody question, +You from the Polack wars, and you from England, +Are here arriv'd, give order that these bodies +High on a stage be placed to the view; +And let me speak to the yet unknowing world +How these things came about: so shall you hear +Of carnal, bloody and unnatural acts; +Of accidental judgments, casual slaughters; +Of deaths put on by cunning and forc'd cause; +And, in this upshot, purposes mistook +Fall'n on the inventors' heads: all this can I +Truly deliver. + +Fort. +Let us haste to hear it, +And call the noblest to the audience. +For me, with sorrow I embrace my fortune: +I have some rights of memory in this kingdom, +Which now, to claim my vantage doth invite me. + +Hor. +Of that I shall have also cause to speak, +And from his mouth whose voice will draw on more: +But let this same be presently perform'd, +Even while men's minds are wild: lest more mischance +On plots and errors happen. + +Fort. +Let four captains +Bear Hamlet like a soldier to the stage; +For he was likely, had he been put on, +To have prov'd most royally: and, for his passage, +The soldiers' music and the rites of war +Speak loudly for him.-- +Take up the bodies.--Such a sight as this +Becomes the field, but here shows much amiss. +Go, bid the soldiers shoot. + +[A dead march.] + +[Exeunt, bearing off the dead bodies; after the which a peal of +ordnance is shot off.] + + + + + +The End of Project Gutenberg Etext of Hamlet by Shakespeare +PG has multiple editions of William Shakespeare's Complete Works + diff --git a/hotels.txt b/hotels.txt new file mode 100644 index 0000000..b69466b --- /dev/null +++ b/hotels.txt @@ -0,0 +1,505 @@ +Hotel name;Nr. rooms;Pool;Gym;Tennis court;Spa;Casino;Traveler type;Period of stay;Score +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Friends;Dec-Feb;5 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Business;Dec-Feb;3 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Families;Mar-May;5 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Friends;Mar-May;4 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Solo;Mar-May;4 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Couples;Mar-May;3 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Couples;Mar-May;4 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Families;Mar-May;4 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Friends;Mar-May;4 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Families;Mar-May;3 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Families;Jun-Aug;2 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Friends;Jun-Aug;3 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Friends;Jun-Aug;2 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Friends;Jun-Aug;3 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Friends;Jun-Aug;3 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Families;Jun-Aug;4 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Families;Sep-Nov;1 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Families;Sep-Nov;4 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Couples;Sep-Nov;3 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Couples;Sep-Nov;2 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Couples;Sep-Nov;4 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Couples;Sep-Nov;1 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Families;Dec-Feb;4 +Circus Circus Hotel & Casino Las Vegas;3773;NO;YES;NO;NO;YES;Couples;Dec-Feb;2 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Couples;Dec-Feb;4 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Business;Dec-Feb;4 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Couples;Dec-Feb;5 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Business;Dec-Feb;3 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Solo;Mar-May;5 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Couples;Mar-May;5 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Couples;Mar-May;5 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Couples;Mar-May;3 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Solo;Mar-May;3 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Friends;Mar-May;3 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Couples;Jun-Aug;4 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Couples;Jun-Aug;3 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Friends;Jun-Aug;4 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Friends;Jun-Aug;4 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Couples;Jun-Aug;4 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Families;Jun-Aug;2 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Business;Sep-Nov;3 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Couples;Sep-Nov;3 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Families;Sep-Nov;3 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Friends;Sep-Nov;4 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Families;Sep-Nov;4 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Friends;Sep-Nov;4 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Couples;Dec-Feb;4 +Excalibur Hotel & Casino;3981;YES;YES;NO;YES;YES;Solo;Dec-Feb;3 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Couples;Dec-Feb;3 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Solo;Dec-Feb;4 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Couples;Dec-Feb;2 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Couples;Dec-Feb;4 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Couples;Mar-May;3 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Business;Mar-May;4 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Couples;Mar-May;5 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Business;Mar-May;2 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Couples;Mar-May;4 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Couples;Mar-May;4 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Couples;Jun-Aug;4 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Friends;Jun-Aug;4 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Families;Jun-Aug;4 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Couples;Jun-Aug;3 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Solo;Jun-Aug;2 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Families;Jun-Aug;3 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Friends;Sep-Nov;3 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Couples;Sep-Nov;4 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Families;Sep-Nov;3 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Couples;Sep-Nov;2 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Couples;Sep-Nov;4 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Business;Sep-Nov;1 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Business;Dec-Feb;2 +Monte Carlo Resort&Casino;3003;YES;YES;NO;YES;YES;Couples;Dec-Feb;5 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Business;Dec-Feb;3 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Couples;Dec-Feb;4 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Friends;Dec-Feb;4 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Solo;Dec-Feb;5 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Couples;Mar-May;4 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Friends;Mar-May;4 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Friends;Mar-May;4 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Families;Mar-May;3 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Families;Mar-May;3 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Friends;Mar-May;4 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Families;Jun-Aug;3 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Couples;Jun-Aug;4 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Couples;Jun-Aug;5 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Solo;Jun-Aug;4 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Couples;Jun-Aug;4 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Couples;Jun-Aug;4 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Couples;Sep-Nov;3 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Business;Sep-Nov;4 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Families;Sep-Nov;5 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Couples;Sep-Nov;3 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Couples;Sep-Nov;5 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Families;Sep-Nov;4 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Friends;Dec-Feb;4 +Treasure Island- TI Hotel & Casino;2884;YES;YES;YES;YES;YES;Couples;Dec-Feb;5 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Families;Dec-Feb;4 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Friends;Dec-Feb;5 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Couples;Dec-Feb;3 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Business;Dec-Feb;3 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Business;Mar-May;4 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Couples;Mar-May;4 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Couples;Mar-May;5 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Business;Mar-May;4 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Couples;Mar-May;4 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Friends;Mar-May;3 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Business;Jun-Aug;4 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Friends;Jun-Aug;4 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Solo;Jun-Aug;4 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Couples;Jun-Aug;4 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Friends;Jun-Aug;5 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Couples;Jun-Aug;5 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Couples;Sep-Nov;1 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Couples;Sep-Nov;5 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Friends;Sep-Nov;5 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Friends;Sep-Nov;2 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Solo;Sep-Nov;4 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Friends;Sep-Nov;5 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Couples;Dec-Feb;5 +Tropicana Las Vegas - A Double Tree by Hilton Hotel;1467;YES;YES;YES;YES;YES;Families;Dec-Feb;5 +Caesars Palace;3348;YES;YES;NO;YES;YES;Friends;Dec-Feb;5 +Caesars Palace;3348;YES;YES;NO;YES;YES;Couples;Dec-Feb;4 +Caesars Palace;3348;YES;YES;NO;YES;YES;Families;Dec-Feb;5 +Caesars Palace;3348;YES;YES;NO;YES;YES;Families;Dec-Feb;5 +Caesars Palace;3348;YES;YES;NO;YES;YES;Families;Mar-May;5 +Caesars Palace;3348;YES;YES;NO;YES;YES;Families;Mar-May;3 +Caesars Palace;3348;YES;YES;NO;YES;YES;Couples;Mar-May;5 +Caesars Palace;3348;YES;YES;NO;YES;YES;Couples;Mar-May;4 +Caesars Palace;3348;YES;YES;NO;YES;YES;Couples;Mar-May;1 +Caesars Palace;3348;YES;YES;NO;YES;YES;Couples;Mar-May;4 +Caesars Palace;3348;YES;YES;NO;YES;YES;Couples;Jun-Aug;4 +Caesars Palace;3348;YES;YES;NO;YES;YES;Solo;Jun-Aug;1 +Caesars Palace;3348;YES;YES;NO;YES;YES;Couples;Jun-Aug;5 +Caesars Palace;3348;YES;YES;NO;YES;YES;Families;Jun-Aug;3 +Caesars Palace;3348;YES;YES;NO;YES;YES;Families;Jun-Aug;5 +Caesars Palace;3348;YES;YES;NO;YES;YES;Friends;Jun-Aug;4 +Caesars Palace;3348;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +Caesars Palace;3348;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +Caesars Palace;3348;YES;YES;NO;YES;YES;Business;Sep-Nov;5 +Caesars Palace;3348;YES;YES;NO;YES;YES;Friends;Sep-Nov;5 +Caesars Palace;3348;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +Caesars Palace;3348;YES;YES;NO;YES;YES;Families;Sep-Nov;3 +Caesars Palace;3348;YES;YES;NO;YES;YES;Families;Dec-Feb;4 +Caesars Palace;3348;YES;YES;NO;YES;YES;Couples;Dec-Feb;4 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Friends;Dec-Feb;4 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Friends;Dec-Feb;5 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Friends;Dec-Feb;4 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Couples;Dec-Feb;5 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Couples;Mar-May;5 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Couples;Mar-May;5 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Friends;Mar-May;4 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Business;Mar-May;5 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Families;Mar-May;5 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Business;Mar-May;2 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Couples;Jun-Aug;2 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Friends;Jun-Aug;5 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Business;Jun-Aug;1 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Friends;Jun-Aug;4 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Families;Jun-Aug;5 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Couples;Jun-Aug;4 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Friends;Sep-Nov;5 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Business;Sep-Nov;5 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Business;Sep-Nov;5 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Couples;Dec-Feb;2 +The Cosmopolitan Las Vegas;2959;YES;YES;NO;YES;YES;Families;Dec-Feb;5 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Couples;Dec-Feb;3 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Families;Dec-Feb;5 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Couples;Dec-Feb;5 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Couples;Dec-Feb;4 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Families;Mar-May;5 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Families;Mar-May;5 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Couples;Mar-May;4 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Couples;Mar-May;5 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Couples;Mar-May;5 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Business;Mar-May;5 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Friends;Jun-Aug;4 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Couples;Jun-Aug;3 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Friends;Jun-Aug;4 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Families;Jun-Aug;5 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Friends;Jun-Aug;4 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Business;Jun-Aug;4 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Friends;Sep-Nov;3 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Families;Sep-Nov;5 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Families;Sep-Nov;5 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Friends;Sep-Nov;5 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Families;Sep-Nov;3 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Couples;Dec-Feb;5 +The Palazzo Resort Hotel Casino;3025;YES;YES;NO;YES;YES;Families;Dec-Feb;4 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Couples;Dec-Feb;5 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Families;Dec-Feb;5 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Couples;Dec-Feb;4 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Couples;Dec-Feb;5 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Friends;Mar-May;5 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Business;Mar-May;4 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Business;Mar-May;5 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Couples;Mar-May;4 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Solo;Mar-May;3 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Couples;Mar-May;5 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Couples;Jun-Aug;5 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Couples;Jun-Aug;5 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Couples;Jun-Aug;5 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Couples;Jun-Aug;5 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Couples;Jun-Aug;5 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Solo;Jun-Aug;5 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Business;Sep-Nov;2 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Friends;Sep-Nov;5 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Couples;Sep-Nov;4 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Couples;Sep-Nov;5 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Business;Sep-Nov;5 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Couples;Sep-Nov;5 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Couples;Dec-Feb;5 +Wynn Las Vegas;2700;YES;YES;YES;YES;YES;Couples;Dec-Feb;5 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Solo;Dec-Feb;5 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Business;Dec-Feb;5 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Business;Dec-Feb;5 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Families;Dec-Feb;5 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Couples;Mar-May;5 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Couples;Mar-May;3 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Couples;Mar-May;4 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Couples;Mar-May;5 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Families;Mar-May;4 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Families;Mar-May;5 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Couples;Jun-Aug;5 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Business;Jun-Aug;5 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Families;Jun-Aug;5 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Families;Jun-Aug;4 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Couples;Jun-Aug;4 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Couples;Jun-Aug;5 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Families;Sep-Nov;5 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Families;Sep-Nov;1 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Friends;Sep-Nov;5 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Couples;Sep-Nov;2 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Families;Sep-Nov;4 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Business;Dec-Feb;4 +Trump International Hotel Las Vegas;1282;YES;YES;NO;YES;YES;Couples;Dec-Feb;5 +The Cromwell;188;YES;NO;NO;NO;YES;Business;Dec-Feb;3 +The Cromwell;188;YES;NO;NO;NO;YES;Business;Dec-Feb;4 +The Cromwell;188;YES;NO;NO;NO;YES;Families;Dec-Feb;5 +The Cromwell;188;YES;NO;NO;NO;YES;Couples;Dec-Feb;5 +The Cromwell;188;YES;NO;NO;NO;YES;Solo;Mar-May;2 +The Cromwell;188;YES;NO;NO;NO;YES;Friends;Mar-May;5 +The Cromwell;188;YES;NO;NO;NO;YES;Couples;Mar-May;5 +The Cromwell;188;YES;NO;NO;NO;YES;Families;Mar-May;2 +The Cromwell;188;YES;NO;NO;NO;YES;Friends;Mar-May;5 +The Cromwell;188;YES;NO;NO;NO;YES;Couples;Mar-May;5 +The Cromwell;188;YES;NO;NO;NO;YES;Friends;Jun-Aug;5 +The Cromwell;188;YES;NO;NO;NO;YES;Couples;Jun-Aug;5 +The Cromwell;188;YES;NO;NO;NO;YES;Couples;Jun-Aug;5 +The Cromwell;188;YES;NO;NO;NO;YES;Friends;Jun-Aug;1 +The Cromwell;188;YES;NO;NO;NO;YES;Couples;Jun-Aug;5 +The Cromwell;188;YES;NO;NO;NO;YES;Families;Jun-Aug;4 +The Cromwell;188;YES;NO;NO;NO;YES;Couples;Sep-Nov;5 +The Cromwell;188;YES;NO;NO;NO;YES;Business;Sep-Nov;4 +The Cromwell;188;YES;NO;NO;NO;YES;Families;Sep-Nov;3 +The Cromwell;188;YES;NO;NO;NO;YES;Friends;Sep-Nov;5 +The Cromwell;188;YES;NO;NO;NO;YES;Couples;Sep-Nov;3 +The Cromwell;188;YES;NO;NO;NO;YES;Business;Sep-Nov;4 +The Cromwell;188;YES;NO;NO;NO;YES;Couples;Dec-Feb;4 +The Cromwell;188;YES;NO;NO;NO;YES;Couples;Dec-Feb;4 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Business;Dec-Feb;1 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Couples;Dec-Feb;5 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Couples;Dec-Feb;4 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Business;Dec-Feb;5 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Couples;Mar-May;5 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Friends;Mar-May;4 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Families;Mar-May;3 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Friends;Mar-May;4 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Business;Mar-May;5 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Friends;Mar-May;5 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Couples;Jun-Aug;5 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Business;Jun-Aug;4 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Friends;Jun-Aug;5 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Families;Jun-Aug;5 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Families;Jun-Aug;5 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Families;Jun-Aug;5 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Friends;Sep-Nov;5 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Business;Sep-Nov;4 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Friends;Dec-Feb;5 +Encore at wynn Las Vegas;2034;YES;YES;NO;YES;YES;Business;Dec-Feb;5 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Couples;Dec-Feb;5 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Families;Dec-Feb;2 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Business;Dec-Feb;5 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Couples;Dec-Feb;5 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Couples;Mar-May;5 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Couples;Mar-May;4 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Business;Mar-May;4 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Families;Mar-May;4 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Families;Mar-May;5 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Couples;Mar-May;1 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Friends;Jun-Aug;5 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Solo;Jun-Aug;5 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Families;Jun-Aug;4 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Families;Jun-Aug;5 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Couples;Jun-Aug;4 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Families;Jun-Aug;5 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Families;Sep-Nov;5 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Solo;Sep-Nov;5 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Couples;Sep-Nov;2 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Business;Sep-Nov;4 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Families;Sep-Nov;3 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Families;Sep-Nov;4 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Couples;Dec-Feb;5 +Hilton Grand Vacations on the Boulevard;1228;YES;YES;NO;YES;YES;Couples;Dec-Feb;4 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Business;Dec-Feb;4 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Business;Dec-Feb;4 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Families;Dec-Feb;5 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Business;Dec-Feb;5 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Friends;Mar-May;4 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Business;Mar-May;5 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Couples;Mar-May;5 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Couples;Mar-May;4 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Couples;Mar-May;4 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Business;Mar-May;4 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Families;Jun-Aug;5 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Families;Jun-Aug;5 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Couples;Jun-Aug;5 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Couples;Jun-Aug;5 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Families;Jun-Aug;5 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Families;Jun-Aug;5 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Friends;Sep-Nov;5 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Friends;Sep-Nov;5 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Business;Sep-Nov;3 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Families;Sep-Nov;5 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Couples;Sep-Nov;4 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Couples;Sep-Nov;4 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Couples;Dec-Feb;5 +Marriott's Grand Chateau;732;YES;YES;NO;NO;YES;Families;Dec-Feb;4 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Couples;Dec-Feb;5 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Friends;Dec-Feb;5 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Business;Dec-Feb;3 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Business;Dec-Feb;5 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Friends;Mar-May;5 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Couples;Mar-May;5 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Couples;Mar-May;5 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Couples;Mar-May;4 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Families;Mar-May;2 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Business;Mar-May;3 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Friends;Jun-Aug;5 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Couples;Jun-Aug;3 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Couples;Jun-Aug;5 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Business;Jun-Aug;4 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Business;Jun-Aug;3 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Couples;Jun-Aug;4 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Couples;Sep-Nov;5 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Couples;Sep-Nov;5 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Couples;Sep-Nov;3 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Business;Sep-Nov;5 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Couples;Sep-Nov;4 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Business;Sep-Nov;3 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Families;Dec-Feb;5 +Tuscany Las Vegas Suites & Casino;716;YES;YES;YES;YES;YES;Friends;Dec-Feb;5 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Business;Dec-Feb;3 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Couples;Dec-Feb;5 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Couples;Dec-Feb;2 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Families;Dec-Feb;2 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Friends;Mar-May;5 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Couples;Mar-May;5 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Families;Mar-May;3 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Families;Mar-May;3 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Friends;Mar-May;3 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Families;Mar-May;3 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Couples;Jun-Aug;5 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Couples;Jun-Aug;4 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Families;Jun-Aug;3 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Couples;Jun-Aug;5 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Families;Jun-Aug;4 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Families;Jun-Aug;5 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Friends;Sep-Nov;5 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Business;Sep-Nov;4 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Families;Sep-Nov;4 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Couples;Sep-Nov;4 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Business;Sep-Nov;4 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Business;Sep-Nov;5 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Couples;Dec-Feb;4 +Hilton Grand Vacations at the Flamingo;315;YES;YES;NO;NO;NO;Families;Dec-Feb;5 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Friends;Dec-Feb;4 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Families;Dec-Feb;5 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Couples;Dec-Feb;5 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Couples;Dec-Feb;5 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Friends;Mar-May;5 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Couples;Mar-May;4 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Families;Mar-May;5 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Couples;Mar-May;5 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Families;Mar-May;4 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Business;Mar-May;4 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Couples;Jun-Aug;5 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Families;Jun-Aug;5 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Families;Jun-Aug;5 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Friends;Jun-Aug;4 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Families;Jun-Aug;3 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Couples;Jun-Aug;5 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Friends;Sep-Nov;5 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Business;Sep-Nov;4 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Couples;Sep-Nov;3 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Couples;Sep-Nov;4 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Families;Sep-Nov;3 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Families;Sep-Nov;4 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Families;Dec-Feb;4 +Wyndham Grand Desert;787;YES;YES;YES;NO;NO;Friends;Dec-Feb;5 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Business;Dec-Feb;4 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Solo;Dec-Feb;5 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Families;Dec-Feb;4 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Couples;Dec-Feb;5 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Couples;Mar-May;3 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Couples;Mar-May;5 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Couples;Mar-May;5 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Couples;Mar-May;4 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Families;Mar-May;4 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Couples;Mar-May;5 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Couples;Jun-Aug;5 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Business;Jun-Aug;5 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Couples;Jun-Aug;4 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Couples;Jun-Aug;4 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Families;Jun-Aug;5 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Couples;Jun-Aug;5 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Couples;Sep-Nov;4 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Friends;Sep-Nov;5 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Families;Dec-Feb;5 +The Venetian Las Vegas Hotel;4027;YES;YES;NO;YES;YES;Couples;Dec-Feb;4 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Solo;Dec-Feb;4 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Families;Dec-Feb;5 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Couples;Dec-Feb;4 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Business;Dec-Feb;5 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Couples;Mar-May;5 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Business;Mar-May;2 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Business;Mar-May;5 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Families;Mar-May;2 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Friends;Mar-May;3 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Couples;Mar-May;5 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Families;Jun-Aug;5 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Business;Jun-Aug;4 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Couples;Jun-Aug;5 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Families;Jun-Aug;4 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Solo;Jun-Aug;4 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Families;Jun-Aug;5 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Business;Sep-Nov;4 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Couples;Sep-Nov;4 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Friends;Sep-Nov;5 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Friends;Sep-Nov;5 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Business;Dec-Feb;4 +Bellagio Las Vegas;3933;YES;YES;NO;YES;YES;Families;Dec-Feb;2 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Couples;Dec-Feb;4 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Couples;Dec-Feb;5 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Couples;Dec-Feb;2 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Friends;Dec-Feb;4 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Couples;Mar-May;2 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Couples;Mar-May;5 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Business;Mar-May;4 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Friends;Mar-May;3 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Friends;Mar-May;5 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Couples;Mar-May;3 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Couples;Jun-Aug;5 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Couples;Jun-Aug;3 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Couples;Jun-Aug;4 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Families;Jun-Aug;4 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Families;Jun-Aug;5 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Couples;Jun-Aug;5 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Couples;Sep-Nov;4 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Couples;Sep-Nov;2 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Couples;Sep-Nov;4 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Couples;Dec-Feb;5 +Paris Las Vegas;2916;YES;YES;NO;YES;YES;Friends;Dec-Feb;4 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Couples;Dec-Feb;4 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Families;Dec-Feb;3 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Solo;Dec-Feb;4 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Couples;Dec-Feb;3 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Business;Mar-May;5 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Friends;Mar-May;5 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Business;Mar-May;4 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Solo;Mar-May;4 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Friends;Mar-May;3 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Couples;Mar-May;4 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Solo;Jun-Aug;4 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Business;Jun-Aug;3 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Families;Jun-Aug;4 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Couples;Jun-Aug;5 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Families;Jun-Aug;3 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Couples;Jun-Aug;4 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Solo;Sep-Nov;5 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Couples;Sep-Nov;3 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Couples;Sep-Nov;5 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Couples;Sep-Nov;4 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Friends;Sep-Nov;4 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Families;Dec-Feb;2 +The Westin las Vegas Hotel Casino & Spa;826;YES;YES;NO;YES;YES;Families;Dec-Feb;4 diff --git a/igazi.txt b/igazi.txt new file mode 100644 index 0000000..1f8c7fe --- /dev/null +++ b/igazi.txt @@ -0,0 +1,35 @@ +az +igazi +programozó +a +szimbólum +manipulációt +fortranban +csinálja +az +igazi +programozó +a +szövegkezelést +fortranban +csinálja +az +igazi +programozó +a +gépidőelszámolást +már +ha +megcsinálja +egyáltalán +fortranban +csinálja +az +igazi +programozó +a +mesterséges +intelligencia +programokat +fortranban +csinálja diff --git a/investments.txt b/investments.txt new file mode 100644 index 0000000..f5ac4af --- /dev/null +++ b/investments.txt @@ -0,0 +1,1435 @@ +company|numEmps|category|city|state|fundedDate|raisedAmt|raisedCurrency|round +LifeLock||web|Tempe|AZ|1-May-07|6850000|USD|b +LifeLock||web|Tempe|AZ|1-Oct-06|6000000|USD|a +LifeLock||web|Tempe|AZ|1-Jan-08|25000000|USD|c +MyCityFaces|7.0|web|Scottsdale|AZ|1-Jan-08|50000|USD|seed +Flypaper||web|Phoenix|AZ|1-Feb-08|3000000|USD|a +Infusionsoft|105.0|software|Gilbert|AZ|1-Oct-07|9000000|USD|a +gAuto|4.0|web|Scottsdale|AZ|1-Jan-08|250000|USD|seed +ChosenList.com|5.0|web|Scottsdale|AZ|1-Oct-06|140000|USD|seed +ChosenList.com|5.0|web|Scottsdale|AZ|25-Jan-08|233750|USD|angel +Digg|60.0|web|San Francisco|CA|1-Dec-06|8500000|USD|b +Digg|60.0|web|San Francisco|CA|1-Oct-05|2800000|USD|a +Facebook|450.0|web|Palo Alto|CA|1-Sep-04|500000|USD|angel +Facebook|450.0|web|Palo Alto|CA|1-May-05|12700000|USD|a +Facebook|450.0|web|Palo Alto|CA|1-Apr-06|27500000|USD|b +Facebook|450.0|web|Palo Alto|CA|1-Oct-07|300000000|USD|c +Facebook|450.0|web|Palo Alto|CA|1-Mar-08|40000000|USD|c +Facebook|450.0|web|Palo Alto|CA|15-Jan-08|15000000|USD|c +Facebook|450.0|web|Palo Alto|CA|1-May-08|100000000|USD|debt_round +Photobucket|60.0|web|Palo Alto|CA|1-May-06|10500000|USD|b +Photobucket|60.0|web|Palo Alto|CA|1-Mar-05|3000000|USD|a +Omnidrive||web|Palo Alto|CA|1-Dec-06|800000|USD|angel +Geni|18.0|web|West Hollywood|CA|1-Jan-07|1500000|USD|a +Geni|18.0|web|West Hollywood|CA|1-Mar-07|10000000|USD|b +Twitter|17.0|web|San Francisco|CA|1-Jul-07|5400000|USD|b +Twitter|17.0|web|San Francisco|CA|1-May-08|15000000|USD|c +StumbleUpon||web|San Francisco|CA|1-Dec-05|1500000|USD|seed +Gizmoz||web|Menlo Park|CA|1-May-07|6300000|USD|a +Gizmoz||web|Menlo Park|CA|16-Mar-08|6500000|USD|b +Scribd|14.0|web|San Francisco|CA|1-Jun-06|12000|USD|seed +Scribd|14.0|web|San Francisco|CA|1-Jan-07|40000|USD|angel +Scribd|14.0|web|San Francisco|CA|1-Jun-07|3710000|USD|a +Slacker||web|San Diego|CA|1-Jun-07|40000000|USD|b +Slacker||web|San Diego|CA|1-Jun-07|13500000|USD|a +Lala||web|Palo Alto|CA|1-May-07|9000000|USD|a +Plaxo|50.0|web|Mountain View|CA|1-Nov-02|3800000|USD|a +Plaxo|50.0|web|Mountain View|CA|1-Jul-03|8500000|USD|b +Plaxo|50.0|web|Mountain View|CA|1-Apr-04|7000000|USD|c +Plaxo|50.0|web|Mountain View|CA|1-Feb-07|9000000|USD|d +Powerset|60.0|web|San Francisco|CA|1-Jun-07|12500000|USD|a +Technorati|25.0|web|San Francisco|CA|1-Jun-06|10520000|USD|c +Technorati|25.0|web|San Francisco|CA|1-Sep-04|6500000|USD|b +Technorati|25.0|web|San Francisco|CA|13-Jun-08|7500000|USD|d +Technorati|25.0|web|San Francisco|CA|10-May-07|1000000|USD|c +Mahalo|40.0|web|Santa Monica|CA|1-Jan-06|5000000|USD|a +Mahalo|40.0|web|Santa Monica|CA|1-Jan-07|16000000|USD|b +Kyte|40.0|web|San Francisco|CA|1-Jul-07|2250000|USD|a +Kyte|40.0|web|San Francisco|CA|1-Dec-07|15000000|USD|b +Kyte|40.0|web|San Francisco|CA|10-Mar-08|6100000|USD|b +Veoh||web|San Diego|CA|1-Apr-06|12500000|USD|b +Veoh||web|San Diego|CA|1-Aug-07|25000000|USD|c +Veoh||web|San Diego|CA|1-Jul-05|2250000|USD|a +Veoh||web|San Diego|CA|3-Jun-08|30000000|USD|d +Jingle Networks||web|Menlo Park|CA|1-Oct-06|30000000|USD|c +Jingle Networks||web|Menlo Park|CA|1-Dec-05|5000000|USD|a +Jingle Networks||web|Menlo Park|CA|1-Apr-06|26000000|USD|b +Jingle Networks||web|Menlo Park|CA|1-Oct-05|400000|USD|angel +Jingle Networks||web|Menlo Park|CA|1-Jan-08|13000000|USD|c +Ning|41.0|web|Palo Alto|CA|1-Jul-07|44000000|USD|c +Ning|41.0|web|Palo Alto|CA|1-Apr-08|60000000|USD|d +JotSpot||web|Palo Alto|CA|1-Aug-04|5200000|USD|a +Mercora||web|Sunnyvale|CA|1-Jan-05|5000000|USD|a +Wesabe||web|San Francisco|CA|1-Feb-07|700000|USD|seed +Wesabe||web|San Francisco|CA|1-Jun-07|4000000|USD|a +Jangl|22.0|web|Pleasanton|CA|1-Jul-06|7000000|USD|b +Hyphen 8|4.0|web|San Francisco|CA|1-Oct-07|100000|USD|angel +Prosper||web|San Francisco|CA|1-Jun-07|20000000|USD|c +Prosper||web|San Francisco|CA|1-Apr-05|7500000|USD|a +Prosper||web|San Francisco|CA|1-Feb-06|12500000|USD|b +Google|20000.0|web|Mountain View|CA|1-Jun-99|25000000|USD|a +Jajah|80.0|web|Mountain View|CA|1-May-07|20000000|USD|c +Jajah|80.0|web|Mountain View|CA|1-Mar-06|3000000|USD|a +Jajah|80.0|web|Mountain View|CA|1-Apr-06|5000000|USD|b +YouTube||web|San Bruno|CA|1-Nov-05|3500000|USD|a +YouTube||web|San Bruno|CA|1-Apr-06|8000000|USD|b +Ustream||web|Mountain View|CA|1-Dec-07|2000000|USD|angel +Ustream||web|Mountain View|CA|10-Apr-08|11100000|USD|a +GizmoProject||web|San Diego|CA|1-Feb-06|6000000|USD|a +Adap.tv|15.0|web|San Mateo|CA|1-Jul-07|10000000|USD|a +Topix||web|Palo Alto|CA|1-Nov-06|15000000|USD|b +Revision3||web|San Francisco|CA|1-Sep-06|1000000|USD|a +Revision3||web|San Francisco|CA|1-Jun-07|8000000|USD|b +Aggregate Knowledge||web|San Mateo|CA|1-Jun-06|5000000|USD|a +Aggregate Knowledge||web|San Mateo|CA|1-Apr-07|20000000|USD|b +Sugar Inc||web|San Francisco|CA|1-Oct-06|5000000|USD|a +Sugar Inc||web|San Francisco|CA|1-Jun-07|10000000|USD|b +Zing||web|Mountain View|CA|1-Jan-07|13000000|USD|a +CriticalMetrics|4.0|web||CA|1-Jan-07|100000|USD|angel +Spock|30.0|web|Redwood City|CA|1-Dec-06|7000000|USD|a +Wize||web||CA|1-Jan-07|4000000|USD|a +SodaHead||web||CA|1-Jan-07|4250000|USD|a +SodaHead||web||CA|25-Jun-08|8400000|USD|b +CastTV|0.0|web|San Francisco|CA|1-Apr-07|3100000|USD|a +BuzzNet||web|Hollywood|CA|1-May-07|6000000|USD|a +BuzzNet||web|Hollywood|CA|7-Apr-08|25000000|USD|b +Funny Or Die||web|Palo Alto|CA|1-Dec-07|15000000|USD|b +Sphere|11.0|web|San Francisco|CA|1-May-06|3000000|USD|b +Sphere|11.0|web|San Francisco|CA|1-Apr-05|500000|USD|a +MeeVee||web|Burlingame|CA|1-Feb-06|6500000|USD|b +MeeVee||web|Burlingame|CA|1-Aug-06|8000000|USD|c +MeeVee||web|Burlingame|CA|1-Feb-05|7000000|USD|a +MeeVee||web|Burlingame|CA|1-Sep-07|3500000|USD|d +Mashery|0.0|web|San Francisco|CA|26-Jun-08|2000000|USD|c +Yelp||web|San Francisco|CA|1-Oct-06|10000000|USD|c +Yelp||web|San Francisco|CA|1-Oct-05|5000000|USD|b +Yelp||web|San Francisco|CA|1-Jul-04|1000000|USD|a +Yelp||web|San Francisco|CA|26-Feb-08|15000000|USD|d +Spotplex|3.0|web|Santa Clara|CA|1-Jan-07|450000|USD|angel +Coghead|21.0|web|Redwood City|CA|1-Mar-06|3200000|USD|a +Coghead|21.0|web|Redwood City|CA|1-Mar-07|8000000|USD|b +Zooomr||web|San Francisco|CA|1-Feb-06|50000|USD|angel +SideStep|75.0|web|Santa Clara|CA|1-Feb-07|15000000|USD|c +SideStep|75.0|web|Santa Clara|CA|1-Jan-04|8000000|USD|b +SideStep|75.0|web|Santa Clara|CA|1-Dec-99|2200000|USD|a +SideStep|75.0|web|Santa Clara|CA|1-Oct-00|6800000|USD|a +RockYou||web|San Mateo|CA|1-Jan-07|1500000|USD|a +RockYou||web|San Mateo|CA|1-Mar-07|15000000|USD|b +RockYou||web|San Mateo|CA|9-Jun-08|35000000|USD|c +RockYou||web|San Mateo|CA|27-May-08|1000000|USD|unattributed +Pageflakes|20.0|web|San Francisco|CA|1-May-06|1300000|USD|a +Swivel||web|San Francisco|CA|1-Sep-06|1000000|USD|a +Swivel||web|San Francisco|CA|1-Apr-07|1000000|USD|a +Slide|64.0|web|San Francisco|CA|1-Jul-05|8000000|USD|b +Slide|64.0|web|San Francisco|CA|1-Jan-08|50000000|USD|d +Bebo||web|San Francisco|CA|1-May-06|15000000|USD|a +freebase||web|San Francisco|CA|1-Mar-06|15000000|USD|a +freebase||web|San Francisco|CA|1-Jan-08|42500000|USD|b +Metaweb Technologies||web|San Francisco|CA|15-Jan-08|42000000|USD|b +Glam Media||web|Brisbane|CA|1-Jul-04|1100000|USD|a +Glam Media||web|Brisbane|CA|1-Jul-05|10000000|USD|b +Glam Media||web|Brisbane|CA|1-Dec-06|18500000|USD|c +Glam Media||web|Brisbane|CA|1-Feb-08|65000000|USD|d +Glam Media||web|Brisbane|CA|1-Feb-08|20000000|USD|d +TheFind||web|Mountain View|CA|1-Feb-05|7000000|USD|a +TheFind||web|Mountain View|CA|1-Oct-06|4000000|USD|b +TheFind||web|Mountain View|CA|1-Jul-07|15000000|USD|c +Zazzle||web|Redwood City|CA|1-Jul-05|16000000|USD|a +Zazzle||web|Redwood City|CA|1-Oct-07|30000000|USD|b +Dogster||web|San Francisco|CA|1-Sep-06|1000000|USD|angel +Pandora|80.0|web|Oakland|CA|1-Jan-04|7800000|USD|b +Pandora|80.0|web|Oakland|CA|1-Oct-05|12000000|USD|c +Pandora|80.0|web|Oakland|CA|2-Mar-00|1500000|USD|a +Cafepress|300.0|web|Foster City|CA|1-Mar-00|1200000|USD|a +Cafepress|300.0|web|Foster City|CA|1-May-01|300000|USD|a +Cafepress|300.0|web|Foster City|CA|1-Feb-05|14000000|USD|b +pbwiki|15.0|web||CA|11-Sep-06|350000|USD|a +pbwiki|15.0|web||CA|1-Feb-07|2100000|USD|b +AdBrite||web|San Francisco|CA|1-Sep-04|4000000|USD|a +AdBrite||web|San Francisco|CA|1-Feb-06|8000000|USD|b +AdBrite||web|San Francisco|CA|1-Nov-07|23000000|USD|c +Loomia||web|San Francisco|CA|1-Jun-05|1000000|USD|seed +Loomia||web|San Francisco|CA|1-Apr-08|5000000|USD|a +Meebo|40.0|web|Mountain View|CA|1-Dec-05|3500000|USD|a +Meebo|40.0|web|Mountain View|CA|1-Jan-07|9000000|USD|b +Meebo|40.0|web|Mountain View|CA|30-Apr-08|25000000|USD|c +Eventbrite|13.0|web|San Francisco|CA|1-Nov-06|100000|USD|angel +LinkedIn||web|Mountain View|CA|1-Nov-03|4700000|USD|a +LinkedIn||web|Mountain View|CA|1-Oct-04|10000000|USD|b +LinkedIn||web|Mountain View|CA|1-Jan-07|12800000|USD|c +LinkedIn||web|Mountain View|CA|17-Jun-08|53000000|USD|d +FlickIM||web|Berkeley|CA|1-Mar-07|1600000|USD|a +Terabitz|12.0|web|Palo Alto|CA|1-Feb-07|10000000|USD|a +Healthline||web|San Francisco|CA|1-Jan-06|14000000|USD|a +Healthline||web|San Francisco|CA|1-Jul-07|21000000|USD|b +Box.net|19.0|web|Palo Alto|CA|1-Oct-06|1500000|USD|a +Box.net|19.0|web|Palo Alto|CA|23-Jan-08|6000000|USD|b +Conduit||web|Redwood Shores|CA|1-Jul-06|1800000|USD|a +Conduit||web|Redwood Shores|CA|1-Jan-08|8000000|USD|b +Edgeio||web|Palo Alto|CA|1-Jul-07|5000000|USD|a +Spot Runner||web|Los Angeles|CA|1-Jan-06|10000000|USD|a +Spot Runner||web|Los Angeles|CA|1-Oct-06|40000000|USD|b +Spot Runner||web|Los Angeles|CA|7-May-08|51000000|USD|c +Kaboodle||web|Santa Clara|CA|1-Mar-05|1500000|USD|a +Kaboodle||web|Santa Clara|CA|1-Mar-06|2000000|USD|b +Kaboodle||web|Santa Clara|CA|1-Mar-07|1500000|USD|c +Giga Omni Media|18.0|web|San Francisco|CA|1-Jun-06|325000|USD|a +Visible Path||web|Foster City|CA|1-Mar-06|17000000|USD|b +Visible Path||web|Foster City|CA|1-Mar-06|7700000|USD|a +Wink||web|Mountain View|CA|1-Jan-05|6200000|USD|a +seesmic||web|San Francisco|CA|1-Nov-07|6000000|USD|a +seesmic||web|San Francisco|CA|20-Jun-08|6000000|USD|b +Zvents||web|San Mateo|CA|7-Nov-06|7000000|USD|a +Zvents||web|San Mateo|CA|5-Oct-05|200000|USD|seed +Eventful|35.0|web|San Diego|CA|1-Sep-06|7500000|USD|b +Eventful|35.0|web|San Diego|CA|1-Mar-05|2100000|USD|a +Oodle||web|San Mateo|CA|1-May-06|5000000|USD|a +Oodle||web|San Mateo|CA|1-Jul-07|11000000|USD|b +oDesk||web|Menlo Park|CA|1-Apr-06|6000000|USD|a +oDesk||web|Menlo Park|CA|1-Sep-06|8000000|USD|b +oDesk||web|Menlo Park|CA|1-Jun-08|15000000|USD|c +SimplyHired||web|Mountain View|CA|1-Mar-06|13500000|USD|b +SimplyHired||web|Mountain View|CA|5-Aug-05|3000000|USD|a +ooma|47.0|web|Palo Alto|CA|1-Jan-05|8000000|USD|a +ooma|47.0|web|Palo Alto|CA|1-Dec-06|18000000|USD|b +GoingOn|3.0|web|Woodside|CA|1-Aug-05|1000000|USD|seed +Flixster|17.0|web|San Francisco|CA|1-Feb-07|2000000|USD|a +Flixster|17.0|web|San Francisco|CA|4-Apr-08|5000000|USD|b +Piczo||web|San Francisco|CA|1-Jan-07|11000000|USD|c +Socialtext||web|Palo Alto|CA|1-Jun-04|300000|USD|angel +Socialtext||web|Palo Alto|CA|1-Jun-05|3100000|USD|b +Socialtext||web|Palo Alto|CA|1-Nov-07|9500000|USD|c +PowerReview||web|Millbrae|CA|1-Dec-05|6250000|USD|a +PowerReview||web|Millbrae|CA|1-Sep-07|15000000|USD|b +hi5|100.0|web|San Francisco|CA|1-Jul-07|20000000|USD|a +hi5|100.0|web|San Francisco|CA|1-Dec-07|15000000|USD|debt_round +Tagged||web|San Francisco|CA|1-Sep-05|1500000|USD|angel +Tagged||web|San Francisco|CA|1-Dec-05|7000000|USD|a +Tagged||web|San Francisco|CA|1-Jul-07|15000000|USD|b +Jaxtr||web|Menlo Park|CA|1-Jul-07|1500000|USD|angel +Jaxtr||web|Menlo Park|CA|1-Aug-07|10000000|USD|a +Jaxtr||web|Menlo Park|CA|23-Jun-08|10000000|USD|b +Me||web|San Jose|CA|1-May-07|1500000|USD|seed +introNetworks|9.0|web|Santa Barbara|CA|1-May-07|2700000|USD|a +Leverage Software|21.0|web|San Francisco|CA|14-May-05|6000000|USD|a +Lithium Technologies|42.0|web|Emeryville|CA|17-Apr-07|9000000|USD|a +Lithium Technologies|42.0|web|Emeryville|CA|1-Jun-08|12000000|USD|b +Genius||web|San Mateo|CA|1-Mar-06|5100000|USD|a +Genius||web|San Mateo|CA|1-Jan-07|10000000|USD|b +Genius||web|San Mateo|CA|5-Feb-08|19000000|USD|c +Respectance||web|San Francisco|CA|1-Jun-07|250000|USD|seed +Respectance||web|San Francisco|CA|1-Jul-07|1500000|USD|a +Curse||web|San Francisco|CA|1-Jul-07|5000000|USD|a +LicketyShip||web|San Francisco|CA|1-Dec-07|1500000|USD|angel +Grockit|8.0|web|San Francisco|CA|1-Jun-07|2300000|USD|a +Grockit|8.0|web|San Francisco|CA|30-May-08|8000000|USD|b +PeerMe||web|Mountain View|CA|1-Jan-05|5000000|USD|a +Kiptronic|20.0|web|San Francisco|CA|1-Dec-06|4000000|USD|a +Kiptronic|20.0|web|San Francisco|CA|1-Nov-05|300000|USD|angel +Kiptronic|20.0|web|San Francisco|CA|5-Jun-08|3000000|USD|b +Vuze||web|Palo Alto|CA|1-Dec-06|12000000|USD|b +Vuze||web|Palo Alto|CA|1-Dec-07|20000000|USD|c +Phonezoo||web|Sunnyvale|CA|1-Jun-06|560000|USD|a +Phonezoo||web|Sunnyvale|CA|1-Feb-07|1500000|USD|a +Droplet Technology||web|Menlo Park|CA|1-Oct-06|3500000|USD|a +PodTech||web|Palo Alto|CA|1-Mar-06|5500000|USD|a +PodTech||web|Palo Alto|CA|1-Jun-07|2000000|USD|a +Crackle||web|Mill Valley|CA|1-Dec-05|1750000|USD|a +Reddit||web|San Francisco|CA|1-Jun-05|100000|USD|seed +Wikia||web|San Mateo|CA|1-Mar-06|4000000|USD|a +Wikia||web|San Mateo|CA|1-Dec-06|10000000|USD|b +Retrevo||web|Sunnyvale|CA|1-Dec-06|3200000|USD|a +Retrevo||web|Sunnyvale|CA|1-Feb-06|700000|USD|seed +Retrevo||web|Sunnyvale|CA|20-Mar-08|8000000|USD|b +Buxfer|2.0|web|Mountain View|CA|1-Jan-07|15000|USD|seed +Buxfer|2.0|web|Mountain View|CA|1-Apr-07|300000|USD|angel +YouSendIt|0.0|web|Campbell|CA|24-Apr-07|10000000|USD|b +YouSendIt|0.0|web|Campbell|CA|1-Aug-05|10000000|USD|a +YouSendIt|0.0|web|Campbell|CA|15-Jul-08|14000000|USD|c +Tangler||web|Mountain View|CA|1-Jul-06|1500000|USD|angel +obopay||web|Redwood City|CA|1-Feb-06|10000000|USD|a +obopay||web|Redwood City|CA|1-Sep-06|7000000|USD|b +obopay||web|Redwood City|CA|1-Jul-07|29000000|USD|c +obopay||web|Redwood City|CA|21-Apr-08|20000000|USD|d +PayPal||web|San Jose|CA|1-Apr-00|100000000|USD|c +PayPal||web|San Jose|CA|1-Feb-01|90000000|USD|d +PayPal||web|San Jose|CA|1-Jul-99|4000000|USD|b +TalkPlus||web|San Mateo|CA|1-Oct-06|5500000|USD|a +Vudu|50.0|hardware|Santa Clara|CA|1-Jun-05|21000000|USD|a +Insider Pages||web|Redwood City|CA|1-Mar-06|8500000|USD|a +Snapfish||web|San Francisco|CA|1-Nov-99|7500000|USD|a +Snapfish||web|San Francisco|CA|1-May-00|36000000|USD|b +Affinity Circles|22.0|web|Mountain View|CA|1-May-06|4100000|USD|c +Affinity Circles|22.0|web|Mountain View|CA|1-Jun-05|1000000|USD|b +Affinity Circles|22.0|web|Mountain View|CA|1-Dec-04|440000|USD|a +IMVU||web|Palo Alto|CA|1-Feb-06|1000000|USD|angel +Nirvanix||web|San Diego|CA|19-Dec-07|18000000|USD|a +Habit Industries|4.0|web|Palo Alto|CA|1-Jun-07|15000|USD|seed +Gaia||web|San Jose|CA|1-Jun-06|8930000|USD|a +Gaia||web|San Jose|CA|1-Mar-07|12000000|USD|b +Gaia||web|San Jose|CA|14-Jul-08|11000000|USD|c +GreatCall||web|Del Mar|CA|1-Aug-07|36600000|USD|a +Revver||web|Los Angeles|CA|1-Nov-05|4000000|USD|a +Revver||web|Los Angeles|CA|1-Apr-06|8700000|USD|b +Metacafe||web|Palo Alto|CA|1-Jul-06|15000000|USD|b +Metacafe||web|Palo Alto|CA|1-Aug-07|30000000|USD|c +Flock|40.0|web|Redwood City|CA|1-Nov-05|3300000|USD|b +Flock|40.0|web|Redwood City|CA|1-Jun-06|10000000|USD|c +Flock|40.0|web|Redwood City|CA|21-May-08|15000000|USD|d +VMIX Media|42.0|web|San Diego|CA|1-Mar-06|5000000|USD|a +VMIX Media|42.0|web|San Diego|CA|1-Oct-07|16500000|USD|b +Kontera||web|San Francisco|CA|1-Aug-07|10300000|USD|b +Kontera||web|San Francisco|CA|1-Jul-06|7000000|USD|a +Tokbox||web|San Francisco|CA|1-Oct-07|4000000|USD|a +Tokbox||web|San Francisco|CA|6-Aug-08|10000000|USD|b +Six Apart|150.0|web|San Francisco|CA|1-Oct-04|10000000|USD|b +Six Apart|150.0|web|San Francisco|CA|1-Mar-06|12000000|USD|c +Six Apart|150.0|web|San Francisco|CA|23-Apr-03|600000|USD|a +Weebly||web|San Francisco|CA|1-May-07|650000|USD|seed +Synthasite|26.0|web|San Francisco|CA|1-Nov-07|5000000|USD|a +BitTorrent|29.0|web|San Francisco|CA|1-Sep-05|8750000|USD|a +BitTorrent|29.0|web|San Francisco|CA|1-Dec-06|25000000|USD|b +Kongregate|16.0|web|San Francisco|CA|1-Mar-07|1000000|USD|a +Kongregate|16.0|web|San Francisco|CA|1-Aug-07|5000000|USD|b +Kongregate|16.0|web|San Francisco|CA|1-Apr-08|3000000|USD|b +DanceJam|0.0|web|San Francisco|CA|1-May-07|1000000|USD|angel +DanceJam|0.0|web|San Francisco|CA|1-Feb-08|3500000|USD|a +Fathom Online||web|San Francisco|CA|1-Jul-04|6000000|USD|a +Zivity|16.0|web|San Francisco|CA|1-Aug-07|1000000|USD|seed +Zivity|16.0|web|San Francisco|CA|1-Mar-08|7000000|USD|b +BlueLithium|135.0|web|San Jose|CA|1-Feb-05|11500000|USD|a +eXpresso||web|Menlo Park|CA|1-Oct-07|2000000|USD|a +Doostang||web|Palo Alto|CA|1-Sep-07|3500000|USD|a +Docstoc||web|Beverly Hills|CA|1-Nov-07|750000|USD|a +Docstoc||web|Beverly Hills|CA|28-Apr-08|3250000|USD|b +Mevio||web|San Francisco|CA|1-Jul-05|8900000|USD|a +Mevio||web|San Francisco|CA|1-Sep-06|15000000|USD|b +Mevio||web|San Francisco|CA|9-Jul-08|15000000|USD|c +PureVideo Networks||web|Los Angeles|CA|1-Dec-05|5600000|USD|a +PureVideo Networks||web|Los Angeles|CA|1-Sep-07|2850000|USD|b +FilmLoop||web|Menlo Park|CA|1-Feb-05|5600000|USD|a +BitPass||web|Mountain View|CA|1-Jul-03|1500000|USD|a +BitPass||web|Mountain View|CA|1-Sep-04|11800000|USD|b +Art.com|500.0|web|Emeryville|CA|1-Feb-05|30000000|USD|a +Atom Shockwave||web|San Francisco|CA|1-Mar-01|22900000|USD|a +CinemaNow||web|Marina Del Rey|CA|1-Jul-04|11000000|USD|a +Digital Chocolate||web|San Mateo|CA|1-Dec-03|8400000|USD|a +Digital Chocolate||web|San Mateo|CA|1-Dec-03|13000000|USD|b +eHarmony||web|Pasadena|CA|1-Jun-00|3000000|USD|a +eHarmony||web|Pasadena|CA|1-Nov-04|110000000|USD|b +Friendster|465.0|web|San Francisco|CA|1-Dec-02|2400000|USD|a +Friendster|465.0|web|San Francisco|CA|1-Oct-03|13000000|USD|b +Friendster|465.0|web|San Francisco|CA|1-Aug-06|10000000|USD|c +Friendster|465.0|web|San Francisco|CA|5-Aug-08|20000000|USD|d +Greystripe||web|San Francisco|CA|1-May-07|8900000|USD|b +Sling Media||web|Foster City|CA|1-Nov-04|10500000|USD|a +Sling Media||web|Foster City|CA|1-Jul-05|4000000|USD|a +Trulia||web|San Francisco|CA|1-Dec-05|5700000|USD|b +Trulia||web|San Francisco|CA|1-May-07|10000000|USD|c +Trulia||web|San Francisco|CA|1-Sep-05|2100000|USD|a +Trulia||web|San Francisco|CA|10-Jul-08|15000000|USD|d +Lending Club||web|Sunnyvale|CA|1-May-07|2000000|USD|angel +Lending Club||web|Sunnyvale|CA|1-Aug-07|10260000|USD|a +tubemogul|15.0|web|Emeryville|CA|7-Feb-08|1500000|USD|a +Gemini||web|San Mateo|CA|1-Mar-07|20000000|USD|a +Gemini||web|San Mateo|CA|1-May-07|5000000|USD|b +Multiverse||web|Mountain View|CA|1-May-07|4175000|USD|a +Multiverse||web|Mountain View|CA|17-Apr-07|850000|USD|angel +LimeLife||mobile|Menlo Park|CA|28-Mar-06|10000000|USD|b +LimeLife||mobile|Menlo Park|CA|1-Aug-05|5000000|USD|a +LimeLife||mobile|Menlo Park|CA|24-May-07|3900000|USD|b +OpenTable||web|San Francisco|CA|1-May-99|2000000|USD|a +OpenTable||web|San Francisco|CA|1-Jan-00|10000000|USD|b +OpenTable||web|San Francisco|CA|1-Oct-00|36000000|USD|c +RooftopComedy|20.0|web|San Francisco|CA|1-May-07|2500000|USD|a +Federated Media||web|Sausalito|CA|1-Aug-07|4500000|USD|b +Federated Media||web|Sausalito|CA|1-Apr-08|50000000|USD|c +Delivery Agent||web|San Francisco|CA|1-May-07|18500000|USD|c +Delivery Agent||web|San Francisco|CA|17-May-06|11000000|USD|b +Delivery Agent||web|San Francisco|CA|29-Mar-05|5500000|USD|a +Reunion|100.0|web|Los Angeles|CA|1-Apr-07|25000000|USD|a +Mixercast||web|San Mateo|CA|1-May-05|2600000|USD|a +Mixercast||web|San Mateo|CA|1-Jan-08|6000000|USD|b +mTraks||web|San Diego|CA|1-May-07|550000|USD|angel +Xora||web|Mountain View|CA|1-May-01|7000000|USD|a +Xora||web|Mountain View|CA|1-Feb-03|4000000|USD|b +Xora||web|Mountain View|CA|1-Jun-07|4000000|USD|debt_round +Ooyala||web|Mountain View|CA|1-Jan-08|8500000|USD|b +SayNow|14.0|web|Palo Alto|CA|1-Sep-07|7500000|USD|a +Crunchyroll||web|San Francsico|CA|1-Feb-08|4050000|USD|a +CircleUp|19.0|web|Newport Beach|CA|1-Jun-07|3000000|USD|a +PixSense||web|Santa Clara|CA|1-Dec-06|5400000|USD|a +PixSense||web|Santa Clara|CA|1-Jun-07|2000000|USD|b +Danal||web|San Jose|CA|1-Jun-07|9500000|USD|a +hulu||web|Los Angeles|CA|1-Aug-07|100000000|USD|a +OurStory||web|Mountain View|CA|1-Jan-06|6300000|USD|a +Specificmedia||web|Ir vine|CA|1-Jun-06|10000000|USD|a +Specificmedia||web|Ir vine|CA|1-Nov-07|100000000|USD|b +AdMob||web|San Mateo|CA|1-Mar-07|15000000|USD|b +MySQL||web|Cupertino|CA|1-Feb-06|18500000|USD|c +MySQL||web|Cupertino|CA|1-Jun-03|19500000|USD|b +Attributor|0.0|web|Redwood City|CA|28-Jan-06|2000000|USD|a +Attributor|0.0|web|Redwood City|CA|2-Apr-08|12000000|USD|c +Attributor|0.0|web|Redwood City|CA|18-Dec-06|8000000|USD|b +Social Media|15.0|web|Palo Alto|CA|1-Sep-07|500000|USD|a +Social Media|15.0|web|Palo Alto|CA|1-Oct-07|3500000|USD|b +Demand Media||web|Santa Monica|CA|1-May-06|120000000|USD|a +Demand Media||web|Santa Monica|CA|1-Sep-06|100000000|USD|b +Demand Media||web|Santa Monica|CA|1-Sep-07|100000000|USD|c +Demand Media||web|Santa Monica|CA|24-Mar-08|35000000|USD|d +TripIt|8.0|web|San Francisco|CA|1-Apr-07|1000000|USD|seed +PubMatic|35.0|web|Palo Alto|CA|1-Jan-08|7000000|USD|a +Mint|22.0|web|Mountain View|CA|1-Oct-07|4700000|USD|a +Mint|22.0|web|Mountain View|CA|1-Oct-06|325000|USD|seed +Mint|22.0|web|Mountain View|CA|5-Mar-08|12000000|USD|b +app2you|4.0|web|La Jolla|CA|20-Nov-07|255000|USD|angel +app2you|4.0|web|La Jolla|CA|1-Oct-06|177000|USD|angel +YourStreet|6.0|web|San Francisco|CA|1-Oct-06|250000|USD|angel +Tagworld||web|Santa Monica|CA|1-Mar-06|7500000|USD|a +Tagworld||web|Santa Monica|CA|1-Dec-06|40000000|USD|b +RotoHog||web|Inglewood|CA|1-Aug-07|6000000|USD|a +ThisNext|0.0|web|Santa Monica|CA|1-Jan-08|5000000|USD|b +ThisNext|0.0|web|Santa Monica|CA|1-Jan-06|2500000|USD|a +ChessPark||web|West Palm Beach|CA|1-Jul-07|1000000|USD|angel +Break||web|Beverly Hills|CA|1-Jul-07|21400000|USD|a +MuseStorm||web|Sunnyvale|CA|1-Jul-07|1000000|USD|a +Media Machines||web|San Francisco|CA|1-Aug-07|9400000|USD|a +Ciihui||web|Burlingame|CA|1-May-07|10000000|USD|a +Ciihui||web|Burlingame|CA|1-Jan-08|13500000|USD|b +Aliph||web|San Francisco|CA|1-Jul-07|5000000|USD|a +mEgo|15.0|web|Los Angeles|CA|1-May-06|1100000|USD|angel +mEgo|15.0|web|Los Angeles|CA|1-Jul-07|2000000|USD|angel +Realius|3.0|web|Berkeley|CA|1-May-07|500000|USD|angel +Xobni|0.0|software|San Francisco|CA|1-Jun-06|12000|USD|seed +Xobni|0.0|software|San Francisco|CA|1-Nov-06|80000|USD|angel +Xobni|0.0|software|San Francisco|CA|1-Mar-07|4260000|USD|a +Spoke|0.0|web|San Mateo|CA|18-Nov-03|11700000|USD|c +Spoke|0.0|web|San Mateo|CA|24-Apr-03|9200000|USD|b +FixYa|30.0|web|San Mateo|CA|1-Jan-07|2000000|USD|a +FixYa|30.0|web|San Mateo|CA|18-Mar-08|6000000|USD|b +Mozilla|150.0|web|Mountain View|CA|15-Jul-03|2000000|USD|unattributed +BrightQube|0.0|web|Carlsbad|CA|1-May-07|200000|USD|angel +BuzzDash|0.0|web|Marina del Rey|CA|1-Sep-06|1200000|USD|angel +Urban Mapping|9.0|web|San Francisco|CA|1-May-06|400000|USD|seed +Consorte Media|0.0|web|San Francisco|CA|1-Dec-07|7000000|USD|b +ffwd||web|San Francisco|CA|1-Aug-07|1700000|USD|a +Get Satisfaction||web|San Francisco|CA|1-Sep-07|1300000|USD|a +RingCentral||web|Redwood City|CA|1-Sep-07|12000000|USD|a +RingCentral||web|Redwood City|CA|1-Feb-08|12000000|USD|b +3Jam||web|Menlo Park|CA|1-Jul-07|4000000|USD|a +PlaySpan||web|Santa Clara|CA|1-Sep-07|6500000|USD|a +Grouply|6.0|web|Redwood City|CA|1-Jun-07|935000|USD|angel +Grouply|6.0|web|Redwood City|CA|1-Jan-08|365000|USD|angel +Grouply|6.0|web|Redwood City|CA|14-Jan-08|1300000|USD|a +Graspr||web|Sunnyvale|CA|10-Jul-08|2500000|USD|a +Zannel||web|San Francisco|CA|2-Jun-08|10000000|USD|b +deca.tv||web|Santa Monica|CA|1-Sep-07|5000000|USD|a +Zimbra||web|San Mateo|CA|1-Apr-06|14500000|USD|c +FriendFeed||web|Mountain View|CA|26-Feb-08|5000000|USD|a +Rupture|15.0|web|San Francisco|CA|1-Jul-07|3000000|USD|angel +JibJab||web|Santa Monica|CA|1-Oct-07|3000000|USD|b +Rubicon Project||web|Los Angeles|CA|1-Oct-07|4000000|USD|a +Rubicon Project||web|Los Angeles|CA|1-Oct-07|2000000|USD|debt_round +Rubicon Project||web|Los Angeles|CA|28-Jan-08|15000000|USD|b +SnapLayout||web|San Francisco|CA|1-May-07|650000|USD|a +Confabb||web||CA|1-Aug-07|200000|USD|angel +UpTake||web|Palo Alto|CA|18-Dec-07|4000000|USD|a +23andMe|30.0|web|Mountain View|CA|1-May-07|9000000|USD|a +YuMe||web|Redwood City|CA|1-Oct-07|9000000|USD|b +Mochi Media||web|San Francisco|CA|12-Mar-08|4000000|USD|a +Mochi Media||web|San Francisco|CA|18-Jun-08|10000000|USD|b +Blurb||web|San Francisco|CA|1-Oct-06|12000000|USD|b +WeatherBill||web|San Francisco|CA|1-Oct-07|12600000|USD|a +Automattic|20.0|web|San Francisco|CA|1-Jul-05|1100000|USD|a +Automattic|20.0|web|San Francisco|CA|1-Jan-08|29500000|USD|b +Radar Networks||web|San Francisco|CA|1-Apr-06|5000000|USD|a +Radar Networks||web|San Francisco|CA|1-Feb-08|13000000|USD|b +Veodia|15.0|web|San Mateo|CA|12-May-08|8300000|USD|a +EchoSign||web|Palo Alto|CA|1-Oct-07|6000000|USD|a +Rollbase|0.0|web|Mountain View|CA|1-Aug-07|400000|USD|angel +Predictify|6.0|web|Redwood City|CA|25-Mar-08|4300000|USD|a +TrialPay|50.0|web|San Francisco|CA|1-Feb-08|12700000|USD|b +Socializr||web|San Francisco|CA|1-Sep-07|1500000|USD|a +Eurekster|0.0|web||CA|1-Dec-04|1350000|USD|a +Eurekster|0.0|web||CA|13-Mar-07|5500000|USD|b +Gydget||web|San Francisco|CA|1-Aug-06|1000000|USD|a +PicksPal||web|Mountain View|CA|1-Oct-07|3000000|USD|c +Gigya||web|Palo Alto|CA|1-Feb-07|3000000|USD|a +Gigya||web|Palo Alto|CA|9-Mar-08|9500000|USD|b +Songbird||web|San Francisco|CA|1-Dec-06|8000000|USD|seed +Guardian Analytics||web|Los Altos|CA|1-Oct-07|4500000|USD|b +Fora.TV||web|San Francisco|CA|1-Oct-07|4000000|USD|a +Disqus|3.0|web|San Francisco|CA|18-Mar-08|500000|USD|a +SezWho|9.0|web|Los Altos|CA|1-Oct-07|1000000|USD|a +YieldBuild||web|San Francisco|CA|3-Mar-08|6000000|USD|b +Akimbo||web|San Mateo|CA|1-Jun-06|15500000|USD|c +Akimbo||web|San Mateo|CA|1-Jul-04|12000000|USD|b +Akimbo||web|San Mateo|CA|1-Jun-03|4200000|USD|seed +Akimbo||web|San Mateo|CA|29-Feb-08|8000000|USD|d +Laszlo Systems|60.0|software|San Mateo|CA|6-Mar-08|14600000|USD|c +Laszlo Systems|60.0|software|San Mateo|CA|15-Apr-05|6250000|USD|b +BrightRoll||web|San Francisco|CA|1-Oct-07|5000000|USD|b +MerchantCircle|10.0|web|Los Altos|CA|1-Sep-07|10000000|USD|b +Minekey||web|Sunnyvale|CA|1-Aug-07|3000000|USD|a +Booking Angel||web|Hollywood|CA|1-Aug-07|100000|USD|angel +Loopt||web|Mountain View|CA|1-Jun-05|6000|USD|seed +Loopt||web|Mountain View|CA|23-Jul-07|8250000|USD|b +Fix8||web|Sherman Oaks|CA|1-Oct-07|3000000|USD|a +Fix8||web|Sherman Oaks|CA|3-Apr-08|2000000|USD|b +MyBuys||web|Redwood Shores|CA|21-Feb-07|2800000|USD|a +MyBuys||web|Redwood Shores|CA|8-Oct-07|10000000|USD|b +BlackArrow|35.0|web|San Mateo|CA|1-Oct-07|12000000|USD|b +BlackArrow|35.0|web|San Mateo|CA|1-Nov-06|14750000|USD|a +Peerflix||web|Palo Alto|CA|1-Oct-05|8000000|USD|b +Peerflix||web|Palo Alto|CA|1-Mar-05|2000000|USD|a +fatdoor||web|Palo Alto|CA|1-Nov-07|5500000|USD|a +fatdoor||web|Palo Alto|CA|1-Feb-07|1000000|USD|angel +fatdoor||web|Palo Alto|CA|1-May-07|500000|USD|debt_round +Verimatrix|100.0|web|San Diego|CA|1-Jun-06|8000000|USD|b +Verimatrix|100.0|web|San Diego|CA|1-Oct-07|5000000|USD|c +Billeo||web|Santa Clara|CA|1-Nov-07|7000000|USD|b +Billeo||web|Santa Clara|CA|1-Apr-06|4000000|USD|a +Caring.com||web|San Mateo|CA|1-Sep-07|6000000|USD|a +Ask.com|475.0|web|Oakland|CA|1-Mar-99|25000000|USD|a +Project Playlist||web|Palo Alto|CA|1-Sep-07|3000000|USD|a +Blowtorch||web|Sausalito|CA|1-Nov-07|50000000|USD|a +GameLayers||web|San Francisco|CA|1-Oct-07|500000|USD|seed +MoGreet||web|Venice|CA|1-Aug-07|1200000|USD|a +MoGreet||web|Venice|CA|20-Jun-08|2500000|USD|b +YourTrumanShow||web|San Francisco|CA|1-Dec-06|1300000|USD|angel +Apprema||web|Sunnyvale|CA|1-Nov-07|800000|USD|debt_round +TrustedID|100.0|web|Redwood City|CA|1-Jan-07|5000000|USD|a +TrustedID|100.0|web|Redwood City|CA|18-Oct-07|10000000|USD|b +Seeqpod|25.0|web|Emeryville|CA|1-Apr-08|7000000|USD|angel +Quantenna||web|Sunnyvale|CA|1-Nov-07|12700000|USD|b +Qwaq||web|Palo Alto|CA|1-Nov-07|7000000|USD|b +uber|24.0|web|Beverly Hills|CA|26-May-08|7600000|USD|b +CashView||web|Palo Alto|CA|1-Sep-07|6500000|USD|b +CrossLoop|8.0|web|Monterey|CA|1-Dec-07|3000000|USD|a +Dapper|20.0|web|San Francisco|CA|1-Dec-07|3000000|USD|a +Anchor Intelligence||web|Mountain View|CA|1-Jan-07|2000000|USD|a +Anchor Intelligence||web|Mountain View|CA|1-Sep-07|4000000|USD|b +EdgeCast|30.0|web|Los Angeles|CA|1-Dec-07|6000000|USD|b +EdgeCast|30.0|web|Los Angeles|CA|1-Jun-07|4000000|USD|a +Kosmix||web|Mountain View|CA|1-Dec-07|10000000|USD|c +GoodReads||web|Santa Monica|CA|1-Nov-07|750000|USD|angel +Ribbit|28.0|web|Mountain View|CA|1-Dec-07|10000000|USD|b +Ribbit|28.0|web|Mountain View|CA|1-Oct-06|3000000|USD|a +Jobvite||web|San Francisco|CA|1-Dec-07|7200000|USD|a +Juice Wireless||web|Los Angeles|CA|1-Apr-05|500000|USD|a +Juice Wireless||web|Los Angeles|CA|1-Jan-06|1500000|USD|a +Juice Wireless||web|Los Angeles|CA|1-Jul-06|4000000|USD|a +Juice Wireless||web|Los Angeles|CA|1-Mar-07|3300000|USD|b +Juice Wireless||web|Los Angeles|CA|1-Dec-07|6000000|USD|c +Qik|22.0|web|Foster City|CA|9-Apr-08|3000000|USD|b +PlayFirst||web|San Francisco|CA|1-Dec-07|16500000|USD|c +PlayFirst||web|San Francisco|CA|1-Jan-06|5000000|USD|b +Mobissimo|15.0|web|San Francisco|CA|1-Apr-04|1000000|USD|seed +Chumby|20.0|hardware|San Diego|CA|1-Dec-06|5000000|USD|a +Chumby|20.0|hardware|San Diego|CA|31-Mar-08|12500000|USD|b +UGOBE||web|Emeryville|CA|1-Oct-06|8000000|USD|b +Ausra|4.0|web|Palo Alto|CA|1-Sep-07|40000000|USD|a +Causes||web|Berkeley|CA|1-Jan-07|2350000|USD|a +Causes||web|Berkeley|CA|1-Mar-08|5000000|USD|b +Nanosolar||web|San Jose|CA|1-May-05|20000000|USD|b +Nanosolar||web|San Jose|CA|1-Jun-06|75000000|USD|c +Shozu||web|San Francisco|CA|1-May-05|12000000|USD|b +Shozu||web|San Francisco|CA|29-Jan-08|12000000|USD|c +Tesla Motors|270.0|hardware|San Carlos|CA|1-May-06|40000000|USD|c +Tesla Motors|270.0|hardware|San Carlos|CA|1-May-07|45000000|USD|d +Tesla Motors|270.0|hardware|San Carlos|CA|1-Apr-04|7500000|USD|a +Tesla Motors|270.0|hardware|San Carlos|CA|1-Feb-05|13000000|USD|b +Tesla Motors|270.0|hardware|San Carlos|CA|8-Feb-08|40000000|USD|e +Bunchball||web|Redwood City|CA|1-Oct-06|2000000|USD|a +Bunchball||web|Redwood City|CA|13-Apr-08|4000000|USD|b +Pinger||web|San Jose|CA|1-Dec-06|8000000|USD|b +Hooja||web|Palo Alto|CA|1-Dec-07|1250000|USD|seed +TravelMuse|11.0|web|Los Altos|CA|1-May-07|3000000|USD|a +Cooking.com||web|Santa Monica|CA|1-Jan-08|7000000|USD|debt_round +Cooking.com||web|Santa Monica|CA|1-May-00|35000000|USD|e +Cooking.com||web|Santa Monica|CA|1-Apr-99|16000000|USD|b +Cooking.com||web|Santa Monica|CA|1-Oct-99|30000000|USD|c +Meraki||web|Mountain View|CA|1-Feb-07|5000000|USD|a +Meraki||web|Mountain View|CA|1-Jan-08|20000000|USD|b +SugarCRM||web|Cupertino|CA|1-Jan-08|14500000|USD|d +SugarCRM||web|Cupertino|CA|1-Oct-05|18770000|USD|c +SugarCRM||web|Cupertino|CA|1-Aug-04|2000000|USD|a +SugarCRM||web|Cupertino|CA|1-Feb-05|5750000|USD|b +Pudding Media|11.0|software|San Jose|CA|1-Jan-08|8000000|USD|a +4HomeMedia|10.0|web|Sunnyvale|CA|1-Jan-07|2850000|USD|a +Pageonce||web|Palo Alto|CA|1-Jan-08|1500000|USD|a +bluepulse|0.0|web|San Mateo|CA|1-Apr-07|6000000|USD|a +Mogad|2.0|web|San Francisco|CA|1-Aug-07|500000|USD|a +DeviceVM||web|San Jose|CA|1-Aug-06|10000000|USD|a +DeviceVM||web|San Jose|CA|1-Oct-07|10000000|USD|b +Outspark||web|San Francisco|CA|11-Apr-07|4000000|USD|a +Outspark||web|San Francisco|CA|1-Jan-08|11000000|USD|b +Engine Yard|60.0|web|San Francisco|CA|1-Jan-08|3500000|USD|a +Engine Yard|60.0|web|San Francisco|CA|13-Jul-08|15000000|USD|b +PLYmedia||web|Palo Alto|CA|1-Oct-06|2500000|USD|a +PLYmedia||web|Palo Alto|CA|1-Jul-08|6000000|USD|b +fabrik|175.0|web|San Mateo|CA|1-Sep-05|4100000|USD|a +fabrik|175.0|web|San Mateo|CA|1-Jun-06|8000000|USD|b +fabrik|175.0|web|San Mateo|CA|1-Feb-07|14300000|USD|c +fabrik|175.0|web|San Mateo|CA|1-May-07|24900000|USD|d +Widgetbox||web|San Francisco|CA|1-Jun-06|1500000|USD|angel +Widgetbox||web|San Francisco|CA|1-Jan-08|8000000|USD|b +Widgetbox||web|San Francisco|CA|1-Jun-07|5000000|USD|a +RazorGator||web|Los Angeles|CA|1-Mar-05|26000000|USD|a +RazorGator||web|Los Angeles|CA|1-Mar-06|22800000|USD|b +OverSee|150.0|web|Los Angeles|CA|1-Jan-07|60000000|USD|debt_round +OverSee|150.0|web|Los Angeles|CA|1-Jan-08|150000000|USD|a +Zynga|90.0|other|San Francisco|CA|1-Jan-08|10000000|USD|a +Zynga|90.0|other|San Francisco|CA|22-Jul-08|29000000|USD|b +Smaato||web|San Mateo|CA|1-Jan-08|3500000|USD|a +Credit Karma|4.0|web|San Francisco|CA|1-May-07|750000|USD|angel +Greenplum||web|San Mateo|CA|1-Jan-08|27000000|USD|c +Greenplum||web|San Mateo|CA|1-Feb-07|15000000|USD|b +Greenplum||web|San Mateo|CA|1-Mar-06|15000000|USD|a +Greenplum||web|San Mateo|CA|1-Feb-07|4000000|USD|debt_round +Amobee||web|Redwood City|CA|1-Nov-06|5000000|USD|a +Amobee||web|Redwood City|CA|1-Jan-07|15000000|USD|b +WebMynd||web|San Francisco|CA|1-Jul-08|250000|USD|angel +Current Media||web|San Francisco|CA|29-Jul-05|15000000|USD|a +Heroku|3.0|web|San Francisco|CA|1-Jan-08|20000|USD|seed +Heroku|3.0|web|San Francisco|CA|8-May-08|3000000|USD|a +Lookery|9.0|web|San Francisco|CA|7-Feb-08|900000|USD|seed +Mill River Labs|5.0|web|Mountain View|CA|1-Jan-08|900000|USD|angel +Grouptivity|10.0|web|San Mateo|CA|1-May-06|2000000|USD|angel +Aductions|5.0|web|San Jose|CA|5-Jul-07|100000|USD|seed +VentureBeat||web||CA|11-Feb-08|320000|USD|seed +Collarity|30.0|web|Palo Alto|CA|1-Feb-08|7800000|USD|b +RocketOn||web|South San Francisco|CA|1-Feb-08|5800000|USD|b +What They Like|10.0|web|San Francisco|CA|29-Aug-07|990000|USD|a +GumGum|5.0|web|Los Angeles|CA|1-Dec-07|225000|USD|seed +GumGum|5.0|web|Los Angeles|CA|21-Jul-08|1000000|USD|a +Snap Technologies|32.0|web|Pasadena|CA|1-Jul-05|10000000|USD|a +TwoFish||web|Redwood City|CA|1-Jun-07|5000000|USD|a +Three Rings|30.0|web|San Francisco|CA|3-Mar-08|3500000|USD|a +Smalltown|8.0|web|San Mateo|CA|1-Nov-05|4000000|USD|a +Sparkplay Media||web|Mill Valley|CA|1-Feb-08|4250000|USD|a +MOG||web|Berkeley|CA|1-Mar-07|1800000|USD|angel +MOG||web|Berkeley|CA|29-Apr-08|2800000|USD|a +Social Gaming Network||web|Palo Alto|CA|13-May-08|15000000|USD|a +Danger||software|Palo Alto|CA|1-Oct-01|36000000|USD|b +Danger||software|Palo Alto|CA|1-Feb-03|35000000|USD|d +Danger||software|Palo Alto|CA|1-Jul-04|37000000|USD|d +Coverity||software|San Francisco|CA|1-Feb-08|22000000|USD|a +GenieTown|8.0|web|Palo Alto|CA|1-Oct-07|2000000|USD|a +Redux|11.0|web|Berkeley|CA|1-Mar-07|1650000|USD|seed +Redux|11.0|web|Berkeley|CA|7-Apr-08|6500000|USD|a +Evernote||software|Sunnyvale|CA|1-Mar-06|6000000|USD|angel +Evernote||software|Sunnyvale|CA|1-Sep-07|3000000|USD|angel +Numobiq||mobile|Pleasanton|CA|8-Feb-08|4500000|USD|a +GoldSpot Media||mobile|Sunnyvale|CA|23-Jan-08|3000000|USD|a +Mobixell||mobile|Cupertino|CA|8-Jul-08|6000000|USD|a +Ad Infuse||mobile|San Francisco|CA|23-Jan-08|12000000|USD|b +Ad Infuse||mobile|San Francisco|CA|1-Jun-06|5000000|USD|a +SendMe||mobile|San Francisco|CA|1-Dec-06|6000000|USD|b +SendMe||mobile|San Francisco|CA|18-Mar-08|15000000|USD|c +Tiny Pictures|15.0|mobile|San Francisco|CA|1-Aug-07|4000000|USD|a +Tiny Pictures|15.0|mobile|San Francisco|CA|1-Feb-08|7200000|USD|b +flurry||mobile|San Francisco|CA|8-Mar-07|3500000|USD|a +Teneros||software|Mountain View|CA|1-Jul-04|7000000|USD|a +Teneros||software|Mountain View|CA|1-Mar-05|17500000|USD|b +Teneros||software|Mountain View|CA|1-Apr-06|20000000|USD|c +Teneros||software|Mountain View|CA|1-Jan-08|40000000|USD|d +PhotoCrank|3.0|web|Palo Alto|CA|1-Apr-07|250000|USD|seed +Yodlee||web|Redwood City|CA|4-Jun-08|35000000|USD|unattributed +SlideRocket|5.0|web|San Francisco|CA|31-Dec-07|2000000|USD|a +Surf Canyon|3.0|software|Oakland|CA|31-Jul-07|250000|USD|seed +Surf Canyon|3.0|software|Oakland|CA|8-May-08|600000|USD|seed +Central Desktop||web|Pasadena|CA|16-Apr-08|7000000|USD|a +OpenDNS|15.0|web|San Francisco|CA|1-Jun-06|2000000|USD|a +Coveo||web|Palo Alto|CA|6-Mar-08|2500000|USD|a +Vizu||web|San Francisco|CA|20-Feb-06|1000000|USD|a +Vizu||web|San Francisco|CA|31-Jan-07|2900000|USD|b +Taltopia||web|Los Angeles|CA|8-Mar-08|800000|USD|angel +Kapow Technologies||web|Palo Alto|CA|6-Mar-08|11600000|USD|c +ProgrammerMeetDesigner.com|4.0|web|Los Angeles|CA|12-Dec-07|500000|USD|seed +LiveOps||web|Santa Clara|CA|1-Apr-04|22000000|USD|b +LiveOps||web|Santa Clara|CA|13-Feb-07|28000000|USD|c +Clickpass||web|San Francisco|CA|1-Jun-07|20000|USD|seed +SearchMe|52.0|web|Mountain View|CA|1-Jul-05|400000|USD|a +SearchMe|52.0|web|Mountain View|CA|1-Jan-06|3600000|USD|b +SearchMe|52.0|web|Mountain View|CA|1-Jun-07|12000000|USD|c +SearchMe|52.0|web|Mountain View|CA|1-Oct-07|15000000|USD|d +SearchMe|52.0|web|Mountain View|CA|1-May-08|12600000|USD|e +AccountNow||web|San Ramon|CA|29-Jun-07|12750000|USD|c +DailyStrength|14.0|web|Los Angeles|CA|18-May-07|4000000|USD|a +PopularMedia||web|San Francisco|CA|1-Mar-07|4250000|USD|unattributed +PopularMedia||web|San Francisco|CA|28-Jul-08|8000000|USD|c +Clarizen|5.0|web|San Mateo|CA|1-May-08|9000000|USD|b +SellPoint||web|San Ramon|CA|27-Feb-08|7000000|USD|a +LiveDeal||web|Santa Clara|CA|26-Oct-05|4900000|USD|a +NeoEdge Networks||web|Mountain View|CA|8-Jun-07|3000000|USD|b +Zuora|30.0|web|Redwood City|CA|13-Mar-08|6500000|USD|a +Jivox||web|San Mateo|CA|10-Mar-08|2700000|USD|seed +Jivox||web|San Mateo|CA|16-Jun-08|10700000|USD|a +kwiry|3.0|mobile|San Francisco|CA|20-Mar-07|1000000|USD|a +SupplyFrame|25.0|web|Pasadena|CA|21-Jun-07|7000000|USD|b +InMage Systems||software|Santa Clara|CA|10-Jul-07|10000000|USD|b +Authenticlick|20.0|web|Los Angeles|CA|1-Feb-06|5000000|USD|a +Interneer|6.0|web|Agoura Hills|CA|6-Jun-07|2000000|USD|angel +Interneer|6.0|web|Agoura Hills|CA|11-Mar-07|1200000|USD|a +Handipoints||web|Oakland|CA|2-May-07|250000|USD|seed +Handipoints||web|Oakland|CA|2-May-08|550000|USD|angel +Adconion Media Group|150.0|web|Santa Monica|CA|24-Feb-08|80000000|USD|c +SlideShare|10.0|web|San Francisco|CA|7-May-08|3000000|USD|a +Intent|6.0|web|Santa Monica|CA|1-Feb-08|250000|USD|angel +Wikimedia Foundation||web|San Francisco|CA|25-Mar-08|3000000|USD|unattributed +Clearwell Systems|75.0|software|Mountain View|CA|22-Aug-07|17000000|USD|c +Become||web|Mountain View|CA|25-Mar-08|17500000|USD|c +Become||web|Mountain View|CA|17-Jul-08|8000000|USD|d +Bubble Motion||mobile|Mountain View|CA|26-Mar-08|14000000|USD|b +Bubble Motion||mobile|Mountain View|CA|11-Sep-06|10000000|USD|a +Perfect Market||web|Pasadena|CA|9-Jul-08|15600000|USD|a +Glassdoor|12.0|web|Sausalito|CA|27-Mar-08|3000000|USD|b +Support Space||web|Redwood City|CA|24-Oct-06|4250000|USD|a +Xoopit||web|San Francisco|CA|1-Dec-06|1500000|USD|angel +Xoopit||web|San Francisco|CA|2-Apr-08|5000000|USD|a +Reality Digital||software|San Francisco|CA|1-Nov-05|2000000|USD|a +Reality Digital||software|San Francisco|CA|31-Mar-08|6300000|USD|b +Cloud9 Analytics||web|San Mateo|CA|25-Jul-07|5000000|USD|a +Netcipia|3.0|web|Palo Alto|CA|30-Aug-07|200000|USD|angel +iControl||web|Palo Alto|CA|2-Apr-08|15500000|USD|b +iControl||web|Palo Alto|CA|26-Apr-06|5000000|USD|a +Frengo||web|San Mateo|CA|1-Dec-06|2300000|USD|a +Frengo||web|San Mateo|CA|3-May-07|5700000|USD|b +mBlox||mobile|Sunnyvale|CA|23-Feb-06|25000000|USD|d +mBlox||mobile|Sunnyvale|CA|9-Mar-05|7500000|USD|c +mBlox||mobile|Sunnyvale|CA|9-Jul-04|10000000|USD|b +mBlox||mobile|Sunnyvale|CA|28-Jan-08|22000000|USD|e +eSolar|10.0|hardware|Pasadena|CA|17-Jan-08|10000000|USD|a +eSolar|10.0|hardware|Pasadena|CA|21-Apr-08|130000000|USD|b +Marin Software||software|San Francisco|CA|5-Oct-06|2000000|USD|a +Marin Software||software|San Francisco|CA|9-Apr-08|7250000|USD|b +SiBEAM||hardware|Sunnyvale|CA|1-Dec-04|1250000|USD|seed +SiBEAM||hardware|Sunnyvale|CA|1-May-05|15000000|USD|a +SiBEAM||hardware|Sunnyvale|CA|1-Aug-06|21000000|USD|b +SiBEAM||hardware|Sunnyvale|CA|7-Apr-08|40000000|USD|c +Lumos Labs||web|San Francisco|CA|11-Jun-07|400000|USD|angel +Lumos Labs||web|San Francisco|CA|3-Jun-08|3000000|USD|a +iRise|150.0|software|El Segundo|CA|1-Mar-08|20000000|USD|unattributed +richrelevance||web|San Francisco|CA|8-Apr-08|4200000|USD|b +Labmeeting||web||CA|1-May-08|500000|USD|seed +Shopflick|10.0|web|Los Angeles|CA|15-Mar-08|1000000|USD|angel +Shopflick|10.0|web|Los Angeles|CA|1-Jul-08|7000000|USD|a +TurnHere|35.0|web|Emeryville|CA|15-Feb-08|7500000|USD|a +TurnHere|35.0|web|Emeryville|CA|1-Nov-06|1100000|USD|seed +Coupa||web|Foster City|CA|13-Mar-07|1500000|USD|a +Coupa||web|Foster City|CA|9-Apr-08|6000000|USD|b +SquareTrade||hardware|San Francisco|CA|1-Oct-99|400000|USD|seed +SquareTrade||hardware|San Francisco|CA|10-Apr-08|9000000|USD|b +V-Enable||mobile|San Diego|CA|28-Feb-06|6000000|USD|c +V-Enable||mobile|San Diego|CA|21-Sep-03|3750000|USD|b +Aeria||web|Santa Clara|CA|1-Oct-07|288000|USD|seed +Heysan|6.0|mobile|San Francisco|CA|24-Jan-07|20000|USD|seed +Memeo||software|Aliso Viejo|CA|7-Jan-08|8100000|USD|b +imageshack||web|Los Gatos|CA|1-May-07|10000000|USD|a +CellSpin|12.0|mobile|San Jose|CA|1-Dec-06|1100000|USD|angel +Remixation|5.0|web|San Francisco|CA|1-Jul-07|1000000|USD|a +The Auteurs|9.0|web|Palo Alto|CA|1-Aug-07|750000|USD|a +Modern Feed||web|Los Angeles|CA|1-Apr-07|3000000|USD|seed +GROU.PS||web|San Francisco|CA|1-Jun-08|1100000|USD|a +Triggit|5.0|web|San Francisco|CA|1-Mar-07|350000|USD|seed +Triggit|5.0|web|San Francisco|CA|1-Jul-07|500000|USD|angel +Serious Business|6.0|web|San Francisco|CA|25-Apr-08|4000000|USD|unattributed +Presdo|1.0|web|Mountain View|CA|1-Dec-07|35000|USD|seed +Nile Guide||web|San Francisco|CA|5-Jun-08|8000000|USD|b +Adify|10.0|web|San Bruno|CA|1-Aug-06|8000000|USD|a +Adify|10.0|web|San Bruno|CA|18-Apr-07|19000000|USD|b +Invensense||hardware|Sunnyvale|CA|28-Apr-08|19000000|USD|c +Center'd||web|Menlo Park|CA|1-Feb-07|1000000|USD|angel +Center'd||web|Menlo Park|CA|1-Oct-07|5500000|USD|a +Center'd||web|Menlo Park|CA|1-May-07|500000|USD|debt_round +New Relic||web||CA|1-Apr-08|3500000|USD|a +Gridstone Research||software|San Mateo|CA|4-Apr-08|10000000|USD|b +FusionOps|10.0|software|Sunnyvale|CA|1-Mar-05|4000000|USD|a +MarketLive||software|Foster City|CA|5-May-08|20000000|USD|e +SnapLogic||software|San Mateo|CA|22-May-07|2500000|USD|a +Boardwalktech|20.0|software|Palo Alto|CA|1-Oct-06|500000|USD|angel +Rosum||hardware|Mountain View|CA|15-Apr-08|15000000|USD|b +Dilithium Networks||web|Petaluma|CA|23-Apr-03|10000000|USD|b +Dilithium Networks||web|Petaluma|CA|14-Mar-05|18000000|USD|c +Dilithium Networks||web|Petaluma|CA|3-Jul-07|33000000|USD|d +Experience Project||web|San Francisco|CA|13-May-08|3000000|USD|a +Mozes||web|Palo Alto|CA|22-Feb-07|5000000|USD|a +Mozes||web|Palo Alto|CA|1-May-08|11500000|USD|b +rVita|6.0|software|Santa Clara|CA|1-Oct-07|1000000|USD|angel +Mefeedia|6.0|web|Burbank|CA|19-Mar-08|250000|USD|angel +Wavemaker Software||software|San Francisco|CA|15-Apr-08|4500000|USD|a +VirtualLogix||software|Sunnyvale|CA|11-Jul-07|16000000|USD|b +Fonemesh|7.0|software|San Francisco|CA|1-Jun-08|100000|USD|angel +Fonemesh|7.0|software|San Francisco|CA|1-May-08|150000|USD|seed +Cognition Technologies|20.0|software|Culver City|CA|15-Jul-08|2700000|USD|unattributed +Sometrics||web|Los Angeles|CA|14-May-08|1000000|USD|a +SocialVibe||web|Los Angeles|CA|1-Dec-07|4200000|USD|a +deviantART||web|Hollywood|CA|21-Jun-07|3500000|USD|a +MyThings||web|Menlo Park|CA|1-Apr-06|8000000|USD|a +mywaves|35.0|mobile|Sunnyvale|CA|8-Dec-06|6000000|USD|a +litescape||web|Redwood Shores|CA|6-Aug-07|14000000|USD|b +Parascale||software|Cupertino|CA|23-Jun-08|11370000|USD|a +Row44||hardware|Westlake Village|CA|20-May-08|21000000|USD|a +JellyCloud||web|Redwood City|CA|16-May-08|6600000|USD|a +Aster Data Systems|50.0|software|Redwood City|CA|1-Nov-05|1000000|USD|angel +Aster Data Systems|50.0|software|Redwood City|CA|1-May-07|5000000|USD|a +Pixim||hardware|Mountain View|CA|7-Mar-07|15000000|USD|b +Pixim||hardware|Mountain View|CA|9-Jun-05|12000000|USD|a +Pixim||hardware|Mountain View|CA|12-Jun-07|5100000|USD|b +Funambol||mobile|Redwood City|CA|8-Aug-05|5000000|USD|a +Funambol||mobile|Redwood City|CA|1-Dec-06|5500000|USD|a +Funambol||mobile|Redwood City|CA|17-Jun-08|12500000|USD|b +Funambol||mobile|Redwood City|CA|1-Jun-08|2000000|USD|debt_round +Moblyng||web|Menlo Park|CA|21-May-08|5700000|USD|b +Moblyng||web|Menlo Park|CA|28-Mar-07|1530000|USD|a +Zecter|3.0|web|Mountain View|CA|1-Jun-07|15000|USD|seed +Votigo||web|Emeryville|CA|31-Dec-07|1265000|USD|a +Zinio||web|San Francisco|CA|12-Sep-05|7000000|USD|a +Dreamfactory||web|Mountain View|CA|8-May-06|5800000|USD|a +GreenNote|15.0|web|Redwood City|CA|1-Oct-07|4200000|USD|a +Skyfire||software|Mountain View|CA|1-Jun-07|4800000|USD|a +Skyfire||software|Mountain View|CA|28-May-08|13000000|USD|b +eduFire||web|Santa Monica|CA|9-Apr-08|400000|USD|angel +B-hive Networks||software|San Mateo|CA|25-Aug-06|7000000|USD|a +NeuroVigil|5.0|biotech|La Jolla|CA|30-May-08|250000|USD|seed +Sylantro||web|Campbell|CA|1-Apr-06|11000000|USD|e +Sylantro||web|Campbell|CA|1-Nov-03|4500000|USD|d +Sylantro||web|Campbell|CA|1-Oct-00|55000000|USD|c +TeleFlip||mobile|Santa Monica|CA|1-Jan-08|4900000|USD|b +Vidshadow|16.0|web|Placentia|CA|15-Feb-07|2000000|USD|a +Jigsaw||web|San Mateo|CA|1-Dec-03|750000|USD|a +Jigsaw||web|San Mateo|CA|1-Sep-04|5200000|USD|b +Jigsaw||web|San Mateo|CA|1-Mar-06|12000000|USD|c +Ozmo Devices||hardware|Palo Alto|CA|30-Mar-06|12550000|USD|a +Cooliris||web|Menlo Park|CA|1-Jul-07|3000000|USD|a +Gamook||web|Menlo Park|CA|16-Mar-08|1500000|USD|a +Vindicia||web|Redwood City|CA|31-Mar-08|5600000|USD|c +Dizzywood||web||CA|7-Feb-08|1000000|USD|a +Limbo|37.0|web|Burlingame|CA|25-Apr-07|8000000|USD|b +StartForce|21.0|web|San Francisco|CA|1-Sep-07|1000000|USD|a +coolearth|9.0|cleantech|Livermore|CA|20-Feb-08|21000000|USD|a +coolearth|9.0|cleantech|Livermore|CA|1-Jun-07|1000000|USD|angel +Yield Software||web|San Mateo|CA|4-Jun-08|6000000|USD|b +Tapulous|9.0|web|Palo Alto|CA|1-Jul-08|1800000|USD|angel +Codefast||software|San Jose|CA|15-Mar-05|6500000|USD|a +Hyperic||web|San Francisco|CA|10-May-06|3800000|USD|a +iPling :))|7.0|mobile|San Francisco|CA|1-Mar-08|300000|USD|angel +Intacct|100.0|software|San Jose|CA|29-Apr-08|15000000|USD|unattributed +Intacct|100.0|software|San Jose|CA|27-Jun-07|14000000|USD|unattributed +Vivaty|25.0|web|Menlo Park|CA|1-Aug-07|9400000|USD|a +Aurora Biofuels||cleantech|Alameda|CA|10-Jun-08|20000000|USD|b +AllBusiness.com|50.0|other|San Francisco|CA|1-Jul-04|10000000|USD|b +AllBusiness.com|50.0|other|San Francisco|CA|1-Feb-06|12400000|USD|c +InsideView|40.0|software|San Francisco|CA|1-Jun-07|7400000|USD|a +Clickability||software|San Francisco|CA|14-Jul-08|3500000|USD|debt_round +Keibi Technologies|30.0|software|San Francisco|CA|1-May-07|5000000|USD|b +RoboDynamics|5.0|hardware|Santa Monica|CA|1-Sep-03|100000|USD|seed +RoboDynamics|5.0|hardware|Santa Monica|CA|1-May-06|500000|USD|angel +ImageSpan||web|Sausalito|CA|23-Jun-08|11000000|USD|b +Solarflare||hardware|Irvine|CA|18-Jun-08|26000000|USD|unattributed +Clupedia||web|Santa Ana|CA|22-May-07|1300000|USD|a +Zigabid|10.0|other|La Canada|CA|1-Dec-06|500000|USD|seed +Zigabid|10.0|other|La Canada|CA|1-Feb-08|500000|USD|angel +InThrMa|3.0|software|Oakland|CA|1-Oct-07|10000|USD|seed +Fluid Entertainment||other|Mill Valley|CA|12-Mar-08|3200000|USD|a +Unisfair||other|Menlo Park|CA|21-Jan-08|10000000|USD|b +ON24||web|San Francisco|CA|11-Jul-08|8000000|USD|unattributed +trueAnthem|10.0|other|Newport Beach|CA|28-Jul-08|2000000|USD|angel +Colizer||web|San Diego|CA|1-Apr-04|120000|USD|a +Coremetrics||software|San Mateo|CA|9-Mar-06|31000000|USD|d +Coremetrics||software|San Mateo|CA|4-Apr-08|60000000|USD|e +Appirio||software|San Mateo|CA|13-Mar-08|1100000|USD|a +Appirio||software|San Mateo|CA|21-Jul-08|10000000|USD|b +samfind|3.0|web|Los Angeles|CA|1-Jan-06|20000|USD|seed +Eye-Fi||hardware|Mountain View|CA|11-Jun-07|5500000|USD|a +ResponseLogix||web|Sunnyvale|CA|23-Jan-08|8000000|USD|a +Qumu||software|Emeryville|CA|21-Jul-08|10700000|USD|c +CarbonFlow||cleantech|San Francsico|CA|23-Jul-08|2900000|USD|a +Allvoices|8.0|web|San Francisco|CA|31-Jul-07|4500000|USD|a +Moxsie||web|Palo Alto|CA|27-Jun-08|1000000|USD|a +Service-now.com|80.0|web|Solana Beach|CA|5-Jul-05|2500000|USD|a +Service-now.com|80.0|web|Solana Beach|CA|5-Dec-06|5000000|USD|b +Anvato||web|Mountain View|CA|29-Jul-08|550000|USD|seed +Vantage Media|150.0|web|El Segundo|CA|28-Feb-07|70000000|USD|a +Entone Technologies|80.0|hardware|San Mateo|CA|1-Aug-08|14500000|USD|b +Entone Technologies|80.0|hardware|San Mateo|CA|2-May-03|9500000|USD|a +750 Industries|7.0|web|San Francisco|CA|1-Aug-08|1000000|USD|a +Plastic Logic||hardware|Mountain View|CA|20-Apr-02|13700000|USD|a +Plastic Logic||hardware|Mountain View|CA|5-Jan-05|8000000|USD|b +Plastic Logic||hardware|Mountain View|CA|30-Nov-05|24000000|USD|c +Plastic Logic||hardware|Mountain View|CA|6-Jan-07|100000000|USD|d +Plastic Logic||hardware|Mountain View|CA|4-Aug-08|50000000|USD|e +Paymo||mobile|San Francisco|CA|1-Aug-08|5000000|USD|seed +SkyGrid||web|Sunnyvale|CA|6-Aug-08|11000000|USD|b +Intense Debate|4.0|web|Boulder|CO|1-May-07|15000|USD|seed +Associated Content||web|Denver|CO|1-Jan-06|5400000|USD|a +Associated Content||web|Denver|CO|1-Jul-07|10000000|USD|b +madKast||web|Boulder|CO|1-Mar-07|15000|USD|seed +madKast||web|Boulder|CO|1-Oct-07|300000|USD|a +EventVue||web|Boulder|CO|1-Aug-07|15000|USD|seed +EventVue||web|Boulder|CO|1-Sep-07|250000|USD|a +Socialthing!|6.0|web|Boulder|CO|18-May-07|15000|USD|seed +Socialthing!|6.0|web|Boulder|CO|1-Oct-07|500000|USD|debt_round +J Squared Media||web|Boulder|CO|1-Aug-07|15000|USD|seed +Search to Phone||web|Boulder|CO|1-Aug-07|15000|USD|seed +Filtrbox||web|Boulder|CO|1-Aug-07|15000|USD|seed +Filtrbox||web|Boulder|CO|28-Feb-08|500000|USD|seed +Brightkite||web|Denver|CO|1-Aug-07|15000|USD|seed +Brightkite||web|Denver|CO|1-Mar-08|1000000|USD|angel +NewsGator||web|Denver|CO|23-Jun-04|1400000|USD|a +NewsGator||web|Denver|CO|1-Dec-07|12000000|USD|c +NewsGator||web|Denver|CO|1-Dec-04|8600000|USD|b +Me.dium||web|Boulder|CO|1-Jun-07|15000000|USD|b +Buzzwire||web|Denver|CO|1-Dec-07|8000000|USD|b +HiveLive||web|Boulder|CO|1-Feb-08|2200000|USD|angel +HiveLive||web|Boulder|CO|27-Feb-08|5600000|USD|a +XAware||web|Colorado Springs|CO|1-Jan-08|7400000|USD|b +XAware||web|Colorado Springs|CO|1-Nov-02|2100000|USD|a +Lijit||web|Boulder|CO|1-Jan-07|900000|USD|a +Lijit||web|Boulder|CO|1-Jun-07|3300000|USD|b +hubbuzz|8.0|web|Centennial|CO|1-Mar-07|750000|USD|angel +Gnip|6.0|web|Boulder|CO|1-Mar-08|1100000|USD|a +Rally Software||software|Boulder|CO|4-Jun-08|16850000|USD|c +Rally Software||software|Boulder|CO|14-Jun-06|8000000|USD|b +Symplified||software|Boulder|CO|9-Jun-08|6000000|USD|a +Indeed||web|Stamford|CT|1-Aug-05|5000000|USD|a +Geezeo||web|Hartford|CT|24-Apr-08|1200000|USD|unattributed +Entrecard|1.0|web|Hamden|CT|1-Jan-07|30000|USD|seed +Entrecard|1.0|web|Hamden|CT|1-Nov-07|40000|USD|seed +AmericanTowns.com|10.0|web|Fairfield|CT|1-Jul-06|1100000|USD|a +AmericanTowns.com|10.0|web|Fairfield|CT|1-Sep-07|3300000|USD|b +Kayak|58.0|web|Norwalk|CT|1-May-06|11500000|USD|c +Kayak|58.0|web|Norwalk|CT|1-Dec-04|7000000|USD|b +Kayak|58.0|web|Norwalk|CT|1-Dec-07|196000000|USD|d +GoCrossCampus|25.0|web|New Haven|CT|1-Sep-07|375000|USD|seed +Health Plan One||web|Shelton|CT|21-Apr-08|6500000|USD|a +Your Survival|10.0|web|Westport|CT|1-Nov-07|350000|USD|angel +Media Lantern|9.0|web|New London|CT|30-Mar-08|250000|USD|seed +GridPoint||cleantech|Washington|DC|1-Sep-07|32000000|USD|d +GridPoint||cleantech|Washington|DC|1-May-06|16000000|USD|b +GridPoint||cleantech|Washington|DC|1-Sep-06|21000000|USD|c +GridPoint||cleantech|Washington|DC|28-Mar-08|15000000|USD|d +HotPads|11.0|web|Washington|DC|1-Mar-07|2300000|USD|a +LaunchBox||web|Washinton|DC|1-Feb-08|250000|USD|a +Cogent||web|Washington|DC|12-Feb-08|510000|USD|seed +SwapDrive||web|Washington|DC|1-May-00|2650000|USD|a +SwapDrive||web|Washington|DC|1-May-01|2000000|USD|a +Searchles||web|Washington|DC|1-Jul-08|2000000|USD|angel +PayPerPost||web|Orlando|FL|1-Jun-07|7000000|USD|b +PayPerPost||web|Orlando|FL|1-Oct-06|3000000|USD|a +Affinity Internet||web|Fort Lauderdale|FL|1-Oct-99|60000000|USD|a +Affinity Internet||web|Fort Lauderdale|FL|1-Jan-02|25000000|USD|a +Multiply||web|Boca Raton|FL|1-Nov-05|2000000|USD|a +Multiply||web|Boca Raton|FL|1-Jul-06|3000000|USD|a +Multiply||web|Boca Raton|FL|1-Aug-07|16600000|USD|b +Revolution Money||web|Largo|FL|1-Sep-07|50000000|USD|b +Batanga||web|Miami|FL|1-Aug-07|30000000|USD|c +Batanga||web|Miami|FL|1-Apr-06|5000000|USD|b +divorce360|6.0|web|North Palm Beach|FL|1-Sep-07|2500000|USD|a +Infinity Box|3.0|web|Tampa|FL|1-Jan-06|18000|USD|seed +Infinity Box|3.0|web|Tampa|FL|1-Apr-06|100000|USD|angel +MOLI||web|West Palm Beach|FL|1-Jan-08|29600000|USD|b +Global Roaming|29.0|mobile|Miami|FL|1-Feb-07|7500000|USD|a +Global Roaming|29.0|mobile|Miami|FL|1-Feb-08|23000000|USD|b +Slingpage|8.0|software|Estero|FL|1-Dec-07|2250000|USD|angel +WrapMail|10.0|web|Fort Lauderdale|FL|6-Jan-07|1100000|USD|seed +eJamming||web|Boca Raton|FL|2-Jun-08|150000|USD|unattributed +Lehigh Technologies||cleantech|Naples|FL|23-Jun-08|34500000|USD|unattributed +TournEase|10.0|web|Lakeland|FL|1-Apr-06|3000000|USD|angel +TournEase|10.0|web|Lakeland|FL|1-Mar-08|500000|USD|angel +Vitrue||web|Atlanta|GA|1-Oct-07|10000000|USD|b +Vitrue||web|Atlanta|GA|1-May-06|2200000|USD|seed +Screaming Sports||web|Atlanta|GA|1-Jul-07|1250000|USD|a +beRecruited||web|Atlanta|GA|1-Nov-07|1200000|USD|a +MFG||web|Atlanta|GA|1-Sep-05|14000000|USD|a +MFG||web|Atlanta|GA|1-Jan-07|4000000|USD|c +MFG||web|Atlanta|GA|1-Jan-08|26000000|USD|d +Scintella Solutions|2.0|consulting|Atlanta|GA|30-Apr-08|10000|USD|seed +ScribeStorm|12.0|web|Fairfield|IA|24-Apr-06|225000|USD|angel +Balihoo||mobile|Boise|ID|1-Jul-07|1500000|USD|a +Balihoo||mobile|Boise|ID|1-Jan-08|4000000|USD|b +Info||web|Chicago|IL|1-Nov-04|8400000|USD|a +FeedBurner||web|Chicago|IL|1-Jun-04|1000000|USD|a +FeedBurner||web|Chicago|IL|1-Apr-05|7000000|USD|b +Viewpoints||web|Chicago|IL|1-Jun-07|5000000|USD|a +GrubHub||web|Chicago|IL|1-Nov-07|1100000|USD|a +TicketsNow||web|Rolling Meadows|IL|1-Jan-07|34000000|USD|a +The Point||web|Chicago|IL|1-Nov-07|2500000|USD|angel +The Point||web|Chicago|IL|1-Feb-08|4800000|USD|a +Inkling|2.0|web|Chicago|IL|1-Jan-07|20000|USD|seed +crowdSPRING|6.0|web|Chicago|IL|23-May-08|3000000|USD|angel +Ifbyphone|16.0|web|Skokie|IL|1-Jul-07|1500000|USD|a +Fave Media|18.0|web|Chicago|IL|17-Jan-08|1600000|USD|a +Accertify||web|Schaumburg|IL|3-Jun-08|4000000|USD|a +Firefly Energy||cleantech|Peoria|IL|14-Oct-04|4000000|USD|a +Firefly Energy||cleantech|Peoria|IL|10-Jun-08|15000000|USD|c +Firefly Energy||cleantech|Peoria|IL|13-Nov-06|10000000|USD|b +SAVO|68.0|software|Chicago|IL|1-Sep-05|10000000|USD|a +ChaCha|75.0|web|Carmel|IN|1-Jan-07|6000000|USD|a +ChaCha|75.0|web|Carmel|IN|1-Nov-07|10000000|USD|b +Better World Books||web|Mishawaka|IN|7-Apr-08|4500000|USD|a +Compendium Blogware|25.0|software|Indianapolis|IN|1-May-07|1100000|USD|angel +Compendium Blogware|25.0|software|Indianapolis|IN|1-May-08|1600000|USD|angel +Instagarage|4.0|web|New Orleans|LA|10-May-07|25000|USD|seed +iSkoot||web|Cambridge|MA|27-Feb-07|7000000|USD|b +iSkoot||web|Cambridge|MA|29-Nov-06|6200000|USD|a +Gotuit Media||web|Woburn|MA|1-Dec-04|10000000|USD|b +Gotuit Media||web|Woburn|MA|1-Dec-02|6000000|USD|a +Carbonite|68.0|web|Boston|MA|1-Mar-06|2500000|USD|a +Carbonite|68.0|web|Boston|MA|1-Dec-06|3500000|USD|a +Carbonite|68.0|web|Boston|MA|1-May-07|15000000|USD|b +Carbonite|68.0|web|Boston|MA|28-Dec-07|5000000|USD|b +ScanScout|40.0|web|Boston|MA|1-Mar-07|7000000|USD|a +ScanScout|40.0|web|Boston|MA|1-Apr-07|2000000|USD|angel +Going||web|Boston|MA|1-Jul-07|5000000|USD|a +Brightcove||web|Cambridge|MA|1-Mar-05|5500000|USD|a +Brightcove||web|Cambridge|MA|1-Nov-05|16200000|USD|b +Brightcove||web|Cambridge|MA|1-Jan-07|59500000|USD|c +Brightcove||web|Cambridge|MA|1-Sep-06|5000000|USD|b +Brightcove||web|Cambridge|MA|1-May-08|4900000|USD|d +PermissionTV||web|Waltham|MA|1-Jun-07|9000000|USD|c +Bountii||web|Boston|MA|1-Jun-07|15000|USD|seed +Conduit Labs||web|Cambridge|MA|1-Aug-07|5500000|USD|a +ZoomInfo|80.0|web|Waltham|MA|1-Jul-04|7000000|USD|a +ZoomInfo|80.0|web|Waltham|MA|1-Jul-04|7000000|USD|a +Vlingo||web|Cambridge|MA|2-Apr-08|20000000|USD|b +Vtap||web|Andover|MA|1-May-07|14000000|USD|b +MocoSpace|25.0|mobile|Boston|MA|1-Jan-07|3000000|USD|a +Quattro Wireless||web|Waltham|MA|1-May-07|6000000|USD|a +Quattro Wireless||web|Waltham|MA|5-Sep-07|12300000|USD|b +Care.com||web|Waltham|MA|1-May-07|3100000|USD|a +OnForce||web|Lexington|MA|1-Sep-07|6750000|USD|a +OnForce||web|Lexington|MA|12-Jan-06|15000000|USD|a +RatePoint||web|Needham|MA|1-Jun-07|6500000|USD|a +UpDown|5.0|web|Cambridge|MA|29-Jan-08|750000|USD|angel +Eons||web|Boston|MA|1-Mar-07|22000000|USD|b +Eons||web|Boston|MA|1-Apr-06|10000000|USD|a +GamerDNA||web|Cambridge|MA|18-Apr-08|3000000|USD|a +Mix & Meet|2.0|web|Cambridge|MA|29-Mar-08|400000|USD|angel +Sermo||web|Cambridge|MA|1-Sep-07|25000000|USD|c +Sermo||web|Cambridge|MA|1-Jan-07|9500000|USD|b +Sermo||web|Cambridge|MA|1-Sep-06|3000000|USD|a +WorkLight|30.0|web|Newton|MA|1-Sep-06|5100000|USD|a +WorkLight|30.0|web|Newton|MA|30-Apr-08|12000000|USD|b +MatchMine||web|Needham|MA|1-Sep-07|10000000|USD|a +CondoDomain|4.0|other|Boston|MA|1-Jun-05|300000|USD|angel +uTest|10.0|web|Ashland|MA|1-Oct-07|2300000|USD|a +Compete||web|Boston|MA|1-Aug-07|10000000|USD|c +Compete||web|Boston|MA|6-Oct-03|13000000|USD|b +Azuki Systems|30.0|web|Acton|MA|1-Sep-07|6000000|USD|a +Acinion||web|Acton|MA|1-Dec-06|5000000|USD|a +Acinion||web|Acton|MA|1-Oct-07|16000000|USD|b +xkoto|45.0|software|Waltham|MA|1-Nov-07|7500000|USD|b +HubSpot|30.0|web|Cambridge|MA|1-Sep-07|5000000|USD|a +HubSpot|30.0|web|Cambridge|MA|16-May-08|12000000|USD|b +HubSpot|30.0|web|Cambridge|MA|1-May-06|500000|USD|seed +Utterz|3.0|mobile|Maynard|MA|1-Sep-07|4000000|USD|a +Intronis||web|Boston|MA|1-Oct-07|5000000|USD|a +Acquia|11.0|web|Andover|MA|1-Dec-07|7000000|USD|a +A123Systems||web|Watertown|MA|1-Oct-07|30000000|USD|d +A123Systems||web|Watertown|MA|1-Jan-07|40000000|USD|c +A123Systems||web|Watertown|MA|1-Feb-06|30000000|USD|b +Boston Power|55.0|web|Westborough|MA|1-Nov-06|8000000|USD|a +Boston Power|55.0|web|Westborough|MA|1-Jan-08|45000000|USD|c +Boston Power|55.0|web|Westborough|MA|1-Jan-07|15600000|USD|b +Visible Measures||web|Boston|MA|1-Mar-07|5000000|USD|a +Visible Measures||web|Boston|MA|1-Jan-08|13500000|USD|b +Visible Measures||web|Boston|MA|1-Jan-06|800000|USD|seed +Endeca|500.0|web|Cambridge|MA|1-Jun-04|15000000|USD|c +Endeca|500.0|web|Cambridge|MA|1-Jan-08|15000000|USD|d +Endeca|500.0|web|Cambridge|MA|1-Nov-01|15000000|USD|b +Endeca|500.0|web|Cambridge|MA|1-Jan-01|10000000|USD|a +ChoiceStream|70.0|software|Cambridge|MA|1-Jan-00|15000000|USD|seed +ChoiceStream|70.0|software|Cambridge|MA|22-Feb-05|7000000|USD|a +ChoiceStream|70.0|software|Cambridge|MA|1-Jun-06|13100000|USD|b +ChoiceStream|70.0|software|Cambridge|MA|4-Apr-07|26500000|USD|c +YouCastr|5.0|web|Cambridge|MA|1-Feb-08|100000|USD|angel +JackPot Rewards||web|Newton|MA|1-Feb-08|16700000|USD|a +Mzinga||web|Burlington|MA|3-Mar-08|32500000|USD|d +Dimdim||web|Burlington|MA|1-Feb-07|2400000|USD|a +Dimdim||web|Burlington|MA|1-Jul-08|6000000|USD|b +utoopia|2.0|web|Boston|MA|1-Mar-07|100000|USD|seed +Retail Convergence||web|Boston|MA|24-Apr-08|25000000|USD|a +Frame Media||web|Wellesley|MA|9-Nov-07|2000000|USD|a +Frame Media||web|Wellesley|MA|2-May-08|3000000|USD|unattributed +Turbine|200.0|web|Westwood|MA|29-Apr-08|40000000|USD|c +Turbine|200.0|web|Westwood|MA|9-May-05|30000000|USD|b +Zeer|5.0|web|Boston|MA|1-Aug-07|1050000|USD|angel +SimpleTuition||web|Newton|MA|14-Apr-06|4400000|USD|a +SimpleTuition||web|Newton|MA|18-Dec-06|7500000|USD|b +Sirtris Pharmaceuticals||biotech|Cambridge|MA|1-Dec-04|13000000|USD|a +Sirtris Pharmaceuticals||biotech|Cambridge|MA|8-Mar-05|27000000|USD|b +Sirtris Pharmaceuticals||biotech|Cambridge|MA|19-Apr-06|37000000|USD|c +Good Data|30.0|web|Cambridge|MA|23-Jul-08|2000000|USD|seed +Navic Networks||web|Waltham|MA|14-Feb-00|2000000|USD|a +Navic Networks||web|Waltham|MA|26-Feb-01|20000000|USD|c +Navic Networks||web|Waltham|MA|7-Jun-00|20000000|USD|b +Pivot|40.0|software|Cambridge|MA|1-Dec-04|5000000|USD|a +Pivot|40.0|software|Cambridge|MA|1-Apr-06|8000000|USD|b +Optaros|200.0|consulting|Boston|MA|1-Jun-08|12000000|USD|c +Optaros|200.0|consulting|Boston|MA|20-Nov-06|13000000|USD|b +Optaros|200.0|consulting|Boston|MA|9-Mar-05|7000000|USD|a +Astaro||hardware|Burlington|MA|1-May-03|6200000|USD|a +Astaro||hardware|Burlington|MA|1-May-04|6700000|USD|b +Pangea Media|25.0|web|Watertown|MA|1-Apr-07|1000000|USD|angel +Posterous||web|Boston|MA|1-May-08|15000|USD|seed +Spire||web|Boston|MA|8-Jul-08|9000000|USD|a +neoSaej||web|Burlington|MA|14-Jul-08|7000000|USD|unattributed +GenArts||software|Cambridge|MA|17-Jul-08|22400000|USD|unattributed +OrderMotion||web|Boston|MA|21-Jul-08|1400000|USD|unattributed +HAM-IT|7.0|web|North Andover|MA|1-Oct-07|340000|USD|seed +Freewebs|35.0|web|Silver Spring|MD|1-Aug-06|12000000|USD|a +MPTrax|4.0|web|Baltimore|MD|1-Jan-07|350000|USD|angel +JackBe|0.0|web|Chevy Chase|MD|1-Oct-07|9500000|USD|c +ZeniMax||web|Rockville|MD|1-Oct-07|300000000|USD|a +ZeniMax||web|Rockville|MD|30-May-08|9900000|USD|a +Intelliworks|24.0|software|Rockville|MD|14-Feb-05|6000000|USD|a +Intelliworks|24.0|software|Rockville|MD|10-Oct-06|10000000|USD|b +Intelliworks|24.0|software|Rockville|MD|7-Apr-08|4000000|USD|c +HEXIO|1.0|web|Kennebunk|ME|10-Jan-08|20000|USD|seed +Foneshow|8.0|web|Portland|ME|1-Sep-07|1050000|USD|a +Foneshow|8.0|web|Portland|ME|1-Sep-06|25000|USD|seed +Zattoo|45.0|web|Ann Arbor|MI|1-Nov-07|10000000|USD|b +LoudClick|9.0|web|Richfield|MN|31-Mar-08|600000|USD|angel +Agilis Systems||mobile|St. Louis|MO|16-May-08|5000000|USD|b +International Liars Poker Association|24.0|other|St. Louis|MO|1-Nov-07|1250000|USD|seed +ChannelAdvisor|300.0|web|Morrisville|NC|1-May-07|30000000|USD|c +ChannelAdvisor|300.0|web|Morrisville|NC|22-Jan-04|7000000|USD|a +ChannelAdvisor|300.0|web|Morrisville|NC|28-Apr-05|18000000|USD|b +Yap||mobile|Charlotte|NC|1-Mar-07|1500000|USD|angel +Yap||mobile|Charlotte|NC|10-Jun-08|6500000|USD|a +PrepChamps|10.0|web|Durham|NC|22-Apr-08|1200000|USD|a +BrightDoor Systems|26.0|web|Cary|NC|13-Apr-07|200000|USD|a +DriftToIt|4.0|web|Raleigh|NC|1-Jun-07|300000|USD|angel +rPath|45.0|other|Raleigh|NC|24-Jan-06|6400000|USD|a +rPath|45.0|other|Raleigh|NC|24-Jan-07|9100000|USD|b +rPath|45.0|other|Raleigh|NC|24-Jun-08|10000000|USD|c +Ntractive|6.0|web|Grand Forks|ND|8-Jul-08|570000|USD|a +Bill Me Later||web|Omaha|NE|1-Mar-06|27400000|USD|a +AdaptiveBlue|6.0|web|Livingston|NJ|15-Feb-07|1500000|USD|a +Phanfare||web|Metuchen|NJ|1-Nov-07|2500000|USD|c +Phanfare||web|Metuchen|NJ|1-Jul-06|2000000|USD|b +EnterpriseDB||software|Edison|NJ|7-Sep-05|7000000|USD|a +EnterpriseDB||software|Edison|NJ|1-Aug-06|20000000|USD|b +EnterpriseDB||software|Edison|NJ|25-Mar-08|10000000|USD|c +Neocleus||web|Jersey City|NJ|19-Jun-08|11000000|USD|b +Datapipe||web|Jersey City|NJ|8-Jul-08|75000000|USD|unattributed +Switch2Health||web|North Brunswick|NJ|16-Jul-08|200000|USD|unattributed +Voltaix||hardware|N. Branch|NJ|29-Jul-08|12500000|USD|unattributed +SpaBoom|9.0|web|Albuquerque|NM|15-Jul-06|700000|USD|a +SpaBoom|9.0|web|Albuquerque|NM|15-Sep-07|600000|USD|b +Novint||other|Albuquerque|NM|17-Jun-08|5200000|USD|unattributed +MeetMoi|7.0|web|New York City|NY|1-Jun-07|1500000|USD|a +Meetup|1.0|mobile|New York|NY|1-Dec-02|2800000|USD|a +Meetup|1.0|mobile|New York|NY|1-Nov-03|5300000|USD|b +Meetup|1.0|mobile|New York|NY|23-Jul-08|7500000|USD|d +Mogulus|20.0|web|New York|NY|1-May-07|1200000|USD|angel +Mogulus|20.0|web|New York|NY|1-Jan-08|1500000|USD|angel +Mogulus|20.0|web|New York|NY|1-Jul-08|10000000|USD|a +Pando|23.0|software|New York|NY|1-Jan-07|11000000|USD|b +Pando|23.0|software|New York|NY|1-Mar-08|20900000|USD|c +Outside.in|17.0|web|Brooklyn|NY|1-Feb-07|900000|USD|angel +Outside.in|17.0|web|Brooklyn|NY|1-Oct-07|1500000|USD|angel +Outside.in|17.0|web|Brooklyn|NY|19-May-08|3000000|USD|a +SelectMinds|55.0|web|New York|NY|1-Aug-07|5500000|USD|a +Veotag||web|New York|NY|1-May-07|750000|USD|angel +KIT digital|100.0|web|New York|NY|8-May-08|15000000|USD|b +KIT digital|100.0|web|New York|NY|18-Apr-08|5000000|USD|a +ContextWeb||web|New York|NY|1-Jun-04|3000000|USD|a +ContextWeb||web|New York|NY|1-Jun-05|9000000|USD|b +ContextWeb||web|New York|NY|20-Jul-08|26000000|USD|d +Datran Media||web|New York|NY|1-Mar-05|60000000|USD|a +Eyeblaster||web|New York|NY|1-Dec-03|8000000|USD|a +Eyeblaster||web|New York|NY|21-Mar-07|30000000|USD|b +Covestor||web|New York|NY|1-Jun-07|1000000|USD|angel +Covestor||web|New York|NY|7-Apr-08|6500000|USD|a +Global Grind|20.0|web|New York|NY|1-Aug-07|4500000|USD|b +Heavy.com||web|New York|NY|1-Mar-01|3000000|USD|a +SpiralFrog|15.0|web|New York|NY|1-Dec-07|2000000|USD|debt_round +Broadband Enterprises||web|New York|NY|1-Jan-08|10000000|USD|a +Thumbplay||mobile|New York|NY|13-Mar-08|18000000|USD|e +Waterfront Media||web|Brooklyn, New York|NY|1-Sep-07|25000000|USD|d +Waterfront Media||web|Brooklyn, New York|NY|1-Mar-04|4000000|USD|a +Waterfront Media||web|Brooklyn, New York|NY|1-Mar-06|6000000|USD|b +Waterfront Media||web|Brooklyn, New York|NY|1-Apr-07|8000000|USD|c +Tutor|55.0|web|New Yorl|NY|1-May-07|13500000|USD|b +Daylife||web|New York|NY|1-Jun-07|8300000|USD|b +Teach The People|1.0|web|Astoria|NY|1-Jan-07|300000|USD|angel +OrganizedWisdom|18.0|web|New York|NY|1-Jun-08|2300000|USD|a +Snooth||web|New York|NY|1-Dec-06|300000|USD|angel +Snooth||web|New York|NY|1-Nov-07|1000000|USD|a +5min|8.0|web|New York|NY|1-Apr-07|300000|USD|angel +5min|8.0|web|New York|NY|1-Nov-07|5000000|USD|a +Kaltura|20.0|web|Brooklyn|NY|1-May-07|2100000|USD|a +Mimeo||web|New York|NY|1-Sep-07|25000000|USD|a +RayV||web|New York|NY|1-Oct-07|8000000|USD|b +Tumblr||web|New York|NY|31-Oct-07|750000|USD|a +Payoneer|50.0|web|New York|NY|24-Jul-08|8000000|USD|b +eXelate||web|New York|NY|1-Oct-07|4000000|USD|a +Quigo||web|New York|NY|1-Mar-04|5000000|USD|a +Peer39|50.0|web|New York|NY|1-Feb-07|3000000|USD|a +Peer39|50.0|web|New York|NY|1-Sep-07|8200000|USD|b +Peer39|50.0|web|New York|NY|1-Mar-06|500000|USD|seed +Rebel Monkey|15.0|web|New York|NY|5-Feb-08|1000000|USD|a +Answers Corporation||web|New York|NY|1-Jan-99|300000|USD|a +Answers Corporation||web|New York|NY|1-Apr-99|1360000|USD|b +Answers Corporation||web|New York|NY|1-Sep-99|2750000|USD|c +Answers Corporation||web|New York|NY|1-May-00|28000000|USD|d +Answers Corporation||web|New York|NY|17-Jun-08|13000000|USD|debt_round +SeeToo||web|New York|NY|1-Oct-07|1000000|USD|angel +drop.io||web|Brooklyn|NY|1-Nov-07|1250000|USD|a +drop.io||web|Brooklyn|NY|10-Mar-08|2700000|USD|b +Motionbox||web|New York|NY|1-Sep-06|4200000|USD|a +Motionbox||web|New York|NY|1-Dec-07|7000000|USD|b +DGP Labs||web|New York|NY|1-Nov-07|4750000|USD|a +Ideeli||web|New York|NY|1-Dec-07|3800000|USD|a +Live Gamer||web|New York|NY|1-Dec-07|24000000|USD|a +WeShow|0.0|web|New York|NY|1-Jun-07|5000000|USD|a +Etsy|45.0|web|Brooklyn|NY|1-Jun-06|315000|USD|angel +Etsy|45.0|web|Brooklyn|NY|1-Nov-06|1000000|USD|a +Etsy|45.0|web|Brooklyn|NY|1-Jul-07|3250000|USD|b +Etsy|45.0|web|Brooklyn|NY|1-Jan-08|27000000|USD|c +PhoneTag|10.0|web|New York|NY|1-Feb-07|3500000|USD|angel +PhoneTag|10.0|web|New York|NY|1-Jan-04|200000|USD|seed +PhoneTag|10.0|web|New York|NY|1-Dec-07|2000000|USD|angel +Tremor Media||web|New York|NY|1-Sep-06|8400000|USD|a +Tremor Media||web|New York|NY|1-Jan-08|11000000|USD|b +YooNew||web|New York|NY|1-Aug-05|2000000|USD|angel +Fifth Generation Systems||web|Roslyn Heights|NY|1-Jan-08|5300000|USD|b +Fifth Generation Systems||web|Roslyn Heights|NY|1-Nov-06|5250000|USD|a +IGA Worldwide||web|New York|NY|1-Feb-06|12000000|USD|a +IGA Worldwide||web|New York|NY|1-Jul-07|25000000|USD|b +IGA Worldwide||web|New York|NY|1-Jan-08|5000000|USD|b +TheLadders|200.0|web|New York|NY|8-Nov-04|7250000|USD|a +Adotube|30.0|web|New York|NY|31-Jul-07|630000|USD|seed +Adotube|30.0|web|New York|NY|1-Apr-08|600000|USD|seed +Kluster||web|New York|NY|1-Jan-08|1000000|USD|seed +Blog Talk Radio||web|New York|NY|25-Jun-08|4600000|USD|a +Pingg|7.0|web|New York|NY|1-Jan-07|500000|USD|seed +Pingg|7.0|web|New York|NY|1-Mar-07|800000|USD|angel +Outbrain||web|New York City|NY|1-Jan-07|1000000|USD|seed +Outbrain||web|New York City|NY|25-Feb-08|5000000|USD|a +Mochila|52.0|web|New York|NY|2-Jan-07|8000000|USD|b +OLX|85.0|web|New York City|NY|1-Sep-07|10000000|USD|a +OLX|85.0|web|New York City|NY|11-Apr-08|13500000|USD|b +Boonty|150.0|web|New York|NY|7-Jul-05|10000000|USD|b +Tripology||web|New York|NY|1-Jan-07|1250000|USD|a +The Feedroom||web|New York|NY|9-Jul-08|12000000|USD|unattributed +Next New Networks|15.0|web|New York|NY|1-Jan-07|8000000|USD|a +Next New Networks|15.0|web|New York|NY|12-Mar-08|15000000|USD|b +RiverWired||web|New York|NY|1-Mar-08|1500000|USD|seed +Fynanz|10.0|web|New York|NY|1-Oct-07|500000|USD|angel +Digital Railroad||web|New York|NY|14-Jun-05|5200000|USD|a +Digital Railroad||web|New York|NY|5-Feb-07|10000000|USD|b +Undertone Networks||web|New York|NY|31-Mar-08|40000000|USD|a +Someecards||web|New York|NY|1-Apr-08|350000|USD|seed +Trunkt|2.0|web|New York|NY|15-May-07|350000|USD|seed +Cutcaster|6.0|web|New York City|NY|1-Jan-08|150000|USD|seed +Visible World||software|New York|NY|14-Apr-08|25000000|USD|c +Visible World||software|New York|NY|17-Nov-03|8000000|USD|b +Mad Mimi|3.0|web||NY|29-Apr-07|200000|USD|angel +Social Median||web|New York|NY|7-Mar-08|500000|USD|seed +Scanbuy||software|New York|NY|12-Dec-06|9000000|USD|b +Scanbuy||software|New York|NY|1-Nov-07|6800000|USD|b +Pontiflex||web|Brooklyn|NY|30-Apr-08|2500000|USD|a +CHIC.TV|12.0|web|New York|NY|1-Jan-06|500000|USD|angel +ExpertFlyer|3.0|web|Patchogue|NY|1-Mar-04|30000|USD|seed +x+1||web|New York|NY|1-Jun-08|16000000|USD|a +Media6¡||web|New York|NY|1-May-08|2000000|USD|debt_round +Knewton||web|New York|NY|21-May-08|2500000|USD|a +Sense Networks||mobile|New York City|NY|1-Apr-08|3000000|USD|a +TargetSpot|20.0|web|New York|NY|11-Mar-08|8600000|USD|b +BountyJobs|31.0|web|New York|NY|7-Jul-08|12000000|USD|b +vbs tv|40.0|other|Brooklyn|NY|1-Dec-06|10000000|USD|seed +Instinctiv||mobile|Ithaca|NY|1-Jun-08|750000|USD|seed +VISUALPLANT|6.0|web|New York|NY|1-Mar-07|500000|USD|seed +XunLight||hardware|Toledo|OH|7-May-08|22000000|USD|b +Strands|150.0|web|Corvallis|OR|1-Mar-06|6000000|USD|a +Strands|150.0|web|Corvallis|OR|18-Jun-07|25000000|USD|b +Strands|150.0|web|Corvallis|OR|1-Dec-07|24000000|USD|b +Jive Software||web|Portland|OR|1-Aug-07|15000000|USD|a +Platial||web|Portland|OR|1-Oct-05|800000|USD|angel +Platial||web|Portland|OR|1-Feb-07|2600000|USD|a +GarageGames||web|Eugene|OR|1-Sep-07|50000000|USD|a +iovation|50.0|web|Portland|OR|27-Mar-08|15000000|USD|a +InGrid||web|Berwyn|PA|1-Jul-07|13500000|USD|c +InGrid||web|Berwyn|PA|1-Sep-04|6600000|USD|a +InGrid||web|Berwyn|PA|1-Jun-06|8100000|USD|b +InGrid||web|Berwyn|PA|1-Jun-06|1500000|USD|debt_round +Sleep.FM|4.0|web|Philadelphia|PA|30-Mar-08|15000|USD|seed +Boomi|0.0|web|Berwyn|PA|1-Jul-08|4000000|USD|a +Styky|3.0|web|Philadelphia|PA|1-Jan-07|100000|USD|seed +TotalTakeout|25.0|web|Allentown|PA|1-Oct-07|150000|USD|seed +QponDirect|10.0|web|Pittsburgh|PA|1-Mar-08|300000|USD|angel +EnergyWeb Solutions|3.0|web|Allentown|PA|15-Jun-06|100000|USD|seed +Aria Systems||software|Media|PA|7-Nov-07|4000000|USD|a +Viv’simo||software|Pittsburgh|PA|17-Mar-08|4000000|USD|a +Viv’simo||software|Pittsburgh|PA|12-Jul-03|960000|USD|seed +Viv’simo||software|Pittsburgh|PA|4-Jul-02|500000|USD|seed +Viv’simo||software|Pittsburgh|PA|1-Jun-00|100000|USD|seed +Viv’simo||software|Pittsburgh|PA|29-Jan-01|100000|USD|seed +ShowClix||web|Oakmont|PA|1-Oct-07|150000|USD|seed +ShowClix||web|Oakmont|PA|1-Jun-08|250000|USD|seed +BioWizard|8.0|web|Wayne|PA|3-Jan-08|1000000|USD|a +TicketLeap|4.0|web|Philadelphia|PA|22-Jul-08|2000000|USD|a +Tizra||web|Providence|RI|1-May-07|500000|USD|seed +Quickoffice||software|Plano|TN|5-Feb-07|7000000|USD|b +Quickoffice||software|Plano|TN|1-Jan-06|11500000|USD|a +Quickoffice||software|Plano|TN|23-May-08|3000000|USD|c +Thoof||web|Austin|TX|1-Jun-07|1000000|USD|seed +Bazaarvoice||web|Austin|TX|1-May-06|4000000|USD|a +Bazaarvoice||web|Austin|TX|1-Sep-07|8800000|USD|b +Bazaarvoice||web|Austin|TX|18-Jun-08|7100000|USD|c +Small World Labs|25.0|web|Austin|TX|19-Mar-08|1000000|USD|a +Pluck||web|Austin|TX|6-Oct-04|8500000|USD|b +Pluck||web|Austin|TX|14-Nov-06|7000000|USD|c +Spiceworks||web|Austin|TX|1-Aug-07|8000000|USD|b +SpendView|3.0|web|Houston|TX|1-Jan-08|2000000|USD|a +Shangby||web|Austin|TX|1-Jun-07|1000000|USD|a +On Networks|20.0|web|Austin|TX|1-Nov-06|4000000|USD|a +On Networks|20.0|web|Austin|TX|1-Nov-07|12000000|USD|b +CareFlash|0.0|web|Houston|TX|1-Aug-07|600000|USD|seed +HelioVolt||web|Austin|TX|1-Aug-07|77000000|USD|b +Challenge Games||web|Austin|TX|10-Jul-08|4500000|USD|a +Woot|100.0|web|Carrollton|TX|1-Jan-08|4000000|USD|a +Mumboe|17.0|software|Austin|TX|1-Oct-06|4500000|USD|seed +BreakingPoint Systems|54.0|hardware|Austin|TX|12-Nov-07|15000000|USD|c +FameCast||web|Austin|TX|1-Jun-07|4500000|USD|a +Click Forensics||web|Austin|TX|1-Jan-07|5000000|USD|a +Click Forensics||web|Austin|TX|1-Mar-08|10000000|USD|b +GodTube||web|Plano|TX|4-May-08|30000000|USD|b +iBiz Software|50.0|software|Dallas|TX|20-May-08|250000|USD|angel +Cosential|10.0|web|Austin|TX|1-Jun-02|250000|USD|b +JAD Tech Consulting|6.0|consulting|Richardson|TX|23-Sep-93|125000|USD|seed +Mozy|26.0|web|American Fork|UT|1-May-05|1900000|USD|a +Mozy|26.0|web|American Fork|UT|1-May-05|1900000|USD|a +Ancestry.com||web|Provo|UT|1-Sep-99|33200000|USD|b +Move Networks||web|American Fork|UT|1-Dec-06|11300000|USD|a +Move Networks||web|American Fork|UT|1-Oct-07|34000000|USD|b +Move Networks||web|American Fork|UT|14-Apr-08|46000000|USD|c +World Vital Records||web|Provo|UT|1-Sep-07|1200000|USD|a +Bungee Labs|38.0|web|Orem|UT|14-Mar-08|8000000|USD|c +Footnote|31.0|web|Lindon|UT|1-Jan-08|8000000|USD|a +mediaFORGE||web|Salt Lake City|UT|1-Jul-06|1500000|USD|a +TeamStreamz|5.0|web|Lehi|UT|10-Jan-07|80000|USD|seed +Exinda||software|Sandy|UT|22-May-04|6000000|USD|a +Clearspring||web|McLean|VA|1-May-06|2500000|USD|a +Clearspring||web|McLean|VA|1-Feb-07|5500000|USD|b +Clearspring||web|McLean|VA|20-May-08|18000000|USD|c +Clearspring||web|McLean|VA|27-Jul-07|10000000|USD|b +Avail Media||web|Reston|VA|1-May-07|17000000|USD|b +Avail Media||web|Reston|VA|1-Nov-07|25000000|USD|c +FortiusOne||web|Arlington|VA|1-May-07|5450000|USD|b +Mixx||web||VA|1-Sep-07|1500000|USD|a +Mixx||web||VA|1-Feb-08|2000000|USD|b +Jobfox||web|McLean|VA|1-Jan-08|20000000|USD|c +Jobfox||web|McLean|VA|1-May-06|13000000|USD|b +Jobfox||web|McLean|VA|1-Apr-05|7000000|USD|a +HealthCentral||web|Arlington|VA|1-Jan-08|50000000|USD|a +comScore||web|Reston|VA|6-Jun-02|20000000|USD|d +comScore||web|Reston|VA|13-Aug-01|15000000|USD|c +VisualCV|20.0|web|Reston|VA|28-Jan-08|2000000|USD|a +ShoutWire|9.0|web||VA|1-Jan-07|500000|USD|a +Parature|100.0|software|Vienna|VA|5-Jul-06|13500000|USD|a +Parature|100.0|software|Vienna|VA|7-May-08|16000000|USD|b +Loladex|2.0|web|Leesburg|VA|1-Nov-07|350000|USD|seed +Appian|120.0|software|Vienna|VA|21-Jul-08|10000000|USD|a +Fortisphere|50.0|software|Chantilly|VA|19-Nov-07|10000000|USD|a +Wetpaint|35.0|web|Seattle|WA|1-Oct-05|5250000|USD|a +Wetpaint|35.0|web|Seattle|WA|1-Jan-07|9500000|USD|b +Wetpaint|35.0|web|Seattle|WA|1-May-05|25000000|USD|c +Jobster||web|Seattle|WA|1-Aug-05|19500000|USD|b +Jobster||web|Seattle|WA|1-Jul-06|18000000|USD|c +Jobster||web|Seattle|WA|1-Jan-05|8000000|USD|a +Jobster||web|Seattle|WA|25-Apr-08|7000000|USD|d +Yapta||web|Seattle|WA|1-Jul-07|2300000|USD|a +Yapta||web|Seattle|WA|1-Jul-07|700000|USD|seed +Farecast|26.0|web|Seattle|WA|1-Oct-04|1500000|USD|a +Farecast|26.0|web|Seattle|WA|1-Jul-05|7000000|USD|b +Farecast|26.0|web|Seattle|WA|1-Jan-07|12100000|USD|c +Haute Secure||web|Seattle|WA|1-Jan-07|500000|USD|a +Newsvine|6.0|web|Seattle|WA|1-Jul-05|1250000|USD|a +iLike|28.0|web|Seattle|WA|1-Jan-06|2500000|USD|a +iLike|28.0|web|Seattle|WA|1-Jan-06|13300000|USD|b +Redfin|100.0|web|Seattle|WA|1-Jul-07|12000000|USD|c +Redfin|100.0|web|Seattle|WA|1-May-06|8000000|USD|b +Redfin|100.0|web|Seattle|WA|1-Sep-05|770000|USD|a +Action Engine||web|Bellevue|WA|1-May-00|7700000|USD|a +Action Engine||web|Bellevue|WA|1-May-02|5000000|USD|b +Action Engine||web|Bellevue|WA|1-Jan-05|10000000|USD|d +Action Engine||web|Bellevue|WA|1-Mar-03|15500000|USD|c +Action Engine||web|Bellevue|WA|1-Jul-07|20000000|USD|e +Wishpot||web|Seattle|WA|29-Apr-08|1000000|USD|a +PayScale||web|Seattle|WA|1-Oct-04|3200000|USD|a +PayScale||web|Seattle|WA|1-Oct-05|7000000|USD|b +PayScale||web|Seattle|WA|1-Jul-07|10300000|USD|c +BuddyTV||web|Seattle|WA|1-Jul-07|2800000|USD|a +BuddyTV||web|Seattle|WA|1-May-07|250000|USD|angel +BuddyTV||web|Seattle|WA|14-Apr-08|6000000|USD|b +Judys Book||web|Seattle|WA|1-Jul-04|2500000|USD|a +Judys Book||web|Seattle|WA|1-Nov-05|8000000|USD|b +Sampa|4.0|web|Redmond|WA|1-Aug-07|310000|USD|angel +Sampa|4.0|web|Redmond|WA|2-Apr-08|1000000|USD|angel +Zango|225.0|web|Bellevue|WA|1-Mar-04|40000000|USD|a +Cdigix||web|Seattle|WA|1-Nov-05|4000000|USD|a +Ripl||web|Seattle|WA|1-Aug-07|4500000|USD|b +EyeJot|5.0|web|Seattle|WA|1-May-07|750000|USD|seed +EyeJot|5.0|web|Seattle|WA|1-Jan-07|400000|USD|angel +FlowPlay|6.0|web|Seattle|WA|1-May-07|500000|USD|angel +FlowPlay|6.0|web|Seattle|WA|6-Feb-08|3700000|USD|a +SmartSheet||web|Bellevue|WA|1-Jun-07|2690000|USD|a +Visible Technologies|60.0|web|Seattle|WA|1-Aug-06|3500000|USD|a +Visible Technologies|60.0|web|Seattle|WA|1-Sep-07|12000000|USD|b +Zillow|155.0|web|Seattle|WA|1-Oct-05|32000000|USD|a +Zillow|155.0|web|Seattle|WA|1-Jul-06|25000000|USD|b +Zillow|155.0|web|Seattle|WA|1-Sep-07|30000000|USD|c +SEOMoz||web|Seattle|WA|1-Sep-07|1250000|USD|a +DocuSign||web|Seattle|WA|1-Apr-06|10000000|USD|b +DocuSign||web|Seattle|WA|1-Sep-07|12400000|USD|c +AdReady|33.0|web|Seattle|WA|1-Dec-07|10000000|USD|b +Treemo||web|Seattle|WA|1-Oct-07|2550000|USD|a +GridNetworks||web|Seattle|WA|1-Oct-07|9500000|USD|a +Pelago||web|Seattle|WA|1-Nov-06|7400000|USD|a +Pelago||web|Seattle|WA|27-May-08|15000000|USD|b +Blist||web|Seattle|WA|20-Feb-08|6500000|USD|a +RealSelf||web|Seattle|WA|1-Oct-07|1000000|USD|angel +RescueTime||web|Seattle|WA|14-Oct-07|20000|USD|seed +Zoji||web|Seattle|WA|1-Oct-07|1500000|USD|angel +Snapvine|20.0|web|Seattle|WA|1-Jul-06|2000000|USD|a +Snapvine|20.0|web|Seattle|WA|1-Sep-07|10000000|USD|b +Jott||web|Seattle|WA|1-May-07|5400000|USD|b +Earth Class Mail||web|Seattle|WA|1-Sep-07|7400000|USD|a +Earth Class Mail||web|Seattle|WA|1-Jan-08|5900000|USD|a +Smilebox||web|Redmond|WA|1-Feb-06|5000000|USD|a +Smilebox||web|Redmond|WA|1-Dec-07|7000000|USD|b +Fyreball||web|Bellevue|WA|1-Dec-07|1000000|USD|angel +Delve Networks||web|Seattle|WA|1-Dec-06|1650000|USD|seed +Delve Networks||web|Seattle|WA|1-Aug-07|8000000|USD|a +LiveMocha||web|Bellevue|WA|1-Jan-08|6000000|USD|a +Mercent Corporation|50.0|web|Seattle|WA|1-Jan-08|6500000|USD|b +CleverSet||web|Seattle|WA|1-Aug-06|1400000|USD|angel +CleverSet||web|Seattle|WA|1-Sep-05|1200000|USD|a +CleverSet||web|Seattle|WA|1-Dec-07|500000|USD|angel +LiquidPlanner|11.0|web|Bellevue|WA|1-Jan-08|1200000|USD|angel +Limeade|10.0|web|Bellevue|WA|1-Jan-07|1000000|USD|angel +Yodio|4.0|web|Bellevue|WA|1-Feb-08|850000|USD|a +Tastemakers|11.0|web|Seattle|WA|1-Feb-07|1000000|USD|a +WhitePages.com|125.0|web|Seattle|WA|1-Aug-05|45000000|USD|a +RevenueScience||web|Seattle|WA|19-Dec-05|24000000|USD|e +GotVoice|15.0|mobile|Kirkland|WA|25-Oct-06|3000000|USD|a +CarDomain Network|50.0|web|Seattle|WA|29-Jun-07|3000000|USD|a +mpire||web|Seattle|WA|1-Feb-07|9800000|USD|a +mpire||web|Seattle|WA|11-Jun-08|10000000|USD|b +TeachStreet|8.0|web|Seattle|WA|1-Mar-08|2250000|USD|a +Estately||web||WA|24-Apr-08|450000|USD|angel +Infinia||cleantech|Kennewick|WA|22-Apr-08|57000000|USD|b +Infinia||cleantech|Kennewick|WA|1-Jun-07|9500000|USD|a +M:Metrics||web|Seattle|WA|16-Oct-05|7000000|USD|b +Cozi|26.0|software|Seattle|WA|11-Jul-07|3000000|USD|a +Cozi|26.0|software|Seattle|WA|1-Jun-08|8000000|USD|c +Trusera|15.0|web|Seattle|WA|1-Jun-07|2000000|USD|angel +Alerts.com||web|Bellevue|WA|8-Jul-08|1200000|USD|a +Myrio|75.0|software|Bothell|WA|1-Jan-01|20500000|USD|unattributed +Grid Networks||web|Seattle|WA|30-Oct-07|9500000|USD|a +Grid Networks||web|Seattle|WA|20-May-08|10500000|USD|b diff --git a/linreg_1d.jpg b/linreg_1d.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cb6485fe4a4d6cb08a65d08dd88445e2672a952f GIT binary patch literal 159538 zcmeFYRZtyK(>A(s3vR(fa1ZXD;JR@S!9B>vEy04@-nhd?gS!WJcXxMp_<7H%b8#-e zs;}O2b9$<#R?Vte-LqCt&wBdld7FP*2Vlub$w~oWU;qG^_XF^@1ds&4!Tv}7bB22t zctrUB2r?of0wM}BDk=&x3JU56%nzt&7-%Rc=-B8Om{?fYSg0RxaB;A3-`iOK83g7( zcf!FVzu$<3hJyBf^?xXD{{Yy?a3A0b;b5=uy6>7ut@MI?^YlH{-Yclff9#Z91&O5*zq&Ruh{HLybgQ` z;E#!ob1F`!DkN$y?*AyiAjp|CaSn*@r1|76veRev8R9Vgz}6zuh7+ZamZ8;aog06K`=yL?XO#ir&7 zH(~VnkUg0ZKPxa-#lr>8xJK*^Xo3r3LHWcWhI>$bB<9=%m-6nBsP)|re}v?_l*yQ4 zozcu@H}KVT>MMzt2Q`nP8}NWUIXJO-C5@snTnOkSw@JnccY0nz>utcE((q3tfkR?y z^hgtOf@JM1uQiDC#vU2${o1X~oLvqd44CIMB`?f4d^HND#_!;<#APSovAo8KT(`d* zrb#MOT3cTKr4a*XX2Xq-Q+yA213YK(XMNF0a1L?Y2|Z5bA2>-MQTH8{Z;+KohdYi@ zml~M+&Z9i(|IaZ*@aG$V>+_HM`k3PdqWTybUX+)He&Jt0JlNl|*P1oHHHdKCA)yg) zT^KZQ%%dBtwE0KEJoD@XGOrJXdoS25b-;ey>5K2&F7b~egfPclA-91^K;NKX99?Z?*?HlnsJ49nhI^7*$i4FgLh53}7J-ziU4Pk& zRV2ZlEs6vfj9=&x$znwo=aufMLa5B^d`9f<(-RAE6256rlyU11A!3w`Wm$26*5L4F zFK3FM9m2qtZHX?z{qv6X`q4SFF{Dr=hiuG=s+^R&50JWf9RD~*l)-r_LS|3!fdr;I zcRM*)Yyv#Rk&sQ6^zw~?`cn{toQh`fKNyiGSpVqrxd=ZjwFiu$-d9R*KGER*ek6Ug zJU3G8H05!qfdSo=A5RCBv0xTUJMnTdVHKc*yJICX1t`a#Jm! zLD;TxkTlx5a=?S!#8DrZ7L)hHG-S&lM)5-o(LeNJF3JJ5r6^9i`^)K%8d3M8ie>G% znB#9UI@gkB+fYW;TNy!-f8)5T?hr-_*Fh${baRB-&vcsIp`oNDW+w zLB0c`_&Nj%H%DC-pVufF6lyq15_oBWgDdJk%dh|JNH;af#cjInqxNM1U@TwfxdueA zG>^?#DF5cn*Q3f3D`mj>-G%uXsE`EwQn20%G`ZSp-sPs9!QN)h?1pgs#ymua$@nkD z_2-M1Y&Q=cijU+3tbYd_YpQ*n}5?re3t5 z35SGj*()U5Lm4NR?By+4LD+2&J4sK0&;Bpq4h|2Z3_{Z(v#mK2+&T9TBTh>{r4^FG zbS1)-FwM~S-vFKd&(#+fK}Icd&Y~Rp%*rkK4V+jZpXqHKN~aqVO{wa$_njo#dA`9s z5^XRgMDyJ{b?`Inb;aAe1}`?yGg)luEOGE&FGUua=tsCe=-o087m7^|BaJ92{#PR8WuyK4FyA^k4fRO<%ox-&*jcZ=3KWu~1>`&jvB0)ieT~ z$^8Bud7lfSp}z_-(UZxZ!S{R9>PEY?XP2~MwlosW-~MKs>92AVc!-ORRQ;pwbZCk3 zbu0Zwm4Y_)@G@e$)Py-a`e?Gp5=~KktNvNf$Q5q@a#PZdjfc5}!X!Q%M{jd zc0#oG$``5|cj+JgUZtHb^unH$NgA`RQ0N(Y%q7l|-4sHt=6=LU`}NF+!I=rkI*;;h zbcM2!rpHok;-gcBdw(i}D5kUqCnL?{ps3!;se3)D5QlcQVQ{PwSO#p;^_FS5w=kZ6 z7$P7cyO9cT_>)`rIEgWdCm2ZgH4?w*YYdb1FS*B$NE3mdQ9Q2 z!9Kv6Gx4vk!ZqdKTcG$S4Wl|ng=Rn44PF@>{T~VnyCji(3zKo#WS7Vy-FN|yDui^A z$8J~y&!2aBm)l0{5?K-a<$kfM(X;k~Jq7Tl0zs7DOfkWcX9jo0ux=aQmcmzw8%Bn5 zR`lZ|mL9T3J;-jQjuySypIyHgt}`*O5V` zB-NmoQ}HO0Eu-rhGX9$$^$pOA6rjCICF-*G(O!=Vd)r%`##O!vg_%Cv_Xml`ClG*e znMHW2Z9}paM%g$+pgQAY|HcJdbOxtqkDJvv%R&UQmFJR>gP{k?1JK8{uKkQB40h`! zo2{$$o_u@Y_JCy|oOXy<4U;D;k8iEJqNa%2^Ea1x)|WPzOQ}kSg`1!qr`Xw%xE@g2 zrrTk#>3|N!1Q%lKJ>7Y7pnH8^SsSyET=7PN;pNkD-{+;Ygt{C~GUzox0$KIpmmCmT zP9-ps820*t@JXOWaHmB$MtsZuOZDc1DKhIwm42yRQ9(RQ9wfUqraT>u;o#Gmfq~># zI5CjB_^$lgpEWo_hZ9ri@Bj-zY8eX%G*xfp*f5CR)LuM2xpXLUh$?c8w0#$%5D;@; z9h-j->12`5Bnh|wl4oSX)5_rbAg}KR^9Fzo9@lt=cE9`n4exF6j&=dZ>lo7*m2o2c zGIKqbF6%i3ITTUvdl2T1u4`VANVZtOftW2t5L)NiD$#x2;pSk%EsYH--EJqX z7K`V92Pt5VMlY5-=wm3J?Xm#Eid3-0fg+ zrCGRB$v#&5%oy@ih@SD1!`{=?VMLb=_kD5R#WyZl>zN*1^(C$G!zl8gBeODPj9xE) zHBq>0wFuOz#y|(Sq$YR^Y*LT(Os~DkqSNd}6RnfGK6nG{d_>i!cu^Sidm@IV=uhq? z?4hXLda~Ka0JY*`-CbeNkyklKk^&~jW>X_gS5OA)HvS`QWv&&eT$TV|%y0~J+L{*;6zySDF*1<&Obu$CgoF?p_ z!Lqrm7fr~gU?^%G4KskE6n8kD&LBpBDUwxX_)19tT&VU#(RcSsHKFT-y6O#(Am?wzL{kszA}vw# z4dzM1CfqK-Is|oi3SBI!OYxgsq=%&$0}KrD$s`V9?MX4*g=kO<*(F=3y~-Y8!&ZV6 ziA#^O)>hk4nb7?xkw?;xz2{RBK8QfIk+VoasM|5Of9j&at{?lob9>mX;f zFm8lBb7lvU@1CrDt8PdfyJ0B8 zqZ#um=$(nu?UlzOKCb-A?I#EKlXf@+mTJmk&|JtIOW$KJ0c**UY!I9~4-l5k5*79{ zTe52EzCa!cBxE00;0&JM6rEu%WeXVhd6ifzs8obe@g1=JF%;wECb+>bTpD`26qKFn zz3)&^gvn8aN!d;BgG{Z0wJOtS=*|9}^l4p`Cz0U@uZB1F;<<0ME0TysKzHqaNmhU? zpp^gR5$?MA-*hE!CojGTl5u3O!y5nz_@8KY{a=Cv(?*M&eU>8?Z32zY^0tD;qu*uZ zX4Cy42nd)jG4GRQFHWHgQ+bmmDk^G2{)LXSt5MLC=~p}}rSc4`haAOI6P&TPc`xr6 zV#}X|;OAx2e&R>EY`;@H1d2X=oG~8XQA6HP+rwyxi6&^3eISxdV7hk|WT;KmfB}E~ z5-t9!3!8V|HHgy~ejB>QzcPZrYthi5QnnsxZ-a8VqS@M11F=~ujJAg3-Bj~G7jb(j z(4Ix;ABXl=t)Bb+0kNAg3Z~nBmK8@+_U)m%%HpvJc>`F41V!Nvf3lc&MQ0hhDK(o{ zW98M_PCB)Ws>zl^KAaGsp)*|BN68F-6(=>=$c*L06C&~D4*P1Emrfykv0Y!@uIB#= zM%sA;d~|2Lh_pO^2)!%_S=Af(=*+3yC*NxqujO#>LLakq__GDfKOLBt3C2Pu+ebMI z`Cyab{po(T)66}rh1PrZXKjD2QWDKGa5%4&GUlmiG9As%UxseSYdU?LK>E+H$k-cT zNqIArH`T^z-E4j<%6ZyS}1o9uF#+uBj;Zgu8)I)5Btx!i)g2xYcgcHsY@wkdj@{Or`S%LTK0c zk*$Q~CaJS<%PUl~7>o!+Pzi^9-$P5>7ar5zv2$jQ*(obo1}9sdoa}G8<Y=knZS@bcDlSgRh*OGD&PGcbwqfUi*Vxt#6mu7mI_Cg4{@C)fBxEj{nDc#dF3o>_hB;WI^{~rUjJkw|w?L ze28%Fwm3oA9d?MPy)fuQ|Hp!pTfFjlzbs+#&r-S)OO=HDD2v`{U~F4#1#T0ZRlAik zx@pVM#;p*k)%<`PMSFKkzx*IoQ6SW=q~K88h0F&g>q`cA3uEVn@J8^MTd#55sY9sF zLWB0Iov2VABG4#Uxd;tqQT*DG;d&uUXsxO_gF{4b-Qs+?mBX;{;yU;QCE<3!m0gxO z`|BG(09H=$4M49vK8}Zp?Ot|%u-?_p_Qx{W?&(u&d;HFkN49w#bT|2OC8hvNvmOie z_bS6l`wCBAvZFV!Xk~zC~Y0fYqga8I`CargyB`m_= z&Eg~~uu|HHM1CJL#CNJ##Sne2dBe6rO<$N%8@w#>yLmq|b=*^h__}>zYjcg$)_A#S zi{s#D7pWs7geVazvUMQ4C~nsYetc0E6TSwCDKsM8x|of#KYNaB%yo+>23DGdX~)7G zu>P4c1cvGd5y%|qJV-U+amD5c|2x{sTqqLpRkIjwQE`U60l@l|%>0N$lzj?_{h$1E zHV47!k>J2AGPn5?F*^qy$9Vnb?qpuV&?5hc->Zect(C6_p_tb2uLsJ~m zeGtqeMQ00l;5i-X;{6z){?F`?wH&w#DV64itl_EPAtCqB#~pyb_>x=8GguctF zxh+)3850{T=gLgK{(C9nS=NI!@9A;hClUty0&T-R_5IA3FQVLc%N9MxPV*3>YYAmj z46c5*Tu-+Rfac*I;vs?FQDi_16~mU_2X9c|ZrzODSwabuonlxOYSPalxqZ!MTLggb zHNwDuhaP~DcW>AjeoAu>9p;U=Y<3llsdfr?4CV2X)B9ATQIi2K%!?`O%ey0<^BE_; z&A@vpnYh-yFzPG2_Vh>qKd)sz;sc`J5o)aqUp!U!7&#b%QK}bzaP|fmphw$E7UCV- z^QMEXv}n{bYOVB&kWcT`*Ir>!@IanwMSfMutrA_PN0Vm%cf62EVQ{~@P7rRkI(t(z z8h=GuKtezNQv7x!xlR^^@)Dz#?Wua zq3Wa^=$G|v4!VkhOuO!qQL|n$pNbf?C~8XwX&*y>n5_;ErrSotsv~`c%)p-{8tG2h z7v=qW^m01$M}l8#OFY+dWV3iIdJ+)?H`#*e9E)igImd>=S!h^Ypk~nHy!b;d*|Spw z81s#WV|{t-svi~ecKOV=_v0jXm6uQ!9xy;;jRmIsmAi$eqa?MBgAo!x{(e7X6KBP zO%Yjh>3`WhLZqPmQh#E#JlrdP?)INB!gpeZ??hGC&it`=J#oX9Q`)}udS^1@?4#R0 z=;4=`s|imCGv7^H|8=ymib;-Waw!Nt67v$)|8gsd95NFK zndLGH#5u888l%u2%<^*M?B&}tF-bOZ+-Gi6BGTo$yN)FFqn@6v&-w!du9{n?nHq($ zD_`&ER{aw;mX&*+-LK-lhzRyp?qx_PY}GZZVJFl$_%H%-P)KfR{UPK3V`2N!AiNS?gm_-aXu0r}hwjUExiXK%!0FEvaCPeult{SvYzcs}wN`{R@)qeaAq~NCnwyj0XrNM%XMB98 zkR45e@vdnEmmFpN9`^`ijjLZ2m4YCAPfM|MZv0O3m-Q|UTzg5$_PE!;I?MyT z^i~GupD7T}&^_w14>coU%iu^5#@4>iVM;BpoIMSc|1K6NjQ@AuB;V-MR~j<2nP~O@ zXgdH}E&gBX(uXPQIk9;u6F<2~E5~FyVNClOS*OblVy)`MG8zneNt@t78RQs&p>)&n zRo1%N3)p%Nu8xMkEv)0r#LQ;MN(!JxNhj)BSf__v;bELxzb(pYQosFwMr6b6Bsztl zRi6RMPooZBAx-J15T9x5bW63nHB`Pq+x~=O@i!TD&~FhQYkrvqI`UYWrjx1%gL;? zRq2xCN=hsShI${Ck%1XPgiipMr>4lCB;JvbM1_W{>tA1xsK~ryhLBu8OS6;$rW;-X4-@@0l}-&%>*e1Is;k`n<5;d_AlrJz-+j>%+!MCuU@P8aIw~}hFW4cu zxne~rZ^t;NZ1{(g`nT5+NJFA`b2m~x?8`92#z0xbyfxYC>_V&OIWUmWv%3`1XM2MG_ZnFbhUOR%5 zA4+05J6HrH1sY<8=Cx^$B^RfEQ{&qX?<0(@5ys2xl;}H}e*-jVk@=xd56LswZdzEk zr2X&Kh#)~>!qQ{DM#$S@3Y*MH?@*LK7n?Ehk9pYssb$SYPuQhd4&JV{Lz6Vw2gAKS zCX+DA+E;yptVrE*XnJiz8_%mAB}2~XT~VKWK?J)qYWhF7WwM=n@6CpXr*Xb#39R}g z?X$LRs>GfunthaWz}8_0gEe)66XSVc6llXBFFTQ#2S;i}^KBp^9Jf%fKfSCsF1k%^ zERx3nxR)6g-3fV8YAt8gvv^LkmSQV*sHG6%WES_d=$?vwDTK|QG&JFkY_FQt+%Oxb z2WIx@xI!QUgiNuif)6%kIKhu6l9f&sQd%pG^c2zb`xj^9ZO0^^kIvDU-;`8D#N1Qz zLRQ0-X&05NW^AI!X5++MPP3p2$3_# z4RXRy8938@6>=ip5*ItD@=c*1lOOM^#%F?Biz)K_&}Fp{H9{&npRa!^Cx6`-Ijd0` zh{!e9=E~b03KZHMtgVT`gjpQ@rA&$n7QReV}$|B#6a(geZJ% zW`U;p4Kc2gA213sB#`dG2vjJ_D>^u7CL>7;MAQUzALUj>jk8}A<%1$+y_T@|+>kGq zFPIqo+7+bwrmVRewWa??ibnV%rI~7dX)DX`e?60Sc$i)50QRE$g%`z1+GnhEe(|7! ziXB)z5|@^Ln@B{Xn=CHwqbq)o-!T6U@8BNin#t`=?1^Z?7JmMi;5ou?4$Rk&>E<}} zzDu#qW3iNa1cM=YxTP4`?Ye7nleO*wG2xDiw2!n8w9kg*9~d=)L_K0l61-rBrrZZv zD|419qKXtHS$|Q^N;Jv+yZJ=kr(q+l0JahgA=u0y=^ePozp>w;>mqC0Q>BiRT@cBe zon-IvM1bjv;+e7r%|MYQga6p~HxRylLCrzU2SYb$5C`Se1`P9MlSYW z??dBJIf%mYqN-^nZL_M;#@`PG*~w!kP+z_QKs>MWLZyzh4S8Bb_2KWV z-Ls#_k!8OJif9Y-SQ%GCrCn8~BSzMN?1SEc0M%THk!Ne=v1@H%CqDhet$9@{7}#~c zw=WIp;cMYBcaP7wD6`g2JYUvh{#GWSQBvDEcRoSpNF&-Q4r~g$&H_yxoT=7Ejm=Hq zXlYRPz5z5jhT|^0Oek;{K^jIN4ze)!?jFt%w=hRc=H*S4691x!%9w4JrXZKU492UA zH-e{(gJ+fX1WYeKb|VZqL)0)a6P9VQ8-UxH{S}Q}G5L-b*rv~+_TfYiuG*i!x|-b} zf;ZD7a0qZDYHOqZofg#y3kZ}!r3USwyuouq#;w)+wk0B`7~d>@?qU4gN(IZ37WK}` zx)PPS2cseG*DKIP9&k{RZgTkY#=LX}jfjt0~XXj{|H>T&d(+`S|1 zOJ%%{e#{SfsD0@AqV7btyAReiGOph&IWJRAipd}MFZJ%G@KbuaF7up{ZE9_P#;1R> zs(G#)qg_y9kH+1WxDQXd^3`sWi>1J<*K_=H44oe4Fz}iATP|Lf1+L$9dG4kwq_)IC znbEZ&X33A0V~1!lmR@$sCyLl@2|7eve<=WJP_TsU4sF8qAS@+4AQ4pkG$?+s?Aew4 z{mIYLq$d_>*yb-^!5;?q1_%NcVhjMz!mGJ-;RH4++0Ie(R3-fzT?XQG#YKd(_Rik$ zZ1Ie!avtAOw3}_I$Pb6lx>eXoc9Kn-dORP%ry7 zoI^P%@D_UEPvSO5`6EpTtS%PJ&!~nK7BJ|G%z7B)G$-TdZ;u%d+pTMv?8lZ?iVA>G zxmdeizKyV*z=RJPEu@S4cDEFvi|5{+tn6l<&M_N7h!7s#?dBY}oZ368cH?~{Vk(S$(F&rCPSEm4uLz^I-hVuE7;l4e21Ci#=6<}xSM)$v9@Yu=QS_;zRe`v z?Atdlqk^f)wji&?5#W$~brY2SLPO2T8|}s{D8hsUn@R#FE$5MZRqp%^&~qE*uxSfe zy>xeFxb@m{;QCu7j}kR(PRtC2fc*QJ1SthjMOI2QlNU)I7Zp$T;K^hLGbr2$6KSu~ zGhBCOh?Kw@GJSJJo)>i}z0Vq<+ji><+@nXxlnc1a>9PE-YD{)P-q~`%miG8Ynb{|w zlGy3;vs#-lrPGv%I(e-1QQb?OwW80A?8=BGKc)Y$^0%E+N6`+QDDQBZqm>*>Hza%v zp62EQ4oZ&w#UAG><%!F?JvcLxn0pfRk<`|Wtby>A!7n>)??m2)9SymKOozz*H4s5@ z7|yuLV1g)~NA_OW&+()0@;t5bC28@7-v60g@fxt}%)Nq}+=LB1%U)|$+vjyXKcSf} z>T%-;((iF{lxJ~wRz@6*O?0Lpi$*lqL=xCO=D`f1WjWJ+aD8&pWRK&*0w%FfBBk?J z33}Mq$pyD^RbF#9jaAR47!23;u?q4@w*Tl!Vuggp=vcSuAR{_IH`^ zf90%H&1LdC1jirkaN^fZDlZ2fzl?~T>{usa^wv6fsyn^tr}F6Kf#dc^Dl6N!^-~rm z^%pUZ4qiRW(+nh|;xCso?O2J!hZAQQZ2wm`JMLv#+PB-@-7Hi0dPwcNzQ60o>me5P zY`BWL6L~HD-2+#&Y{imcC?bDIP$*(bJY9@sf6)Ie(gab|jIr2phrxl1WGJmv5$L{0 zn;3GZCn=NUsA9aJJK}8Dk1yr!0DT4?e_a=+)WxfH6R27#?PBo9FJCDSsNhZjaB>f8 zBViseJ(r|<_PEhCSZCSc5U&%rOG@v+8*c#Y)#A=C5d@zrB)~ho$($sNFQ!4RLB`3h ze|iSDL-a$i`y>ov68^CgOnQ~%VJWrp>TNk_y6ot(+q3r?^62bjen>L2Kx(QbPYTzx zGD%HXabyDhW4!oo&Ri4`_y#DE-1t`A?sH8RZ5R1C9X88tY=;&WdrP~h+!vC$Eaje9 zJwgDVmNDQ^8(zD(M}P(Z)V5vf$!Q#v7XCWYf3_`AFIfSG$6xBOKzc+l_=P?~%|EOp zvuc}GTv6N(HzoRwQ2$b+D!5~Na=BW+eTuafmR3=A-JP4ERbByBErY7?s0%0 z8)UtA89pV;*|T^r2n6wRLxWd9P#5~T-9ec{c<&y%dZ-J?i>73%K4{poQOXf`>t-c9 zt0kJC$k@uWIN-o>ArbS$bjnpz=%-?n3RY9%;O%K>$z|PDW|36TC}+pbDvS2zB9Aw&sB*)#+A@b#jFn=i)bh+MbeB1_yHD!Uvr#4 zU7zuqF13+~R7t8kXH(vR_X5?-&gC(PPFC{;neISyEyvn7{DnTVy6@kd`UUuff(nDX zuVW`p8ElbYi$s(hW5$oh6D|bLFt_I6!yxmB?mb9n5XU2Xjc;I6pgwI+B^M;ZKV;fo z+D5zjs=g7ifo;gNQ{unfY;2~8U0cD^e99rnp-z)!mZe3&mOdy`GZ1BpwuTS3?h4kL- z?Xk}7czb(brAHnA*wYeI(G{b>N#mMQCcTIrp)wPwEICb} z0j7RP|83DZg3f$^`CM@96a6fz8|oq7QUDpjv9tcEj9J7~>@=?OacHNfpPBLl7O6`N z{>!+qqI^wO@j#=~SDTbkup_zc)EfYoNVQW)?0nRXRz8p;H4Wu!oM%o`zGUhXMwarn z2;_!*XrW|<_;r*i6V7N;r$g3JwKz83+$P4Dp`3_Rk&i5tZ|9cpDWOm64X|C<1X8#) zza_`bfAzb^HCmFMNUv8i*ddo3WObi|nLlw5uM}yBKb!lZhTJc0#uWtcoM~I3M=~sC zIA$8u70E2n>ujs!XHYbg5V@t$T5t752?090=PNd7#T8siak6{hXY-`Rb^LUl@b-_B z(*e&T6$ze=*Ay{QBo~)DCaQ^L>$7JJ znHezI5H%Lj?fc?)yuB-~m{(M&8QZPsnuN)XyvHkjTgzZly`$=Ra6O7< z%FFf;gX-gfz{xHCHTf=2YeVtIRFoh2NqZxqkmk_ip+XrE{@~U|`4d?TpN4nm6_XU3 z)1fFw8~J{}Sy$T|Ku{dX&qM=!axgXLhcErqG+h7`y;1WpLW<{Ef`*K6wLx?bt29g?_bBTifuG!Dd?MtRUk%#&YgW!*CKr6SsONymMavH4nW*^0W-Z^>a zRJJ*``NG?{aiiznFdLCLnMt3wCnIJx()3NhKzIhon(`~#4Qy>~j+R}E4ZAuy=Jw4t zSn1mDO>G-r55Ol~@y=x$JE<5biR;RniTw#sezR&BB%p!IbF{37H4IA)(Um7oMgg8b z;HE4kBhf1FV8(%^#I0tzwUIT{Syk3K!QE-~bA}FdRD(8Wmgt93<+Ifpj=onPzo%Ym z^cLSQr!iu42>G|Azm#aYn1cmyiiLShb$4a!8Z@mvpzIaHB|9M0$g0embWu5HNT;I` zy4uSYXQXD#Iu&bDCEvhl3t{;}#WLOH->)|sSm3KCbBr2QgJgfxtD1i_6G0lcX=T=$ znCc53d|qWmM`Dro;JR0)-m>m(R}-AQ9daDZaCHM+j}%(`HV-WIvpRz;y}VzRrSi>N!&1+>EN=P5KR69 zuYCg~Itw|gA63mAFGaUacPsO%xU(L8+~{CnJ+$MgU;21Grf%05ji*)2!unU zzo%BXAt+TbJq%IA29kg*&e;yPM%Euy zVZ%0=^g=JVN9W=Kb{K}>)k~I2)*q)u3lu?3J?htF0*OW^6tBm`4CN>0FUWhMCTY^~ z_pw`+Ed`jwiMAG`?L?u?Et7h(sNX9{8C7P%P;kIet&Pv2gT*O`$pGV2*DEEpNSTyj z@1~)$`f?yr14&cJ@Iw{l(tXuhmyW3+Za`$cB|&r2a7E(BCXZGy$tmriZZr0=ahGTVh zGjT5IfP8MqiNlp1{Z;4f-Tuwa)>b~~EVXfH;c!he;}TL&=x|3G*t7N<&{jIph5DX7 z$b>udsqN`j-zw-6Ic|mEDH>+nRIJ{%WTNZno&qw67|mwLA=^?bXEMvJa>3n| zDDtV1dzI&(snRe0I){3TuV}hypRQZVj@-{4bj5%JPcWxUmB*(EwM;!If2YERTLsv3 zgk#lob0eIm1KcHBOzSO^*9Q#~iWJtg8NMba)Kb=ernH*Z5vCEl!4jUfUaG^hRE5-U zOm+oqCvwv^IrmZ9)Y}!re=muo#_tn$Mk6H&>>bTtnEM&irvuW!@&9Nt|)bFN%%Bfq&cNK$2UiqVfHNbye=4G z)pYA@C~)VD$D}_5qiiY;odmc<`wS4H3reEK4AmWP3tIf1wZU=MKtC!2*&l!X%1rxu z%*{am+gYH7&r%D^g?HF}y58}&f#6$1v)2RP)W^WcANVjZd&vi&KP6 zEh`saIW0K5N`h{_*eb{KGNP-xb!)n88ZVolN!K=a<0a6 zAjSLjCbzT_3KluCYx(UnnTKw3YJFC9dtGcv9G)_|wxd{ZZr*fKT+va73dFAEs|chs zlM@M*xe?7OPd|OY8R6Jc7~H@0h`xs;C2Z+jrLCR?wW(E*)(KCtjPY0JsM7MwDc>1< zZp$pzQHxABKouN~q}MRoGFqiMA~Ji(A*H^D7)I7UqsjM?CT6?4v<#bnHgXc4oLrZ9 zK~m@@%Pgc&ZgqYM3d^WhV%gvud;YuNTuXQUWjVRe+a%oZ%dC47dOO)Dn_EL9qHUG> z&{?;$P2AN8PkC|;Kx?)#%ggI9@4yrCG9z%NV*j31Q|8o>lef%U+C@c$gb>=2X8wCGYeC*XUqT5*) zk9OIiQOnS2cICS*bahv;wXfT0qe71SSoh%VVdoEy{t~B=#a$))I5&7Sn0Gh`^4Yz- z?LG6=`<_x68Et1REC3yhL}Z%E7fLYcvr`t>jEW1S#%GW|2GCXo(g5YKbsWqN$Iy)` zx1ZNG#}!+?dwAXtMd&0Qf1KLnA#Gh1s)m-L3g_0Jv>S~{H7|u5FjWb0l^ytgKFC}2 zQVaH=ds2vi3Ow~}iUQX*4G}xtU1VdU_FFdfFSWiMgTiwte{EOdIye|cwjdTGfLh_CVZve;_`nne5FGkHe zWfx_Czh<;0RZD)o>2r^IL6e>P!4!7fTPiKr0%F>caCEfuni!*PnfP2o`uuk7U$VOYFO+2E{BLc3ss}RBG!$&k^EA3^-!Yyvk5)(cmYP>Mipyo4t$wJ! z0q_i8OFc8B>Wn_j5-G1e^d9w!u<>)OpMBU}z%w(s6?D#Q`e-*f#X_i=Oe1)@6l6+G zMwYENvtL7GlDJaHMX!?;J3sV-As`9#wO=sft+Bz2MG##%K9?_8V{PXpR3M3F)SQQRi zG!pVD#uXzHhNE^EH@ogalVw`hE+-P2zf6T1R&dyanf zESlxqNR1A~xg-ip{8iLOTd8MnJS;>NwKCP<7MhG-`CivXR_7VrKvn4TuN><7;}n{Z zT&PuWCJv0dSAUI_)n!!s?dxZPg!s-T<$2vrO>fexpt|rY>B1l;3ENJ62mk zWjAa3njx>%r9vkis(!DH*m3U}X(P-=<_j&0hlnq%@?h z$L@yu1*EYOSBmz;D^bucf$R7NfX|vTLTZG7x|qw95w>vIDTxIlx6`e|z^2=mmy<&dBp_jrKvy05GD@wm2wtRL z{#(n~QHwu1A@uc5{Z9Teb_Yyu0AXw0ef&IHL6r9=bc<5d_*|C}9Jr+Wv z7=#?6;S@z~**8=ls@8YO1)47tarM9Ovi{s!E};Fq91{%w$jb3#Ur0j@fiJ8RTcEbJ zZ)_z27C^1pTU70t!tEQZ$`z~Zijeqz#;{?N;>TE2I{M1|OO3{j{kfMbjCT{5qbKXg zs1GWyH;s`~9{=k#({90iDBxY9y=u0kp)8_|PMer%^sB6vPDoB@;)jz1hH*lYM`>UeJNabus=+Al3G^rLww?71&NcHwSkdhTUo}TSBm9DnqbZ5L zoiXRMhj)43wzSi^Wb>^U*bOw`AU@97;o%eyLq6XUp#T_eY;;vthYw zKf@1uampesLUBQ#*+qF7)kiB7xa%T(`{KC*C5UuV2R8-vs?qcXb*fDfxNtAWKXU7% zy1v8bAt#SI#jM*XJy zWd`Y{?dopHtVwTD&*6GaHfo~4{L~l&Jv{|13=)R{Rm@r?L z-T<62d2wBibdQPS=L{a1Q4^#EOEHJ@LA zyK*knsR_^`PT^cNR|c^SrbW}j6~2~-;(Fi@t&TyYuArcTfD>+GDQCyC%7%&w;xF&1 zr|GubhkDI=u;{l}$lqBC3TKMPydAcel0zHAHQ0ObuExN!v`6(-zBptr=I?`uo+}*o z*ZdV!H3Bo5FZx!-2-J-7tmJ)b?WHcWDTYvqvUI7{@N`Di*Qt+tT5F0Hg5Po#3J~*` zRxa145th$_srV;tTTpR>Fm@5dIDg!-nv_ zk?%`}`YwEl`eZFefx67EpDsTj#g_9&i3^NP#eTo!U`kmro{w_z1}2M5Y91-uSPMVO zJgAkuTG!9mSWcHS=PF@mR%%EvaMNUvwpqyu3wc%|Z{|i+J^oD>p=bGJNZlf`%)Rim zRXOvJEvx+o@G)DkZWzDea~BuQ=xlnOMJU*GWdMMHtROarnM z$545rm&Ls&HWQK)O|Z3B% zbW0@v^cuQX2l5F_-@E~$__e63%vigxk`x5{&a?^`7#@fn)9Jwsx-tuJZOxCGkHlrA zWz*^or5ggW8@ocNf~QkUF7-k#2a`JCT@T4i+|5i4?loI~qv>tgL0b4SFPnXdxfh6H zS2(aKmYn@(i*RMY{akaVu6C&5%qV=b}t6CwNS|Do%z1&S3Y8fdZNZVAPLdnr&{f_o|M5&{(0;K5y=;_j|Rf=h9yJI`F} zU2DF3uk~TCckU1S4@iz2_dPPkxW;v!zX5g5J~k4WIdl=S&c9Hf2C^g9kbtU``Ep4O z0ZG+MfmaKKd@o1jEA^|QMf*QA3x!GV!^=L&BSE`V))Mkh@9aHSSMqn0Uevb04a=L! z-#tF>u^a%Z0*s^& zvCQ`_gN@)k{jAAAVcs?o51@;3rX(Y4aZ;s7#9iD?@gUjvs%WhZ>s)dS6aFuERlY@ndCB->dCo5+BkXc9bN01#*c2!=&5gN5xdV&MpuuyocYoWw z^t$$OD!JZ^+cnt0rT^G(Kd?{B7rHIMdO^ix*weH)GPgTbE3i_cBv_G1FZwR&xvSy8 z>Bv%Y4$r$^x!skn5Ki{Kq@S)!^&EA}W-B&knr!EK&WwXFj+X}4ZlRVmALiv9_UHA= zw6rGZ@eN&PCP1$)e{D`_Jx?N9K1BZhsFq=QqL9McrZe(kl-R2Br2W;r-6RJ>f8wI& zm~ZAllO5$7tyF;MF2J(V`GgW^sTY==DP*F22dKyz0>M zP?UZftAt~lgYB2m3!PxSq-9QykM5N^2S=+>d?eR1!az%RNNxGRX) zVV;uU0`Lnsk@&3UUj84nO5LM$g45b(>rLH7Cdf9?XOIT?$H4v&5y!XJnITm}5B}e| zChZ(L@F;N;t0+xh9-kF48Hrofi%%w&7mZi@9^_R&k~H7avsNGd+Vpfc+)XsR&LwFv z=VaVJUo_zyfdHO$EUB#A${AP4!Hp3Ub=ie8aEnSsAbi$j!M1^k!z>|s=#=rtpcwsQ zrWqk?_-YC1r2h+S4Ue=$lmR(bPi>~#AQk|ItT<^mAlQ};xCohQuP<7JR+ni$meT{2qqvc6wk9OK8Ich>gDAKO=twM%rnByB& zwJK_(GyYnl9N$~2AXO{DAY1Ud7H?%zm4YdBo}qs?{zYd(Lv$N>q6i@hTv3d~67pA3Uw)sF+QG@7Ei6+EtBE7#V)W@yGv@@B}Foog1# zZE{4m=82pXTf(sI6j)qXT(B&)ai3yhEYYZHPawbn!z?@}Q5k&RW0s=k<+F_l^8#Xw z$%+4xnS?b#37K~0SxC%1h^zibPlM79lWS`q6g+y!^~p_6%bi~qy4V}zXE!sd)xhc# zdt6DH*q=IA#QeBL7))8UAv|V$$NADNJu3tbnlQ!lF5Q?B#X?lnUk#FE9% zis};X8XXkk-|CNV=qseWeVn$@OfVwl3H5FqQc>G$ZY{Q;G5^f;$ih2jg&0+=%sd+Q z&bJDlOzJ$)?T1YHVrgbxs>?Wyu$;**WwL>&ac$2pvOmK=U+n=8r4s^Vq-J-LweZSyxwct*~r=kyy`QiFVv(Of>plCR7gve{`u;aCY zN1pJ$uH6r9%?u-r5|B~og>u~Eg;hpsMSU<7ZPq??(>!T-UJ?I}iw5Y;WG5*2^9Y_$ zn0cbbQfPH?R9<4JmKssGIA2>YQ}5sLQ4;rqst>k7l0Relv*8BMYf5|4ByWvbDwia5 z0M|x`ys`X+yzS;=k(O0WdAW?i;+}JRtIAr2XHA1sCjW!S4_3p$0AzYtFCAnuxv0lp z6xSRAb=;=l)T|m`HW)7=3?c5;>o#fp z6}Pz=;v0qJD2vFe{vqjBG18`Y>P8=cIJUJ#qE^8@w;f=#aq9dOU$~GUFXAk8Dw?Jk z`Fj<@&%$$0s6~5nkt-Ty^^y7KE+1t$N8(Yvdg3@8ZElgcFK3+fm}p>tZq1==ekRLr zVV2%tL;mgh;9Z=b%E|0cFU1CXjQZ;L|&eS?NxhS28l6QR2G5nxC+BHi7QHAUbAz~sLCdqxcDn~?n z4(+ogEL|B9iHXD_m$2h+o-sxmZB6>T`$`HUijQAGFJl;t1wQ&ai0U*ilqajURCA4W zj_bJ2x_IKI8Ba4RSa$PBfCXa->V&2coQ5qEEJ_LOcxsky%tgkCc%A*m$X(f7#SC`y zPB+poWDQCC#5O^VFOs(SCU4kpUQSi+z-u;&L7^9vBz5~WO+iQ&)#8niH6@&T3Se%x z>`Mx^7dLinVS71(SZ#88W3}uNc8^euP7)-XX1D_0<%K6$`ZyVjp3dY3 zoVwp!-+wYAVGN_sS@Zi+|Ax-nx!K~&Uk!ypzvHG@45b^mam6(C5i*xc%b1JIG-8t#ID*KMUuv-*?zx0^J*19nBEvOLt z7DzST&2Xi`kA*Wbm8+)mHK^6(ec<>k^+hbc_Azb!8wsDJu1&(r`o&WP5x&qn)B?-pNL|@ymm`s8oJb&iF?uFDWP5Ute_&Fex%4@&HmYz^CEcc@+zsZ%?ayW<&DK z86uFNPq3JTwcN+CKWGC88!L#!&vQ1rwJ-=rK6SxM6e5kfKx)SCR?m)498yagS2@L7 zX~@FjXpZ0=x+z!w8=;0}<6gzsi0rjg&}wVN+VUyEnTp~~7ABV@O6^je7sR-{BAUEq z1nyyqW+s?`YOLA22H-4Uck`6Gly0;vk#Y93ElZ$vHrCDToNvZf?o?xeLh9g0wfc0W zkYZQiO^daieYFAQ+n?q3g(Ue2dqo`Nw!dtPEY{xiIuWXc`uiQl5UA%)QU#SCVcGBR z>TZLHAGQPd)nE@(U+Fd&cAZeR)`oz`GnL|1=ln3|gWKVZ!E|^50Qtj)k=5oRkHJk$ zRhL9H>8TyDr2o!GFN);Hn(7xs|hV%Cs0zZg2X^zz@E#4NtPAw zrJUIp(|@V_i5U}}tX)r(WHsDOti$;V<3{5T8olOB!d>5Qg%mapi{GM*{Xa+nb=Or$ zeR_##lw$0e+Kvrl@4%~x=vsokU1j5T2~DCR0U1ffnnsQY;gdb-pF5?5GUy9kmRt!F zooo)bu2doW+DdtrrTxDK-osYjMpxkiLEoQJz3_=L8+9VBtVD@<|BeEN7wEJ*w=@X% z_YlMH|0u8mv@xpUkbkbVj^M1=94Pv^;DPl}nG|7ix99Wp#F?Uzko2eT=Z_!h&rvsV z(oGHOxgCvFimh0x$WulaC0$&MZuiiy;t(84T~TM>FL`?EM|%f_oOPblKX%~g9%lrz(g0G2Z+|R3~oS)6xGRt4e zPfNn!ACtNCzvNUz7sZ;4S`Wmge_v+s%zG$d)i48YF(t6{PYm@JYi~8 z*4n4+3OrbGHDBbfnByE|+Ix}yExFX}+uaAQsH8(~CerC=G_F4|jaE=PdRBe)qG719 zB=HUXysl!7-$}b=y}S-&u4qp*&&K{%b7x7zzvF9>O2Nm(0L@fu24X3DlVz!rhx3GP z9jDkRT*zjOHafjH8de2Dc(_3T^(v#yiitO-&UB5gCY-;WAOr$kc;sas1Lp`c$`s^Xfftxt2#v>cktdGBMr;!xJHSTe$nyGO1 zzpXf5b?3jhYAc+&E;2RH3}yd8Ls!{f?#ZmipJ$D#&a4H*F6bJ(lju$AJ+NI z$d%8jTU~v~sT@w-SsW;Pz##(gZSqlE%l1)k+GNg@Pz`HdH$;#~rfC1X1l0YOcriaG zL_=HZb(>i;>XqV)z1yrOy_1g5fJJ$~0U3vL$Xx8B6nT(`&XzP0h1)vL(?a z+CPjQmp49$Cg^Ey!3`Uv_gsG$?0J;CnhmKW5EJs?voP!zdimBi%^=nEUu{}9)Vqij zp1lvAcEmDzdVF5=2Q3tSCm*z={#%H$a`_GAOVGCk6_UuZ!rmfiUEwWtVr6pixXV_o z$VHX)r}CmQVD*>k)U8o(8@pFV+@RIlKNONZ8$Hx4<7{XeT%Aley?lvBB$C2C$c+9c2)a^{;G|GRF+yUG3DjbsO z5h3}2VhkYupbbs2COy!$nKtNLq;lCT0EVn{-r`X2QOVu!F_c-2riFdTRuYa|WF_{9 zydliByqx_)xKL4`sSfXcB`_H!(@9UU!i~?i2iexlJh~)d)jG4rc`I1$?^VsQXj`?Q zYl+S*KZY@;&I0U5LZPbKa?|dfsN5Tx94#BW>yo72uR1SJNqOgk@@dWg{Gz}BN{mY# za2GPx&X!Vvh`0PYXFI2fEoEJvDy-}$pR5ZKxv6GU1wQe+(Ir|ZUYH?U@=e zAZ*DS{CTx|LQ{i68KiuQ5SrcBe9_)*&nfs{Tz>v{OCVN;4ff=uRZuDI+0cNxq&zC` zgt>ZIN8c2OMk9{v{u29fj@a8O)g+GM2;w^(KlmFRj6R31E07v(fhst{r?$V5>3z{b zna7?qdu%pr>IFyD`n!?^EiwF+y5Cnjj?Z*s?yb$&_uYT^QY3xf`SO&x*GASBYwy+S z?M%^3k(fs+J?O<|jEpt+{}PrEVB=!4q6N$aC`lzFNlPq@e$eqw?_Ya;11(>NH}t;Z zbt67Yqt1FFj)sPnMN*Jlv-Mw|R{#IR{l%s14&ieAgN9+O<{^gHRk7a#F!n3bN?1Oc z$QiWt{h|_BwfG6af$8#n8F+k|#e`z5ot6Qk%G}u3>fZRS>w|LN4Z7=JpS}i5LbsMI zYqPFU6M_AvCm#Qgn8Tu+{u^@g_p_$fAyaVHcH|&3@3rC)ueuv_c*^tgx+x}Ww(Wt9 zjK5ppV-=SQEG1m8dMqe=im_*kH~}q7u7MZovD95^lX}0(t_HKJP7{ zbix}WFM>mLrzciF6Sm5M&j_m@9E-P-#CCo@IJT1QkQ+;X@S4)o(QK%X>O@rQY*qjpqbSITvI>tf1X>dL zaNHV=D)AK8kH(}MRiPVAHd*X<>yg30r4jEoU|-R{ENb?-2&q=t9thlS_?Pn-WO1(Sr8 zy^jRLv>?&-=_9;2TPv4W8Pb78FJWVhT@4a9xZ)_32lI0|GV@9g zxtIg*Ap3eTT&l;n=F*l(M$m^Dprx0xEr5!R#tip~+JDB>6GDvS_Ys-w`qzd}>sR_q zFE7iSlJT9hgZ1wz8T?(bh2&X|5yzj=&w`vtnfl0Q%>7XwE5HHC^;lUv6!xS2^`3gI ztmMyyG+R0m6C+M->gFsabxfvyexvYDxjdd)G-o0K*ge|D_;S&y6dYiN@@XZZZH8x~ zzOgTIc+fAF(Pfu@KRRufl68rNJfDq^O9a)HjiY=O596fEZB=1PHXpOko}S+i2#(Ru z_$`OVrG$_dMlvZ@1=f8(2Z>`mOkuhFd*;OG^lZ~P88nTUe%vKme!_|u1B9LGTGqsX z)pO8FS=EDHH%_@LlyDa)xtL~SCf?Kt`UCst!S@(+@WZ!}mrZJa7pD{+zEso2kl#|&>) zme?wh^6Zy;Dk=P`5P!e=!mVX7_$=g`hg?L;m+>-?anBs~b4YjH2Wp}P1iJPv#fpXO{7Y)i)TYO*FTVE3ln&8*n6X&SnsH730;;cqr+xVWNB z7IFOi2@-^ZkMLiW7pG0YQYV=3LPw~nlw%pftcH8IBD{p{D(_{2aEeJ7LAc;Z=(4%( zAGGi5ZX!rZWeV2w>8-tsI+4qn;j&$)KzfBF5+{EYd+;JmO@>kj1f0LPD5aVn0yIpz zgQF?6Z6Q9c+?q3!4ZkeSgLQyNrkH$Wd?YB(`7(d5y&O-_o zD*b-J+hfIATD}}azRv5gniMliekO!3GO5XWTf@!jp)lHsO!J_OFndv&!$*gcyeHGN zGMacdjIdBMv5@Da9&kd=Q?7)HUd&9c6@;@1aUw^%kgQ+xty=87!VJN)t?v$q5Z*{6Q*VucNlApg3SalL3G7_A| z!iFs|efFXQn&s*{dW6h?vkOv2qjM4A<1?8er0SQt9qrj1_4eIhNb^ zR6Nw(KIXoiE0m4u#Td9GLa7OfnFy4UdeRJf(?VizX1z)FvjTiV7`p+fR?FBgw-_r= zVQ_J{f%p~e?Ox&ejgW%XN0N^PX+Tj0;S9XyosyF98oJs~UjZ(?yz#!N5Q4fSU0ux} zzq}%*&jC9Uw_1)FZgMYX_{^98aVY**bON3Fj@p%=l<-WEpL4Ok;@`x+O%$kBrYl={ zaTdKzZ-KYeeLx_cCbrc|t7>SFXaNsa`Zc$5Tt;tuo1r8j_ak{){(OHcshu3p9P#0}N&hT>I*F6SP=w z_N>-deW>H}r?AJL;`>XWnF!NXQrod5Uw4i&bxUW+swFwgv*CWiBUUMA#MHYH2dTrE z7U8s4&-~`@**L4ruY;2KdsZO(ijNp%%pCmVwhG3Zm|3ulT}B31o@aJ`_x&e}6yHKt z>|!4|)86$5yN3ryD7j$9!W+@+GAxTez8e$6(IY5ot3IlYeyDl&`;_pb!)S;wUx%Y! zW&HwG=O;#Y&mB@>mgGO96%!hPvyhy^d@ zKv=$0n8%TuGtUQU>XF*DGa@77F418Q`Epun%2ky$2&Sc%;-)bUGU(+Qh=aHwuR+mV^R38&CC^#g{<^kheQ{4cr82&W-PcOp2KqRpeq6L+)zA%higAjQ`1?ktDF5>ohDfTs=LjQ4l{xUy=!>M`BxjozS- znLJm@8v&o)&pJlme7<_d`Ev=nApqyOV`(xn1%5IoLLWm1N3~9?T~QRrkYwN<}^0c00X1=A85U((y zwzRl5p-n4ZThu+5s2}piRm~%Pg=FNxxuL&tiJ{X{v8vz=Eh951jFu5c^4rnGKoE#{ z)q67Dwyx3sJ_zaQvd1LDOAG~`&4q5h`4+2uq7Zh# z3ImQOd=n@THOL~#HjxC<>g~)e5ZnoSw>mr1vR^FtdA?a9GIVPR<4LcCOw}j7^!58~ z+1^gn3EqtIa&aW!YPWQMrsR4+o#pg0t(A0eZ`hf6;+{%(TA+-CMyvVu?eOKa4oSCO zvI8l1?80e1LR6!izOSISxz=4ux|zb+FrMV+s;7jU18)VK(6h8*l4Uwd4!_`ChBpQB zl)cbOg9U`E*TGWiUNH3gOLdjSn;U5Fpz*5Fr#pix-sDRhL3 zr|*B*wsNMktMO4;S2m08oT*#ht!PRqA?F|M_WjzdDC;`zj3i;c=4OLIavb#oi2G=o z*_$Kf8n`f`f>?nGWPPmQc34c8v(U`KO!@`Lh4RYjWZ-9U)T#^4PfjnI=fZJqoWB~} zuQ0efZ#v#CJ?$fqZh8jO92ltM^UuN_+ojz%mU5vUR8%k3fZLv;F!FJ4&s1IP4W_9o zPQ%(M*W(>*h`K|T>|+dRsypl`3WU=EzrN=|MLVU=i|Sxzwvs$%>`m(bp63{+^^#`rIRpy?ALsZyXkV1@*fc?kTX3Lwil-RZkuR`|Y zZ|OjX2z`K!9YoPMSHyOJIGxu~ska~{ZuNrZw0Q55{IbY9Gy%}`R~*loavhaf7XtU3 zMTkU)xj`6c97h3hH(&nZ{_n|gDwBrvQ%EZN+-&f3uE{5AH$KD39~a|yrNS#07qq|z z;#zAS(~RJEn92I^ni0s4;&^7Sn~Asnv}Yr)=$TqPg1ZZ~5jSfT=j zXUqIG`EYnJw+A(kJ~x@XW5U~f!sMCfBOs<0op|jzXIBOr z1lDGWTv7wn3sHWOt^M)`t=ZtKoQjCyXNRENf zW;C61S;~{WmzAmoTDDIWHerElg%!~6ZQJAB+#7d#b9TM)Ht=C!HbxE%z1Oh>rRiB{ zpIaWm7;Om#XyYcQvc%7{R|l7C-1#>4rAy##LcilY+xa>Y`#xmpe8(4k)+Tv&NRZ&l z;3I?H5P&+wl01`HE5O*qyYxVr7irpzh5-lKA$kKU0oLZ$w)yB3W->^YY2w@RyiC+d zX|~Jg<#pU3JEV_!(EzeQ zWX*hQdl*5??G#66W+wnpWV9zz{&o?rwJQ!hO*I?1h%&GxweGA-J~I}hX1|0IHNouqgV-&c0dDbQ3&$WW0#gaO;TGY_n z>fg<~ImP_=h^?%wx8rK{jB5V><$xRlt zlQI|)^l4nwA0duR4rQtiwcgh6$s4*-v9qrXw522fNrJt)p%|atL@rdEA4pO1 zqmDgXciZkF8|dKb>v<=7-QC|!+EME8$PK~*ksIzCZDP5A&`py>y-tZx=+;R#HT9#^8}7)nJI+%!WvrXL(%{hq zJq`|#TJ&;K++X@|qK(VlJ>3+ib|1`|^=}edK8Wh5R$X4YNQd9T&ae*&rCfEFcrqcV`wOPD~B>sHoW`FgU)Wi-s(Arnm(Y;w$v>Lqle7rWS zM(Tw*Ilq&1xG;rege>(3EKN+C>a;5g2K}~^$tTip^R9sR-Qek5+`(5e-n%{4&*K*z znX7rGqTZhz=J;y(%00TM84fttNACoIS5%hmB3mWt!~fo7fxbmL==hc6SE{!$%SuLl zC-9790$XVsk&eksm_It>*JJcM5@ju)JFZ`3uylK42hLwGD-!giES8WQw5IwCj01|_ z$=)LfLQng9Vq9e64*rGhH0u!33z<`kDFYfePQ+6V>xRR!-v}Y`i==m$^h9Bp6^j;@ zIJPx`a5P3*FZ5k;9~EjWn+mE{xpqX=SDDBI+1cqizV%o*zOQY;tqS!m>W31B=vrQ) zX#en@B_L?5vZjzmMdE@OYYd&1krqt|jrpIq#6c$b2!eaz=z6EhAxad;#X)jH+BHQ3 z4%J-jDBvpwIR`Fc^%n{pOqL5_lA8=jb> z4rC~V0(qYL|93g&f7s#tHy^|JBxW%@%IAh}PE%jcp#4VDFgEekW8+v^cjr;y&V4%= z=d!%u4_dCLX7TP!hR}$D2w76<9aV_wnvA9kkNnJ*S?qa`j{^E$~s)P_usNbLzFK6`QQn!UB=7v*&_*i&G#$*2$xU6!hX>5m`I+3)Kel(LD4 zEX-)T6c7;K93CrB@$u;`DlRnflJX@|S7zvR!k`P+>kAvEEHn#4E}tLNP7YC?T;8ZC&@O*^o4iwF zqItxX*-U78FP3chCFYcj>g$r5`yfC3wNE%>Z7HsEo+0^cL{^}Xf(-*PAb*VHFRw9=|PlRRxw%42;GcJqAe7_WuQhoSXEFNhZQwvu~ zm)OosdrJCp{Gea1u$IBUTB>TYMJyN&zPG-7bkX=G`=MJtw#*WK_*OaYt|E9J*GG{a^|%kb3nCDc_M zn6cZlM&y~~sx7AKOiotzee)%+oV620rKggIa>w@!hGIYJp zEk+lwo3U!wi5x5v`Qj~8=Iy}5IRy;%jcU;}$)Gtb)62_g>7pV7jRq}nW?iE@r_3+Q zgk{TVjkH$yVBdh@2QQH;(xec5lZ(Z7KT!h531@FOeL>|VttZVFOiQ>EILLkJ=N)i+ zBQ0f3*Ljb%aw|h=%Z6`CCwmV5K6yNwuhZhXCIl2gCxWNh6aG_PXtvz5Lt|?XRBA{$ z3TQkt42jNbSehB$PD&n+T~8FwcJ1X}CohlkM^OPi5mDrceTdY2J&DA`a|RX}s_j z`ygj-4YbIA1S6IjG^gfH)gX3)+MBs%A@ND#t7QZFseKdA^JVl!ab^N$T#0rH(KjQ? z?wzY6Gt(3O9**5~l{Sf|BrKRLDhg42c`r!I(l79d)A#kVIREPu{zm1s{(!57eGdn> zL&O`l?vs2_wnQpVr}32twBDa=O!VRJO+Zx;u~0&?w2}exXHTwPKxUXnu$+VNSUkT< zy>m+EtV+855}XQBZ)Xwr&z-6hgr;7=odo%1@+s`;))_c7`#slw~R5 z{u#krTkUjsNy7MG>QS+|RJsA1S>B6GqzaYZ(-6M#L`{R8ws=Rj7RL|$x>T8 zViGs@;Wd-Q74~#qpOFvNY65^QXYc5qGyJ~Tx{Z8>1`8FeQU;2 z>*9EC)f?U$F3JMgn&t)$a_`AU%usCFmpfK}`JwL9{s&p*f4z0AXMVG*7)XxaOS@sV z%%57yu5ZDa(g6Tn8l*vzo$J&F)|*twV+S5Q34e*5mf(_|hE%J$Trf;FLKgJmiawZ1J5)2m`LZvr?qgbYCyOXb!U-AX zh84}IG?HVpxD)Ro+_oK{JYxRsp(uPm(F-Hpn~9RY68j>+8~)z>b3KangD6WCV-ET~ zE7e4K-&B)Ew$9h*tGIE6b;8p%Ln`EHp5rHWVbGWN&qgK)bEf~G(W!9SdDZ?TYrcJ1 zGQFnHmJBHV@^2ZOBDtT8T4i(fh3k1(wT-t?Z=+1gOd^E{Zohprf}p9k(0di11d|2l zfOs$L#_vY_?7DhOwxK!WI`y5S^jE;^_TI+Wes>njuMAUl{;{xF?^QquX{O=r;fmj! z;hRAx_Olp7W3+wv$EcC!8|Yjemik8J8p5>atPV?|yDSJmZ_LWzr9#3!1p2h@chhlDqiTuhn6(_3&+bNv_41=DY)rpIZ6XEQ z5V6vPhad{_q6#=h?X@z(z-KJgN`R(+|AU4yJ~yMJNdp!*!=qik0Lm^vc_%!7@!hsp zoV`ZRE+C2MbuDc+$dbS_fxp6EQnm(4?BgPCe69AQN_hWAV?B8vhw3Ynj#D8QXx}U> z80Oz#sn!pE&}Vgqeq5bXA%ml3(Lx$yNHd3D@$)Tp?P@I=1d-jvAJ)Z_zEWzTG%FyR zZs#3MwiL%g0vV#Gu#$pqxa=7=s!tUP>wBUffo^p=;DKRc zxy4VqFV0bGc~M>W->N;$`~6XVF|;r8{f^s)ajZ_OSQa%>=uRBa&^b%ks~xPN+ROx; zr|~=3FKw=%jZ)F~tV@mD^fKAxgQS6j3NPnWL%aG3;OrkJazM9uh^+McZiXFubf!UwGOu~F1$oO|`&L0Fj(_K@mTT1?AqM-* zM~H^3b*IL)V^4br;DwhMv!_{{WnAk(ZL)W#8P12pL_anuTkvuLPj?~rq4=_3l8d92 z-nlW-|G1&|my|$}z}3Xn1Xe=}Rm)X>Q`6Vda}P0<)=Vn$t39Em37aR3US_$VqZC~v zQFbcsR#d6cccJO`sK3Xv_5m~qUMc(IZQVm38LLh04!ScawQfEE8yN#}?0PNgCYEQ1 zRG>hdm2;ex;)#?Le+_CQa8+(Zs)M!xq1~0#3MtsE98_R;3ff*>Q!4Ef9{sL9S zeD-^)Dq_?+`-??68&>qaJ?9fwJP7FJu;?sUIwLhd^pGAGX=omyK+hE5M8``5T&zwS?)lG-LX~AV z&L3BhTBggUdJC+owJR8#d;`svqRwAdza8_IL)1M*v$2=HI2kPx9H@H0WRn4kWZ{$0?utpKfV>GGY2vdl>Kr=Bx`h^xqh?qL(?Tg2<78loOO>a1FPCz>Jl~V?h+kG`~wgMAb%>g!6U|mk5Fo)TG zzrHbL{E4fh9<_Cvu^VX?*%zTFzwW`YFF@dXGb);fF{72TvV&;x^2*NaHDGud|ZOSaC`Tv5lp&-Guq8 zweGvf#vPMOGjO`yudt?{Yv}`G-tF@ zjxw)s5;k44dUpFkzy_PxHFsV8@%|*-C6Y0{af7_G_YtTZGWgE+OHaP+==;36BPHP^ zGCHlV1w#C>K(%mNoLv?sT}J7Ht0F-I!KtEJ!#AAM!uLrh^j0p+Q-$f|C!DgCXJ(Wm z-)Fb4larQmI5=aZl)n{1OurpchE5wRvU7qzPmS1(6^8Ja{uZ_)p8&k zRfw|$5$r5!4o(TES(C@!rN7QK(>)*vijqgx)25*1o7oUNI? zHp<+zasOM*SQhx7Isbpuz+kL(2QPw0b0ox&hVUf6dggCWnL~xe^r(ZW(eL2X-8X@5 zMm>T!6qg5VWru@FyU9h)kzxZ8E92WIr^+2-rbaG(#FBoy@kGKs5nQ^U37^pO`?iEM zR#57C#7~&%uhY=w-q$`*eLsc1$F+N@M;B|!N3MnZ(Vb5Pju{hky}dR1rcD%|v|g^t zC;;V^FN(Mu;n>J(n-WPjfp?WAISj5FAFuV~yiFSJ+E>s zIvwpwnQQk@T&%2y=!7N_uTml(oN4q*Quq4Te4#2wSIR4DKaA@(hfaw`y99}zq@7OA zQ^}d>~ z<`l3VOT@M>-KnRse@a4g5iW6|{F#FgXI_qVnTz0S^O;$How<15MwZ^#wW~;q*k8Q# zYbuqeu?vRiAnIaVA=GyI$Ja=OZ#=(V+z^dhCfL_6nS$)zG8D1uA$V>V6xumIlZ{Vd zRq$ZynXC=vhBp$%**EB0C)^$nSX(J1?UwN*9*zVx`6melJ)5^wys?l}R;4)H7uWCx zm^LuswK*;d0Ln&VAZPVyZcj6v7;X3hM7oyj_QbJkStd-Nb$>f4nl^uqz}=jM2R%cCrs`7?&aEXuq((p#z0PE7H(Jp00rHH9wLde8i>J5LY3iFDhN*ReRfDxICP zRsPOECr|i(PcpVG0WG^iVjOLZ+M8aa`-XJ--9?!G^Ep-XfjY!7i#+D_5$O`n9!3$J zxL@`hYMG^!xO!UD+G&60s(oYL9V{$qmlUfsk$7ZRUxC?$X&4fSUW1q*dgIj81SZ0! z3MJtTpMUe+X&qksqt>oU;6#PIN{3c~`}uyjDNlI>bX(Ge+z&59o2m~}?svXl>XyJe z)t~mi(yV*=O#q}F(Z#-0Qv5#- zWV^{k!q+hpiDQs3{GtLCAL1bVmk;96v@ zPP>!H#z~K=o3badr%yl`7U@g~s>#KQb79!|ZHg(pC7s3g$KCj7O!%3c2HveFOmkd= zzK!u{keZsXKYq!)QgazO~+mYSdc6^43sW#*Lcq2hAg|n^3FFZd~_eC7{cci90T!R)h4k8fJX&pwSM( z2I?jfYfE!V=_%6{Z$r>vbH5=F1W};IdpZJ-!$c?AJmRf%%;$+Tr*)P3#4F0!T~A+# z37wl}k7d-<2ZI z)yez*Uw0xuS5(4cZ-{KuqVKF+g=}|f0=uLb;vXJs5&|y9FAxe!k?Ag?8e+ks9!rb2 zk`Q$Rk#w<*%uQLE^|ntx0q&T0I0<;P{SZpYll=fkvfqaWv}{>OJF!+EestJ}xpY4M_#Wn%|E=$`Wia-H^Z-%{)peXF z`S=yi`x0j%-KhV1+2NeNM4S;VW^`_>si`5#I@F=CHBqfMru+1q2w`h$&#KPUg&bZh zz4j&(QyWdvcOqcjJZNX?xGs3x5C5vDr@on}PKFae1?M3I5$Uh`?j9ewqL;D_)Fupr zV3r^yZ=rK-?cK)1*Ap%E1xg4FlIOQaXFGb=!wX7A5pOj{dLcDpjI~_n9+me=Pij%H zFc&tU5QELJVXeJvZn*+igyQvq#PiUTOaB25}p9s_}! zxRkt{yNOv2i^rfeWf8A_Y z9QRLLflM{X<&cb_ubRwx%{B!VcaN)Ax6DA+n!lkNQ-C!LKG|Z$7(m(Mb~PD2{01C^ z)wlpcu?u>z`>!-HYlHb+zwUu^}r1)DE95O>8k7&0>7vQ(8kY_ zA=a~Al625``{u{*mY!zr=fklDo3Bef05>BDqoMWsyy$*$@!M$`1j%*7?CQdLkDI%; zj&Hk+|H4+uJ$s?M!!{**%R#GXY4ry?VaH|j=5?JndhGYUPN#{XVUci;LJuUr)KAlb z3Ke-Aio@3FC`v@3!j6u+b@acM;esc$Ir`vTe%72U{qIdl^~nRzf?vX!0%9toIIe-7*l zo-_0!c=A?Q_PpWbR#M|~Px*0LOMiEwoHDfhI?Uu(*yTc?#lVX4Bc;c6^+w#aA+qoF zGcqCK241sahe{&F46lALcmW#7xTQa~D%s%`MZHVC2w%x$EAe#9yS9?T7i&8IGV{nc zy(e3|ULc&`HaboE5OAe(_|<#bn2@QVT)Wx*e(n& zRJObMb29#*DPZ9Wi0%?YhI^$#0jjq=dV&e+-7c}p0u+4C6=|BHpti5Geo9(;qNrkpR zp)Ey<%x1?xr2u_Q;yF10*<(>T3+H3aOd)BOD z=9u{u`H~~a{ap9`T<3ZH&evD!G{v~O?_fb}zoPuOHHv`5plFVg%4)Q4Z^O}yxh@}G z^YPNImOxWuY?zGV2|ko&fAfRx9V0(rXL=d@1;VxSWQdBBlkEfZ z-`sOn({q7`!mUEGzLlR9+Yed8sYom(Q_RLMv>U0W7!6IXPwAm-uHN*UWcbb|2Xz7F zv&J?nJ(VNOUyWONbwmz~r}uziA@^BwS?o5M^JGzf_b-vB8Qg{MLmcfyOAU5)KZO^H zCd8lIcDr_~v;$m()MtWlXpqZ$JF%#iUag(wn#4ou;Up2G(Bf_PXmq2E9O}R8xkZvg#fvOc(W`<041^dc- zX8&mbb~#|_iL43w3GgFx%%i%vGK=`f@3;OJ9hlb3>)(?V9Y1_3Z4|0l5&r5H>0ASN zDscTgThW!!jK*G!){#3P#ygi}i#Y%<7h%gN?_-G_AUNsi`NM&kEszaD)tCHlqm`Y||exFw7gA`^Y7tue27>dY4Xu#DO}P?HYD=EJhL+>FSQa^7%t_21Po znE6qezjhkPFj&7!YIV+As59Bb8O;{-U#WJEncMjflK#ytu#tYBeEj9v3_>0)2cNQB zH~0Xe{YcHOF8M>?5hd};EN65!AT(%2-DX$WLE`EQc4VE4_VK|q|MO%2|9h9-bNgtq)94(cw}01FxLMf8`<`u|*%~(<<4N4LFwyYtT3IpBwn_KWfatgGAtxZZU3x`_m;_#_SGxTvv&;&Pt&<-xu_L z{)b|6Kj4o+xeufx7Q&~5UW(_LXkPqE4(0UDAk7l|EAD+Y9y&Xm0}?>p<~hm#g^uQ_ zYJF+=d2Hr}O_KZfHOWBaiQ*>4w4&`upTjciH2y7p5d zek(Fd^BKAw5xXTbtjJV)j)~19=!oJLT((BA5IA%hU(gBDMzvX1V!f;9vP$o*mCQJS z7mvns;t>L*nUkmNmJbZ;$XBlFI5Y~Bt~)EYN?-++x&Nui{qIjnLQ!vNw$vX!8dsE#EzGQs zMR;aIo6NUBX{5C*%yclU?e=Yjj^kZS(>%^jyxVdtMnCFb)p7Ge=u5R`3fUu`4gc^5 zw!%5-bhY<((tH2GYeo;2r`pbUE~p0P)J?tmbu?w{?ZpXHs0O?q?Xn!~DElAtFO!st z?qqx7=_02xb!>h}1IWA!L&cABG>6Xs%n}#>bI-H09{Fl~4OM(OdrENqEU$nQ%EN0{ z%zIyp#*cg5c&gDr&$&<;a+hc1VC8~g>oN(1|NU6_IR@$^@^3z<&42lz7;sqGRBfHI zRPL49H()G67@Ezi{sSi?<5sC>kq)PC+QVebw2Oy&W?2oXX{Rf9MUNuB5@bBpW#!LMz8)nn2sSn~PVBgs3rNfG?=}W`8bl>WDm%t)SpO9oae&%^N znY$$|HcU}9e*d1vPIR;D3Fci*Ew(y{uuKzlpliJ~F*zshZFP233=na+sLwg`cjAmP z6YhzeV5?Q`+2^R6ynJPHcF|O?wK@>NV2#Nn!;41dP&VBEpr9d6lUq^H@060VKxXBD zPEG2bp{?Opfjkd1CMR#<@KITbYuVm1y^&wP34yKdNw*vn=~ON57-h}TAvreiLzeTD zABEiy541=t!<(eJ8sF7kZV*ob=Z>j^mis~NlZS$vZYLbju>we3ax@94t>p2d5;Ar} zB;oNYHqj?2YMsg;ctU8I=V_}FU$hL_iY1hr>xxC}ln%n+h1eR;go)OMIfvPc%yhut zoP(_mWeAf4nTOlm54_80IwY{Y9=9DtI)cTtsnJKYW^(!4R>qy%L4xBC`Z{8QNChfR z@iK3^uBbz-ecgfJfAFY62vd?~hzn7-0C#O|q>1K%Cn%>+@+hudC-ch}s@v()KK<_j zy%4F#G(j*wY8gCraQwU`DqVAq?et_~K4-8tRjGTFfh~7sB_)P)Mm`nIv7M4qe$f6@ zRjJeS4w|B0y&VFrD6`?tSm4D{j2~+l8o9{9Dq<)O)tpDYK$5<4Rv1^q26KDMX!H5F zzc-|Z*EAM0>X~x-1{>4oUuugfZl0bq&DY32#i8@7U2z_l)psTgAG9mgg73l0fi{)CRp@^hHzkr*bNK!1s?)og(%XMyd#{{Ag_WjuN;DlvM+f5sUeA2Dz zc%*y1+OpEfQZzo#*j4lF4K}%=GZE85kNsqij?p}%;~NCu+dVZ{KuRjjZpbV2V_lc~ncUD3?E_ zr#qS99{%>z+;?%7Fj+w4YuRH2BHgJ(pV|8)#}FCBc@?gmXDz%_QM!7Vo`+PTwpYq= z#^1$_VUcRO(LBFMj^=NM~$&v+$_EPCmTo9wL=2 z#ijrmK9TGHVn2;!s7+dc>!@pE z>zN?W_?`}hQ-RIW8w;x;<#t^3OGIP_e?dpyj6nq`e-=58G`nWJ_!KeJh1& zV1L3*)LWwDz0qB7K(#)tcmj*~at6SMbV=xP46w3NOg)&>gnfxeEzRrlB0;BuW3Z+G zG0BOo!38dz7FDnITRbI!xp&))f9HMPsu`=cP4I%;!S2<>d3g9kza$JL zImbw_rEKVh`J=7pIUwBv9`cn4gbR<|p`iGin&sFFA_lijE89fU>}(DjibRj%E)8aj zQ%~y?srfM_It36C00L8zw)>*Hj(A`>n?t|yYxkdtocV~tl}*G~^?a^vTluRJE6aHw zs!YQ&L*f{7j|1CYBN~PY8)fb>mEH=2*k)&eR{~bMKVd~4o*n#>*4`ddKn(Yx1Zxi` z{UcHZY1l=_3#Vtys#WiOVq-YjGkb(?=fK{QI@Zn!hR~^WDn?d_~&)h0QJ+4jYe4QSUh-`j;03S1RrIo2G ze|g`|pNP(LUa(wmPp9}Qey?o2)!}hbHz^o!@&N0vsj&w$eD@EY4xp!RiIh8AMvKp3 zIvS@J+&HJ)$mrW8NLZkU+~O?>@Ox3>zrwI!ek~K(uCjqy0`bl{A_V zYbrCpR?1uBDWs~&nhMYO+|+1wPC^J-`CfksMiWxtXP|C>?D&i2j6!wXCU0}@w4s|9ZdlP< zgP}bJ+?iqbdD1*M@bR2-SHTUfAHSuGZxdRMukOPz zWoM!?I5Y5o?bl&Ph$T^dtxEg4CBG=>(LwXZS8dWj3(Z=k`enm_u{b%`J<@}v z=zQR)xv9t>M@e%#p&wfg-%lTWIKO&^_S6%GnX9#{Uz?sG;Pv%+Q5xwB55Kns<9D2Y zI-Hq^5E|l_8<$^Ng9Z`$kBdQJ|CCRox3~^UDLuM;l7D%&D&8&r_6C0oRUE{EnCarDE zc6TNrtfVn~nhqX*{@>hf(koT#RVovI1Dn(g<4v)m#=E8G6{Ohu(;FilZ_^#;O}_8R zogngN%XTpIt(F#mg#}B&8GjTzyH!aC(Bb-h#;&aDsma+Fn?8pe5qWzmns89o%-HbP zDb;AryMdA80&8n#c&bsXP-N}-FNLknc!wZ#Yf$D#faIUYpYJNXooS;hxNQqXro+H- zB^fSq9>ee!2}{YuWAP*hANeKft`sv0Z_^sZZDUe&W{!5`b^$7F#TN_F{_5)fSi3(3 zl_2qUqW6zwWkFkiAXMoOm35k;ogx8NO6rB>w7v{>9d-3w;V2!8vA~vr-E$j?vB!eL z*u{CDUPZd9$5ttdxZX(DjQz-K%S!k$(s*RoliB5E!~m zcL*li`w{=)^GA)N_+MLQJGr=ySd4UBN7n~sKi=Mifczbx&AeZ=2ZEPM`%k4Ux| zUlX8^)Eu8;GBK$-{{V}&x}Q|#@goG@+-W|=RoseGDpTIS{|1!l1;M(AN@D3e^z5-(G_ZX`uQK9ywih*k^d| z6X=dL(esWh$>j3k0mFBg+B{6)!;@NwBqIRtUXvW*gA+n8v||Ug7?*ZIni4Bbxr=Nt z9gk8qCfE!55mJ{x0lKHL;G}XdriIlsK|*!FvDap3m$FM;*K5W8i$dBgfa3#?K!Si+ zGZ^Sqxd47-_P?~={%2P~{dxcAm0TZ8hj2Z$W+SkO5Ak#VYgx~tZDn*PZs1jrJ8Mj|FnxhJB2OQmw*T6hZ<$`;S z7#z?+JS(ljk2D+5it&R+_GNAyEg|}#4VB{1dp)1vYZ^Y`yrC%@r#x1kSwf`20gtG6 zo+)YuLH8&UKrb^SpNQ{oYEu|REgYsu>5JZUUyqq!mqh9>N-rrSb)Vzk1A6p@?KBbV zWplIUUh?7GA3;CGCoy>Y&-k#EALuk+Ef5 z%26YOna_sqz-y(ZnJl!`-1uY#O7vxp*9e9kCPuS$Key?gHfez~z~7QON~xbWr;Re~ z3^B%OReUY_QLc%=zD0;bGWNjzq#VMhwntWf=UjuKi9*nWz_D1n6TZPLu? zj27;1s#j%{N7#?ByZ9M6sOHG&jukr^tccDO(cD~_R*MYxct>&U{g z%YK}IMr4&pHHDjR)?zDi1aoIqj#?>vU+B1lo~dP$54`ud_}NP%)p5bUhFH2O(Tbv) zB5ppvf5?dbsUyT(t55Cw8YLDWLr9LcV1;6|C%`9DV6^Mbx+mo6RQB9p|eEIr@67Zp`z3yp~cC?Y5j`1@!U71w)B zvY4#`X?Y#(mpRe)kzHKJ3&(QbM{~vhg4HG$HSAmLmz5XAJ8#BPme0k{X=fc$jGm>{ zHMfne_tph24o}0L$PjGWGPdObrNc|e`FU0}id8j#Ej^Lg@2fZV5q<-JPHLnWYp6Qw z&cOA0E_Ocg`*7^Sk0y8x`COP+tLr9z}7-0r-nzQNq!th-mfveP=${+J-bNm6RN73E&3HNP!-)K1|*aG zF(0Y>Hxk&KCULh@Jg%uT_VVcZ&1?av5G|o&jD5QDxWo3jt=)iaVdD^oi7hJaXRga- zzIFpCsp`Od-f2E*b@mfr51Lf2N0Y>CF+~Q1mXhb&$4uIzc6JU0DwS1pQgXsARB5pGS1(q= zjqaOK>SsL-nRpA-vy&j;!L*T8uO@&6Q7$&n{CD`(uyzs9dy#Vui@{yW91=MH| z?G8O8Ehc{)E!6m=tol6i$Ojr+d?xYLajvsW(4Z&|65*9(1um)dRFv+0St5Kor#n5Z zm2EBpK3{8{mw*ix*Vg7h_Fm@fbp&x;@SusDmsRDOCEg$Mc-mA*5{WFs68C4uiuop^ z>WhDTKH0DN2w=Z*eFpheU~U)`MDwGAoE^4OL^J1az^~tY7Sx_;7?@@`HX~(e(>L&) z5wujwZX?p1X3Im7GNI{>carKhIo|}_escjgXJu)g7T;$2^8ut=`!D(ysc`PRs z+Nhd5;;yahH8+S_d|yR_UwJ<$U0t>P>n?<6b52rDb%JVfD@}3_N`tY2a!WREh^%Zz z938(V)-5-$=YzfD{X!;w+Yv`JAVvfFa{24z4-YeEjddP#)a~!FkKk=dA;&bbRJCA_ z@w-G;F@$zDfh-S4ddIB4rn!UQDslPSw;HL_{GxNl78g%KBdF{lLyC^3=lkWwXqWi@ zEETP!xFg-0ss7nqp;Qr(V&U{Is={E&WrKKA=)?9beR_+k){vK@@nCP)?OBw~*T0H1 zyU_f+ZemRjvwYPTNzQum*iS38-Xw?O-%Qk@t~PQNY7GgioS4n>Xb^48)~)t3qA^P? zgW$o3d-^9fn=@PBybidkVR3;U?51eLNVNc@Kch6{qSRSYZb#QuR+y?so|96Z;u;kA zY_4h}`-a0yz7dQmlfOMvbJljJAm;?{GeIaXeeDVpJ-oQ5uFD*GEoB9uB;Aau0p#$4hGlDz$Xe zS2<@fpypx9B8b(E}eXxhp#cgrafvT$On<8vCevi8Q(|@`Z+6qDk&b5lf!JALy zl9x0YYL{>5zLXi>z3z*CyGjR+J`I11gU9V(x2*qz*Pt!N&8|@v$U4A}OEcm;4J*ZX zvbV%9tjS@u(RzkQLIh4-$97^}85oun$jMEOO6+Xajsk@6v0pd)&AB?yE*erv9eWE9 zx?|6B#q?SXVN{I@;YN=Vjaq;2yHnj@U9oL%SLb!ZktmyIB3aWds=^CXt?cc0>F=(< z__m_m%No$bHUH_j%fc*|BF0yP5oxm`{^!Cc-l?7>1hED_0-rC|#s{m*3*n9%8*(v- zJX=8uO}XEhWdu*u9OseT`AVv2RV5M$D#J+gzuv0LDT0KRZ;sF%AzO(q^M{jIWwGt3 z55c|idk)O)#F-`2AOl;#9^T-M!PY#QMT|d(JmOa)Oirwb+yta1V*S^8pZZIEW`b!7 z4A%b+Fu9u^#+~eX$!U|d=AOWo*)e zzcy!WMYgRPF^bl@iFZ0aWc4|YHay}Q2w9n7qBQx?M^mG$9ZH<}BbtrvZ1DVn-zxYP zh{zwqYCzdHRuhR-^9aFqv}t>CRf;c@`rZw!Qk$8s=2Y$4D($m6VR=83DZs5iC+<(cAR|UX3AwI;_XG5x|^m--Fw4vEzFy8hKCZxz-v(S?c(OX^(%F z(u|8c_3wHVdb3=uhMSad_jqoqgBK<7LF6bAg(l#K9oJI~*^bM0t*fymdrh;1UOZ{M z=(5B_+iEk#IC4p3$Z0vO-;mVfX#K~XT*QiJLfED5yqa00K{bd8-k`HN4 z4pOX2Ak^))wYyxpN?RB!bwIxA2nI9)Ow3n$lORsLaR1Pq5E6sA!!H%f?_k)64=>G> ziVN~uW_%4;4I94|a7+&chp27@Id-Gsy_R@Bi4Nz`NeMdcib~#;cH-iF12Ih1t~104#CDA5a#m7^yXkSdIzO;vK zLzJ)H5K!Y}9$H%%hnfQ_^@aL0NY~UYPS>=Yp-$An)~0L76+@qS^ZOsX_B?xTBn6sY z`KuxP*HH~sSfGN)Nrtp^z2$0sW{+sF{kIS8YkY09=3n^jU!pQ?`5YUh;_v9V3yj*i zLTbMW50VigXPMP0q<5)0xpDPBIJe&Y#Xoo_J7N1~A=GcA%*jaws_1>2AKyYqr)3b{ z_i<28HX^5g@cOEV&iJ~4?d2jKtu|C4+yiFslWn(s#1r7)2F6dGjUP2XemLXQ`7re; zpxm*wOJ36EQ%}>r&Iob9&Odlu!iUyJ9h!6OJ89*W7XNZv=cKWS9JlyLEStYx^&@b; z19k7c_oLT5+g48Gs*WGT^S1VQKa_z$-CJm~o5|oddQ93}j`&`2XN-PX`P}zZ`M8qg^xn_`4)o96om_ZjF`c z=v0Gh@M2yNdZVR#a+P2Q#jaISClAAe9oa>Nxr}|Dk0tUQ>_2^hm253jZ<}CrL<`^h z{Vea3IW0VU8)y3*9HdcsaKG$JO_Wa8pq3lbxpTQqxpU!p4)x}bY526R#a~9?-`r8Eqz6rzWoFs`cnX@LMgi9|H z`R3?&1dfd@bg#(L+UpVEaptmU6IRNf_3tb29t8}NZ!Z0|B>=@EnAss)uieE?=H8LG z);?GphxnpPjx8Orq@W5e8@3l&Po%QyaR6|yWHq+mlMY;()YT1c6_A@eRqSdIX04ja z-1{gA7)mVMKp*%pr(}0hJ50MGwh}|} zvK~8Mjz&=PJ8W}HO(%I)R0k2W<0#jc-wg%QdQXLF7yv*}Od#sv*9^QJd@tNIh=mv7 zzic_K!W8e->R76GSvIa@i&*g3eWgRpN4L$PC&gqSPX$a>i3?-)aXeWQJXYJXP$nB4%rI?*$)KSSyzyzSj7js&}{iS^HKgRW|0 zGKyQ#boK_foGNXRMEM47T0b`=rf28uy$#2UeF4k59n8ieJuT5B2e->|xO!a5Xq(O< z8n(S|vd^wUj!*Uv-U}=G41eH=IU1td*B|I`>1@AeS2xB}oRMj$r{t$}#MNEO*?o=_ zu^QZ8hbh;er~JOo!Ma= zq=Shas$zbR{b4Ti{i4;c+aCmk8{Dr3AEMdl*c27%e_N$|#R0daK!MD;=-1?QskjkF zCsz#Jzy1J=XIB62y!x+vS^vYdGa>z|@fA8+$C?dCl9Jakdb}UWA=~^2P(QkI`S_q|#AI+n z)V|ONIQMZpPQ}&pbOWA`yzN0{txq3&UdJ?%AEK2PZIC}BFcXNi23$ak)2DS}$QeW< z7z5~9@-|wHeJ^h%Tw;&QU++{|nvvl8{;rSv`PCj3aizs4Qw)IMCj_L8`Wv{}OwIB5 zGOo#MgxC=Ecc?1&_NP+%-iCer#nEK5@Cbr^C~lfJJ>H+Y^DS?*(agcjS714mHqous zj?XSHFm21D1HNToOVcA_MDJAT zaoOcheb4;us4wICFJD*O?Kbi`S9jIQald)bb^0<(N{ig)UUr#pgEb*V%uwD~b%8ej za(I}AXOF)@?N7~2nkW5*>uH)w&(f6Le37gV4rTT}*@AdLET6LkL~I_6UbkBedj&{J z!d36as+uPbr%AJ0vyl2#S3ECal?<($bMp>}b3a}FvIFH>_vc4ZvdD_T?s9Kscy8yz zx18J^Af|TJ>%aGXz2TU&^$MA@dFn_sjsIRAzNQ#Cb*~wP9L(!Pdm@89UlI}N$WaDX$ZY^>)zZ+R^f-jtyTi-A* z>?i49-Bh?;Qw;)2s7))mH$^9|w4!9y!lD%FRBHc31lz=0LscZM)K|g@c-R86gdW{C zR;G@^t_a6pgnJ^^$_8SQ7EME=U*bHSV3WO_aDcL=4mNyhlmbD0l{_*PrY@YoC<`xl0EPwgL5lF%&o&=$nS zr+@ny?(-SZ;HC+h@%o_MNeKPkYvkmX5&OXqcfws2ZKR`Q>hd_+2m-(>gLf%elbn=n zP@9AfLO^x!qbuRk{SQhOI1JLgpju-OOjZ3T3;RY5ZqksP$Ib|giApXAWku&9ZUJ|`;^&kaPgPo3d;tJC9l7X{}%sTNOJ ziiDtzswd~+T+7qxVTYiPn$|=z-{3NER35uJZbT;FV}{tpab!svd;3i50nG!7WD`5g z(KHzvGokI4L+faYX-k^{g^J=-oZ2c!s&h4-t*V&fvTzWVyN0zpT)M+4IHi*#ijY9 zqKy|S?GY=qjuNILue$Y?^l%|f5vsTvZfNW*%x75YdQARpDqOkci*iiQS>WaJ`ma}r zDq3BafAF4ixtxB*SYzjNnf%>B3CoLFo4?K$!U>l4dwLs?K^U?0z+`yt@PZAj5L0vc zGPzj7gyN<+%5hwCohkNHagd|+UnlAKL5Nsv_65RA(wlQz(>zZz5+X2hqrB2XboEKZ za*PF7sqhcpGpggByTtglJ03n40jfcE zjkPx{JcnFW! zO)N$R4kYRLLT;#mfi}2Uqf=leQX)QWRswZs?QoBNddICAa%ryP$c2}O8twI-cGb1q zFMm1~jJm|GVVp*x5n3l8@Oa0R!nT%sZNy(I7u)6Agn^Z^YYJ_M4<}AV?DAGhXi1+< zJ+c>WTai-!{jLWkgtYBVjeBwF`-y|*cg4>w>7KPbI~Tfhe1J40)jhXBDG6*^m8R`O zKY3L~_bY90cWW$s{*}iebYmrQKtIhSY(l(wNt?UNv7?Z8ZsDilkYy`(NwAFIF=-I; zW#e3(*SOs+=a^Z-7B;=}k1p19Z|2st^fIO}q}9wnYITadk%3SJXa3+Ewk1(5)lb$B z9{&}yB^#S^54x$#^3g!@_oN_UQGp>+uT5h)!tgz16W3l7N*RqFEKntNMZj260Ja0P z|KR;nE1s?G`+iT}mGxe4Jl5@nh21cEV0&v2nEa8E=8Sn;OAK>_mThub+l=f4@1z26 zyHk9fONmyDD1Ks@2mGceqst3Sdf&)|mvcYt*fKBZl}VF9#E%lX9-jnwlM>5TjBgrr zwQ0gP`fRc3YN0&)a(UL|tRUV5*2X)d-+hM)Kdjw3`$DN7Q*UVhz&^=OB-wDP2>jri zaSxw2(@J#|hgKQi=GGQ20}8Ci>8W7STSq*90lS1bVr?Y^(zX{xDHF<{y2o)#n0#N1 zJtB&@mc=FzoihXhaba-7!B^mW(;?0?4c_j)5M-}yu54&!n#YU?MU_DQO!sod1;}G9 z^$>0xuu)Q8=Y!R>Nw%titp3yyHysVQ5xvJ~z>GrVv2Xz4I0(m+H|Xiv_I2*1Uuo1n zBX4GB#67u3)LbUshN=LVXzc?2R_ilDJ_Bm?O|v8vZ7}Eadc#m#JS5v~z{BzPNrC#P zgIL6u4VG8O=1~KP6+J@rI+BmJ)#%p8q+hyi=TO%-sIz@tO^j-B4f8D(;_oPWzpWSy zkmJX7~qf77;vvew3at5`U`dJXJZ(uyT9PKC8R#Bn1XaF>I`~a`C3VD5}8v0U#bNO9ZWDQ-r#p5 zOxOflhxOF*4*l1xT@!WRP*pXsc+UO#sR7b{t}C;`eJWCHaDrwC^orXCVoP)8jLqvk z458+4Qd9EXYdjY9{3Tvk4}{ILb{u!zc)B@V^)=5)CYzMKF!%kN4__ulRngjTHpV~t z!C)J8O8u+cR=zw_Vojh%sO*+N;KVwqg4|<;*gUD9GLA>AiX-Tr<{IsvTg2gmaL34Y zQ%BowncuQM+czy-=9Cos3-U7!EPfkB1O_vi3fb1#T@YX@*$H*PUsc6$=tgLHkq1eAd`< zR+Bp>GD^xLTRFgaUGloemgbwIT^o&zA~})!3{y7=%sTtb+5KKzY|%covRWQaPG>|^i5@Df;Q4^8rC=JvDslyF+A|gGgj^S6w5L!I?Cv`b61tyQGFI& zW!~B8w-87i)tUg>P10fuNK)r@o6l1KaSEc8v32a?Di$~ZjIhhRFD&>Y^#mKTI&~gP?0Cy~xzb@)wBG8(A z7e8{OtlS7+(pes|2R!h)26wm%<`vjnOHf^GTs%jj=#%#Rq0tOa{YmEwz7+mf9n=5V zq3@0GDQ9tZ$2PGEWi|M_EBLSJ$?_e|gT}`R%PW+pB_sQ@KiOn65!gXsnc(yB}BzrFMq%;>TxJWv70{9bW6jiLRX>1`G4>hIkx84RPu&Btk=T{wc>o#z0=7PV~=o2UjZ{J z=qL1{ig?ckbuidE;*G>J;Ey4V*S;zyfnN{T1lKR`AQJOwX^pXC#Rm2hTJeT_gXT7L zl;W_)W4k!ZI$0}y(Ma}$Nmp^%AL>H@23bALJhAs$?DYV<^sfk34ku7}%O~jbrGDPu z=E=Y4f@XG|3CV&K%?qnh>FQuKU0AAn!Ge*(xAg*q4?W)*^F(7!O*FAyRaAXWkVv{v zUC}LaQM(}Z&nTKi(UWi+qB)80lKUX@lzg|UJXcS153?=O@yFzXeyFJi8-mYX5$#9Q zF5%me53gr^fz?C4|9C2I6U6oG1AuvZ!4R2$461MHSk4zUiC1ym+n!x%O!hcrv3Ylr z0BRvdVhjVo1pNXlZLFo#APqg!{GsT|C%-;nL@xHEYomL%{7%)JJvkbCg^Zl=A$#5m zu|IQ}aS(5kXPIO7vS+b&wbCvd5>|)bVCPR)B&$DEu8=b6t||teCN>2h!9&>qmMHY^ ztJH0f%LmE7#7kt41^#1k{5SWc|7lHqJ^tnEyu8QSS$-|?7S>(X@hPzE?20U1kihVC zp$wdT1?HAtcXKN*#*c3b6;`c^T6|Kww6kq*MMuo*wsd#ULCPx7kwSJibGedWSQ|fQK7Sx@6i^@J=|9MPIF3+O{ULH)B1%o3r5fKq=4Z6I-m+=fq|! zx~TLMgv;il=0%5^eewj>?$n-c5j&8mi7TalvL>nROSsZrK|8d6CtvTswT%u3efPyz zCFadppHRJi23g+qSW)e%+elntg*pFWpFdA2C6RCUu%JJ2?TefXSuS*=5&>)AWw zSFp_;_n30)lR8t0M^?oInm~F`bhq>mLcr_i(j?JNlH0zwmDEv`OW;@;Eyp7J83)ePeqp7=_H87*MV#2n!*U=*>iw$C zap-JSL9B*(D{Q`)-RY@_|0WNr&%Ka)*gJ@B8-nLey?WB46kcFQe@r$L-(^40x>c!E zOEDo~FmHx%x3^Quq})(C6SrL5zOG949RrCpj+q8Uyo&EwEi-G2Nj!>K>C4Ehq`0r{ z)wu)q&F9GmrSO<7r&+S)?o4<4sJX5JM)F2e>%mEFI;>n3Rn|eaTl)0x^-Z`JiS)OX zio{9Q{7V{V`mQc{Iu(F_&UPyP-YOPEI_94NHCAW+(At5iG!s|31pE#)wS* zVtnrB`+*y%$7;CK(zHRq&Bw!*oDuo zneFS4tS|`0{yWe&qqhrVspEwvtp+QJm#}`ORp=vW8+*3Ts#Y#|SF?IwX@gj83oZ#i z($KXrDX8bU8%&RC=tI}cvyLQEt)D>Db-=UfMD6s_dY8%81fC?)nPQF*Ltr0|!d(XH}w_oK3zy05^`zDO}HOD}+vy#K)iW1^?? z&S7I$|KLH3%+)X}Yfi$evGkGS%!nE5(S3 zkHX~PRvbx6ZBeUXG@qEx zSpC`sO{k8CbV)0^{kl6}WuRH02@cEVp`2?tOdl7V9!0Au$6@GM=DEwG$M_pxpt@^6 zPb9aiIj2ht2zP1kq;7@-blT;lK%{{vy!e)nWwFK1v*UBbHA9Fkp)E&2t_w_KdxIsL zb_6>r?;wZPL-KBITStzs=tsx?9ZQ*VlFBwm&Ez51mz~}C8Cxs@4NAAL+~h4h=a?EM z6=(K6vrga3DHu&oNin7jOwg{uUV2dW7YgJ%sD~j|%Vz$jGdD@UETcQSCJL$Xk2)s$ z+R*zObDSmU5R-;h`LX)u#8pgkmOzr@3bEG^31}Z)o-bH-8PPk`7u7qKK#BnO<{Ma= z^92qUk8wF!MF*MwU#VVsze*3J3DjGDz@^eh(epxPxZ)YVLJ|s}n~+9~kU0{Mqe(6w zVVUn%ETWgrtCQjfiz){+9*))O_OuH7g;NQCsXdNmdq$}b>qwwy>K7&444E-o721A^ zluf&a*}W@?WKo`%Hdo^MB55PrO&h8xMOhT&JH8V#ELVvJRRt$b91= z`P*qt{h7@-&!W~+B7Ytw;LG-i{OQ&1uy-=rn?S3`4zr5Qp+6U9N^cDfe`GMYLy|rGooH;o0_E<80$S@PQ-QVMxj*5djzw{Q2`fgN zO61(hirPGQBsxD{W5jZTud*yKXRoG`SAniK-ru4N(po~B%@=IECK|$QLRzFTjJY8M z?ahQeVJ)`=EL_Bw??de}H9%r`S z&{A6W1Rl|bvyo@7YgQ*v%CK`%GvMbuK-i4MjkSXOw+}lc=lRXkTjN3Eq1teeQ@jsk z^SgMmb^a-ve3%^vU&l9JW#X<&U3(G-u82O)isrBB@+rmP4><&wv!Id4XbsehnIrNn z+nH%d?F@^Ce#`mHgevEPN#Y%+W$j ztJ^B?07z0n!`;Mdx7Y|$hGw7GFS>w)M=_<@GM`@|$4m(6`idz`(Fsw2dfO95DcW~R zYYDU~(A5Rfb9so@0D;Z2{m)RCg=5Aimkb=cobJJ}&W!imr{Ud=R~or{)ZK>db6);X z_^Hwla2|wk&e?DLP6C&<7O|c#CD{`8@hBMYR}98&Aq|N`D`Wjfa2W5+J2Om^%s+S& zmozL56Q7(n{@bIM$q}ihaSa>Y3*wcgoK9=k#?#EL#`SKad4(}D|F6u53s}2YR5xmN z?ABbux?p#uzYaRguqroT=|8V|5`C#rLf%29(1H;_@BW{LLZ?NeW(!_5do)*W{FSNqREf&ORc?t~vQ6SOYP$q!ngam<94&bu>&%J;+o{yNITu(aB>S zV%oAcfRtv_v%gZcBH~Jb*zC;Euom=snrs+0b^79i^k=)5F5Wa^bTlrhs3WX!ZgO?P z2a*3iyZ_%zKL20Nxu4(fsJ?X%TyW@WV+wA z4xgHGJ=nzI9Pk4necEWbcypKriw z=&{bly0R;*V_xH&0}@?a73AV36xJPR$(k^Bf$dAVJsoK%+Num1@?hzDo{|vdNjlXv zQGZQavaBb;xy`5NM7%V{f8x+Brny$!1Nm?n?{}Rmh~Z&$<~UiQ$}=$^p{L=8apu3o zMiRmi`u_)MZynWE_-%^U`76)0ZZArQ31 zt+;D(hvH6Oen;**@7#0FyZ4;`GBQT?*jamh`&-|dbIs|}xR(hS{W$-w&LEfSm@4vR zZ6;r+;hv1`v}?XT&7-|+?LPw%tGbq&$DLQk>J|Jd)NT61PlZ?K)Y}~|U55_kJA+%s z@}fPi1Mdl3&i0v!+S_KFhkJkrO53W(Apgb~aY}Z3kElb+HUW#&^Zd;h<^vAuZJu2? zN)-GQW66PMW2xHV=X3t&=8!Q>Co5yR{juSzWRrNTvIRT6_TZLnf!IH-nLIyG1{~90 zROTH=7=L}a8ZT9}7o6+9%t@HJ#F)5l=VR>PLr4X0;B--hdOr{5j|&|`OTb|~k|fHv z?CnWCmz2Gljy<@uGfjxrCwmAii7JXuV=6=@r*o3RebBJNLmm0p6#qxpl>v@BG{}HU{F7NSTmRxI=A->5UeaT{=7KF(^G>U5 zMv&5MU_Bn#moQR*RQJ_!bbTaOzK5Mr8IsbvF^AM3X4_eO=(5(8U*Kr`Mw@rPsKk0+ z)w9%(PG`WJHMz!vaFa$Lvv_$6b%6T){QC)C0z6ld`;fnvxD1M+(peZwTFPI3-w2S_ zCR&tPs>vu$>~tjm^}0pl;aNKcC;v&kZ<^|8#k!wC!yX-SjiOXN6eB#qf8~{j;wa38 zv`*OX_HNxjD6X~u51NNk68ei#l9DkAo`}{N671=S5ASGzPsUb-pea2loo4=S`*%u^ zTjBP&IZe{1M-N3z-X4p#^;OY82-;>Mme3dZfZcytUA!wVBJUJQhc3TJkSm{uk_VBF zl1i{BHh(eUsp{N2&Bncb4lzdKuMR#E$y3!CwHfPnXXzPGl9xMfJEJq9WwaU3I!#=HeawYx z?yq-E?(SWk??kPk#C;s&z7?D50eg7ajT@$ato;F;^!^P(=#^|39c)@mySjih-$R`V z%ZG5%#ZJmVJ(}q>cCSd)#b{wNQM)QLZ01@U?XDZM2)hIKaJMa0NPznI&lm?CW%_qv z6Jf-8ZY)QW!bdyC{?yzBtgbET8ylXjPAdU8cFqanerZ29Y(e%(+JR3k1v zqgr!$b12+(ERql{#5rIUhI!5pmV$kUhL9f3zn>To<_u{DDWyYAm}HuYOQth)PaN9P zm?oKGq^_F?P|g%DHfFRk2d?&h<;W`j>^jS9%)86VG;Q%H^bVmi)JOMh97IWYZ;p{@ zezR}FyW2MOv9$#*I6nnd)y&N+-|8OXtB3c0Z>0a`1;g1sD zJg(JCCB*c>)0ZbrWk4j}Tvv(Hw_Vn<_348&^Cf16C*NNPsPOJ~TpXWyF{q1j&QtVJ z#K^Wf^BcUqOk5F2DpN0DCFRdhRg{Dgyx4Nh|A!sRr)4)nVbOpWY~d3L14C~^&NkmA zRd9852ZOpy%>@T;PB?c_pe{^+Id*l`xBhj_>+U_ysmW{uwUe=SfJR1W3nX#jK14x# zL~F5Uk1saV*~x>%m8@;IATyS6I&O8!Fv~#0E5evO?K6d9qq?eWD43(9z8vYJ?PlFx zPei>wZd}-%XfrzeX!EOo)ONzB_otjitpgqQ=!SNA-k|eBeOy!+&F%L@@NnT}+Nla1Zia!Cfj*INW3^6v_rHT$PV zMR2u|gfYG1xmGPcUU~B-%9_RX29~09`nJjZYOXtC->&SKl4Avz>DJg-OH)oSb>{TZ z0t5Z4XFZyJID@OPijOLBG5m^^%ko78KWYqj)n76$8fi9V0^a!&o0w@q72DAz$v+f! z{-d6nS2+uzBzz7|O4|PuXL*A!Lm<3h(~=-BI^Yj=QPJ3fik-4f=`g=Se5d6o1`Im23|BcGVfB!1~KK?|B zc^psh&eTTl?Ivq_`I3L~&AB1z+`7ihfb6T+&nA0((91_}lKkVV?^ul@$eU3*%NLVk^KXqGBA{{s<7V&6f z+Q71|`7~U{8Vp6`X2prX!Dpm6gL>*#a<=v$0>zjc;ysnx%38q?f)Jog)nh;q3*p@V zTA)RD;Pr+4u;cxx7O-VFjV10JO-u(w5jIUR_GzLL`xZ+vi^mvn zO?Nrq%NFj;33iCa+VQFXE{kMz^8$HTva;+lox$PqeRsoUnCAcdWH7NdAGFp~XxB=T zOa?UOV`E6~XhWxIdwG0EG}c1{fkS!c4ib`O7o^yULaS@-S?e_JZXqri(F9!FvEJUx zub4`_qMgW-4)!d_1V+lRZ-U&h8x`s>QFlJ86rY8RH#ZWZQBEX%jvQ}~@xvV&t8aI# zy-Se^li5`@!^E!|$=EA3&5xO7JfiL%| z|3BnBERw;(p~bbdCSNziEG!LW_u<@wCe|^Aa4Ej*IoeSu!n-!kCm~x>N|bKhHzW!6 z>g3riQ(D|x{!<~(gE?PWxx|mvIKpOqusqE1O^o~kb4xs_OVTH6|H-!Sf0RCg;t1@* z3!>FDMx9BT$hFgINx!jIm%p!Z?x`Q5V@$@2;qA$%kOWG)HR@4 ztfihAHaHrw+G(u-jo(Fzx5Zx;?@lGM9Q}G>tA-FAg%^HL2myh>&@UJSaMkxLN$!#n zMkf?`W$&c)9OCCo-Jxh(Jl4&*{x^nN0s&@zY;J&!!A|7u0oS0-*7K^np9*gLYEenl zOoHDlM>Faz@l?Jx6cl=U6#@QYpgR++XhM{3w#92+!_kT}{lE2Yg}-i8pSs?ExEVb~6x>@kKwybB=V6m`xZf$L%wVrn1;fl)Xb`d6Q$#Y2^^c#C*vT z)BMM;u);Rzi3OJUHcNfNO@1Dz@Fgqg?|Xpik8x2>$P5&H69htwQ!OQ;-QAR-M(O)) zXKnYKR;sh|@MU*8F{zfY<&DJ#=-WN$*_S?CoowbJ#y3MD2+Rzq?F#58p@qNhw!qfzqh{+SFCW6(J z#c?+NgS$DF;h3~V~i|SrJ}JBm7kNC23P*ED>5mZE>*stJ2*)~Phy0p|6;gOw)9X&ZguZ4 zh`Vr-H`2%CC@6(rFuwQsRMl`qe5}pjEVo9oCJG%8%LCOy>h;X!y+CSXfdh&5dTRB!N zJ;!b&yDyrdu2y?oMX-!5K;R~y89X~9AtPzZ?dbZ$dEnG@0T)h_!MW#FHy^iWRFLK& znRLsl^3xLEBzdaL;r*wBN}zfTySA~`TkPmKNtc)P9kwg4XXsTs>!>C{9L)yj+faBG z*-lmQqmG~xappdDqfOJx7vdaAN3Z){OOxCIm0~2lSaeQ<3(pb>=O6p15qqOE;Mr?~ z)U_0`MzP`74PT-L(x~TYAA`EufR~RPc!Qb9KynHrkFs#ZKJnrh4zAIC{yHysf30+X z?*55&3lNOd6sHrOlZk|eS=D>R%2f8r6MOuEusinSFnklke(rE8-rM4pG|vRDHgMV~ zE#g}+vd+uq4)>6x5*{C|Cuqbo4gtNW|*HX9s<7Thgw$}Vb~l@_2% zJ~y!sks8tTvfEjPG*7`yq!!;$ZchQyEg9TXGojgrmWqsT;5#)>Absq985evm6WIC? z=}NC!9k8YCj?}x@^$mBm_OI<-)K5^UdL^W5Ek3Jvrl>o6&$b|Hh0|bVx-W26K}5t! z($BHX=|%9B8UWM%HGL_Y*R0^-`+eaF9^KqW0{V}3H1`b90+mwa5o2f7N>cqbo#D(M zd6IzAn)9A@87^^7!I%|}Jx!&_;r>{L-U<%#R6HqI9fF-KcrTw7OhXT;M(+D(%d?iQ zR*%`u8GhSyB3H`KHqtP3RuV5v74oR7vAw^#yU?o-eVhQC^m540`Bq-7RYm}~EVM-| zs_d{22=*9Wy_jIy_>pv1`Tk8gxJL+g$F}QnU(!_|(UM%yf>o00Z~GF6ahTuP**$KN z&Q~|PC-j}B;D>VOv131q;nz18bsX@ck7+y8t6(jjSB4spq;~Cud?xhRf&ZEh8Lqst zCG!d6pH@$_Ufa~-C*AdpWTj7$PT?EZL!TxxGi;>Y#fS!LBl;7g>hL0#UJPb(1r4wJ z;9I%zLD)Fp*j@${cA(l70llJFkCv`@PCQp7Rb-E9iu64u=KJlN=t)au>a~W9Nnnap z-kpXo^6CY!VDfN7AD=rCd{r86pNlYsZ1`AF{QRKUpOna|?|St8PXoet-lw*O{Ae)M$zsL!(Bin!xZ?U%VXbHDYU+-K;p+NSov8Ms zm{}$fdN53Jmxvz@&&az3guxDs$c+1JN#}omOp@?o9uQ5n5hLCdT7d&j_fEeKC=x<%zE;*)!-qs|}NdH;iwM%BAw z4m)qR`;E5noP3svO$f*IjLX@q4&wMhj^3pAc2dpQs*2_D~)#NZQAGQGepIj7r^@?Q; z>%l0Cl#X|Z7ZV|kYo@p+0Y6l3=_YV0(DD$lwkNE!G;h6kUitkll&+u4;cK2DTq(Qn2~dxFiMQkwtgP&uZ_!C}2{8+)Q!I`L4UylLe5klArS z=${KGu2`eBa+v`q@;z!Eks$6!)(--BOLb+KTbc#x*%Nd1S#FY2&4O3wR-H$$DoB5L zTD^)ji<(=^@Xla(`h0{Kg8u~q5l$*c1mob}YeB%>8!clez9;$l$3dY5a^-}o&Bl0Upwj2=-0tc3pc}U<= zAfxf^BMbClhQMtzMdf1{+l;9ET2ywL+=Zs7jzrX_vD6otUK~;laUvAv&6Pp93$;6R z;na`J6ukebV0}9M5{AU-Z&;5~iie4OkgC4YQ49$!lLRF6r2I((YNNBtA0 zQ#F`Q%KSxgddt^iD*c2`sEs&KG#hCXjxb%Xa zA*fZu`EFWoczLlclcf-SVZM%I#YocX1>UgW4>NbY^iwu z?^I6o^)n2wg*B^yz14XTNhryL0_1s}+c(6vH%ZQugjl`J<4rEFWcS{RS&e0~kIiMO z{K-tNWwvhI=Cy(1n#_t0bOpvuyx6FkwG#0`PDohC!?SAxrWic+V-HPkOQ#~EPvSNv z5Rbz$I|H;Uc}iXPwR;c8GED1aV{Ndo`|`hXupkRjeqFS?r@rNFqK9Gl#iyTLN>kr zixDmGTyVcF;@YgCKK7Qj zdjigL-1(LQ+p0wJch95d4rl2Eo1TnWXfLJO8RmgCnGtcCeQs^>mj8$XK#j^4y>%1l zABT9aJ=IA!dy-mG`pqTj$_m$ph^EQ=2<$}F7C z{f)v0>A-1DrM^R7zMjzr`95Fr=DlbkzY7>&>#~jF4k5+U!5?G8_LcBg z2d8FZ+f#3m(=m&AKQ)iV-xUzIz3l_z`AxT{8(;3`)XcsPM4kZGS*n$^S$?7R8We6` zaT1m_Z1~Xckp>q@+W7~LP!F4j-9j8u>z3=&{sh%#$KUyjK=nPDpdIzkpUYTId7(Mc z+wctPN48)FrtO3?QtawyID&0giQQfXUpduM!mK`QAF{>rpJ2}c zw)S8`#4Q{fYo-61prcFTh)%2{8E)iw_5M>#x7$%@)UP@Lg5Jgf*C73vf)`^;aP1>$ zX$8MPejVOkCwCECC)zNZ21}CX>UPLq4ZbuQ^on@;G8wFDxC+o1xJtrh7T;|*t=DsB zI;w$*(Ag%rzGpx$2#|5md`J!NB{A{3>)v~J=CQyz)Bo4}<-gOH;YQKPSat4eRKE*y z`FJq3sr5?f5CD9tc=Q+JrC49t#nhzZo_q*dDtLv_l2xOEPvz@?Z|u;}qvIzLhN4bJ z)rFP76rt6n8dY;BNRi`#sVa z+wGByetlWcbnWO5cWkBe-7mWiNaCRNi8kas87O~?8wPMgJ3#-2fI+Gw?uT|cqrA3X zL#%(gIGBqjDJhG$>+q3!S4YbD-e=4j^dAZF`tmG-aNU7l2N6O*T-_&a5%5Y^mGN36 zj>_%r^!ufFbFKOD&n3Vi=tjLbWku7b$%pPGzX`_fY5r?pieq59Lh@ooO5!hp@S$Jv zc3>9xAI!m@9mJKBVX+kCYKU5MdR_l&SuI4k>bI`yRbtz- z;ktJ#wES-cOJ^zO6I*zeP*o0YKWU53GkKe_Ct4TbL|b#^ZV_$_#X1RviGs~6C}2j? z%%4-{7jH~vC{55yBpJ* zO0da3SJNv|-1x2VAGwlM$KH2COVC93=q&p~@!PvUcMG8_!M}+oOnb_C(DVtgplk3W0ua!t*{7H)maO_*PCTNSN*xe%@0u*r-s`z zoC+O=pSarxm6Rt3-fhLMIPw;Lg(Cbv4=nHK*IGkvqR;a@oFm}Iu;kM>m5~hvFew*1 zwn-kjAKY|(iGG{&rEaerU3giS!f<}k4bvvA3S8`Bs$@2H$xP>!C5rK+U09dhZE>tW z&?aZ+LgBd`R&;6x*L~>GvrkWdYq^*=qh*m+-4{3k85I%i!%ZR#ml@awT{3-kQo>B1 z>O4xsJkHG8ibTRSUFKOqOf8Ag%M$T#)$gcLh+>qGLv{OhV~yEbZ78J-2Xc-$IFNYG z8!ExD&lc;@w}If;Sii-WM&to)Smhf7#k%kRae^VV#w8T-jH@5Vf((SKiR&lsKD}6O zC?1%%F1(DJ?+k;1f!*O8TF<*Mi@u2;H%IJ+2zZ8BHW;qVQDB?f%j(B(dASgy;v+`9 zziNzrlBU?H)Tq?te_Y=o5I#(h9#1Dh4-<@xQjHkpSX1ecWlk8$OlPRQ(1+vvx|^e6 zoEQN-FnET+Ia43#hYk7DME7fOV_CUtj21Y08s&VBd6O~3l^WT$T}H?VE*3EvSLk1) z9K9Jrt-8RPhUn9DX=IXpKU_>FvkH^C0vwEEc~sx8`gqW#kv_rg6^-YLZnGwr66T_` zyl(4(k+lkEt;OlXcQG2pbLwTv89?^Y1wJB71Zp&oR&EjM{gih*qnuZ54v}>TRTD3VVw5z$fEb#`Ss{YDl|#*9PP=~ zBG^AnLbn#B-+`G|N4;qInJkaV8u-){_t9M;fqBabdNz)DYwaGzpWYFUmcB7ncFkiL za3&3p&n;!KQG|tn;+`JWjsT{HU!;e{UI}!e^mGJ;n3M|e;*MGrw*>0Uxy zm0}BN$8h5K1poHZ&N3%GV z6xRx>nG{-Ax%VqitUV|-##!xMMp@+9PUgHE{$f1O@+x7RRyfV#+Y8}-TJ5W7F^fT@ zqR$OdJGjiJOEfB1Os_TE%71y6I|O^imphA8#12gM#Qw#h^YFB8t-1!B+}u8B^f0c_ zpy)PRnP0RK%W?E}6G!pjW`qVbCiVj@O#e#nF9u-lH0r~-nZv|fzHzYgc{}fiiAw`Q zpaaNAM#U8oh=t@;Jdm_a2CNqM`s%FSCHOU>;^s_TUYYf|WB_V8H=JVzKNzRasR=)y zQ%j~aWxS?x^8xx~@k9F}HnbhhdQbQ{$X#cS_B##6n@^8rEBmDNPJ-O7Ch`*#>E@`H zvq%ql2fXMHo)45?RBCp!eUh$QFr*J#UH13|5jZC(!a2WHqftlKmF~aLDj?lMGG7g+ zznnhchMN_Cd^jXn#aJv<4cb(h<8 zef^4KDR&lR6CBKd3kW>)&l@2@w`R2NHqtjPnjMV+9YtXxaL0WwchBLV@1`LvKn}bAg_b!{mj}QW{FVH5oZH%nf zhCZLnea%DlKfZ%JjkK-ldG=;mU0tjnQAZ4Bg+?I2=d8TgJXS=%1w;!N1{`PBaTA<< zq}e^lgaAw}&z=C4LB{#4cvG!GfrZy5VQ)nZ9zy0;-htE3lOqp_1k-r;DiTg8i(}gF zrm@0L#?}Jene5eQsDHY>Ll&eFG(hpj$SM=c*U&;9mT0SM-*J~8+@;ix=DmVvN}Wot zlt$M?09=BnyJKntQZmO4If%XSHvjg({5uZwYo6I#;87B+kgNvsg{HaHDi;M&Q zlJyEV0)XTcsY_`8L;x8k=LV9eSNvte@Ebd#UMI@M9AIBqMs;;EqO*^IAX_!J@cD@R zQ1|@<;<0L{?J$Gq=hbo`(qW5ZAR*2WOQnP5+CX~pY~1ujd_zM2k+mEqT5RFJ4-=!A z-*dE4i9aQ zFfloxE3rX4`DV;%Ky}rITN0xrm?y6QQzbs~-E(;*t9tWcJt8z)AOEcNs{tkb4_24s z9Elkl!j!C)>}%DYGLeROEY&Uh)tdn84+ui6`!vRjVixpdIwJq zIn!HvJbRWrc@~G}_PK)2s8*>U*3b$l#rQS;HO%vmBV-v2;OQ#ufMtLRBQFfq7gW~CjQdF>V6xRBHyYOEO znx`LG_(S~2^6g{I%6zmOYdln1*0m^7WbnlWyY+}4npt%qG~I#v0$@6m5a|M8#cqM+6T{Gwq#V=ax4-*Bp#U=${t_14D)# z4bDFF^Ob%(Up;9RQcBK#vnGm1L24RnkiW=?23R;NdMMsQz}PW24Q$Gk1nm*nR&FdYH&!W4Pe;z0)3Cd}Hq7oh z_QJek?`Y-5J9U68NaF{ySLcZAFqb{%0712J%=nhw48EK6{{;7Qw3`IP3_DtfTR9&j zIDFtbx_5os0ElJm*$;iKh3IWnF(}saTP2eA!-7gfRZVN!oNYPIZTWVO4aU`CgLoGv z3beiQ=}67i-`6Z|Huxr`vfq(Vc1+3DdTioofjIMJcAq|`@72Cqma>6Y_0;ZytiF?e zwAXo|?YLY)9Pp0r0sOCiO&`wf;MX-$8LKW*&E!hmO6$7{mFTDzdP{6cQp)e+ z>CHxfH8pRak6HGj7I9-8Ydb`3+2tpvyCABW*5Ty0bbTroov&YSyHq~r)w4bXIgoUZ8<1D1 z#8V~*@n=V|lh>CfDQbrcgiq_3@gyblJGbX4GEO=^$6%E(HQewnuG7U8g3^ixi>n<#nO?wdPcCZ$e*ZABSe|NTyn+96O!vN5NLzvY%~+g}Rf)XxQuFVmBFMv_;q-Gy0@^P{|n zRC%0CR8?mO=*vxXaD`un*Ieguh+A@#Y z{-pNu4=5?QThMqm@y^NjKTw%Y65WB+?^*B#KG)EAy!^9C_H}MiDZYZ71qz3{V?}~? zRkyRUZ`8<=+5fzIRv%9rM#r>1FNEdr)n85japkSM2mTkEj_ttT8eoYfg5AJ~tQ}@;`aD$OrqS#4HpRI5r;{c967l3d+>$N|JiLtt6=N0Rm z_tpug6!F{MNB&0Dj9(HsCjE$s=U!Z+Bu#8Em>x%C@Ujs24Ejo3MfANjXqB-#&PXsv z>Wv}xMVOu$&(%ts*DHbDM)J8#mKd#;0;?M$V@`|(tCWzIqBRLyr@#T8R`HvZK7*I} zpp&mk1lb@b8`ja;xmZ8t?_-!L=?f2%tf*o{1gnR-WuI<3hSgI0fCin*hRMd zbQ;hG%uwr85B)N-JQX;-j4c?d#-ZoL{o!JZ!5Brn-;@y55EK&HK0V@EzJkHRAH9v> zO|;w0;)nbT%L%jmuHyGvM;qhT{)Qg@bQ+7QlN!!pyG$NHyF;tUN!gx8JRPi3yB+Z@k(6F@-(C1T zOAPU^^asqxo8oUw*j5M4_bsZ~p{5IzDEXAZ59_YNqd+lb)JdVo881#vWW&^C*UVTc z|MkfskL7^>hBN9Nh==)?myt^Amf|CeZ4B%n$wy;>iLG1kftYJ0mu#TXQyOTk7zP?R ziG6(RZrJUSa$3MFZA&hbByK*>@#*);fi{AEg?F`QV2d62#8d=#=aI!>U~}RBh(33` zSjIoUK*3RO?a&`}*f{^u9sr0vC996M8TneIypk)ZqPfw96N(09gA54YQp7sd5Ac1b z;R5$N?uQfbVomg0&;>h9=lS66`@oEwD?noq^kXF)W6>=6zh&~^K|f;>33(?TgKgLzc`qaHZDp-kL_6p5)*4^l zm3f79HQU8oAq$_~871L*1+C(@FqeTap3rsJo;}w3mMpKIali(NwP_a5z)f=9@PgqH z`+(!^K4`2OKiNT13DC`Px=VD*McZ&TBr@B8G=`$B<68<^qg9F=a#RvD*#w6#Ph)fL z`rhUiKqw2;i~KK7WMe7&oG4VB24E=SWo6{z`|92gjDfC|r@OulJ^|dAFE1H43U&A= zc5Gbjx_qD+vda;=JwHaZqZq7Iatu&P0q@?IRT_rw+5Ubo++g!9NQ?j2Vp2Y}71W48 z)cPh(d@G9%AgXuJT0CzNZp_aJo*Io7tlMk4O*jO}dmuRSkPy%vn#(KTv>y2ou)?{{ zQ}Q{%sW5|Zo_h-e--}Cppsesy_TuB%K0f~M8S)*q&+kNG&mdq=Q{IQXaDC}{jac_8 zTK-nt9H(KShmV^|vBv^*3(-l&Qg7tqU8FEK(=fEg$dOOsSsd#8j6Gsf;TG4!zi;bE?{i3 zNU&b5cj}t*>Jv04!2_{WE~~-I<62&j^0>2|UBW(}w`x7K-<)gU?Icz1$`bdq6%BED0;O^#EJxQW6bb2B6({nB6tEEZ?DyG&(Q~tJbYW?ZqMB5B<+OnFN89 zDkuMI_sAvULtOj17Y57vG>W4pqY&00f@%bxJo~U(UAO>b0!K)OU&hJSj-b5UUdE<&c8^~r<%$zjrcr%lI0o< z=g%+Lwk8PaI8?QmQBFE?waFK8tLsi+z*ULU+yg;>;P@eP=XWGOP?{E&3Qz?<<{guM z9>0zFl*K~W|IeIP!O4HyIKZQaqbv`Fx0>}iJ-k2JbmZxlJ5&3)ukJX1bVKlu1js3x zBpIsXjxfr!U}D$2ze7tM=T&oFpbUFNh~;|GuzSnqN4-iBfa2bEtdnWZ$(V2>apIYM zfvxx%PH|VnB20pAgL`wq@dekNAJ4IC8b?++O8WQwJKn@V;$Z&i{-mC&*;$b+{%`-X z|Nl=~8vh1!J6)jX&gzXLa{sFT7b6E;y3-S3E6(1}#-liWgq8LeBb(wT)+OGs@7`$9 zU99;phIhpunSB%YWgTO~wsc#)N!biau?(D`aGTS;S3-YK8aB1Fl8{)BJz z!nAOA!s15YL0fG#v;JReSS`>57V(hxxMjON1HGQhRmOH8yMCuiNx zTys%{NU$FR;nChMun3}g+j=P2E#&8?xXdswq(Hl#p8M*@?>QqCBeO6E*>E^w zY*lrVkbiR^_Bb$Dngn`7Y#F56~ibqTr5 zz85=&myJOU-)58i9}DY*swmc)&zSQoMz#K$En)I4$4SS^ZXuKW4k60vk%E%r1W5A> z6jdG=McbY)>cr3;k9%(B-&Az?jlL3|tb-&9E^&9Y-)Zbz=ZXy7fiuCq2dGVg7s*aZ z;5HhnFi9d+ zcx@q9w0EuT9<^o#Q<#O|2{_vtI3=`Z#l)rxPoENbm$o76>fv`B{>KuFHWh{kZSjPg z(Rj)pe1g-tx^IZ9*lJpVSyq^chyB=KMI>mbs`6$FXeuV&7VPB4DWEwO$!0R;rrC-o zC{R4A?~^+nEfM-Ge?GPXMImT98}%B#jt~64MYXEZTyL_Ct8?~P)7qBT!L{+?)PG_F zyLqhdyMXKV>_k4NGwg=a;E4Dni9Tt`>bO;lc+sxkGA*Q?eWuT2Ws@|xY?C6lwiE;6 zRw)NTPM+P)d&-{>Lcdpj^&IpDadFW&0GA$xJTfA`}`L=?kem$Sjv>aw@s;tz;q(>t;Q2$(oDn4=QVS;mm{6s3`-FWx% zU;;pf;%zAsI>3=zmO;2QDH+ibfr%cBycG(XO#}-2{mdddVcxl(bo47jG zL$tCoBW@94foHAd7~!lCMR%<+yInEiT~@W(M~5CpI!>?~Gxb;?WzJr0!<~;(j(n#M zxy#l-G;$Z;F`Et2A|3j(LNnc1eb>S9ORK`CxuZDapmq1fs7uvUs>6edd?}feL(F^D zv1!dBX^8S+W4T4YKtci2%~eV&cV4G!Jt&{Qt*vd{Z?`=|QB&`8-|M$gN$O*g;#uxT zdZ~0N)yuW(ly`jH(jhxg1!#Bw^LbMl6KB=4yFFzH427)V{fp7Ga)mrTdxId;*8*mG z&}*x*Ww6GEtyKZ5Cqm(?M1^XLmbm?CtC1aIQRw^plp3A~Zy*Z(d>7+EpIt(&AH!eR zDqCpeKPDQr>Y}~PRhIN)UsK%D?!X|wa9n9tISnuYor(W}?5gM6=uvQ4goyRWE|sw9 zWO$@L--2q<=`EddDB9Pa+US$*CK5zUQwfT8t)zTkJ^6CpL(b?pkJf7&NeWm%lV>&g z2owD+8a>2bzX#Y%(Q=5+rRkzo4x;tCA$Htevb7UQ>c__4BCs^fE5EF~{ZQcKosDxX zzIF7lTiDdR_Dk5e6)kdb)sk}Zw$4!QpD>3<#j=G}G9NUPQVAQ9;y2lui)@7<^7r5i zy6=Gp|IzaKM=m|~5L|zz5W@kh(976JGo;eUosVZ&%ftDm1Hp>Tk-yjU!NBFkR_XJv zwm^0}37*dZh8_nhLCr*y^^Id<5OAp@NuTZiJSnj$_&#y&gf2V8(VQ|3AR(p*CnFV( zd?4dZyuRbBEqPchf9A}h6A-TofqLD#LE!hZJe@5FHVm3K7v4Vcnv^)0i6D{K2kq%pL8Go`RU{Y^K&WDGm+x|IZ*H=I5cN6(Nkj7*~dE_x;62VYgZm#|nqhQ_IUTlYaea zKV@}Rue^FX2Fu#`oEl>C_KJXh2=UzdGFPK|__rDzqKbUOxLZ##qviWW-iU+*E2HfeINuVF_zbVQJci$;6X;+t!VYy zh^l&%QmpHD8wbict~}NVR9j#&DRZN>86vHtt%Jz@)h!`EYgqtwE8F|&$R2va2hZlOA z={bxf0X~RNiIL`LDr_`PLU+rw!o{M1`YyWmmzpkW|D3ds^hBN31-`udGsPS`G zc&`gv@pKLh4Rgpwioe_jz+2k`e|hSJh&*mQkszu2vXrIAj*8mhXU>dTHG8%E5@_R4 zKznBc>G+Dvx}UuxY0vjxRmA{j#wt#ccuSrzJuf_m?x{FvZF~-#sPN@(vklnv8~Sw+ z(GkME9~QIR2D8|9HtZ>_ew=RR{a{hNbj^AtU2*iLHILvg27{dT&P1_3Y98$K!YlH` zPn>95cX_hFHP<<_jw7#m+9Y=QwG-nO;mb~|NMqGL-Gg$y-G|3T2gufbkXZP#+0%PA zHzWD6;09Yw@O6zchxl%@XVJKW7voQ-V~TcxNQ9kSass;m2)@oo_C0$*sk32a3};|| z!ap(C%|NJ6nvBHBAu~L^wy9UH-*ryOZ~7B+-G?ckR;{>I?$3RxQ8}+Ri)=8d2!Yh(p?avU4iz$*S5(MMKvwjRo*oIpTn(j%GgJr6WopoKVYdsn+xl9J zD0)_2t%I|J`8|E(TnB3P3eYOg#-^jb-#`f~cZ?;SzwAnKT3kQ9rIB(&Ty4qj(-}TK z-YIp0Qqi~D(*+?;^chuPTFq&;SF~%yhGC}Cfruvq$s9ZsfM@){2@`c?^jtIhd-5eo z`QW(+HX8Ti1 zis4HyAgT8imJ~MBUdDH^8Wn>)jxF}l(h^g+1#1+xnSAn1;9#}+i!s~%F`%gP!GVsp zqmyiyz4)|NLHt$-Sa`CZ&Xw*<8U~$7 z|4#Mpy>NtP*6LJT7M$?LW7|%yy!3GFV=lYrK`g3u529UGG!^43@c%IOmSJsm?Ybz^ z7AsKPp%f?%#oaYfEI2`mI}~>*QmjaE_W*$g4=x3YyGxLw#oetZ@3+pk_gd@hz0dxY z`De}~;~HbkXWY*%;|uj}qJ{9V4XbG^MFD?>Q6tH2yVu>G}pQZ9#(WowX3dMNrpZ^Dsf%=1rj5)8eVX zLmmG-Eu2z%G4zZ=S*5}Ti&g1TxO+&=rAkJ766z=YIcJRPeJTk}BJz$)s_Rj1&79qgTZ2*YsAGi1J5?>-NieyjN4aJeUc_ zUBoD>=LBnNL1e^-;#SGjf|^;{zuE33K;vzPgX9|?C=Kp#^SFO(O4#GbQ?V?DBhG{# zjkcM?hhlu4v^WmRO3BG=SN5%zBKMfm`}Z)r_HitA@17xNhl{gY>an?@SaQ`Wd^i1} z9%X;m)7yj;H@OJzZ9jrV9Ure>hs_++vvVtCByt~UM_J|?Lhxb!6_207-S7RhIH%q; zwS-m(pbwFOHgWIIc9b7q?1BKmknAE+vAUEeZ`b#R@Z6Qf)0_ljj_sf}r-XTH%b(pD zJTl`x7~cGqyB8D;0rZ~x_gd}p`}WG&e@1_JTXT{jycVKN9Z4YFZ?Lq zbie51==#}7-yuXU#`9SeVTqvy82! zx9dHb+9}JvE0lOsY%?M*XryoPjwg>poQAWlF>&qe1!#=RCF`Y5tADChL}CQ~bi4BB z0ts&ER{9f|efSE(NXP@I(T`=1@keB{5<98BHvH1jwoiWpu>HfQQlCNh*m4BAz>jQN z4c|~1zld>Q;I(*(UZb^X%c1D<_KKN#DP;=xJSXo*W=pt@IvAa8wk)l1XyrR(0hnTk zuxAkz*gu=7y+wr1b#A2onM|^tcc@(F`gt*B)iA8m0JQ;s%~ZrLS}RVWY1dntfJk$; zmF=v>iATB01&n&@Bp(0HPm{~5@Lyzs$eR9tYL6SGWkLoeiVENFAM5|EuC+ zfF_)|#z~y&14crorlXLR&1KnPxT6%}hNV}~2Yn39xk_`!PJ(CIBRdY^aIHsWv*xM) zaQ4Ogih@&VRVxO!x&?m@DvTdjo&4=#yo;oT&3}~0KSU*6!3ejy50@5tPbIy4 z<9t$At4@6{ybr?;TMV(Qd>KU4oZuoyl3JgAc>0g#Uf4F|5^Q8>6xT=SWzOj|X82%I zC`U2BB}4!&0ZgyA>)xI{(84fo(O%1c&MB@u5iQ0oNl0<{i=>1y@zdO`+`3TV{mN+s zZ6()!jCtd*Ol*e-RP>^l8Fhyym;gQ%oQD|mQP*bB;VHe5({y?S4xOFP9d6SbxT4}B zFxd}Dyd?P6^Tf_-rsAMc5YhmSkLJM|eErJTw{5Kb^78U#e-*YGJX5!6PaicxjFBOa zMn}EQmT4Hn9>bcL!?DiCz$}{vth(aT>BwI^1f$Lc8vn%Z{Erb-CvxU-3*#VbU&po} zE=~G0#IX-kZO3c6o`uxva$ll+oh^Qw0+A>t12_voux|@~;$|@0~p@ zWpf*ys5$_r@AgH2XZ~yuoWW~@1GI2L>Ebvx_?2ay-REUF!cXcYRYP0}$>vM8 zvV(?J8Wk;U9o3X}3~4fd4L{#Nizf~iXs`E}w;?y^{#iaKuF8jZxigd7KaE&Nz}0io z)*qC@j!!(KfvKioFoEJ5*C2U$x#C<80ctzh&BSB<@*MN!k((8E0XwT^H>Fy3aLvA1 z73{hg&X9T?GXcCjKI62E>Y19FAOsfI~~3&@14q zYrSXk8ZOB`g^B0mr)}Kdnu<6+W*QdzGjx2cLc}5bxdcd@LX!Ns9HL(K(#Kk@A2Kox z`m>)whY1YveCrGe5`USwsGBK;Rvp30ya4JRvaAdH2z84u%zcO(9LLnbkgJxvrdiO@ zRH_Vwk~gp0hi_(XKVm6FHY4!g?A7zvChz*mzerGNstg%gCtfhSm4FF(YQ3NSe!_IgDtlJEs&*kZW=K)*J`-5H8M?PH|mLRMr8hi{8y<`s^N^$b*p&RyJGfzdvJ%$tXP z0bW?ciU29OJ{41MzC^hV_NW?{5kIb&mwOIoWNcVlbBh4Y5LQco2SD-I7g&pkugbIg zUcpHI`A4c2een|sk9_JhL|A2gjGfasOp||GS%KF2wvlu*UakotHHTT~G@sEZ$5ygg zYaMp-DA)i|ZIJ0v{JZvwG@LliJ&cKGZic@l8Dnh!nWh1%v}YgLsBV-j0Atj84?BXs zYlFC7IUaUz4l*5hVT@Gi=PE7&o?n1`K;Q4QDm=M)plN$Gojf zjOSz-S$2Vsl&SW{5To_fFQrncqd|-?Cl%KK3&(QKr6N(?_&@rzRcL*84>5ElLPd z?TfAE2z&fRssT-xWShjqY@Z1%*}Z`%Jm}W%%%p`R{yAkI3+iz;9HxnJP^??lj$d~E zW_SXQAf77v@YQ#USPD~hC~~drtuHxj=IBpgnGA0DppXw6QKqA}p76!c2B7S&Ezur_ z78Pm4DIFZe-RWg9C#P(qlzJHPdf?B{=QJu{vQm~umF8p0`xNvgguRDrvRkXON8O*T zNouf<;Z&^tMNB_^gWu)F$9Np}At!M>volt%4)PmLs(3pO94a3cgG4IEr{olxjtc3z z3U+1#aFihUQROevw^AyN6@he!z$30|K>s2%WV^q)1Jxqdzhymv5;hpp7^;{?0C;y+lUg zl=QEL@{y9NnNBiMiVx2o)1KGav{gF44R1|)dx@XG-^?Le>jx2+@;`McHU0(FAQNo! z(UP){_MU*LfpHyQW@g8Nvu13;f37W_c>K!#`Al4vYV4z%s11=gjV_160KTM* z&&5^9dAXPx^I3B+jtaEgXYLC(%o1*0tmh0=5pUK|bXvI1zB8D&Z*9d91Z~UY)6(sr z&D>m7#0FlwHWs`{WqirlXjmIq>cXg${kgrY=&G=}bw*W_+McR&CWwsTH|8?jfii?OrS=}Ounr@wOwR{LH| za#^I6p&U1b57!!K#gz)!lD!XP9t1^B3-vXz@^$nUW$zm6YK_Y5R6qcN21T!$|pUBtZ ze-sSzxwECB&Ug5K-HFx=oVx03io&?avD-BkLgeqKQlNI4`G>Z$jMLK{!9+#VclNnH zUc$XDt9ohu>G4#{W{bI2!#E=I%JrpmjST&UK9@f}3@AgS@xwfr!V{|`k;ZRl#$9vS zPCGMpyp3kntLCorVVD{k0GZ0MxN(iWlil^zj!U$>c#dbj0?X?M5_U6xUDs*=!Z;wX z&k29g^BsPoq!!?9N($49kd*7yfg?#1V>s_iGRtks9+5MB-_2z!dzaHOk($z*yYmo) zRVF9+V=c*k!n9=B!K~8Te>zP1nFd_S+NN59v=J@74jN)-(fEm)UV)-2z_*6^d7+#DdMx8=u1AAG3rzg0x8Zs_^2NIoT5L z?d`*9&*#sB)sVZS!?=9*ie;vFNU3FmdeMp_*R6bXCe7-h`1E=TS1tI+||TOT`%4g+&OsVGw{A-9C%#G09{0Q z!((b*xw3sJncCPSN-%H;)_SPWKnMjeFkadrW-ESDq0Q?*Nara%Ngpuu`DK5GzJIwC zP^)BkKD}Ko(vG<(#U%VTF5g}9RdB3#_2;doXWAZi@p>Gk!Sy9Z;<04*Sc3Of@rcZ( zuYZy58Ia%qY1@qRHV@@~9nW7YmlnGO?R*{c!BLC{fc#p<5v_(*R|#oy;-qrs1*%Ys zg^vKC3o*kGDL+Sse|SLSQZ1X`y7)Uv@0b|c8!{Wt7UCsxNi3?V;=~-!d=9MFk7_Uc zC^xiB-iv)Ug3hx;$6N;SX<|r*Wnw_TY~{r5&Fw@)ZcZdWolD^7(wrX5Ji4*(IPed9 zz?#T2FxP#|L=MY}nO@S`p*6jo!2dy$@F7mQhLLgeuyX#p0pb3_#{-Ar0aI1FGkSLV z5c$4c%%a>jh3@Wi5l&2(tr92EytE-JqK*%rIz}Olgu*++NWsap)vz!E7-77mm!$8x zxS1F38D6AI>T|UuuCB&R8KBEU4yS3xd_)56zCa`HFt6_XQe&Ow&fed+B6^8F|9+xqD&$4V+aLB#FAn#Em#OhL z(M5TBz1JwZGqq07?K=s zi}BF{P^6$FTH3v2Q$as61>icKS4GOF#bid z_xJ`a671%F(#ad7?%PmLUJladyRe3Oe-&@`g6yEW^z9A z{73@e*iTD2#`iXyRsS=?u2O-E40nYa_4}ufH{P+ zDl#`!P$*FV;f_x1q3dmGD@67Boh#A0?&*NLeyr~3{Q$69eY>1%>QIa%0%5tkMhmPC zP?3a`OhDv$1vKK>_&ckj_{n3vby5Pd!Q;%_QeS?Pj#DgX#FpIGEzP*z1R_f)*XogMJZ!%&s00ucL!3IFCtn(q|fR!!q&o6_xAOr7#Q8avf- zE90HkOf@Rmc8xYW;yx=jwnFXJJlHI5WO}$1N$*`0Z!d9IFw_8Hn;0%&?2{d(FPN9q ztv@!Mm3SY(L_NPvS*|R_uLjS&(+}gLn@-q5Uo8gxay&PMd%o+(zH@9y+D}NfLBt`3 zT|+$_pa;G3pH(>IhjdeR2Z!)&J1pV|(fJn~K}V+xF+^dnmP}K-DIDo0nH3Mw7PKP! zJ{WT8$wvW3&j8!GqSjvK%ra{|t?tPU@TH>*PwC0SU++n)duP*eGD?7tz?dWu6Z z{rN12#&#Vdpw}#T9iTL&UXSoPl*Ox-6AEc=K6QGtGK2$&SYY>LJ?hw*?P{*sbWap0 z%@n>=j)mC1^;|?VD(~=hBw_%5)3V5Qi_g3*^ykAIPRPuM-8=fzq=`Sqgd}q91+L4+L11*x1 zE6!)+OQ>k)94TmiEMgX0-g*Aj8YQGZ?fj$oxlhMaXS>5~VzsY|qX12%omwI@Lc}+g zdJQTAE-jy#+0?=4ux;bD2``7dWDtBb#{HqQCiF%4z}0$vtwrL`qxiMHe0@UE(~<9d zX1JZ(?;^mql({%(rDz*2N4dNq@9*=%nmmGyS?ln~z~?r_Cda4?%4T7$oL3Q&FFdav z`Hp%=Rg{|xNKZ)1IK|e^#3~GQ16Ft&l_O?G$!hS2U3D4i>vvyb0z;%5`1v|vlE)=m z8>zdoU2L$}$(|c@uJ1dFsl&GCGsiR4;&>|4KMZ6V`BxU@@1B_UOm0hSSUVOJJ7y4Yt~*qo^NEoxu7#FFE2`Q_BpxWo_!r> zR_l50^&=6~vkf;}NzPI5+~{64MO%iT1GR$6@>%gL&dlIa67Vs;fKP!8dhhv(?$O3N z$Aa%ZN|0#GA+?@q)mJpktl=+>zD zguzHLXsw+#KO+u4QQr^BlHkVgOh@5ccsLI3c8w=oU+#>fBO56MfY<;|?m}D)9K2<& z2xh`aTL|IObX}o%{Y$a|E+4P%da1$dTwtg5!fP~rRXMAnJUiLlnz?-tx7ncd8yMl$ zVFUEU_~G!yU!(+o0kgXj#T%wicSa8=W8nI!pn85XxpzQyBuDPTDhDO`5c$-cU2G|#n!C}9Yzt0N42=wh3) zvTH<}D~>HUqW@$pCZ+*fd4E{F))FKXm-)j34oNDiS-8iOG%TG8o>zM{x5ec4N`uj^ zY2{A(ekKAJBI|`eZTlF!+9{0MyJ6>17cG<*Eh@FTj0j1Koqj#IN@x3#dBkUOuI4y- z@LTfDjeCF%w%BI&(A`gJY9TLzded?JW~@|KCX!~F4r%>z?`M*dl9sSMu z67qs3F%F`%-QM%Wy~=i9VizZgm1g+UvN2c^*4J+4N(qC6QDUAlntA3qaW86!7^FEE z5|^RZD>?h9aT%`}pLe}W&ryQwL_ZDx%s+Kp(q&kwi`2WP@5R^n+Ej1EfWM1wSsR~K zTo#g#=|_Kf@afCl#AsD~?d#03lb7Bsf7q5}nMXvZ1AWBpQ|BV}rm`coKpv^ z4BH(_sOBfLpvt*V#OJG(Bt29JxjlFecU+~e1>HM2al>6tn8RJ!0BKCEf5bN)VIIls zy{wfz`5I{j1k z=7TNpm1e`59k5cZjHf|X)Y*YeL1VUa0G5HsC9@wo{r9VUmO!J{?K?HL(=GIgEpwdy z&Z}QeZjSA=>?J%QvJn(Y(ZCe{9|ACkl%~oh!k0-gJ9m|U4Q0MQi$rh(SVVKUz5PS>bcQpUfkPDk(w3v_T|Zt&8g-&r z+tmPzasTIJ(ftNEgw{s(~v zSyHOGNUZHFjmD72k1zA(s7^0$Gqy^08MGjrjX~7|49h9~bYPry0+%N)a1#+mm|lCI zdBe8`Q;8>9E6YY;v zt=KmK{4$_IXrGr3)D&mQ0b$#mFXZb{gR+P{){tI0Zi?sVXLO!hQ=8SvwK9wzdN#|6 zNoBZY+4?>v+k1e9eeu^Jym?uC!1^kE7tK)nK~k(vk>793HZB}VWKBqiU5RT3aNu*4 zQVE5XFd|>~eEJj6^{h=USegYtbVD-@vp@b^phvZek&mH!otiNZcgMSG`OYRhN%7a& zM-lqrKV9@HPs3EOM#@kyN+WS{B2L%j+=KI{FX2Y2cx8LQu#$Ok>OB5$kiEJTKAj&k z1lzft^y63^@7SCz9vyL(2cAX;Fq?i|6c?xrM)6BXDzhpSs_DDHP?uRtwL@n=?N4gl z*txLZm9+R@TlJQxX#Utf(d;?5y?UHX>vpA>dA8lk_VgJ11HCSr6Zq7p(?XY);oUk7 z58_V1SaEEu5Hi*&WvtccPt_bO-$43UDJ#T{Z`?fZg)5Qwo+gUc!tp zIdG7pLBNVo$rFH&&B>;x4f5){e%~4F=cuI*HEW{fyY8c}8%@~lTxtHzfqKZj#o!n8 zXu?w{afo#0c3qizV%7THF+CUWt()fzQ+AZAsc-|A4TSdsMUZ0KQ5us#j60~kQq$FR z%oN|eV{wVf))rHGDxm8H-rejBBl&mDm?6L9i!jJww=(vd$A=WCs7JzPL)InZGXX6( znH@;7s!$2b2-_XGR)Jn04I>ByFKC7!ayWO`p%E2JSxQ%`c ze{9n?6?-p=Sxm9+5@YO|M&AkjZuU8zS!Bf9zIoV_1nRk{%ly$GwEs5Iw4ozRyxo#u;1FQ!-!oO%nzWcwIpK$40FmedCZ>&xt zyXGre(&r#)Ed{S#L5P#Ij%fuZORxAR(q8HfUfPsAzOL6lg@y80sgJZj2a#U6ueACb zEf8CV7;nCvwJmc{PU`y=)^~Ml3(ft}7wZe$bYY3)1|f+N z1cf+>2zde^g;hX@AGX(|q$HRaRG&(rHeb-*y%wth!6BYnksz9-77b;L;C>*&>NIg2 z>2xr&#|U22Q+H8%GzS}9qCpkws&hnq_*4n(oH(O4Q-z#jli9(TDyQ-)fYLlpRL-Cd zEQf;^9^(lk%2`g}MeMp}EZ`f$VE06Y@<#Z*7KMoFbB+&FDHC7VT5av={k;d>M8T?j zQMZ#IT*T={bRO$4Da=B*LZwf6ga@xzCZHGh12dDDLZi!?ar=P>g(6fs9CH%T%t7C5 z+TK}gjfwZDEv${N(mpva!Ifvx0{^&&)a6CxYuBZCSIm!J=ykAHQ`K&%pi=4~U+UQo z(^hy+OSusXFJ?vTWY@`4x7?imJ{m4;YJ_ded8Y8v4A&;%WT=vod#SLRBBNaY8wsTb zSTw}X%}1KK%nT3Y!_nE2b(>UHDH1(TIH%=8bp7z&mqR0eYgzusm)oPE=B1;9xWtPX zbm=8A2D!Jp6-IsiO;C4hV86j5uQBr&;4sx7_3=@dR5SSqhO;dyuO?y+$x5-c6yjhv zbFAm1Tx6^*nOv0MHb8sYsn}ZvEG;h!WOya`9MpX$=K~e#RQ%~BxuI+G|24RyNw5SA zs=bbY+V0a_MFSgxPQmY>d{NzLuOXc$C8ei&kLMpdlT9OVZxeyHL0h9|MsOz2af=4A zxOZZ(G60G}s+LZI2wr7Rkm{Am5|*FhJXD9zO@PzuXG}RTzg*SMC)J0TQt-pk5%Jqz z+pjY)LEsXK6fkb^=vc)~n`NwSqYUofc+SEoq~((|xMnaShukGhk zZ-h0AmXTL)!YMu0aO#>~{)hva9iKBAR^fbzSWObyz@v3eW^MFnNO*OPz!h)a%4VK! zZ%o36oaQAcysR^EA>+aEF+K4#`AH?uCRs9#u7D#+htUSnriO(YYgHcl+HMM8fTWbq z&jiAb?~5XDb8uBA$RGMi7)~1_4cB7M6)0jXwqi0bUh9|-qsvTFIb!6X6D%}QI*(wi z4rwotqx{)27VQ<%#mx(~YM2?TU-qxPklhXE-!PO;3`kBXpr?T$M-1IszZrI8Q{c<& z&d7*pGmQS4m>ZFZFJoieUt~{fI~PfJZ1XxO3d@9PtqFm(#GXFtRa$tZ26+|i;iCd# zsm4=oq{J(*uU>q4970_hq)d-onOH>ra!Qb^5RqF*9Fg!e_r>_Ga%?Yk>V+)zoWPZZsXefp-QA{+-lGSSeXOxdA0YLxbh6b%Huq^t9mD zvTkDU&}XZYxyA1xAyb^V>=0)4w-Jej{#|PUPgjzvLdtP$ZB?Pm)iIlu)iYZRAC;_) z9RTR+Ahiay!ink>++pL(S593xM^1Hep}s98+uR~dwu7d5OdZ9=C>x0w$VzV$(VU*j zFsbcpINFAO0aWi6WrSK;@FK;{iEXauwWfYP>qM{Wvs|(ox622UIA1do3Nc=H>5zWC zRL46Dr*NzFmAZfF{@8A?+Ul(J%JrY#@y4uchiN06FXx2C{lGo)ENy%qy^N_hSA1rl8c8JWdw1MJ2y+cLyk)*GvoVib> zgJz;K{F~VbdDI2b8$AkJBP^+uG38SBSbz!I^{`UH?}faI zQb-TZ6SKxJG!aaQxAk_jb&-nnbCP}4npxAZONUe1`ZR59`ie_TZ+lxHVLF~eL*qg+ zDwgG}M@mzE=Q^!XVglguUOT{7H*tEWyb0Ew2@pMs*!-YkjmVcReb+V=KN zzinoyN)d{qIw8njKHw+lzj$-mpgl8HtY|||PgB_--ubR01*#o;w3Ne`-kr5JS|p&P z;~7V!!yp80OJeoIo~G{;+MX+*HK9HRB>@@oO2#UDH;RiUuiZWi8uCQfnYMyvIUHog+%y7E zlyCTM5=*~`Sx)V#iy1wkM*vdp^bq{DZ%7d2v3t^ZjXSCg7Q*=V1HK zw{-t`#$R=;B~+0vbe?-&tRC0wv$(SH)8we^9v)Yh$cq3524;z{+)Z;|Cstrnim*<) zBS5T~jlywvwtzgvsWvGFbm7C?iK{Lu-DA2(?2kp*s#m4&(fg1LVS6FE6qXw?c%eN* zF{M3$q;Y+0SEL;KsAH1h2rIa7#+>Ab9SDDdcF%do1}0fsoNTa zy|z1>&Pa&`ZK-*vrpmY;BDmpkYf|jxC=sGB%;H)k|IH3!MJSl|qoL=nF*Klt(rh|> zlYa!**PntiOVsp(aScodl5j=9VwuNG8nNwyQxWvlF4`4J?EvjO{&UL%+p_;d_u{|t zbY3yCr8_RbHhvQ(r&rU9!F+L2XFLN}%H@hhh9hNq!HB~~Je6L5Z(-@F4&Gm+BAge+ zFM^xY*e>t!ErbEj#q)A-=bNiBf89F`+a;Qt6cg=hxfMgm$A8I}Uiu9;z2nX@IguxZ zbF=?wIY|#t#GuDjeU7-FS6&>|U(h+WY_po`|J5*66@;z%<+yk31fq1_SO@1}WV<*k zYe?=g)9$v*$zk{@5wck>(c|DnAG(l(x$k7ZP=4ByeVc9mT8;z4;hee(O5-aBv3!Rz zTY{<5qK))V(&DXjM!rD2%Np-mJn)qBb-q+NkdL$35@uALbEwF-mZ07v>J@fk;qK1YFmK3IWWq3*I zv!EZ@*wv8xKEsj1L7ak%YW=&V`h(KhzIv1_-9-b6#|kWV16XpoD&?Qc z0Ge{H#&(F)AExKVwf^6J)A7BkvaZ}Pk}%$GN2(T(q`n5-v0sqVx0ClrL0Hoh zW)21?kA1Bf6U49iT_- zyl7iZ`_%{&jyyW13N5~6y5-~v&R$Cg-lF~FveKYuo3iK)yKD#|{=D;RP*hQSVrYay z^E^sF%F@=2`P*>AJZ>8L6T7##djz=o+r65KVbbn6C|*_o9p)YeZ`B$Vv4Ii zdpm{HUtV*0EW!fqw9H7(6VAIVDm(dAZ;Mv?IJ4}9oJZ?Cdgp_Ps9&@h>wEk(p_4AG{|G4rh6(P$m*EN59e0|<0X za5A&Mta~7-y89BjFZ^H3doS2QF-( zAEWc}qA|OxyIxGYbtPh%K%iCcMf;0dsZ{A1ELm&;Vn0!Wix5~3Y6rPc61^AOP-ndl zWn>%+1yn3e?K>5$NJ_<>BvOicPqj7Ydkbm<$>Gr{B3l6Cw>`z0*J{H0bGd8q(5VE? zt-=?-L5FO*{`73WR4l(Ym7Ma8w9c}*`bwQ&&+pR~S@xE+^NY*;$WiY9g^SXNp&wib zE9kWN!q!ZbQ1}0ZcewmppZ;$yJ5oNEkTIYANKHivqpx!G7w^bJW?GngS^b8RcG01` zy|yn`Qz?t))*Q_*xcrYYtyn!bHKv=s2x>O|-@FUwJw5DBD$sj5Hva(8|fv&;9 zGjS`H-f**p88RI>d#b4SMHDw)VU>XG-c)oH1Fcx_C2BQP>u66S<{R;NMlHD4pca_5 zLRxV`Y%Tz~P2O4j5L8o(f7D(!s02Enic1(&?L?YFpD$3HwS!oy7DEOde_r=5z*Wz| zf-~{r;z7SITDwKHj*WR>pRNmhIU?p6*pTN=CvhMWVL$LXpw59;o6}GuV}!N0OJJaQ zX@z>TR%@<6w_+7(i9}$t0Vj#Qz3Y3uViu$J4Mj~H$V*K1$s47}x7QFNCd~?_F=g+z zDmqzK)oe@jc5of{drCQ_kJCg&v`ptydy)s}tM|U`9v%14Y*wMZoesut*5-}cd+QTV z9WOF8N(R36)Y7Jq9z&~jCV{?MKsEP&?8S&;!azWKcMC9mrka&6D;+_Jp<-Q;2#$m2 zn&}py;B?eKD4Y~p4bfI%aSew;O;XIzjt@KOQ3Q=moq3&fV}VH&SGuy_5UFxTYRXFI==Sf6i0VyJI0dzZqLbT?mJN^Xy*cW@z^y{)mM zCNXfWW5pQqU{-H2m%-0^`D*89YC^<3YNWwHZ0WNni#+QC{zr z?iz*jg**5hQ+a3a*9t$Lp`hqx57x2nO|Mv4Sx8~Oi_XyT(H|dSTB8y)G2pzV_!Wwypw5W$hdl44Wj88V(=M`o zSa&j7$*{Rc?72ouSMpdc1c>yLk3H zKKut2a%$CCpgIDcvABi1seQsm3TfTxmA6UdC_ky+RNMG}?-v4>f@3_j@fQCy*)puNc zC|K!e7SRSwi+D|u$o|bJqk}Qqk^7kVrie>IXpp^8r;w>s1^T+*7me>W8gkhhGkkZH^5O(5SD)qP}U&leRV;=i@DN`>Ei7SxJYh|1=~1|1Mvv0#fu` zNZ)NH7#e)-(p3bGLmsp}!4(F!gslgIW&I=7)AgXv{uTr&SFZ*Sqt27wYeZ z)j(Kow*j`-Z&~FVCOR9Nim)P;7gG1y>n^&=VX?iKQ;pdHWf#i+{+73Er-6a;Zl%KBn<|!;*5zl$3XTpR2+<5^O#3M<8xu;& z-U=q1DPA-G z)p&Kj$nJmMn*I+HvC3Ir?to}(L8B62Q1ft49y$HX|NC}a$M?>1Sk>NTCHIY1%aq5y z`@vtNx;c&L06MX=&W!oRz0{?WD4=`L5>w;*mLUr3Ej{hU>@Ui+>679Y4!(zTD_K-IoU#KkIz{X8SPuL?V&*4z5%ay9{Q@-8a!4zReJq zZ5$YPNH1}V8VhMK&0GEGuURHd={VP=)KINae=V$z5bwIJK&LDA-H)mqwkfBajHdyj zm4Q<(@KKVdlo=-5y5`!}Z#CLX56lhKH^#$iLGQTi+qQ(*Y_h)uRP!Ws*ZCU?m_v8q z*iF;HkJ1YFjks!`JStb}?K5EQ?KA7xR>#p*n20jZkxj7etZFu?Z*Y^sU05VbM2z2U zirub-r=p8~%9%x(68EaGu7hVDveVFt%D$adqV4q4sWGklXspX;7X60|wX|CLe$=9P z7;<~Cycns>~}vzbA_UJe$ilV6q5Ft;f;<*Q~slmET$va&?$xDuu!-`-YZkW7ae z0CbH>f~TIK@6d^W9QnJ$z5gOv>bRz;#)27$I>l1;aZNt#a9axDtT3l=$a=o-b7)B1 z&rMtcIZ?yl1yhZL0lq-itTYD?;X3!-K`SNh=;TKIS(N;}k1v|^h z*qhjM9CO^4z1t?+&}z`M19)7nrK(%}Iqcv_E2m)2c9)-^t!xg?cIEutE#KyfZ+O>0 zQ!QXsm|>*Lh0-2UBayNO0&@6h)wzJ^^VYe6_){K-C`b}eEl=r`{&j{jqpBk(%RWS2 zRI+Y2>%PHtE%>De1(t56&e`wrZ*>_G-#U6jjlK{3tJn2^SU>;X%IGL_6*nE~j60kD zARI`GIZF3}j%I@TX4TWO{ zHu;$KzHv2%#OJj>hhp?H1_{U&KNesp3zh5KNK?mkDh9JmtRQ<${KIp^;b%gA>zj#$ zE*_?i&@lhcEs+RK1|#STuUb($<%VrpFJv%5c<7c}%G9l20(JtIyk^OxU?nXFlRl zD``_<|7dE^N}ZqY7}P&3>;4c#0p|JP6(Y@ z>O4b|cxM-1@2k5PD-5nTW*p<}R`%}9@K}7(yp%6c-BIS+X4oXDPa8Pt<{Td6@+J|& zKu-r@e{^1fFx?qR-P=kc_@j;!Ff@psW|dg!H-I<5k>S(|YS(K!Kg%TJZOs+P<=6Wd z8@SD8w&~kw*_M~`%T>sC)2`Z}up>8I;VZ{SwB-j9oM5^|3ExmZd2Kr2PWb^T_;*uk zpaoobvXsShCJzAUB+bK6IM5xM$yQRzh8mLjEM_a4!C~Sya5KF2~RMbU+O2MCrF1PV*#~t zi(vjg4-aodDgf8!$`JeihqAW}Ya?vahM|R0poId(typm=6n7~WiiHpgK}vz*65OFe zDQ*e0xCIaHTHM{;-Q5Cx^X&8P@$R$7?tc6In_rp9%-r`}*Lj_SFRVHp#3ht4B#F9( zJ085w!T-IGpE7^5@w#fGI$l0onABv%VZbcBBjIzGK6nUp)n^9_XU1}M*~SnM%%4&% z^D^h`USjKu;1)a>!l&lqTElOn5E?&FM1V(TM3uf|rw&_@LZ< zqf{++S&6Pr-Xi*MyS1(oRg2Yp1@Wv7CX1O4N>AfL$|9uH&kOCcMoM)6x0Ha%#H3swndlPLyq&S|KP1<#7`oh*UW;5HMq2^QqKCA>zP<5(d~!z{ zcvd#w2J6Ost|}qu1+mmm-xK_l&Mk_pE`_C+)JYvc3Z+xRmNV{JClY`+? zoRxL4mt%OflYe0$j=ipQeX=BtUs3l+Mw|Alui&_Ae%YjHi@%O%Ebr9w{;A)L`K=Ub zFLC-J7_!HA2V(+2>ebV_|FFm!FFXDjoAh&*N|=6sVOoE3dIANwSD5;p6zA7y=TXbx!@T{LQHNid8onGQ}ff&;9W1bEpG5o~r$MAoB}v zg3UT=h?o|LBe$^5*@0c~*VeO&Oga4e1cMdUzWg4>N^!T2Q!rma_{<)>X?-k0)=LHZ z61*6a2n<@oqW$W9IiWMJ7=B+^v?D9$Xr;pIn$v?A*-BuT03BM^4M#r93`6v6w<-o^H`K6 zTb|_%Us0v;pm4rlr-r6@Y0xi&6Pbnr;PtersWLXQ0Ol{nCh0P2Xz;990>1W`rqtZY zV=WXKy66v+J#bQpn|W~grQjL$Z+jOXzaE=FMlQFI ztK+hlr=S~S4Rbbj9J6R7rp#xQolzOeA^78B$%AZnsnSHu4AP0N>}ku^uSCJz0$PoV zEfr-Kq@*Ns-YXKcax4<>*n#h)%8>soS2AFf!YXxyXzx+%-1VrzTm=nS z{>}O#2}L$m{3M)In6_8XFvX00^n##zRsat_r`#jvpJ<2Pf2A51>Gfs-kffWU=~Cf}ImAZ^ovceX@m7h(e%zU848t8;6VI$Jz_PTuW; zi0MHCC&~yVyB5^S*OIUPv%B=xkC*y=@>a>(;^qr!R68lg=X~S(?N9B0Kc9h)uwfw; zau3SzLV{#fIEH7A(lcbru4AKCoVqAY4PxzotSjQZQ^ttEj#26SSs>S|;<@T5CUg zY5OVFiS3ZIrJK362E*F55TR|Q)EA!D;(`Ec)BRfnooV9ec(S{$%*^FQnvnSSTHwrp zgz=~KP%~i$`~nVQ6Y+;Kn(QQPAcgUD)Gk@-nBO_p=Knx>bCh9HOlmPUdfnLdo2ocO zRtP^ckNidS?Av@XVrfPf(tDe*#$u^KqX+il3$JkK!+uJyUnH!_!q`GlGOY~7@$it~ zL*Ed0NLP^Lr!*wVC{e^(?-`LMkn@p?H>Z&Hy;-=;-kj2rAz9X%xQf8#++l>jIxukb z!;*jbYnu|i`6j^_9{kVi{jMGFA{9IVuVAUU(^uz57kQ22G;@~Z{f z*5OWJUfH*vH+JK@HTWr)Nv)5`P>y?eRa`&yie5VBkl* zzyStK?iKAne36%{0v%8e$as#G5_A3iH;EbjqMR$hUIB1g8I;- zI>6ALrMz;-!j;VfjZ#I`PJIr~i9f?##k&prI9=J?N%<1B!EVi2Y@0+g## zm?fv>;1bc>evB3nFux@YV(x}=SIh$95VROLd4=h?pqMZ)L^8}E6>k$%?Q=;7+Nt{K z%rN`n==Uq39_`U?U9&IKEUbn-l6&Pdv40-*bCpx9s`4lT-fo*e=k1#6bd8?l*#`A13!l^+FGDkBkxeBW15y5z?~1+y<4 zAuEcio1g7|HJ(lliaLB*VPl( zF7LeJ1>khMA)TIoF{FtJR_u#DK-O1gOtX!&;jb*AP>h~NqB@*E!G+dh$QqJ7K!^@hGZ9k^FU3?{n_*&yqm0hXC zeeCAeCU%djWS+5Oo#|qVO;tLExPu6E5~RR-?)P)fT&og!Z!CQN$l7bgZL|@7_yjTW=_Lgyt$4gX5L>CSQ_0Ve4RX8 z8$yZiCw}OXZnBiRnOBllmt-5zbHD=pbR3lQ1+be}n%n4fI~9B2W{V6r^sL&NnhG(7 zBW>1zxWPzmb#k(%LP@Sg19)T=(y)|$sk7sOh$BR9dcw-v1oS$DUQ1?H<3sd z>yL|Bv!-_`sKm@s?L8*EHSotfF8JQ_^AvT`f5FV7Rn* z{>;jVzoaBrS(vE`tIXzuw{z8u**YtT@qS8FOu;9s^M%b??DT+dX?%n5n9;LlhR zA0dyjZ9M~Dkr`N7(znY6(@Ng{q?#5_7Rtczd<-z@R zoAQj?D9{QJWK{18$K0uVwD;cwD(J=E<5Jn$Am_Fu39IYtX46+*9Q7vBDneQrq1|ix z_-qJAVz}+|XC`#=BvkA}AkoRS%M>)IPn)}&5N$^4xUPBDg1-0JFg;*pG5pn@zk}9J z$5o}cxXQGlsz6zNt@N{E^JbpkceFw78Wp6Z7llw=!U)bT!dca!+xdnL_Z$M}f3W3` z&jysN9GX@kb`@}TfEe!M@z@W8&>V8n24?f8fGpU@vKdI$rc;^0U~hz^L~$#P3X8OrJD6RMv3Mf#2_d`95ch z^)@%wB*{PW`h?h86#7}XI{Sg?-uP{I=kH_zZ{{_bT4~X7> zIwZutmvmG8Dpu!}(I9+&^W47Lqkw#~X|ori=9OvGY>@$w;GY4iUqEZZ@BK$f4dZX$ zc~1SKQrJ+qvi4sDo*SE*a|Vfy{9BE}`Cw2#pV9io>C7zfTxi5N?kP&r zLMD0%g7#F58_x$NcPO;4w0*xZZ?G7mIfht)(%AuplOE8(-ILTWddm$iNf~=QT$~Nv zn(0bb1kDst2Cgz}S@(Czw|hDhyR%~@nUv#SVOfhL+i^2I#jb>H+CZ3gtb@g}{`A(% zX=oQ!RDVy5vDKfggd4dy<-7BJ!rq#_#o_tI97+Y|$v5SZwerw>ofBD5^6UFC_p|~*?&b+jq4bZm7GPOAvPPS12s@~ zPMB-g+X`G`eou5n(Tdv#RjM@%{`#k9)a*v6b538{ zMp;(*i(CgKw3KE?m7{2=r^tUQI`fzY082aTIzM5uH=B7P>{Z$ZyDR1+V~F>|*cUS6 zl~wXR|LQ9Rw=A?P&IKnCs{>bZwpwd_{MIMz0IP5n1(WKZKIEHbo=-?SIhF@4I2%!d zt*hg%iea}@0L>DAyqJjM=DgflL4BQ13y44xAmr-_*XZu&{|i`?Wo-nvBGg zb>|>piE_fSxeZmK6emsZ{;0~lQB6z^<|{!s!rk4%)hNS2MTtVi)bE#My3S-Z5@=;^ zO6@e?`soFaHZxxr|A!CZrgc2FmAO6z<{WcqY^|XQeG>|v11dSRyt3#kfp~nU4vYR+ zfcm_rte)fzYk_+cs7OV!(B$mdj^3kgs2#ZCebmZVeLD`_llY1}Yw@F{VK7o$(W=FWiI( zejeKVhI%c}&+8;$5Xc+0M739nS-ODXEYm9M}Aibc%T|ETfP*R2G_I z@oDhD2)n$hXnKq|V|IhX=P7m-vt`32q~n{({{=uCIsp9 zqn~Tt0wU!Dhi^t*GyH=}?-zzCyBZkuPm2ks2mf-FTjjEW#Yn=Ozt4^`w z-UFLbCS<{<+Qq~Da7!)CqIF!EAt+FG#+fi1efQ2p-kfgwt+XLnWnL z_g!#gB_^b$bSs6aws+2Fs5E$zhCE^kH0}1=Ht&hyfby96sA3ZEMHvFi?&-8*4+rz} zOlY$pLU26mA}hyAvh%(JvpAj}TSV%8HT61=?gnabaWCK1t$xskSq?mStICJ&`!7c> z(YTr_ac7By{Zi1%rR8LzU|uvG4O{n)U0lmz0IG*MWj#g>Gd@kiJ+ZN#zCyj(aQ){o zcWF{Q`)W)vcibqb(&|-g)>juyfhXTji^J8$wvs|LXg-K0M@X(I?>xGQ7Js69BtCd= zDsRy{_bmE4+5O#7nexRW&u<=;$A)d!1s*|<>fHy-voP$YlS9mVeX21~4s{TKn?~KZ zV0n7cI8L2(h(8&nLa+3tcng6l+3em=?EbIY{j93qw16FEtYin7yJ7Ml-YZ9ewf6Gv z5eln&EQ6cb!|-0ufZ&gqGkCrkWNDIu<4U6e=g{IuP~jKvqs1ej%zDW&U2P)NzZu%e zZogK%SPKF8nKTAGM<;7hOhFqw@A^DRCPfGgDII$4tutRWeRsc+yBNoDK0<3s;23HD z$h5+Y^rkOWuBmqS>%;6Bc%j7(jmn8FR^y6DzqfoAh`AN-7>KDg#;+(!r+%XRu>Ca}&fNqbCK>BYrW^U?bS$UP%eLrISadGagaY`4v za=dc#z*pste*Fc*Luy;tE0L3tK_LAxgvBgnv9$oFY0+@v$0ia+busx7&3ZnN<`q4*DXs+(n>b;O8;bh%;Y z;mI{mf~F=57reB#Sk4rz)4>KA5AVMki=bHE?oz67TG)BjoE0uWX&P_O&dzdX6lAHO$Qff0-8;VkuFu`mjfJHO-K5k-{TDQm ze<6+i3+TcpiXI)~hZ->-8G&%|AHvzjLq$#uB4InKF5ZniSkE=tY-KN7mAd+UU~Btl-~ECq6y0x7NLk!UVfxf!rdrc6K6~ z6`b#E+1zP^N%?zkE5FZgH`x$!vZJ0~UI}s|IyCa;OiN}@=RlKM(K`q{8SiKH zR5b;(6)u+gi*A|LMqd92xVwAnYdIdaB5gyHV06UfbA+^J&r^h~gwe`n7#2458=e_vt_1vR6@y5xSQhUL}2810kPLcO<==lLDpBW)L!hxH$= zYd6EpUIR(6s=o0^MJz(gs~%=?YEgkU)f0E2xDb|ujg@QGp;c4BU0sz6^uWar_e^YN zORGUuPPqDb*KTMI)W={70-Jb{#hYPf;99J-$edJrac^K+B6e%JHTD|lcl7I6_(f8)Pk{m4z zm=lNN8YLin3$E2kTBA_e;4xApPRfEoW}KMHM7o~DyBi)FNz(49O1`VDWb!vkRhvi> zT#!p9b-+U^^`#E|<`;vHTU}`-D#vt1(s9cEEEMXqI+wS?Rldj8QFqF{&OSwT17lrQ?jC>4ODC)2dw*N7RsyU%hH@TA@1^{P(Zzs%rRF+QS0oxRh*#=B(&~0orLe z)0%W4k3;^+5yK=~kB}%o{lVV={EGpte;2TK&~RM+9%SC|!i`$*@uqDu+N=*vqfl78 zHV!=0TCXqS`|Q=#Ln%eG_k6v`*sR_W^yDcT*^G?u*8XC54)cFSd+x$U=uUEG*Ll)C z2#vsQN4a&1KT^&8Elf3dFiKAP{VVZFK%15E>JA{tJ_hMNfq8hm(sQH1>eMC9v%j9b zUo)snOGE=4o?3UB+t~v zfMWBiPQ_$Di#)Bc6$ms;n9(~-{sGWH=%I*ni}{09^lHsH(Em=)G^CWXU-0aCM;Um0 z;k1LmSaV7{oFM&%bFzT9!cJQILwzQt7xKXz9#QI_-7q@=^QBv2WbWJVmKsvn>Zf)w#=s0X@};a&9p5|0ApXr`GnrX4X9|=IDLn z(flTf(BqQ&Tjs;QJ0XgrO(l}{{^|9g^ya$)wiAP~$guc@mrMJ%VKs|nQ2R2%U*}s- z8o$KU?KF?RgjL=y0?>PSwbi04`z>#okXTJ@>VLSc|M~Dy!HI0NQWr}4^xgOQUy*zb zfc>+l+IfJ9F-qT2+?iXqH1<1s;g;onl1Pt9kgIIfnt`EJKaczKuYTA;rd?6Jno6!# z-WN-blG}vlIqlNiPVbW-p(k@{IkZD%1%hq7aq&^rb6xwA)(SNMYG!~3GWpB2OO4EV znxr4q_1ku7lJ%>kpqR2S61MnQiP6I;u(p5(n?nJjs`o)=dRI&_$Vr8Hm|Fb5m@-^@ z#;x;L(PE{y!#Dx#VoXXkhthz@#*W1Vx(_T{)J?`6wkB~Xa<*@eNGHcpy6sh14#Iiw z*>TdX9qT{{(J~e0!+`2Hhn#Ct5|F`VAMfzBB4rKLzDoU>kenx12(nRJYP5Fx>|}}b zlh4NoZB`0+Wr=9KKnJkMg0TGD@H`d?h&zq7jj!#x*Sz?i;6 zmj;-1kMm}rAMkj4tV*IQT??Q4c^A{fYz~1S>mix#LQ1AKkAH3*P4}Fhax%i=vV=fD zo@e_nG_vbcOY)K6LQ?DlzY72UP)UB+g8TkMVRLWaqtCA2=YZtUey(V_V2nmbD~!|$ z9VuM_lOr|WkXN0v75CG^#}>&&@7IFj;%0_UDv=f{0Q*8>jcHfikkf_JJo*HFw|M*{ z`kvn&?r1@8*+J709+21z@H;9nz%LPJvZ}L?wL$-Lo_3N@jOAWptZ7_FdOiGMj>!Ib zI&Ys{S^6c`RWXZxlH?A{iDWoO?A52GKga#+G{o~QvC;yiN|rD17HZ01`?u~Kg)FXe z`1}dRFDWl>I1_Z&zK=f@y+?28e=#om=^yfxPnVzu z(MOp&y;CVUJrqr*T04Huo;SVU$dY$J(v+P-JL4)ZcZQ6l=Hx`nux~uo{zj%B8!;AE9hmV?19t)B^JX^<&@FP1Z zhs+xD2`9xMDDRI{k_FN0QXrr#sKfj&<$q6efuM z^9qdSRr(BzSy!9d2SPA+@_2_ ziQIHXHXvG(zS#C~+s})-b5!)3{P;XK|42e^2KbJ#;+!FF4j(J+f;5nnSUHWKGBRjJ zip}iU&(1E9k%zHCprxDmD>03kkN7}IX=C(O<+Y3A$dY~MjwN0Vc3GLj2NEhCQN9A0SIR4)XnjVc_zg$cg{|wqGByK#|#~_?I(GvMQ5Z zON|~^k`M~c#kWrNUDs~T_!StkcpwLM4skSQ=l2~P0yEb#Q7e8=oi`aS9FKMHByY6* zft+0((6m(>hG4@;WxQbIsk}Iy#C(7g?L;T`Z?XQx&^G?8st?O3eX8I?a+k!^Rz(NL zrpXl3!ZGzUJMceZzvYNL(0JJKC%Od|?{_^+pa^Y^o^>*cZwW_lT8lBM_GGh54;Pi| z+ld?^c<)kA-gt#8RX_7TF#gjsuyQC?hdu>l?Pm>FIybV%p=Ng;mx>kutSX+Y0<mMlIAp|KN|*x)C{yoG)Z^qBK*EZ`R{+$NAQ~p9u zOQg_msszGaBCR0tK>YWPY47zNimS_`?V8_$L9%-NTw zWCdd?(@6udPn9Az8>*fCg*=#{Ca*YKe4VwxA;V-x$Tx7t8TD`Wf6*Zfwu zn$sL;EcEe+hV)NFUGI?uG!%zUH)aHFnGG)5LP#Y_H3ljan`e(fkJ4YxwGNUQe?4Iy zZWy;_o$uA4Zm=+49m0Qji4s@VPjV0Dq6J*Ao1<+PoC4`WbDCVD^gC{6bS#t}f{o}# zDh0dvX0)j0v=PjE=WY%6I3}a16Mr#Cmd11!tbNIkIiJ-NtkQhGVnVw!lQtVW3;#S@ zo^ui{l&`)VcC%R-jQg{+d|1AdUWY7puu`;N9OTiFc$uI&s3Gp<%w?%tSAcDF2oOLS zXglKATV-`nqt(N1UDq8sZ6)e!}c-c6O0meA`w*RIfB+N~?>KxD@y%)Oq+@nNwd1MfV>3#gMmE<=5_fO+)A;fwW;fuDeD_8LH6UcuF7H2o?Ujy7)hT1O7jDxF61>*@9w+A|>1f7~r^<>)<=C#AEh;iv zz0KeCPh-;|1h(XdofG1vOD86W;hi%g-S&8H;@ut9#{Qj(CqxY;NrhaPpIFw24b#P2 z?b5I~T$0bJ-#=I3O*4tu6{)>>ht}5V`P+*IGR2cuB!)gqZ)D zp4+B@{(ak-@rF`krsw!BN~*h&GnO42bA-p%lAAoM?nSCYp0teQp1GKI0S^Teo9w_U zGhoLj)@e@v^!L&-PF?e?)P<{q6(04Oc_0T-PO~;OFuaQ$7?oDRhLEp$wHbVTkgwjF7;+zRorQxx!ys8l_N()T^JY>%Meahd}N@fkt zph-uEfYGi82-)Zb)7Gu`;(@%~>fLx!&`GLFDC^P1F3ynRzUx?a$d+gH2GX9ZW_7%h zZ9h-RETJ4dVIdw>HS?Lu$;n{eanzk6U5(7WP(gLrMM-K1O}hq3G1#l&;^RX3JZ^%rdR}krMyn2c6oT@so1TwCkBR) ziZtM)B2L3`u7z^wMjUqyA74+%#`7BAW{6ST0TD!xr~gHBe-`AL729YdmuYCERi3j5 z_Ar(%Wt<(YoWHB%mw~PosWCuxB6L%=2DXZWv8HrTgyvErZjJ>iqCk zJ}}1WLa}b#8Zt1JUxFGk6Hjj1AYVh4|B9#2vmz*2HIN0O-Izv|r(b=Q{K;4zwkFs? z4l`i`5E6edcm8>H$({@~lJE5x7gbm2Qs|b(Q&M%fXvfn91h8fz*#ST9VH`~nIqIvE z?gEn|g9~mC%(u68s@}gKAn!iv^QCJNE_ya~)9)XgSro4Myed0u;sCb|se)OBIR)}w zyOZaV!oY(9_j3~n#i|Nwgm^U)st+npA)D$+k>HGd^C17*EA*!!2~^<+&_pF>G8E4x z$4saZwd_SoFn9jCq`D!~Wj#;gxIuVq*#c?>o=}+hu&QUooR1(1#GE>L=8EOnz00xv zIM=oSGPPB7Tg)HnIFuza7pNjPn(=Kkjo?4>#9bNEX9WIWHKZE&!tZc(-UhKzuSpKN;bbAI_eqa_w-j?og1upp~_!^DRs_ zVoBY?t2Xh82E9=&n+DV^%%@kaT_9?$pFI$UWWisppck3OOP6CTydp zqRA)R1(^?qrPEmnpE7&rVL==JF$aHCnK(FIcf%gR(UE4ruR5llWkhc8kT3W<6Lo4N z&7sqXF+E$omtPczP(8t$jd6-MaEdHIg+ASxkR~{^7Nj^I67}Nkza8)#B5Set6fD{! zHjVf+DN?;-q^!bea+PF>^+>T-)hxA?^q?~nFsmIlcKIpmp1NhDDH*u>24>vIO1c|k z(WxH&XxrXRC{{s&-*B!;3JS zi-QmPyA}2|2_Lld?AA_gd-qfeY+4ih;(ECLVm$H;HJ{$Ju_aG3+MQ@6h5_j;>0@N*!Ke! zF{W{JgJuk@sE&WGA1wXsP%S;jaGr+)G-o8jI4YqHP3o5x>w`i<4o8lEaRXdC=NO1z z?h?kmAVm;OK2mw*TdieOZpWcxJ?g2ccQM2W7&&AD!#N5F9O!;+nsYBQdX$DHSL5}Z z6>xF&T&@aoj0P4Wi5KkfPGbaor{T7T>Gi! zSxy8Suo1G%9@&&aQtKCs_|oJ;BKdZR4OQ)`(2 zE>En_Q7qFG2?Mn=rQ}--gf$iE?2=N+lep6A7sUGTLdz?ZRhLNbl9PeU-fx{l5vsVi zK~>%776u60R;OpI)S$OwMt1H(-FbHBnSFA4kOKeaRe&7uDg6>vVG+-ooXgG{j{|-G z>EfX7i#%-+O+9~!j|W{h8q__tN%>dGQ=vV5kURu!g-#`FM;Ph}ZX3)fd=PJCMA8CNG+;#@fMojgeAn68Jr1 z`xAnF2bA;L#WO@~hJk&UdU)n`5&_lOwg2G@f3`MIZkn!UmERMbb5Xz9P@$yy>A^YiEDVntm!*Rk1NWfuc2Ykst6~Eez+<36?fhVo;FffOBa+9` zTHegNZtijSYv1!eVlSG;ow+Kiei6@xogTE?K1dpk#;1zF8ug zK`~G1Iquk*PAsoTH&T!`Uh`Hx7Q7CT(!uaWxT_f~Utta3zi(Mz&f33HILe%D(K5%DSIV;WgD0$iyh(=dEdR5ve@p~h6Pm9Zu4kEH z(K3WqBAIT!z9cQ4(!aN^*BRZmAsd|BTCfv7_PmXw`iy|6)aZgAPSKE4%NLt4Zs=KV zZ7d<8YNcY?nu-FGq2m=(alt-p`?=eKc3aux`GuvmqlcCTQER8Zs_3bz8APLEV%JK0 z>~q=rqqWlZE3?VE*x&!#su!5@Hba=Vjm{^C1}IVQWT-;7tD5^tS9?0I#%6NB zZ)&|SWvDL*h}gTKT_mJFMF}ncd5$d$wW9xY7W5z(X`ABO7pZfplyEkfsXKM5&}Y!1 z?rAUlguArwh&FcSDP6uaU_mjgpzp_Pmz}!Er-7=!8J#!Z1zxb-5}HM(73_jC0TO&% z>DbucUBGQ`w;8NaY+9%_zABR&&MQoy`^&ryxOG7om%gOs(p zBK&G#zKWXEE%c<&+X zcd@&^0j#r`R&~CHfDOp#byF~p?UNr5oZHw@k=nDgDDr5u*!S;@ChN9g z$9+E8A0S>WVq@hbV|$PKTV*|Ou){$x7K71npsc1&1_*=#_K&{gIGp)qam z%CJ|T|FMeqGPtrcL|Y7`?tm_k`C3q% z^xS^od!n|Mj8k+#r1JEr`nhcW0RRbbS)+1Vaf*rXJmV7B)yx9|^JsEA8oY>-fV!dL zPjraK;vjE)im9|$s*8pZqIeM7*oTseG$4Z6E6c$PWpqLJZGs)7m7gi%krVV)!Ey)A zUJG>kj-u+l`3<3Go-cc!`3rg%qh~)Am@i>jAm`^qQ++cCCz?lfRS&x%D-Jinh<294 zHZ)JXnri|$Dv&of9x1xfd{+|gysEC(EWSd{v(_ItMct_H7=H-1!q?LJZRv{-c!_(V z4dAf7uj5QDZ_K;pK{gs9D1;i&6V)Kb+sj^jP>xY*-Dd1*%!5Rqv_$0`?-)vSZR!{I zV5I?#Yu=m18T0W_QJ~k@Hj-%0-yf-GFcz+Bp>D(HE9Q;xt=Lc(c71iiGWC#2-|3NM z#Bsu#ag+iP^3YsoGTlj=OS86p2OI5-+cfrM|Dj@FSwwTUv@7$g-K?rV#%|9PSL7+)ujLz? z>Rd;%G@hi;!{@i+bt5fCcrW8&xa{aihzi6ze@_-m@hkbzTU}mru$xOh!014M<)rKE z#%zbzO75_biQX$Q^jdmv>zjqcpn6})A>MLaQOrTrd}nXl)l`NE#B-YO6+?$2pvxsl zCo4DN{?)xrR_=yTI5N&LhqNOSn`Uj*d3-b-ym>|G=s+TVi7?k4_caRBrAX&3Kc%BbIgE-LLW9 zM`Kg7`K}4E>2iY0_cIF3?^o{o3>lL+C*iooUi_+4l*XTeQ{(4Pe72&Z2@dUJOYz4_ zPo4(Z*T3HLU|=yz?OJDMuejZ_UNQkW6>|s{m~6BfwVuGxz33^AshptYXm4x6<sdNbG&!aeJY1p%6z;}#mnT0(W z_Z3gokIa(eE6W;P=pc6W?A5K*_J+PyL;j91kGOW-2m|m^7!^6%UwNnh_OVx03CC1e zhO@MjOiiRo;`pT-go}q%6mpJ&=F}ScGUj);-G1VFCHJDyEOhs)p9iE#}atV}_t-dIN zr&Lv!31@ikR)I1#G{+_e6t6SMd)8c#dMXSCqJZN zqA}~$>^HPA&+@|O4+ncqszK9w+(KpYzT>`d+XMnPqjH$U-xkbq0PS`QuQ~@-BjIx}kdDJeEuIeJ4H!C!{ncTx-k^XpDQMt zeGx~6w=I9fzqbt#UNU_5g3#~c5sgaPiq& zBZXQ>mdL^7j8!K$GRxf_OF`g|uJbheMw7;TNHDqR4k-_FbxfFUmSfWmi{Ml1@oj~> zBA{O}@4?qUn^>nxub^s8&!nDr^KA?56)F`AO(jJb)+v}{eJ2dkhiQ*LxeYif9(7AA z;;{pnDs;Rqt6Jby>lTs@s;YHzg(Yeb`X*kW`!2$U;I6Ag8;?Pv5V@{d6;B7bu%dX1 zn21O|ekvevm4+Rt4E%!kxGW;SPqi)`D7iq9dp6^7Q{;IEpG`)3IURAT^bPg(oOVsu zaV+PtExs?;n>`_H4~?{_u3Eo3a!`ZvLH44w@l|*@A>hX99Z)rFxf0)prJ2las}yPl zv~O*K%mq=O&S%s%k-su@I(%kVT|JD(9r5M9S=Njb;2T4J>xv+2O;w(OPY{+R5^;{M!@K4IAXqJ@4dcD=Tm z4rJGM-%Hn}uDaK}FtT2RyX4w2W0r&B3fn^RlrMa!?Hb6YZqhvfapdV_frFpQy?Ea_$CFm_4qFv{? zY^Q|c;P)3U^ZQ}^Gt=DxNY+PVCF&pC!yB`+>*d34aBAt(M$gj^E!ZeB=9)bu$H`I$ zkkGyVvCeY66Pcj__*9s)iIHsUR#>4o9zI(D<`&CqXj038M}CPY$8)N5$x{(jK~xKr z2Bik49{Y2UNW>0`a!j{8P{-41QFrW5b{FFi1CJmv^jfk@{Q{6fsSG3=i=-UF>~bZ<7!01Y z7kat9=Ep94{!XJ~o-1R+edQ!jE|_O`(t7+?a2%M)^QVcmimUP=QR#fd1wABO1rX#E z8&B2g>7ydXoYyK$d)DqD+$H6UyKZ0;<4GOCZ=edd|23}So@?J?Yr5n5iB%sI1I~Hr zHMAmzDYe#&d>>97TJJep2US<48+5yg+5j(3u9Dip5<-V6!ygn$aE6?1jnxrT2C7qMMR1qX9$XYy_Pa6_jc6q!kA3e)wmAN zrrd^Hd&k@-UM04+c4a6W=qkMVm$3{^8&crTJSPz_T-3oq{iMN4^7pQtePrGF{}d|s z-(ueEyp*Gv9mg{XDAjE%LfO+V`T^MQzQP{NzRcDYb;xN?abJTS(VbRDpB5sLxbawf zl{2D@OPg$Y&Z?%`yJEU6*!6nh830JIpsM7}A_+Ns@`qVx$nH+m+W`szr--mfMY^Ww zU9?D7h^cjORPvffkn@Hd_f!JSDv1KSeGS=UW(3c!<#d=c=`8ptY9$znpf%#qm^=bE zjSQmZ)`aGC102}q1RFKpYjTXh2TTEF!_2je`)IteaE0`^g5ZjsgGq&sc64^ z?f+rztfShB+BFX?g#rayinKUIgSNP9k%ST;I6+E*QoOiJTdX+29SXsNLvUJLi)#WD zcX#dNyLawgcV^9Z*PWUBU;a2NC+pWtN`*{{ z<-7v>!%&R^&8RXC*5$)2w#cb@FABjumqx86DZq_Y&0(X2(@ZCaDw6ByQPONf6C;Jl zc^Y@o%+ZH6lFqP+Bx+Qsm8t4gK*2ggfj7=X5LIHM0#&M^2pTSdR23TYws43}L6YX0 zf!!RJ2NL%I&AfCTZ0Ra|)IJHWm5vMgE=_-q7+AIlk^r+2O37slP_?Go1NqW`ADGlR zt?i1qsvu~;wIHg!UBh0Ao4dK;Y59lwW=ms$mctKV?Rrvgxk&yM_rmAMK~tV;%hjg6 zgO`@?Pemroh3dh+Lh!0X`aSLL5=G2ujDskuJws`Sbz-{jhwqv|>3qSCW`xDbZ@E_(c*Z$mU`6M6Zy0!w6yxbtkId$F%D*pUuef_uIBdfp;}foJ1oCMFiXYQ)^> zhFtfY{L14`E8jN{AXlth>OoYE!uY(E$JcCwvaZw@5KU-VX%18-2V;%!BnMpo8VI`0 zq|eE)@t7C~)E+2^`j4keCl00_?(~HRt_Nf#(rLn;U3vDKV00wfUY#Cgg`VT^^IxP_ zjyeS!FMLCZc}~;(1024GZm0S-(?LTGz+qY{1!mWiE&Y+;sl$OJueMiq=5WN){oHNn z+1b?#HG(xmPFF`z#2$=ghtk*5&z5rWeG9eUw&_~dO}N?^d?c)8VsqQ&>Zo6kGVlld zyBCl*m01(Cd`ua;kqF<8>$og065c>&N9itqdP&uG_Qa}uD4tAcF*Pc%4u1DF%>A6T zMBv5nsqgA0Muak^(nG=>b2{-Ci^y2(ZXITl61Y+7pHOM}@%Tr>OI&8}PG-59s)Dh^ zIp`KhY5DQ?)O83D&$0zGyt#PdZOLiT7AX?WDjQo3NYxTMeNOuWABmP`q674(JvqF0=Z%X~4O0+}c}@5*g3NtM53( zF)(uUmmOU(?z=NM5Hg;dnjoagRl7AlElxq@JJf|QVo=%-bz1zRwi}Ch#x-K5$JFy- z2K_OPsD5+P>WNEKK#U|FxK>*b4sm7SKr~ovNSsVFb3{SXoHwQ?E*{9@&^|*yGZ@6D z5ciBZS;nbN5`sbX&-QlxYIVJBUi35vFEDe40eD1UVkNK0EW^F|Jt^3NW-`50RMmd( zj;1^D!;z4nqRzq`vqtdueMycu!~Ej00=y|lsEL}IZb5cilb1w6@$FA zOBbxi3$9uL0cm$@k0ZB%xN~D}ekkKMc>~0!ftJSM9m%%6`;R-tNBfA%>yp1%tNkX- zhj$s^!(Tz@${AvR+c(Wl3T0YCYQsE)aNl=dZhMq`G4@uYpX3@Q@5(j71!6Wg%3b-* znwwC_L}8Cc5mod|e4N^^GI&b=Ob@fcE{$~T(u=gDohgd40#odQE4P}yJ z#|za{A8{!tHZc>!3%~4_-E{%SxjALQE#voNKDV&d(7A+3K>bMF{XR`IYJIRED!qL1ltky-{@6?$v?=RqS4P6F$QOi{ zz(k83xwqP|-wC*DLTh}xDWBv(Oa0I=9ag~9V%1$2Eup9jm@`gQ7o0{~3hmFHnPbcx*98bKD% zlrYhxg$VZ2c*mN8Pe~SqW}lA0uUWbn0@?3DThegFW~8pp$&bHS`U1)|WqT#7EW*(&5tR1H?2* zHcF6-#cy)e&47QN<7xBEMK5i($K7cq^@cm@wjnrLx!Y1Q5bH3>-WQV5u+OMElGwUh z)c(;V?E$wDC-{ymZdZ1cK0&FmE@=LxMp0kdUKyK>j$qM=g7k+!zim?MG-CH zg^n@7likW+Er|yAKDL+d+$4^9P+Nu2)|M1I*4XFaSWi8K*8Z8b(NwRAXxb)AExa{` z_$edd@AZ!CPxp#n**PC1o?^o3!o-Y-gn}3m-gelQ1<0G?$+_|KbRC*RzSgW)MTWz( z5Kj%yj_X?tw<_k+?Rew4{-sUWpBXd#72Fq|?gjLY+)AcEM==#I&2Y#VK8uXkowrO= zMOtknyvk7Adv+DMHME*x1mdRD(8+ixApIoOe1Y-KKGAYtYRY@+Z$x< zI&{QX;ddPTtTeW9tU%JdYB}>Ci%iDhYzqLDg6g1)H?Fp9Isn;jN#D}8%9BnBrP!4e z+Ld@wzB|&R)K#upI=P(6HH9GB%H!7~XF5%GmJQ`xw$_j$&a@Oqt)vj6-2F z$l7K{u#^Pq$f8;YZW_?Iq$B=Y*L<)*XnSAe#z_MwXzMX=9*Z>-`ZSVcaOyj%9j-T( zB(g#O+=Yh?9ABgqUzzpg`}Y6^N7PQ0nLr2f-IwsH`Nssj!4IWObTJy+>A70PNnxRB zQMR23vt9dy0YiXGxQPS?qKMTKNGt(1avfM(({D~HyC64W?z+3((U>~Y)pe;I)4~m) zmI@#NeXZdjC@pRPu5Hjjeeuho<@1Ud?gs^bN83d6&yh(ZvK|2({;iz_flDM%$`r0;Lx^e?X2V%4*$FXpNH#G|x0&3r2Z5(6lPvL_%6T z6-pJ90L*oZDI)!!2W|L54n4^cDL@s6y74e7$1G8}z>-`G1VoXy>rItru#nN-rI6{b z9bHKr=@n0B)$DXFkwyAB!d|`S7Ukt0A(n)&29BBnE#7U?=g5UAUzF3S4}`Q|o-xw{?t8t*_3jKYc4vT?^of8*y{DTqxN#xkZX5k{$Lq<*C4uB>ldu`n%6!zO zm6aMu@f3?ZqdVHtl|?LOwX)jAK0T#uQKzXcJW}*z(FN13dyZr~+~`U%<~8rIoGarp zcryW@m^tF9(tmP*j%g{qkesYW-`UK~sUoa3a+xp928hZBH70pJO(f{mcJX+sT+-dp z6D-Z-KRL$_Gl0oMLIEYUL;r zq*IVGX%}&fJEskNl&gF3Z_1VbFG1_4q&*261})ncA`JxHnQl;roZ6V^h{xLwrG7@g zr02DL9quR_Idot2c-1@J(;P(a{M@^t*;+5(+dJlvevV4;K*wXC%3}gp!WxjR4SCC{s z_agP7QQNo;w+UxG;R+>vxlTz1U4v>pqE0q5$bQ`y)?CQY9dh?rsQ9PoR4%}t1w6FaRq)tuBLNw(uj7lT%5B|Woq zmirG=H}pYuJ-clUFOs_6ZAk15oHzd%$wyof3tNAfm+W0KA|xUMtW(I2#gsz?e3e?j zQH8rTB^>cAdveZB`djHs<+$J9G`pSa9Oqv|z!Q#E@7|fv&!5<^g`^KeC?SN-L|1X5q>8g#k;$< z=hIN0vqeX`D?~##fBn0S_RaMLLQFuhJ{L(8jY zU@>n{zZ`fOXWY$E0Js-uN+jRNU<0@4*Wu#x`Hf}eAj(dJJ-0kmJ+a#V$JGe>s zPOZuZbbK3totS%CyW7EinPfJLlC;egXwnO^=YpNwvia_$v8(!m$LGt#7km8*?V14G+gce+kel9?=Dtvg{z{aDHU ztJxbp8{c#DG?m6WZSgt7E7Ihn*>Kvz%2XBGs=&Ir=bQ0)SXj3K53>8gs(mNsZYWR7 zc@K||j-g;l;T17us~GP)Eydb<*9Z5-ky6B^k0 z2;<^i7=PNsJ7ulahEvrqZ;oH)T8LG_GwDj`am|D51k+g_10gYiU#n}MN`h+_nrF;U z_}yxiJsoEn6kI2`YVsIYi-3A(K&;(or={A;$iTsL=0pQYoF@+)ccLtvT3c_=zMX~h@UXXOIPK`#v#5wTel@f zDver&_pj7uXE!Eh!BYr>#gMRbq~0krSMx-0%nc8VU42XqfX!4U@~bpxA=QR`WL)jZ z^}Lsd5JpxyBbAkaP5rZhka9JRAGr&*&g=LHJ&cD7srz&%s{g<~15S;V%RLsPo7+x6 zi}$N>a{GLz6q@8_`=xEVB%Sgi;rHuF0__#LpH4e>WjGDbSl%H!Y~d^+WGMJ!=y&KB zPPs4m;2YY98Wx46qT>Ys1)(&c%k0?zGq>cLT;2-Bn3d4=e&hSljZ98cvx^dztcNQD z>z^Imv`k{oYB?X<^UZ61nju0!w?SWKs3fEPCMh>VH2Iyz9l)XDjY*m-!@UPzWg=E(E`J`ubO*48nmn_Ux^Q@OZlZDgbX zmE))u8(EJKG&V{s9Q6`AGG(nLtNo4&_-B$*w%PJ>I1&`R)0CveWzk5E4^6O9d^{P86`?x8*ma2AQ<5dI#hP+^ zD-KrJxN;sU`Mn1v>LA-HDjer{}Xu zcs)jB^Q4g~73Bbz7KXTFlOJKU&zpB+KGT4qN8u2055k0tL8({4h*hJ|> zf(D|}4pG-OKf67=)_2O8h27h$Z^Ud<_F0$pnq_HYw$;pgZEbIhFGd+`pSt82oFWw6 zt+i~*s4CXm1neeGFX!r~vM-B<<8D)&v>PD*C4u*URfY5)zRZ+wmyK-L&ZPc?kPKS- zblc=fFSy-MZAo1!J2G=+2U2=aCUBjxSA(_~;QTo+w~VN{+#GmvpV+QqG4QDH z^Gc-9fEiF3p$- zE(zd}x~2`jdt|-=V4*lSY_2k2oddSSF6t$x<1lhS#sY&ljoxD6-wwC%kr;ZLZ`ty^ z_1HFe>f*ZX&x^3i@N!wrWoszYHlqw4lur}~)+;oK+L@~apdxylb3qn_(*`o<3qc_5 z?av|rj3Z(rO7RS0$Rj$Nna4L^!8tM2@xsO?hn=t>ef zowzEcj^XDVY)NaWVzD!6XC*c+i(?|>;BGm|BkXx9=I>F#W&%3p$n2ZAJw2@=DwQw? zT)xz=1N`7+`^Q_FkS{(YDI8S5+vr-|9t}g|v6+Z6l}4+OUi1RAsu#P_cC#|nmiFVyRi%HE-`K@!PCkr?OlYu(P9TgO0vt^5?fZY9J)dm;35L`USSr zvX9~8{?81wPkMT|%s3rFGJSqWm2Z*D#eZV?^|Lx2vwfrIqCT^TB{s@@QsUp~!#|3G zNiop9ZZRj+}Pw2x?WIEdOWmi@)LVzr@c3oG5~_@rds zB7})b3pxslu@n*qGfYYPw#}A4Kfsl|cMYm28miH_6+pIlWtRQC7@@r*&hSE5f6g!J z>*l@zOWao2k8EiaiACjU#8JJcAmRyUH^>3f-NJJ2>{1tYtoq_i5fYO1PG@I-2z^^&2sx=oA2bE!GP*w^UlxewK&1>9aySEkkEv| zR)pP&m_D@e)D%3V@C)8K1_qw}cE5V5dqC2s!z&(t<<3=!KADlGG*7XHB@5}15C&V8jb^x@fPd9*u#fgdu%}3H@-jXKFvr&epB9##VGDa#>WD3Yt@oPES`||DfYi zK4vo1&xf}ReG1}_rf-xauN)bNO&uhzv@lKk87SlVGL27+&F$BA-H{7d=PyW{1mA}s zDQXJ!ranW9zgrH_wB{M?^-niH4{i9dXPw4jgkoH^X$hyYAkYk#FCnT^0iIncJIb(K z)oK)Yi`zg`y6V;-8quS+%0cNo_J|dh(C%~#-V*eMhg`Gdw{^&6*RD5X)vWz_eKkgf z(KdU`EXk7CZXTF@u&QxF7T31MG*>lJEbjGtwyT?)wZ6{N@cyINyr3h{5WvPf=ObP! z_4XARoniHdSvnhs->f~qer#OKOrv}(o-V%<6;*aU#KHq|a4?mU7)9FuV4v445F1U? znpn+C3U>D&XX)3e<&cZWNsW58Hfsul~5fA zsY0SZ-{oadNJtD8D!QEZw_Kk?4MmTRg#_;DFkQe+&_n%-bpJHw6B16t*XZ+(2j~cR zEGzTPt1ObN`J;Y;JOl@pP#*JUWc)$hnc-RsXP?n@!pppRq^hM<|H+{kby%JCRG{@Q zWXF(%U-j`3^F2E^k~0Laqr!w)n8Tv|=6%qcnMg#Si0nl9$c4}9ZFI3)FT0FX!Vt0tAQs?k%{Yujw+WgA3Jhd z@puKn<+C%+p2qlYx1!VvEOnNXNVbubt0#3nUeC)Mwv9EBMP1i@g6owd5ug8JJpumQ zm$2)ju)#r17TkJ$8h0MREBy;Cp%NHc+d9xZtu( zY9)=kh6Dt8ip4xpVl6a@@ZL!ZoboxoMh?|o@r2_*!=}mXn@U_0GbLa~q^mH)MWgO_ z=}4{>5)#d|`88{C|1airsiF`_000Qw@)z{)mm@nRa~R#8cvubV0Di4FGc+1?QCoIjypq>9=-ccgi_^Oa^vn2=^II~DN?yGKZ)Xex#;#U5-SN=Z~ zg8%u)7fr#^xb{==S3Fr8GQ0k74j`KgTJY+5>Z0j*q4iMojlhm4hhuBqU#z`nXumd4 zZLTZ0uJ7QFYS5>NRS#>~nsbA_od%UB561$;63c)1Zy4}!ay(t$8JX7kQ9u*trf(Mv z8&JlV!-e5h6ypPj8dOsBP;mniM%i-#rZz_>u0YPac^kgXNGd$T{_JFVv+HWU>$6it4`X-z0@p% zXlW%p!Ng5Tdgw}+ZR=Shv(H`YlWS2BMiSE* z94-Dh=KP-ABeHb$+pCE(IKq+(InUSUo-9mQ1t|!($HBSsI#uhNL`1D(nmJky>^ddC z?DNypRPWzjPF0sHCee0gPe81kgjOCjnopMsjk*q&?#-1u{eaJoq%FR4S1ZQtlWg*y z*0d2zVDHvWWS-jjxz1w>&d^tk8`PY=jEN?vz`v3X8C)2$HFZ#SLT%tMifgEV87DuH zXpRNBT@)Hjit1F9JU;0`IT=So1RRQf8&+S;^c_n1F#btVULvE!)+ z5Wr;j6Nmt8n>kRIfx>yHqDrdX#}>so9VBV^>cv~&o?_7%9raVBN&_v~xG?sxVsugIA2UMXYnb?y!z8qeW)t=kt zGErcKkGiKbtcZPS1QwA*PIT{O?=AZu zQHyjlVRSf$Uw8k*&wD?XV+P+cCor;KiG|8)Y;iDuL3x#PY{qkTG^N8kMlCH)w?@tr ztBoUWdKD#%j4_*fto!55<>qwm#AC8^&`}7;VN~E^6dOQd7W_Eixqtlp3 zQESm9=IAiQ*87`s8q-ZBh~#CxPBw=Ax#49uJGbFd2|K!Qy!xP8yJ^du6Iqu(5zScv zVAsHM!`hi1t68)fX)bud*3o`kIbOiznwTRF?6-4tO6(Qxqc?iddUit+%R-tHGX4g0XOL?3K_ z5gxR+DSU2jxX5Sm`0B~j$V$Pa0^^Xw-9mzzB=MNDv(?)EUBRu&CmY?*U%%QATI`np z(LXxk@{^LrdvS*jLDa2QB=5GWw9o+`)w;67v|#ZWaV?RPupCuQt;(vN@mRwhEoWE$ zrs3(7M0QXeS&W;2o1}vMufnY$hYyiCL?9#3z;`Qt`s1fS=F{5gvDhkaEW8nIhfNzEDJhbYp5BT(Ue8~@ zdQSDP5+Mko+BXz@h|zF$oe(A=12q)_nK2MmDIq!~f? zhjqT{&8Zqe-?T>*TYND;2nQK`l|gZ>Fo-+c#%r%dr`7>1Xynq8Uzx>ZR$s&c`sRnR zH>N&d5KqQ6fDJ%jQMIRzuRXDdS?BTy$93y@|U#Wyr_Bi!Wywiv5bvD!g9+Z8L|I%GlBWtio7ZDH1j>J$h*ePu= zTEY4s2_%QVt7S61GHu}gi%J&$8`l$Ix`OO`l$CYl1;k2;QoQySruLL{)7koacX$Z9 zj5~cU?ua#Kp^7@bEfC}ZBnFEL%Zngz!QI@?Qs6(Fa^g{ClRcE*!lZP6R=lBlNEy96 zGsX6DQ?KjmqE$5GS)Xg6#z;TKb{lE0GFIFfLaT5*JGFo;ZqY6>!A7g}1ftr;&k0ri z@Sng;J<2Y^ErJ*JrjEFueRz%SxOM=?D4KWnZTf%;7HNg*Ma~+KylS>SazEK+-6z#z zdLib$Wt{S1cEcPq+Ygk*7A7$L47g$fnyF9tP)yvo4`VC_{C;NaWD@t9txL9E4E@e5 z+=)5@Nuy$AF;Ohl-$cAEi`Qa$Ik@+t4*VBuv}Mexp&{@?qVw^%LPKAY0XrS(PF%DL_kCS)C2x4Z43OYVQ?_!n#4@#dhjBk=SOjbE?Y#j&W$_HFG8 z>vUcEs#b?fl8$p%|DNK%ShxSU(wtkE{wXPq(m@3DQRrgwgWI%0q?%F#{ZHEa?w0Vf zEBJ~3&ryTKAhMg{T4;}+g2P`dXUS^A^(B^ZhoC?XX^rD=WBDw;(!LCl_u6p>jb__c z`8D?B3t|mBK~H=KaU?pjR_gy^9Yk?f)uX(R2gMt|I~!j^ydCB$v^mQhP54}P1w>iq z4f}*w=u9+!5oS2+z{$;hm|${W=g5%8Q3+DZF2b{|fd|)99P3s$>L0H&(yQbBCl43_ zE@~Dh12@l_kYSjeW}v|#w9^I}qS_`+n+eZ8J=h?6(p-d^8{4vfuhCp?m3%3a*D^VMZz2 z+nBw<>wfp{Gy;Rv$SxQJAD~j4ILowE6Q}22=65iWoMg^2G;N&Dbz{kJ^nI;l<+YTQ z-TO^X{;bdJzP^fW92a2+r5X_kZ?>!tEhZ5kqG@hBy5A`a;jj8rJK$cv_E4f^mLsg-5p^n`vE;Ieb1Q1u z`C;l#L|S$q0Izi~*GAI|O#e#VK3BX>1(O3*ZUx`}#S-uxK2qwa z`$igb> z9a&3jpdrDsC~78W0xo~8TYMbM-)Sn~0hQVv!w*BJ$^X}E}AVGXLnmQA?;IaI4LL6UN+`9a%SH&(Hs>@d8nyoGW z8Y%U^SjGSI9qWIKJ_Q3`f_N16W_4YHPh7(p1R37d2~73TS~w@u(ze74k<6rqdrA>- zm-9AExCu=f+mLMmEk4-YGIHNPsv?C+KR!TD(JdK{PWG;SPlVQV^cUS9t{W|1f&ayVJC7pY#0(f*G_%c(V)hK9M1CWENyT_R17$3 zH%NK0yrHd}w-d-uo4txBh}PJDgk3#H@4q7>c!fa%WB+?Rw+QBDL?qeSRP?ek?6_^x zJ2C=Nf3clN632QL>Z_0LOj}++QjS; zXIOo={XJ*YQGxrmw)OisOdzYlJe5PbZf^>arAEO%TGfA&clpEOA1U(Kssl3(?tj7mJV~!&A7|xBhwuuTZ`eNVQ}tlx7}N|-=t@M6g`ho6 zU=hcP26g9|+JQCmE5^*zsMA`pO5CNA%x_p0M+|g(r2sZQh&Z`~Q*oxb;OpPtejs>VME)=9w z>v>2Odi>8{k$0*EgKKU>ulOI}|BP7eO z0?N%jQU=DIzDbS#F^O?_zQng8bc1LRLM~l#O1}vg^O4wZKFIUwTb=7pgv8Lup3W)b(4UauCEoc} zEl&YwS(RKO?P^g>4Ls%zJh*eF@ytak2GQ@aa7LaPTBaOwb+FbgC*Sp5@t4ia@ztkA z)G)eDHd4tqsZ()i?81bUydD6}`yB^kZ_=Se`!pA&)!O#;!n7l`3b6PfKmpb*2R2Yl zs#E=?!N1QCJFy#A#6G-98!q&`gNtf9O%6t9Z3YjujxxbVaM(%YUo2cjKsUvv$ROv3 zef9+B#BD=+mGY-IbWm?%Kwa;q{>YejM(RUbc9M7m;UehEmYA6M=(RfeV(4=GAw6S} z-C3TQFsbI*I6>is30iG5=`LZ>utw$HTzW8~oQRz_^tA=s$ckIL^mRhx?~n_PQGhk8MLHJ%}M&7?FfN0>If~)@y7h( z(Zml|0^aQP&HRnX|G<0uC)M^pohfaiqgk~%1OLd$;PmzH4q^FTFlhVbRV(lcxML8+ z3x-sk8%v;EOunqGwai1APsEe&KjZydrTj!kE!<2W9;G9gr1##~jz0z(OW@+tI#49l zFZTsE;P&$9d4T8=CwtYb1mlU2hFKq9$nA`w=1Zjgkp)}HMoc^Tlxdy#!Qi%BO!?VV?|x88Q??S*u+%-!3(2f$<1W8@*ZrYR{hei|hV(C$z&!TbmiG@4g(LJi zA`2g!)Sfrk3xDb{OZG?<#STX-ZDjDIR2ga_-dePlb1`xiAgre~AS056kCQ@q_%3Jvox0Y(+t#h5bYPd$*$!?0c4Cn|>9L=X+X;G&$Yz$%E?CY|bn~pDav*tEI^v~O1Oo@`nV|lHpkD&aQVb+r5 zF|{Xs6Z02~PqLYnz{BPtP%62r)c>r+b+7Fo!^}+Wlk~!c$sMNDNr^K+YyH#L``;ej z|KS2$amMC1(K8#ys~7gq2|c0@o{F=bU;=)M_n_**ab`N_1ssk}XYI2-#@+o|^ZJE6 zd6raz_t?o4hQI7P>y_;u73BHh_4nv}Z4tts-YPd(cd;M6rywh>4PMd#et@j8v1Ix* zH2b_6jMWKw?hJ2yJ30+Dg*P9!Kb-@`=Wb%13C>|O0_x6b?a-=Ms?D!jzWFt+zjR2l z^PM^0+%nKn%62edGY+yAn>r_zIy)J#gB;XQA&F|zKlK2vo&3OR`A$C?%`-S0b5!Ow z?tGt=Q;D5Wpd!C&!tH0vc)P$o{_L4`!>8I%H=(>OsLuFybAJ%9<39aJX>&-|N)%8& z1&kxuef;D9v`J-5@97t^r(Cg_W?g-{+W*De4&FRy=UH+>ClAD5v^x`F$A@W=#pJX+ zYd!t<>ENGQHOX-6J?1le&ZTiHLex6Z&P@P$8Cyh+^ohTmruOx>b0+!)r4i}TJ%At2 zcAN4@QCk|6nnqIEphC*eS;l4~?118F^P7$;!;c@T58l{ATA!UMShbrqmcjagTbqo- z8Pef}beY`&)gC3Rzxhh-!s{GDB~9a4DjB(&Yk~r*lx^$qAq3CINHk`}#mI2x{t=^S zd<*rcsq?U{=nk>$&g^&QY$R)P%_#7R&q1)i{(jUT0GuGlI%!Pw%0<=safh!NgfrBBE_#fV6(;211?keim`CgIlNOFwp}zR{&4 z%Yebvssb!O9Zk_D2x&&-CRuEY_ZfYEz-%)f>yVQh5B`wHzT&G}*SZ&S`|pNGaz4$f zL*;=G@R;Tz>g|5O=C_V!pJD1K_J$RqolK!RwEUrkf?TQ(qJ23&Z^uZ%nq&KH`=Din zPJ->*;l5=5zNkHbUMx=`+JSn4cZ1b%y-D$_=14I0( zh+3~aj;&ap5FBS`UlFrz8rLh)R4zJ&LiVO{j3)VsV$L<3qq61p-Pz_`Rms^Z4Akdf z&u&BIaD%WvepbU?mcWiu>3PGMux_JiqO#xMlw8p0r8yQ~7u9RW;LS_~1I}i1_5aVs z8pi>~Gb;dfcQe%Tvxn-2k#t(l8FgmrbIKvXBod`1|?2bDHI6@0p3)1JH_u#TEp<`0_yv2!O6Ss22V3U~wU! zOtfzF3)1v{YHdn)-^mo4l;*_&q82^xh;ilv01RRYjn9tR$s$R;AId2D@T>^iI+ne? zA8(-p%S*rZvY1j~AJe*C>efw+zPHPk|3p8pv=ETw5fVqo_RxuXEK^?fFV;t%Pum7H zVhOZX%C~(CBn{+0ww41={tPS(v};c7k?ELtlAJJ&{v1m5P>P;oQV{vav{mg=Hy0sE zInz-S9j@Qxe}^IOro=TaK*IjLlKC$#+t`u4`}X>_l+;bCXJur%^!QWf5Sagxc4OCW z&7M>Xn!=C?;FG8tpR=H<)Rm0p6t4X!)V-<@6Uzdib7rf8Asj|-v@Jj0s94QWTR`G5 zf_IJWtemRl1ud44-a{wsyWP9;rw-Q7vq&wN>92!B8R*Z`+39l%B}@FHGg@P5Z~7cn zZl7AMtniQ@eso)CPcR`$D!G6A^&)DHkJ=ic`{}#yR{`N!WofM}Gb3Dho`Ln$@3DOv zjq7rOYkmccB$tQ1rB~tiuMBx)!87aii8S*N(!_mU_7FXDckc3SwfAv%HX$uzXDA!j zJjLRSmx5uDHyUAg`X0!t@T)jeoe22C3X#igUlebYLJxOeXupy{z>fOCwZr1c1#{|d zjq0n!Slc35hw1D4std-c;_U&h?hXr`R)zHVykOqf(AWxbPXt}u9YpE0c)-iPr$!rM zJmh60cG{6ti)RWjUU;#&>fS1%nei`C0;Qt1zQ*&}D@Bk&-d9k^c>lMQac z&Xz26L@H_8fC9uY;gxS*@|Z@N?xE8Acy?tey(7HeK3$T8e3VeOipQP@>3knK2eMTN z;Oc{GGP4Uv#bh{UX}_G#W1oTx2`<7s%c~HfQ?~ngs zc?(E_0t{&I-qLz~lhK1_Q{z<#U}boXP_1O$k4Qi9aZT<2#d8%ud$Lz{B`j$kBvyn0p!}#V*ybj5NML>_sOQNGERIE)>rYc2g&t*V~%&CW(`Tr|v(&4AcybjDYb{V}fKN>8lgMS6nux~(vC zHD3~q^jt45>N`kDSJ{(Rsq{;>)O$7ShweUnPUn`teW3QM>By+b&{w-zLQgDN0F!-Y zmiaOu7%X^7AkWpO)185c^ii!0JCXTO*Z_=Aib?LNR^sucJy-M^owu3gS@F(VisqTp zs5d?fwfFh;Ski3b6mYQqTr#VrYoG7B>XBKw`RCCQEz};PjVutbA2$^v9(5-}eD=X- zbIUvPa(lkx^;P$tuT`nNQA<&uCnoXJ!t4(6)a6HOS>EaO*SMBXBjmsR6OKrD2A5H+ z7GLJeDS2e94GQv0+$660B4xqV*sXP{^2~Inmz|VH)}=NCN_M%iA7a*DQ7YBg(^Z@==>&Nu_Kvq zI}>&QHO_Mx`G&t(8GKO>zl1;?je*NL*#iMr3BnQ$gVuIkw()F(QK4Lg65u{vkT1wZ zP(}jmlZ3|B^b11I(5!NEQ-h(`6O? zOPCIAA#vzu252f5YU$0(TK3YM#IK}UzTkkfn-SWZY-&u6p89|>#Tk$MXmyIaVVcRz z4c`f3_))TZebAjE>j0-nX6FE*{<7H_(CtiU?eHQ~-nK;s684;9k-LG2oJ3>ltKv=6 z1TG{%{l!4OTI9^sGp}Cmx--rZP$KH>Uo1?oAhLh`o;pw~MFJ682k}xCPG0?X%@c4E z<-hbuBr$}0SyDxe{(3&r-?;bzdB0&w*R<%1bF~laWzuhVKiX7Ng^R7DLyrj~igIhJ z+Fo-rn!|y3N~jj>)s^2S-K7=#PTYrl=&>!I`X;vq<%(tJw~CmYV2r0D6C^9AK8Gdw zHiOjn)02%brE&MerVN!g%u1w{Yb~q2HaVDbwk)CGN=ve*lAPk=F4HeWb0+2UdGP4{ zH5(21XLwh=%X`5!J?_o>*ceVb@-RnZ<)SHgPm!TYxAR{teiql7(*Nt8&%=jV{zsSu zcZ?f;mj0$%i?#^EzBj@oa1`9@IMm%=(-nq8UniD()P^utE8k6fD>Mq_2}vor%#0Z+ z-^w3sb0${rq6N7*#?`BmoSlj~<_zJXi2TOuleZ~oF;@$)cMtEiqCa(|v6SS%`Ma0G zkAxDjtSpp4&suCwI3UqmrzLmvD$Td@Z4*ZeHM!OOot|csb&Hu2MC8`;Az!mzX&3=t zECE4ZKmiQb-;4$FDt--lJzg+!=%aTdyVZW(Dwrjhzys+8JzaL4!on;3iaqIUaF-8< zxReQ$(H%>u@H^lGoo6L##%5yWw8k7u(mkJD(tth=D2$8sGA~*%?=nJF*l$>*0{moj zrEO+}owbc@kfill-{v?+T`rj&5)KHKa_Pt{M0uD!(%l`yp9S&_04#GJE8~OYdnE%( zz_aQF^3}CPkg$jkxq)>+KvycpL;5-GRefE#04+p-?6p)`9`A@LJLAj@PD%g&EZ$z~ z3)*-0Z=EV<&Hq7K2`s2o+tO9CR8WB}VlLzP1LyWNtU-#vLy#nL`CVjic&!cNtq)eZ zs#l=l54I%P^5q+AoN6|Y@-gGf02U`1Fewf{9LeeY+hw-MXT|LNz?bv7eYQrT_VPiy zSh}avWHC)Gh22EjBbuL3U0TvjKMYyS8%|rB3MLyBa0cCDEW5yvLEtGg=0hPYm@6x8kSXUoX;Qjut{W@s1-N}2qIrdf5j=Dd&~Z|(FX@1 ze8Q_wx`S_JOBf$zLce3SOl&KzCljJIxd)|Sp65SVJ=qi0ULodP>w^((7-v&qtbCA@R@^GC^PvU>>9#WQDv_)u;ai~DvodBQ7 zDr|N8fe1j%_Qi$tCx@%it^syqJgbZIhv|mbRo!8`ilLVE)c73eJ^Xv%ENDI_K~5d) zM{LQ9yDe?SE>GLj8CwGp99n+(3bb^c?Cx{pnZ|7pL6s1QATQVB0FFGl!P~?y=SR*? zs^}^S)rRgtDZLU%h7kfQWp_z|aTt!V?O8pGj;|a#Ib|hB31?aR9(9cc=W!{x3#Xa- zS5dLWU+B=+an6C&!1*@-MJDwFQBy(4=DhI7wfpmJTCZ5+ESDxN7En_!zc)U9#a~ix z+hgZt-23;chmO)vQF-2nz}tqf55`~L%2Qjz=gA_9Dygv;hT{_HU_I@7cNtpW=w+4Y z4v&3dB4(=aAv5$%tS+d+#=)pa9kqRxpq{@(^J?AG{+7?dGi=ZJ`QcDN&YePno1W3Z~Hi z4N01Wx3A5#*7*wOW2L?*>+~cBZLY`(map@VSU&wS_ZjZ}P*goq zYV$H|ZbP%@b@h*3muOsHJuhb~_`{>^85p+l?8EbB5D(J#-k`*&TND=M zR`f@J7M|2S(W~H;l9$GwtZV8K`&W)^#pBlf;xcHp=?>i$Nqzh! z&oHjV@OJ#YhlM|M=@@jkQEs?4NtpESzeY^&1+9Kh#5pZA^nF6LR(OTiu!y|ks}?{J zRqlfHaFhKm&P~hMOoAc2R-LFk;m(dsk=A|XaRlQ<$u{{S@2E9?HRh^+!}+0VQVx36`XbCpd4IPGxBptiSprgsb7V*Q-Z(~--J zbdU146|He4dgDk}_EM8=GOV}`C9sqyY5wSOwTtOQ)KTsUzd}@+LRZMdeO25vtg%@`Lj8sf>hf*!$#L@mOwv?Ug zcX+%TUC(0OYI`mWYAvkCOop-tXri}KaqDBCpg45e)2vb7Hbf~v+;nD3x>9M+Av=Q{ ztz#269<-XmwlFl>n1Dq`$V#`1fEUh;?Ogq%$`p*XI1qq=J;Uu+V7f2(_g-d?_v&lCcPxKGSK5{13Xl7H%hA+v{u7}`;O`OZ61ATS^x z8z~OKpo&FbMoyYWR=q8P%DFmizJ8Mld*6Tea^FM6a_pF4*Ks*gbM^@TsZQ?nofJ;= zi&e3wX&lJ&$*IypgYpe=j$E-%Jz~`mv>%SC8B_nCxxM}Ktc0BsxA7zFa6sOXV-Pe` zj-M^u)l|+yOmGAN!PP^0Ofq}f6wv%zMqI&^EF3l*Dk6u}#j0InPju$7SuWUoBFp~9 z(}gp=dc@rqdQI;qy{nhX6%W;OixpSRiN6*zp=5u%Dr!!)vgVQ{y{*IIOw<E3h8;c< zQR3a=s~*0~LLmYY<{@>Sy{AZiHTXjdcV=TW3SL@hW}J1aE?s!7EIAGtEXM#anG77S z@Qi9wx^R`Yayy>!fUC%igB8Z;I_N*&$88L$KUyjna9m;#(vN!DBj^YAJ}E~hH|Mei z!riG}y{Hu&1v(~hk^uL{bw5eRS@i@K2>OBZi|jKVW9r8({v7V$ z#L^+PO9F15%g0i=q++w8ol`i$Y5d|??BU*MR%?~VzMJpA1o^NWHUSFJBqUfPuCFAz ziu+dGfZs?R`8o)OghSa_uBa_<_>pX@vT2=LWv?RxLq_eXu(dVj>3fe9TJo;YK)AK{ z<3u*J-Q=|&p#=`o0!ti{y)jGmN7rQbEOveq;(j`;ObWujqIW7)@yA%mP(@PKb&FZQ zGjFk&3k59uooi_!xn)3>0ej)vu`(EUo3~yBPkfPzj|oi9KfeDihPA@VvWrc%cdo*6 zy?Op?t?cB^4k_$6Pwz^ zIyZ%QGEA~g3<@NZFaat;dl;>v6TVe!T3P)y19b53qx{I4!mYUTQ}g1HFWq8UXml8} zOf#yTmes6AWkVq@@|h+OktlZ0`Z{@pE!Rtpzqq5M@PuPM)Aw>1MsF0uoIc#+Idfv# z;#KM=G9QV0x_X?(+Ww9bZ{LJg3?v(Uk(%%QefS4ye}~FC&p{K#(pG>1Mi>40kn|;T z2qMs#9S8pQJ0J(M=*+FH{YBtCzHhkC#llZ0bJm@87!OYDcYH zzPeXLxo0U;Z^)TOG)beo* zQ;*sq7&pRxEF5!s5>rBo{CmBCgIdb0Mti1CVcP5F__|^lCOSed59FG;6+Xjm7NSS( zw{^YsTGk)af-%UAQ8>F;^XbuKD1DI_|8^Ar$A0y4%^IN}lWxt-T3U?a>n;zkzT|)J z`|yts35Yp5z0CyAiVWH--zzJyA0{;B%86Cf>b-_$PelshU4)ld?uPb-U^D+gDu{aD z4!uwg;QJJ_SgogcCo#gCj2HNDXSv5(se4aUl5V#t`|&i-f9IBn`kVfeQ@B%*j+=`V zOx&W4GFet|<@Bm&gmi{=n?>pH~6qJzMkNR+-9FZX>n{y`ID#3;>d zyujWB2*Jx1X@Xyjm^RkhH^I3fh5}WK7;G>}fCBJcbb96wMS=#5+w{|pAFb|D{QaKN zYqRf<8e~K39#KbJ7<^n>m~48@?+h#fARV+{^YlUuqE<7=SsSe>k?_Rzq4ZLZQPw(= z7|NhECVqw?HzvKdpEHrjwAsR1ZiV9%Cf&S&?o7-mR8xvn9588rlKHr0*)Ja!GN2Zh ze`AJ^zMQDq39i{|p8A;G7Z-`SC#It|N=Lj8^-069B|5@fBbCUGaJAg_6KQ@DB?Y0w-1e_ z9`aO|usm;oH3CsC^IiB+4mz?qQ6!Mg7<_Mo2CX%0DK+!9-Yy-Qv?6|G7lYS${rlcG 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

AmsS9cMO5vVnamH67=Z6r{eLw4g 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
|2h}iN1vbC){-tG9buL3#& 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 literal 0 HcmV?d00001 diff --git a/unicef.txt b/unicef.txt new file mode 100644 index 0000000..bf1025a --- /dev/null +++ b/unicef.txt @@ -0,0 +1,855 @@ +Country|United Nations Region|United Nations Sub-Region|World Bank Income Classification|Survey Year|Survey Sample (N)|Severe Wasting|Wasting|Stunting|Underweight|Overweight|Source|Notes|U5 Population ('000s) +AFGHANISTAN|Asia|Southern Asia|Low Income|1997|4846||18,2|53,2|44,9|6,5| Afghanistan 1997 multiple indicator baseline (MICS). Report to UNICEF. Communitiy Information and Epidemiological Technologies Firm (CIET) International, 1998 (and additional analysis)|Converted estimates|3637,632 +AFGHANISTAN|Asia|Southern Asia|Low Income|2004|946|3,5|8,6|59,3|32,9|4,6|Summary report of the national nutrition survey, 2004. Kabul, Islamic Republic of Afghanistan: Ministry of Public Health and UNICEF, 2005 (and additional analysis).||4667,487 +AFGHANISTAN|Asia|Southern Asia|Low Income|2013|21922|4,0|9,5|40,9|25,0|5,4|Afghanistan National Nutrition Survey 2013.|(pending reanalysis)|5235,867 +ALBANIA|Europe|Southern Europe|Upper Middle Income|1996-98|7642||8,1|20,4|7,1|9,5|National study on nutrition in Albania. Institute of Public Health, Food and Nutrition Section, 1999 (and additional analysis).|Converted estimates|307,887 +ALBANIA|Europe|Southern Europe|Upper Middle Income|2000|1382|6,2|12,2|39,2|17,0|30,0|Multiple indicator cluster survey report Albania (MICS). Committee on Women and Family, Institute of Public Health, Faculty of Social Sciences and UNICEF (Albania). Tirana, Albania: UNICEF, 2000 (and additional analysis).||278,753 +ALBANIA|Europe|Southern Europe|Upper Middle Income|2005|1090|3,7|7,3|26,7|6,6|24,8|Albania multiple indicator cluster survey 2005, final report. Tirana, Albania: Albanian National Institute of Statistics, 2008 (and additional analysis).||219,025 +ALBANIA|Europe|Southern Europe|Upper Middle Income|2008-09|1489|5,9|9,6|23,2|6,3|23,2|Albania demographic and health survey 2008-09. Demographic and Health Surveys. Tirana, Albania: Institute of Statistics, Institute of Public Health and ICF Macro, 2010 (and additional analysis).||179,148 +ALBANIA|Europe|Southern Europe|Upper Middle Income|2017-18|2367|0,5|1,6|11,3|1,5|16,4|Albania Demographic and Health Survey 2017-18. Tirana, Albania: Institute of Statistics, Institute of Public Health, and ICF (and additional analysis)||177,175 +ALGERIA|Africa|Northern Africa|Upper Middle Income|1987|2344||4,0|16,9|8,0||Etat nutritionnel des enfants algériens de 0 à 10 ans et niveaux d'urbanisation d'après les résultats préliminaires de l'enquête épidémiologique sur la malnutrition protéino-énérgétique en 1987. Institut National de Santé Publique, Algiers; 1987.|Converted estimates|3979,1620000000003 +ALGERIA|Africa|Northern Africa|Upper Middle Income|1992|4629|3,0|7,1|22,9|9,2|8,7|Enquête Algérienne sur la santé de la mère et de l'enfant. Office national des statistiques. PAPCHILD surveys. Cairo: Ligue des Etats Arabes, 1992 (and additional analysis).||3942,777 +ALGERIA|Africa|Northern Africa|Upper Middle Income|1995|3825|4,2|9,6|22,5|11,3|13,2|"Enquête nationale sur les objectifs de la mi-decennie, ""MDG Algerie"", 1995. Alger, Algerie, 1996 (and additional analysis)."||3734,288 +ALGERIA|Africa|Northern Africa|Upper Middle Income|2000|4178|1,1|3,1|23,6|5,4|14,7|Enquête nationale sur les objectives de la fin décennie santé mère et enfant EDG Algérie 2000 (MICS). Institut National de Santé Publique. République Algérienne Démocratique et Populaire, 2001 (and additional analysis).||3087,8309999999997 +ALGERIA|Africa|Northern Africa|Upper Middle Income|2002|4357|5,0|9,6|24,0|11,1|15,1|Enquête Algérienne sur la santé de la famille-2002: Rapport principal. Alger, Algérie: Agence Nationale de la Documentation en Santé, 2004 (and additional analysis).||2885,61 +ALGERIA|Africa|Northern Africa|Upper Middle Income|2005|13976|1,6|4,0|15,9|3,7|12,9|Suivi de la situation des enfant et des femmes. Enquête nationale à indicateurs multiples: Rapport principal. MICS3. République Algérienne Démocratique et Populaire, Décembre 2008 (and additional analysis).||2964,659 +ALGERIA|Africa|Northern Africa|Upper Middle Income|2012-13|13860|1,4|4,1|11,7|3,0|12,4|République Algérienne Démocratiqe et Populaire enquête par grappes à indicateurs mulitples (MICS) 2012-2013. Rapport final. Ministère de la Santé, de la Population et de la Réforme Hospitalière, 2015 (and additional analysis)||4340,456 +ANGOLA|Africa|Middle Africa|Lower Middle Income|1996|3016|3,3|8,6|61,7|37,0|1,6|Inquerito de indicadores multiplos (MICS) 1996. Instituto Nacional de Estatistica - Gabinete de Monitorizaçao das Condiçoes de Vida da Populaçao. Luanda, Angola, 1999 (and additional analysis).||2875,53 +ANGOLA|Africa|Middle Africa|Lower Middle Income|2007|10224|4,3|8,2|29,2|15,6||Relatorio do inquerito sobre a nutriçao em Angola 2007. Luanda, Republica de Angola: Ministerio da Saude, Direcçao nacional de Saude Publica, 2008.||4091,763 +ANGOLA|Africa|Middle Africa|Lower Middle Income|2015-16|7468|1,1|4,9|37,6|19,0|3,4|Inquérito de Indicadores Múltiplos e de Saúde em Angola 2015-2016. Luanda, Angola e Rockville, Maryland, EUA: INE, MINSA, MINPLAN e ICF International (and additional analysis)||5277,121999999999 +ARGENTINA|Latin America and the Caribbean|South America|High Income|1994|5296||1,6|7,1|1,7|11,1|The organisation of a national survey for evaluating child psychomotor development in Argentina. Paediatric and Perinatal Epidemiology 1997;11:359-373 (and additional analysis).|Converted estimates|3523,0209999999997 +ARGENTINA|Latin America and the Caribbean|South America|High Income|1995-96|91943||4,2|16,9|4,7|13,5|Encuesta antropometrica en menores de 6 años bajo programa materno infantil. In: Estudios antropometricos en la poblacion infanto-juvenil. Rep. Argentina 1993-1996. Ministerio de Salud y Accion Social. Buenos Aires, 1999 (and additional analysis).|Converted estimates|3514,0679999999998 +ARGENTINA|Latin America and the Caribbean|South America|High Income|2004-05|999999|0,2|1,2|8,2|2,3|9,9|Nutrition status in Argentinean children 6 to 72 months old. Results from the National Nutrition and Health Survey (ENNyS). Archivos Argentinos de Pediatria 2009;107:397-404 (and additional analysis).||3594,8759999999997 +ARMENIA|Asia|Western Asia|Upper Middle Income|1998|3241|1,0|3,3|15,1|2,7|10,8|The health and nutritional status of children an women in Armenia. National Institute of Nutrition - Italy, 1998 (and additional analysis).||222,671 +ARMENIA|Asia|Western Asia|Upper Middle Income|2000-01|1486|0,7|2,5|17,3|2,6|15,7|Armenia demographic and health survey 2000. Demographic and Health Surveys. Calverton, Maryland: National Statistical Service, Ministry of Health, and ORC Macro, 2001 (and additional analysis).||196,554 +ARMENIA|Asia|Western Asia|Upper Middle Income|2005|1377|2,6|5,4|17,9|4,2|11,4|Armenia demographic and health survey 2005. Demographic and Health Surveys. Calverton, Maryland: National Statistical Service, Ministry of Health, and ORC Macro, 2006 (and additional analysis).||186,628 +ARMENIA|Asia|Western Asia|Upper Middle Income|2010|1411|2,0|4,1|20,9|5,3|16,5|Armenia demographic and health survey 2010. Demographic and Health Surveys. Calverton, Maryland: National Statistical Service, Ministry of Health, and ICF International, 2012 (and additional analysis).||201,083 +ARMENIA|Asia|Western Asia|Upper Middle Income|2015-16|1609|1,7|4,5|9,4|2,6|13,7|Armenia Demographic and Health Survey 2015-16. Rockville, Maryland, USA: National Statistical Service, Ministry of Health, and ICF (and additional analysis)||202,199 +AUSTRALIA|Oceania|Australia/New Zealand|High Income|1995-96|1036810||0,0|0,0|0,0|7,9|National nutrition survey Australia 1995. Canberra: Australian Bureau of Statistics and Commonwealth Department of Health and Family Services, 1997 (and additional analysis).|Age-adjusted; converted estimates|1303,522 +AUSTRALIA|Oceania|Australia/New Zealand|High Income|2007|1007|0,0|0,0|2,0|0,2|7,7|The 2007 national children's nutrition and physical activity survey. Canberra, Australia: DoHA, 2010 (and additional analysis).|Age-adjusted;|1329,3670000000002 +AZERBAIJAN|Asia|Western Asia|Upper Middle Income|1996|500||3,8|28,0|8,8|6,1|Health and nutrition survey of internally displaced and resident population of Azerbaijan - April 1996. Baku, Azerbaijan, 1996 (and additional analysis).|Converted estimates|855,429 +AZERBAIJAN|Asia|Western Asia|Upper Middle Income|2000|1787|4,1|9,0|24,2|14,0|6,2|Azerbaijan multiple indicator cluster survey 2000 (MICS). Baku, Azerbaijan: United Nations Children's Fund, 2001 (and additional analysis).||712,543 +AZERBAIJAN|Asia|Western Asia|Upper Middle Income|2001|2426||3,2|18,0|5,9|4,4|UNFPA, UNHCR. Reproductive health survey Azerbaijan, 2001: Final report. Serbanescu F, Morris L, Rahimova S, Stupp P, eds. Atlanta, GA: US Department of Health and Human Services, CDC, 2003 (and additional analysis).|Converted estimates|674,064 +AZERBAIJAN|Asia|Western Asia|Upper Middle Income|2006|2125|2,2|6,8|26,5|8,4|13,9|Azerbaijan demographic and health survey 2006. Demographic and Health Surveys. Calverton, Maryland, USA: State Statistical Committee and Macro International Inc., 2008 (and additional analysis).||656,8610000000001 +AZERBAIJAN|Asia|Western Asia|Upper Middle Income|2011|2505|2,9|6,6|16,4|6,5|10,4|The Demographic and Health Survey, Azerbaijan, 2011 Final Report|(pending reanalysis)|734,926 +AZERBAIJAN|Asia|Western Asia|Upper Middle Income|2013|3613423|1,1|3,2|17,8|4,9|14,1|Azerbaijan nutrition survey (AzNS), 2013. Baku, Republic of Azerbaijan, 2014 (and additional analysis)||813,868 +BAHRAIN|Asia|Western Asia|High Income|1989|2033||6,8|13,9|6,3|7,5|Bahrain child health survey 1989. Manama, Bahrain, 1992.|Converted estimates|65,456 +BAHRAIN|Asia|Western Asia|High Income|1995|673||6,6|13,6|7,6||Bahrain family health survey 1995: principal report. Manama, Bahrain: Ministry of Health, 2000.|Converted estimates (Bahraini)|61,291000000000004 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|1985-86|2675||17,3|70,9|66,8|0,2|Report of the child nutrition status module, Bangladesh household expenditure survey 1985-86. Bangladesh bureau of statistics. Dhaka, Bangladesh, 1987 (and additional analysis).|Converted estimates|15921,293 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|1989-90|1914||17,5|63,4|61,5|0,6|Report of the child nutrition status survey 1989-90. Bangladesh bureau of statistics. Dhaka, Bangladesh, 1991 (and additional analysis).|Converted estimates|16461,413 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|1991|32493|2,6|15,2|73,6|61,2|0,3|Nutritional Surveillance Project 1991: data on rural national (using the WHO Child Growth Standards). Unpublished estimates. Dhaka, Bangladesh: HKI and Institute of Public Health Nutrition, 2008.| Adjusted NR to NA; nutritional surveillance|16573,078999999998 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|1992|36997|3,0|16,1|71,5|60,6|0,2|Nutritional Surveillance Project 1992: data on rural national (using the WHO Child Growth Standards). Unpublished estimates. Dhaka, Bangladesh: HKI and Institute of Public Health Nutrition, 2008.| Adjusted NR to NA; nutritional surveillance|16611,504 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|1993|42826|2,5|14,0|69,2|56,1|0,4|Nutritional Surveillance Project 1993: data on rural national (using the WHO Child Growth Standards). Unpublished estimates. Dhaka, Bangladesh: HKI and Institute of Public Health Nutrition, 2008.| Adjusted NR to NA; nutritional surveillance|16603,45 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|1994|63753|3,2|16,7|67,3|58,0|0,2|Nutritional Surveillance Project 1994: data on rural national (using the WHO Child Growth Standards). Unpublished estimates. Dhaka, Bangladesh: HKI and Institute of Public Health Nutrition, 2008.| Adjusted NR to NA; nutritional surveillance|16591,037 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|1995|87051|2,7|15,1|65,8|55,2|0,2|Nutritional Surveillance Project 1995: data on rural national (using the WHO Child Growth Standards). Unpublished estimates. Dhaka, Bangladesh: HKI and Institute of Public Health Nutrition, 2008.| Adjusted NR to NA; nutritional surveillance|16608,371 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|1996|81067|2,8|15,5|63,8|54,0|0,3|Nutritional Surveillance Project 1996: data on rural national (using the WHO Child Growth Standards). Unpublished estimates. Dhaka, Bangladesh: HKI and Institute of Public Health Nutrition, 2008.| Adjusted NR to NA; nutritional surveillance|16641,067 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|1996-97|5204|6,9|20,7|59,5|53,6|2,3|Bangladesh demographic and health survey 1996-97. Demographic and Health Surveys. National Institute for Population Research and Training. Dhaka, Bangladesh, 1997 (and additional analysis).||16684,087 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|1998|49496|2,3|15,0|59,3|50,7|0,2|Nutritional Surveillance Project 1998: data on rural national (using the WHO Child Growth Standards). Unpublished estimates. Dhaka, Bangladesh: HKI and Institute of Public Health Nutrition, 2008.| Adjusted NR to NA; nutritional surveillance|16734,686 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|1999|49374|2,0|13,7|59,9|49,5|0,6|Nutritional Surveillance Project 1999: data on rural national (using the WHO Child Growth Standards). Unpublished estimates. Dhaka, Bangladesh: HKI and Institute of Public Health Nutrition, 2008.| Adjusted NR to NA; nutritional surveillance|16779,926 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|1999-00|6007|2,5|12,5|51,1|42,4|0,9|Bangladesh demographic and health survey 1999-2000 (DHS). Dhaka, Bangladesh and Calverton, Maryland: National Institute of Population Research and Training, Mitra and Associates, and ORC Macro, 2001 (and additional analysis).||16814,042 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|2001|63444|2,3|12,7|53,2|43,2|0,9|Nutritional Surveillance Project 2001: data on rural national (using the WHO Child Growth Standards). Unpublished estimates. Dhaka, Bangladesh: HKI and Institute of Public Health Nutrition, 2008.| Adjusted NR to NA; nutritional surveillance|16914,645 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|2002|53315|2,1|12,4|51,4|41,0|1,0|Nutritional Surveillance Project 2002: data on rural national (using the WHO Child Growth Standards). Unpublished estimates. Dhaka, Bangladesh: HKI and Institute of Public Health Nutrition, 2008.| Adjusted NR to NA; nutritional surveillance|16952,624 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|2003|86999|2,1|12,5|47,8|38,9|1,0|Nutritional Surveillance Project 2003: data on rural national (using the WHO Child Growth Standards). Unpublished estimates. Dhaka, Bangladesh: HKI and Institute of Public Health Nutrition, 2008.| Adjusted NR to NA; nutritional surveillance|16933,025 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|2004|6253|3,5|14,6|50,5|42,8|0,9|Bangladesh demographic and health survey 2004. Demographic and Health Surveys. Dhaka, Bangladesh and Calverton, Maryland [USA]: NIPORT, Mitra and Associates, and ORC Macro, 2005 (and additional analysis).||16860,593 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|2005|74758|1,9|11,8|45,9|37,3|1,0|Nutritional Surveillance Project 2005: Rural data (using the WHO Child Growth Standards). Unpublished estimates. Dhakar, Bangladesh: HKI and Institute of Public Health Nutrition, 2007.| Adjusted NR to NA; nutritional surveillance|16744,481 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|2006|24302|1,6|11,9|45,1|37,9|0,8|Nutritional Surveillance Project 2006: data on rural national data (using the WHO Child Growth Standards). Unpublished estimates. Dhaka, Bangladesh: HKI and Institute of Public Health Nutrition, 2008 (and additional analysis).| Adjusted NR to NA; nutritional surveillance|16676,261000000002 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|2007|5488|2,9|17,5|43,2|41,3|1,1|Bangladesh demographic and health survey 2007. DHS. Dhaka, Bangladesh and Calverton, Maryland, USA: National Institute of Population Research and Training, Mitra and Associates, and Macro International, 2009 (and additional analysis).||16502,793999999998 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|2011|8170|4,2|15,7|41,3|36,7|1,9|Bangladesh demographic and health survey 2011. Demographic and Health Surveys. Dhaka, Bangladesh and Calverton, Maryland, USA: NIPORT, Mitra and Associates, and ICF International, 2013 (and additional analysis).||15607,968 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|2012-13|19924|2,9|10,7|42,0|32,6|1,6|Bangladesh 2012-13 multiple indicator cluster survey. Final Report. Dhaka, Bangladesh: Bangladesh Bureau of Statistics and UNICEF Bangladesh, 2014 (and additional analysis)||15467,715 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|2013|4029|4,9|18,1|38,7|35,1|2,6|Utilization of Essential Service Delivery (UESD) Survey 2013. Dhaka: National Institute of Population Research and Training (NIPORT), 2014.||15390,253999999999 +BANGLADESH|Asia|Southern Asia|Lower Middle Income|2014|7642|3,2|14,4|36,2|32,8|1,6|Bangladesh Demographic and Health Survey 2014. Dhaka, Bangladesh, and Rockville, Maryland, USA: NIPORT, Mitra and Associates, and ICF International. 2016 (and additional analysis)||15329,075 +BARBADOS|Latin America and the Caribbean|Caribbean|High Income|2012|403|2,0|6,8|7,7|3,5|12,2|Barbados multiple indicator cluster survey 2012: Final report (MICS4). Bridgetown, Barbados: BSS, 2014 (and additional analysis)||17,317999999999998 +BELARUS|Europe|Eastern Europe|Upper Middle Income|2005|3031|0,6|2,2|4,5|1,3|9,7|Belarus multiple indicator cluster survey 2005, final report. Minsk, Republic of Belarus: Ministry of Statistics and Analysis [Belarus] and Research Institute of Statistics of the MSA [Belarus], 2007 (and additional analysis).||448,32599999999996 +BELIZE|Latin America and the Caribbean|Central America|Upper Middle Income|1992|8516||||5,4||Assessment of the food, nutrition and health situation of Belize. INCAP Publication DC1/002. Kingston: Institute of Nutrition of Central America and Panama, 1992 (and additional analysis).|Converted estimate|30,405 +BELIZE|Latin America and the Caribbean|Central America|Upper Middle Income|2006|722|0,8|1,9|22,0|5,0|13,6|Multiple indicator cluster survey Belize, 2006. UNICEF (and additional analysis).||37,928000000000004 +BELIZE|Latin America and the Caribbean|Central America|Upper Middle Income|2011|1809|1,2|3,3|19,3|6,2|7,9|Belize multiple indicator cluster survey 2011 (MICS). Belize city, Belize: SIB and UNICEF, 2012 (and additional analysis).||37,53 +BELIZE|Latin America and the Caribbean|Central America|Upper Middle Income|2015-16|2426|0,5|1,8|15,0|4,6|7,3|Belize Multiple Indicator Cluster Survey, 2015-2016, Final Report. Belmopan, Belize: Statistical Institute of Belize and UNICEF Belize (and additional analysis)||39,454 +BENIN|Africa|Western Africa|Low Income|1996|2601|4,6|12,3|39,1|26,2|2,4|Enquête démographique et de santé 1996. Demographic and Health Surveys. Ministère du Plan, de la Restructuration Economique et de la Promotion de l'Emploi. Cotonou, Benin, 1997 (and additional analysis).|Age-adjusted;|1107,596 +BENIN|Africa|Western Africa|Low Income|2001|4158|3,2|9,0|36,2|19,5|3,1|Enquête démographique et de santé au Bénin 2001. Demographic and Health Surveys. Calverton, Maryland, USA: Institut National de la Statistique et de l'Analyse Economique et ORC Macro, 2002 (and additional analysis).||1252,444 +BENIN|Africa|Western Africa|Low Income|2006|14176|3,1|8,5|43,4|19,7|11,2|Enquête démographique et de santé (EDSB-III) - Bénin 2006. Demographic and Health Surveys. Calverton, Maryland, USA : Institut National de la Statistique et de l'Analyse Économique et Macro International Inc., 2007 (and additional analysis).||1413,734 +BENIN|Africa|Western Africa|Low Income|2014|12025|1,7|5,3|34,0|18,6|1,7|Enquête par grappes à indicateurs multiples 2014, Rapport final , Cotonou, Bénin : Institut national de la statistique et de l’analyse économique (and additional analysis)||1704,411 +BENIN|Africa|Western Africa|Low Income|2017-18|12832|1,1|5,0|32,2|16,8|1,9|Enquête Démographique et de Santé au Bénin, 2017-2018 : Indicateurs Clés. Cotonou, Bénin et Rockville, Maryland, USA : INSAE et ICF||1841,7220000000002 +BHUTAN|Asia|Southern Asia|Lower Middle Income|1986-88|3273||5,2|60,9|34,0|3,5|Bhutan Directorate of Health Services. Report on the national nutrition survey. Bhutan; December 1989.|Converted estimates|86,91799999999999 +BHUTAN|Asia|Southern Asia|Lower Middle Income|1999|2996|0,8|2,5|47,7|14,1|3,9|National anthropometric survey of under five children in Bhutan. Division of Health Services. Thimpu, Bhutan, 1999 (and additional analysis).||78,02199999999999 +BHUTAN|Asia|Southern Asia|Lower Middle Income|2008|2162|1,4|4,7|34,9|10,4|4,4|The nutritional status of children in Bhutan: results from the national nutrition survey of 2008 and trends over time. BMC Pediatrics 2012;12:151.||73,359 +BHUTAN|Asia|Southern Asia|Lower Middle Income|2010|6071|2,0|5,9|33,5|12,7|7,6|Bhutan multiple indicator cluster survey (BMIS) 2010. Thimphu, Bhutan: NSB, May 2011 (and additional analysis).||73,48 +BOLIVIA (PLURINATIONAL STATE OF)|Latin America and the Caribbean|South America|Lower Middle Income|1988|151481||||9,8||Situacion alimentaria y nutricional de Bolivia 1992. La Paz: Instituto Nacional de Alimentacion y Nutricion, 1992 (and additional analysis).|SVEN; converted estimate|1027,01 +BOLIVIA (PLURINATIONAL STATE OF)|Latin America and the Caribbean|South America|Lower Middle Income|1989|2563|0,5|1,5|44,0|7,8|7,4|Encuesta nacional de demografia y salud 1989. Demographic and Health Surveys. La Paz, Bolivia, 1990 (and additional analysis).|Age-adjusted;|1035,329 +BOLIVIA (PLURINATIONAL STATE OF)|Latin America and the Caribbean|South America|Lower Middle Income|1990|490699||||9,7||Situacion alimentaria y nutricional de Bolivia 1992. La Paz: Instituto Nacional de Alimentacion y Nutricion, 1992 (and additional analysis).|SVEN; converted estimate|1045,257 +BOLIVIA (PLURINATIONAL STATE OF)|Latin America and the Caribbean|South America|Lower Middle Income|1991|536952||||10,2||Situacion alimentaria y nutricional de Bolivia 1992. La Paz: Instituto Nacional de Alimentacion y Nutricion, 1992 (and additional analysis).|SVEN; converted estimate|1057,088 +BOLIVIA (PLURINATIONAL STATE OF)|Latin America and the Caribbean|South America|Lower Middle Income|1992|666872||||10,5||Bolivia: mapa de la desnutricion 1990-1992. La Paz, Bolivia, 1994 (and additional analysis).|SVEN; converted estimate|1068,007 +BOLIVIA (PLURINATIONAL STATE OF)|Latin America and the Caribbean|South America|Lower Middle Income|1993-94|2730|1,2|3,6|37,1|11,0|6,7|Encuesta nacional de demografia y salud 1994. Demographic and Health Surveys. La Paz, Bolivia, 1994 (and additional analysis).|Age-adjusted;|1089,6660000000002 +BOLIVIA (PLURINATIONAL STATE OF)|Latin America and the Caribbean|South America|Lower Middle Income|1998|5993|0,7|1,6|33,2|5,9|10,7|Encuesta nacional de demografia y salud 1998. Demographic and Health Surveys. La Paz, Bolivia, 1998 (and additional analysis).||1141,989 +BOLIVIA (PLURINATIONAL STATE OF)|Latin America and the Caribbean|South America|Lower Middle Income|2003-04|9986|0,6|1,7|32,4|5,8|9,2|Encuesta nacional de demografia y salud (ENDSA) 2003. Demographic and Health Surveys. La Paz, Bolivia: Instituto Nacional de Estadistica, Ministerio de Salud y Deportes, Programa Measure DHS+/ORC Macro, 2004 (and additional analysis).||1180,765 +BOLIVIA (PLURINATIONAL STATE OF)|Latin America and the Caribbean|South America|Lower Middle Income|2008|8564|0,5|1,4|27,1|4,5|8,7|Encuesta nacional de demografía y salud ENDSA 2008. Demographic and Health Surveys. La Paz, Bolivia: MSD, PRS, INE y Macro International, 2009 (and additional analysis).||1188,421 +BOLIVIA (PLURINATIONAL STATE OF)|Latin America and the Caribbean|South America|Lower Middle Income|2012|10887|0,5|1,6|18,1|3,6||Encuesta de Evaluación de Salud y Nutrición 2012: Informe de Resultados |(pending reanalysis)|1189,367 +BOLIVIA (PLURINATIONAL STATE OF)|Latin America and the Caribbean|South America|Lower Middle Income|2016|5250|0,9|2,0|16,1|3,4|10,1|Bolivia Encuesta de Demografia y Salud - EDSA 2016: Indicadores Priorizados (and additional analysis)||1188,513 +BOSNIA AND HERZEGOVINA|Europe|Southern Europe|Upper Middle Income|2000|2598|3,5|7,4|12,1|4,2|16,3|Household survey of women and children: Bosnia and Herzegovina 2000 (B&H MICS 2000): Draft final report, May 29, 2002. Sarajevo, Bosnia and Herzegovina: UNICEF, 2002 (and additional analysis).||235,649 +BOSNIA AND HERZEGOVINA|Europe|Southern Europe|Upper Middle Income|2006|3158|1,5|4,0|11,8|1,6|25,6|Bosnia and Herzegovina multiple indicator cluster survey 2006. Sarajevo, Bosnia and Herzegovina: UNICEF, 2007 (and additional analysis).||165,667 +BOSNIA AND HERZEGOVINA|Europe|Southern Europe|Upper Middle Income|2011-12|2199|1,6|2,3|8,9|1,6|17,4|Institute for Public Health [Federation of Bosnia and Herzegovina]. Bosnia and Herzegovina multiple indicator cluster survey (MICS) 2011-2012. Final report. Sarajevo, Federation of Bosnia and Herzegovina: UNICEF, 2013 (and additional analysis).||179,641 +BOTSWANA|Africa|Southern Africa|Upper Middle Income|1996|||13,2|35,1|15,1||The 1996 Botswana family health survey III. Gaborone: Central Statistics Office, 1999 (and additional analysis).|Converted estimates|222,23 +BOTSWANA|Africa|Southern Africa|Upper Middle Income|2000|177285|2,7|5,9|29,1|11,1|10,1|Multiple indicator survey (MIS) 2000. Full report. Gaborone, Botswana, 2001 (and additional analysis).||220,976 +BOTSWANA|Africa|Southern Africa|Upper Middle Income|2007-08|2623|3,2|7,2|31,4|11,2|11,2|2007 Botswana family health survey IV report. Gaborone, Botswana: CSO, 2009 (and additional analysis by UNICEF).||221,702 +BRAZIL|Latin America and the Caribbean|South America|Upper Middle Income|1989|7276|||19,4|5,3||Growth and nutritional status of the Brazilian children: findings from the 1989 National Health and Nutrition Survey. Country Studies on Nutritional Anthropometry NUT/ANTREF/1/91. Geneva: World Health Organization, 1991 (and additional analysis).||18121,635 +BRAZIL|Latin America and the Caribbean|South America|Upper Middle Income|1996|4139|1,0|2,8|13,0|4,5|6,0|Pesquisa nacional sobre demografia e saude 1996. Demographic and Health Surveys. Rio de Janeiro, Brasil: Litografia Tucano Ltda., 1997 (and additional analysis).||17560,196 +BRAZIL|Latin America and the Caribbean|South America|Upper Middle Income|2002-03|17107||||3,7||Pesquisa de orçamentos familiares (POF - 2002-03). Rio de Janeiro, Brazil, 2007 (http://www.ibge.gov.br/home/estatistica/populacao/condicaodevida/pof/2003medidas/default.shtm).||17389,623 +BRAZIL|Latin America and the Caribbean|South America|Upper Middle Income|2006-07|12754059|0,4|1,8|7,0|2,2|6,4|Pesquisa nacional de demografia e saúde da criança e da mulher - PNDS 2006. Relatório da pesquisa. Sao Paulo: CEBRAP, 2008 (and additional analysis).||15733,44 +BRUNEI DARUSSALAM|Asia|South-Eastern Asia|High Income|2009|1126|0,4|2,9|19,7|9,6|8,3|2nd National health and nutritional status survey (NHANSS). Phase 1: 0-5 years old. Brunei Darussalam, January 2013.||31,444000000000003 +BULGARIA|Europe|Eastern Europe|Upper Middle Income|2004|315|1,3|3,2|8,8|1,6|13,6|National monitoring of dietary intake and nutritional status of Bulgarian population, 2004. Department of Nutrition and Public Health, National Center of Public Health Protection, Sofia, Bulgaria (and additional analysis).|Age interval 1-5; unadjusted;|322,05400000000003 +BURKINA FASO|Africa|Western Africa|Low Income|1992-93|4557|5,9|15,4|38,7|28,7|2,8|Enquête démographique et de santé, Burkina Faso 1993. Demographic and Health Surveys. Ouagadougou, Burkina Faso, 1994 (and additional analysis).||1794,8529999999998 +BURKINA FASO|Africa|Western Africa|Low Income|1998-99|3941|5,6|15,6|41,4|30,9|1,9|Enquête démographique et de santé, Burkina Faso 1998-1999. Demographic and Health Surveys. Calverton, Maryland (USA): Macro International Inc., 2000 (and additional analysis).||2113,626 +BURKINA FASO|Africa|Western Africa|Low Income|2003|9290|9,7|21,2|43,1|35,2|5,4|Enquête démographique et de santé du Burkina Faso 2003. Demographic and Health Surveys. Calverton, Maryland, USA: INSD et ORC Macro, 2004 (and additional analysis).||2360,659 +BURKINA FASO|Africa|Western Africa|Low Income|2006|4321|12,1|24,4|40,0|35,9|7,0|Burkina Faso, suivi de la situation des enfants et des femmes. Enquête par grappes à indicateurs multiples 2006. Burkina Faso, 2008 (and additional analysis).||2564,729 +BURKINA FASO|Africa|Western Africa|Low Income|2009|15318|2,7|11,3|35,1|26,0||Enquête nutritionnelle nationale 2009. Ouagadougou, Burkina Faso: Direction de la Nutrition, 2009 (and additional analysis).||2773,744 +BURKINA FASO|Africa|Western Africa|Low Income|2010|7222|5,9|15,5|34,7|26,2|2,8|Enquête démographique et de santé et à indicateurs multiples du Burkina Faso 2010. Demographic and Health Surveys and MICS. Calverton, Maryland, USA: INSD, 2012 (and additional analysis).||2842,945 +BURKINA FASO|Africa|Western Africa|Low Income|2011|47342|2,2|10,4|34,6|25,1|0,7|Rapport enquête nutritionnelle nationale 2011. Ouagadougou, Burkona Faso, 2012 (and additional analysis)||2920,98 +BURKINA FASO|Africa|Western Africa|Low Income|2012|18172|1,9|10,7|32,8|24,3|0,6|Enquête nutritionnelle nationale 2012. Rapport final. Ouagadougou, Burkina Faso, 2012 (and additional analysis)||2986,453 +BURKINA FASO|Africa|Western Africa|Low Income|2013|15312|1,6|8,1|31,3|20,9|0,8|Enquete Nutritionnelle Nationale 2013 (and additional analysis)||3044,453 +BURKINA FASO|Africa|Western Africa|Low Income|2014|15881|1,8|8,6|29,0|20,1|1,1|Enquete Nutritionnelle Nationale - Rapport final, Burkina Faso, Décembre 2014 (and additonal analysis)||3101,095 +BURKINA FASO|Africa|Western Africa|Low Income|2016|9684|1,4|7,5|26,8|18,9|1,2|Enquête nutritionnelle nationale 2016. Burkina Faso SMART Survey, Rapport final, December 2016 (and additional analysis).||3220,6459999999997 +BURKINA FASO|Africa|Western Africa|Low Income|2017|19504|2,0|8,6|21,1|16,2|1,7|Enquête Nutritionnelle Nationale, Burkina Faso 2017 (and additional analysis)||3281,716 +BURUNDI|Africa|Eastern Africa|Low Income|1987|1956|1,3|6,7|56,2|33,6|1,3|Enquête démographique et de la santé au Burundi, 1987. Demographic and Health Surveys. Gsitega, Burundi, 1988 (and additional analysis).|Age-adjusted;|1006,087 +BURUNDI|Africa|Eastern Africa|Low Income|2000|2359|3,8|9,9|64,0|40,0|1,5|Enquête nationale d'evaluation des conditions de vie de l'enfant et de la femme au Burundi (ENECEF-BURUNDI 2000): Rapport final (MICS). Bujumbura: République du Burundi and UNICEF, 2001 (and additional analysis).||1154,396 +BURUNDI|Africa|Eastern Africa|Low Income|2005|7065||9,0|57,7|35,2||Rapport de l'enquête nationale de nutrition de la population, 2005. Bujumbura, Burundi, October 2006 (and additional analysis).|Converted estimates|1279,3310000000001 +BURUNDI|Africa|Eastern Africa|Low Income|2010-11|3646|1,4|6,0|57,6|29,1|2,9|Enquête démographique et de santé Burundi 2010. Demographic and Health Surveys. Bujumbura, Burundi : ISTEEBU, MSPLS, et ICF International, 2012 (and additional analysis).||1577,319 +BURUNDI|Africa|Eastern Africa|Low Income|2016-17|6464|0,9|5,1|55,9|29,3|1,4|Troisième Enquête Démographique et de Santé. Bujumbura, Burundi 2016-17: ISTEEBU, MSPLS, et ICF (and additional analysis)||1901,345 +CABO VERDE|Africa|Western Africa|Lower Middle Income|1985|9450||4,2|26,8|13,7||Better health data with a portable microcomputer at the periphery: an anthropometric survey in Cape Verde. Bulletin of the World Health Organization 1987;65:651-657 (and additional analysis).|Age-adjusted; converted estimates|57,03 +CABO VERDE|Africa|Western Africa|Lower Middle Income|1994|1610||6,9|21,4|11,8||A saude das crianças menores de cinco anos em Cabo Verde. Ministério de Saude e Promoçao Social e UNICEF. Cabo Verde, 1996 (and additional analysis).|Converted estimates|63,597 +CAMBODIA|Asia|South-Eastern Asia|Lower Middle Income|1996|5773|4,5|13,4|58,6|42,6|6,5|Socio economic survey of Cambodia 1996: Volume 1, summary results. National Institute of Statistics. Phnom Penh, Cambodia, 1997 (and additional analysis).||1750,3029999999999 +CAMBODIA|Asia|South-Eastern Asia|Lower Middle Income|2000|3617|7,5|17,1|49,0|39,7|4,0|Cambodia demographic and health survey 2000. Demographic and Health Surveys. Phnom Penh, Cambodia, and Calverton, Maryland, USA: National Institute of Statistics, Directorate General for Health, and ORC Macro, 2001 (and additional analysis).||1574,6570000000002 +CAMBODIA|Asia|South-Eastern Asia|Lower Middle Income|2005-06|3696|1,8|8,5|42,7|28,3|1,6|Cambodia demographic and health survey 2005. Demographic and Health Surveys. Phnom Penh, Cambodia and Calverton, Maryland, USA: National Institute of Public Health, National Institute of Statistics and ORC Macro, 2006 (and additional analysis).||1531,38 +CAMBODIA|Asia|South-Eastern Asia|Lower Middle Income|2008|49833504|1,9|9,1|39,5|28,3|2,0|Cambodia anthropometrics survey 2008. Phnom Penh, Cambodia: National Institute of Statistics, Ministry of Planning and UNICEF Cambodia, 2009 (and additional analysis).||1620,999 +CAMBODIA|Asia|South-Eastern Asia|Lower Middle Income|2010-11|4087|2,8|11,0|39,8|28,9|1,9|Cambodia demographic and health survey 2010. Demographic and Health Surveys. Phnom Penh, Cambodia and Calverton, Maryland, USA: National Institute of Statistics, Directorate General for Health, and ICF Macro, 2011 (and additional analysis).||1671,681 +CAMBODIA|Asia|South-Eastern Asia|Lower Middle Income|2014|5005|2,5|9,8|32,4|24,1|2,2|Cambodia Demographic and Health Survey 2014. Phnom Penh, Cambodia, and Rockville, Maryland, USA: National Institute of Statistics, Directorate General for Health, and ICF International (and additional analysis)||1758,251 +CAMEROON|Africa|Middle Africa|Lower Middle Income|1991|2421|1,1|4,5|31,6|12,9|4,7|Enquête démographique et de santé Cameroun, 1991. Demographic and Health Surveys. Yaoundé, République du Cameroun, 1992 (and additional analysis).||2239,077 +CAMEROON|Africa|Middle Africa|Lower Middle Income|1998|2070|1,8|6,2|38,2|17,3|8,2|Enquete démographique et de santé, Cameroun 1998. Demographic and Health Surveys. Calverton, Maryland, U.S.A. : Bureau Central des Recensements et des Études de Population et Macro International Inc., 1999 (and additional analysis).|Age-adjusted;|2520,186 +CAMEROON|Africa|Middle Africa|Lower Middle Income|2004|3867|2,3|6,2|35,6|15,1|8,7|Enquête démographique et de santé du Cameroun 2004. Demographic and Health Surveys. Calverton, Maryland, USA: INS et ORC Macro, 2004 (and additional analysis).||2899,3979999999997 +CAMEROON|Africa|Middle Africa|Lower Middle Income|2006|6077|2,9|8,2|37,1|16,5|10,2|Cameroun: Suivi de la situation des enfants et des femmes. Enquête par grappee à indicateurs multiples 2006. Rapport principal. Yaoundé, Cameroun: Institut National de la Statistique et UNICEF, 2008 (and additional analysis).||3081,8920000000003 +CAMEROON|Africa|Middle Africa|Lower Middle Income|2011|6014|2,0|5,7|32,6|15,2|6,4|Enquête démographique et de santé et à indicateurs multiples du Cameroun 2011. Demographic and Health Surveys and MICS. Calverton, Maryland, USA : INS et ICF International, 2012 (and additional analysis)||3477,5640000000003 +CAMEROON|Africa|Middle Africa|Lower Middle Income|2014|6776|1,3|5,2|31,7|14,8|6,7|Enquête par grappes à indicateurs multiples (MICS5), 2014, Rapport Final. Yaoundé, Cameroun, Institut National de la Statistique (and additional analysis)||3679,344 +CANADA|Northern America|Northern America|High Income|2004||||||10,4|Canadian childhood obesity estimates based on WHO, IOTF and CDC cut-points. International Journal of Pediatric Obesity 2010;5:265-73.|Age-adjusted; overweight using BMI-for-age z-scores|1704,406 +CENTRAL AFRICAN REPUBLIC (THE)|Africa|Middle Africa|Low Income|1994-95|2448|2,6|8,7|41,5|24,0|3,7|Enquête demographique et de santé République Centrafricaine 1994-95. Demographic and Health Surveys. Calverton, Maryland, USA: Direction des Statistiques Démographiques et Sociales et Macro Inc., 1995 (and additional analysis).|Age-adjusted;|539,518 +CENTRAL AFRICAN REPUBLIC (THE)|Africa|Middle Africa|Low Income|2000|11700|4,7|10,4|44,4|21,3|10,8|Enquête à indicateurs mutliples - MICS 2000. Rapport Final. Bangui, République Centrafricaine: BBA editions, 2001 (and additional analysis).||612,089 +CENTRAL AFRICAN REPUBLIC (THE)|Africa|Middle Africa|Low Income|2006|7775|5,2|12,6|43,1|26,1|8,1|Suivi de la situation des enfants et des femmes. MICS-3 Résultats de l'enquête nationale à indicateurs multiples couplée avec la sérologie VIH et enémie en RCA 2006. Bangui, Republique Centrafricaine: ICASEES, 2009 (and additional analysis).||686,053 +CENTRAL AFRICAN REPUBLIC (THE)|Africa|Middle Africa|Low Income|2010-11|10233|3,0|8,3|40,7|24,0|1,8|Suivi de la situation des enfants, des femmes et des hommes. Enquête par grappes à indicateurs multiples - MICS couplée avec la sérologie VIH, RCA, 2010: Rapport final. Bangui, RCA: ICASEES, 2012 (and additional analysis)||713,165 +CENTRAL AFRICAN REPUBLIC (THE)|Africa|Middle Africa|Low Income|2012|15458|1,8|7,6|39,6|24,6|1,9|Enquete Nationale Sur La Situation Nutritionnelle et la Mortalité en Republique Centrafricaine, Rapport Finale du 30 Mai au 15 Juillet 2012 (and additional analysis)||724,416 +CHAD|Africa|Middle Africa|Low Income|1996-97|5913|6,1|16,5|44,5|34,3|2,7|Enquête démographique et de santé, Tschad 1996-97. Demographic and Health Surveys. Calverton, Maryland, USA: Bureau Central du Recensement et Macro International Inc., 1998 (and additional analysis).||1515,2420000000002 +CHAD|Africa|Middle Africa|Low Income|2000|5191|4,2|13,9|38,9|29,2|2,7|Enquête par grappes à indicateurs multiples: Rapport complet (MICS). N'Djamena: Direction Generale, Direction de la Statistique, des Etudes Economiques et Demographiques, Bureau Central de Recensement et UNICEF,January 2001 (and additional analysis).||1684,3120000000001 +CHAD|Africa|Middle Africa|Low Income|2004|4871|6,6|16,2|44,4|33,8|4,2|Enquête démographique et de santé Tchad 2004. Demographic and Health Surveys. Calverton, Maryland, U.S.A. : INSEED et ORC Macro, 2005 (and additional analysis).||1947,111 +CHAD|Africa|Middle Africa|Low Income|2010|12903|9,9|19,4|38,7|33,0|2,7|Enquête par grappes à indicateurs multiples (MICS), Tchad 2010: Rapport final. N'Djamena, République du Tchad, 2011 (and additional analysis)||2293,915 +CHAD|Africa|Middle Africa|Low Income|2014-15|11253|4,4|13,3|39,8|29,4|2,8|Enquête Démographique et de Santé et à Indicateurs Multiples du Tchad 2014-2015. Rockville, Maryland, USA: INSEED, MSP et ICF International, 2016 (and additional analysis)||2600,644 +CHILE|Latin America and the Caribbean|South America|High Income|1986|196467||0,7|13,5|2,2|15,4|Estado nutricional de la poblacion infantil, 1986. Santiago, Republica de Chile, 1987 (and additional analysis).|Converted estimates|1346,1860000000001 +CHILE|Latin America and the Caribbean|South America|High Income|1994|1181816||0,5|4,2|0,8|10,1|National health service system. Santiago: Nutrition Unit, 1994 (and additional analysis).|Converted estimates|1413,911 +CHILE|Latin America and the Caribbean|South America|High Income|1995|||0,5|3,9|0,8|10,9|National health service system. Santiago, Chile, December 1995 (and additional analysis).|Converted estimates|1398,9679999999998 +CHILE|Latin America and the Caribbean|South America|High Income|1996|1148353||0,5|3,7|0,7|10,7|National health service system. Santiago, Chile, 1997 (and additional analysis).|Converted estimates|1372,7420000000002 +CHILE|Latin America and the Caribbean|South America|High Income|1998|1063064||0,6|3,3|0,7|11,2|Boletin anual de vigilancia nutricional, año 1998. Departamento Coordinacion e Informatica. Santiago, Republica de Chile, 1999 (and additional analysis).|Converted estimates|1343,818 +CHILE|Latin America and the Caribbean|South America|High Income|1999|1031657||0,5|3,1|0,7|11,9|Boletin anual de vigilancia nutricional, año 1999. Departamento Coordinacion e Informatica. Santiago, Republica de Chile, 2000 (and additional analysis).|Converted estimates|1333,0720000000001 +CHILE|Latin America and the Caribbean|South America|High Income|2001|1002454||0,5|2,8|0,7|12,9|National health service system. Santiago, Chile, 2002 (and additional analysis).|Converted estimates|1305,382 +CHILE|Latin America and the Caribbean|South America|High Income|2002|1022552||0,5|2,5|0,7|12,0|National health service system. Santiago, Chile, 2003 (and additional analysis).|Converted estimates|1290,797 +CHILE|Latin America and the Caribbean|South America|High Income|2003|1022896||0,5|2,5|0,6|12,1|National health service system. Santiago, Chile, 2005. http://deis.minsal.cl/ev/en/ capturado el 9 de junio 2005 (and additional analysis).|Converted estimates|1275,786 +CHILE|Latin America and the Caribbean|South America|High Income|2004|1008335||0,5|2,4|0,6|12,1|National health service system. Santiago, Chile, 2005. http://deis.minsal.cl/ev/en/ capturado el 9 de junio 2005 (and additional analysis).|Converted estimates|1262,786 +CHILE|Latin America and the Caribbean|South America|High Income|2006|973578||0,5|2,2|0,6|11,7|National health service system. Santiago, Chile, 2006. http://deis.minsal.cl/ev/en/ (and additional analysis).|Converted estimates|1248,194 +CHILE|Latin America and the Caribbean|South America|High Income|2007|946528||0,3|2,1|0,6|9,8|Ministerio de Salud. National Health Service System. Santiago, Chile, December 2007 (www.minsal.cl).||1246,249 +CHILE|Latin America and the Caribbean|South America|High Income|2008|964033||0,3|2,0|0,5|9,5|Ministerio de Salud. National Health Service System. Santiago, Chile, December 2008 (www.minsal.cl).||1246,285 +CHILE|Latin America and the Caribbean|South America|High Income|2013|988663||0,3|1,8|0,5|10,1|National health service system: 2013. Santiago, Chile, 2014 (and additional analysis).||1220,741 +CHILE|Latin America and the Caribbean|South America|High Income|2014|839435||0,3|1,8|0,5|9,3|National health service system: 2014. Santiago, Chile, 2015 (and additional analysis).||1206,927 +CHINA|Asia|Eastern Asia|Upper Middle Income|1987|76130||4,8|38,3|18,7||The third national growth and development survey of children in China, 1987 (and additional analysis).|Converted estimates-9 province|120606,621 +CHINA|Asia|Eastern Asia|Upper Middle Income|1990|4332|1,4|4,2|32,3|12,6|5,3|Nutritional status of children aged 0-5 years old in China (1990) - National surveillance system in 7 provinces. Beijing, China: Chinese Center for Disease Control and Prevention, 2010.|NSS: 7 provinces|133229,699 +CHINA|Asia|Eastern Asia|Upper Middle Income|1992|5535|1,3|3,9|38,0|14,2|7,2|The dietary and nutritional status of Chinese population: 1992 national nutrition survey. Beijing: Institute of Nutrition and Food Hygiene, 1995 (and additional analysis).||131239,77800000002 +CHINA|Asia|Eastern Asia|Upper Middle Income|1995|2832|1,8|5,0|31,2|10,7|13,6|Nutritional status of children aged 0-5 years old in China (1995) - National surveillance system in 7 provinces. Beijing, China: Chinese Center for Disease Control and Prevention, 2010.|NSS: 7 provinces|103277,82199999999 +CHINA|Asia|Eastern Asia|Upper Middle Income|1998|13838|0,6|2,4|19,8|6,9|5,5|Nutritional status of children aged 0-5 years old in China (1998) - National (40 nutrition surveillance sites from 26 provinces). Beijing, China: Chinese Center for Disease Control and Prevention, 2010.|NSS: 26 provinces|82804,567 +CHINA|Asia|Eastern Asia|Upper Middle Income|2000|16460|0,5|2,5|17,8|7,4|3,4|Nutritional status of children aged 0-5 years old in China (2000) - National (40 nutrition surveillance sites from 26 provinces). Beijing, China: Chinese Center for Disease Control and Prevention, 2010.|NSS: 26 provinces|81757,54400000001 +CHINA|Asia|Eastern Asia|Upper Middle Income|2002|16564|0,8|3,0|21,8|6,8|9,2|[Trends and prevalence of malnutrition among Chinese children under five years old.] Acta Nutrimenta Sinica 2005;25:185-88 (and additional analysis).||82161,492 +CHINA|Asia|Eastern Asia|Upper Middle Income|2005|15987|0,8|2,9|11,7|4,5|5,9|Nutritional status of children aged 0-5 years old in China (2005) - National (40 nutrition surveillance sites from 26 provinces). Beijing, China: Chinese Center for Disease Control and Prevention, 2010.|NSS: 26 provinces|79269,322 +CHINA|Asia|Eastern Asia|Upper Middle Income|2008|10726|0,6|2,6|9,8|3,8|5,8|Nutritional status of children aged 0-5 years old in China (2008) - National (26 nutrition surveillance sites from rural areas). Beijing, China: Chinese Center for Disease Control and Prevention, 2010.|Adjusted NR to NA; NSS: 26 surveillance sites|81658,41900000001 +CHINA|Asia|Eastern Asia|Upper Middle Income|2009|10635|0,7|2,6|9,0|3,4|5,7|Nutrition and rapid economic development - 2010 research report on nutrition policy in China. Beijing, China: Chinese Center for Disease Control and Prevention, 2010 (and additional analysis).|Adjusted NR to NA; NSS: 26 surveillance sites|81971,341 +CHINA|Asia|Eastern Asia|Upper Middle Income|2010|15399|0,7|2,3|9,4|3,4|6,6|Nutritional status of children aged 0-5 years old in China (2010) - National (38 nutrition surveillance sites from 25 provinces). Beijing, China: Chinese Center for Disease Control and Prevention, 2012 (and additional analysis).|NSS: 25 provinces|82581,42599999999 +CHINA|Asia|Eastern Asia|Upper Middle Income|2013|28840||1,9|8,1|2,4|9,1|China Nutrition and Health Surveillance (CNHS) 2013||84981,605 +COLOMBIA|Latin America and the Caribbean|South America|Upper Middle Income|1986|1317|0,3|1,0|26,6|8,9|4,2|Tercera encuesta nacional de prevalencia del uso de anticonceptivos y primera de demografia y salud, 1986. Demographic and Health Surveys. Institute for Resource Development. Bogota, Colombia, 1988 (and additional analysis).|Age-adjusted;|4301,99 +COLOMBIA|Latin America and the Caribbean|South America|Upper Middle Income|1989|1973||3,8|21,8|8,8||Consistent improvement in the nutritional status of Colombian children between 1965 and 1989. Bulletin of PAHO 1992;26:1-13 (and additional analysis).|Converted estimates|4334,596 +COLOMBIA|Latin America and the Caribbean|South America|Upper Middle Income|1995|4458|0,5|1,7|19,6|6,3|4,5|Encuesta nacional de demografia y salud 1995. Demographic and Health Surveys. Bogota, Colombia, 1995 (and additional analysis).||4351,073 +COLOMBIA|Latin America and the Caribbean|South America|Upper Middle Income|2000|4119|0,4|1,0|18,2|4,9|5,3|Salud sexual y reproductiva en Colombia, encuesta nacional de demografia y salud 2000. Demographic and Health Surveys. Bogota, Colombia: PROFAMILIA, 2000 (and additional analysis).||4151,616 +COLOMBIA|Latin America and the Caribbean|South America|Upper Middle Income|2004-05|12752|0,4|1,6|16,0|5,0|4,2|Resultados encuesta nacional de demografia y salud 2005. Demographic and Health Surveys. Bogota, Colombia: Profamilia y Macro International Inc., 2005 (and additional analysis).||4112,844 +COLOMBIA|Latin America and the Caribbean|South America|Upper Middle Income|2009-10|15775|0,2|0,9|12,6|3,4|4,8|Encuesta nacional de demografia y salud 2010. Demographic and Health Surveys. Bogota, Colombia: Profamilia, 2011 (and additional analysis).||3929,005 +COMOROS (THE)|Africa|Eastern Africa|Low Income|1991-92|1954||5,3|38,5|15,2||Rapport sur l'état nutritionnel et les facteurs impliqués chez les enfants de moins de deux ans en République Fédérale Islamique des Comores 1991. Direction de la Santé Familiale. Comores, 1995 (and additional analysis).|Age-adjusted; converted estimates|77,982 +COMOROS (THE)|Africa|Eastern Africa|Low Income|1996|1005|4,5|10,7|40,0|21,1|5,3|Enquête demographique et de santé, Comores 1996. Demographic and Health Surveys. Centre National de Documentation et de Recherche Scientifique. Moroni, Comores, 1997 (and additional analysis).|Age-adjusted;|83,016 +COMOROS (THE)|Africa|Eastern Africa|Low Income|2000|4314|7,2|13,3|46,9|25,1|21,5|Enquête a indicateurs multiples (MICS 2000): Rapport final (1er draft Février 2001). Moroni, Comoros: UNICEF, 2001 (and additional analysis).||88,75200000000001 +COMOROS (THE)|Africa|Eastern Africa|Low Income|2012|3169|4,5|11,3|31,1|16,9|10,6|Enquête démographique et de santé et à indicateurs multiples aux Comores 2012. Demographic and Health Surveys and MICS. Rockville, MD 20850, USA : DGSP et ICF International, 2014 (and additional analysis).||111,399 +CONGO (THE)|Africa|Middle Africa|Lower Middle Income|1987|2429||6,6|30,1|16,4|1,6|Enquête nationale sur l'état nutritionnel des enfants d'age prescolaire au Congo. Collection Etudes et Theses. Paris: ORSTOM, Institut Français de Recherche Scientifique pour le Développement en Coopération, 1990 (and additional analysis).|Adjusted NR to NA; Converted estimates|379,792 +CONGO (THE)|Africa|Middle Africa|Lower Middle Income|2005|4697|3,0|8,0|31,2|11,9|8,5|Enquête démographique et de santé du Congo 2005. Demographic and Health Surveys. Calverton, Maryland, USA : CNSEE et ORC Macro, 2006 (and additional analysis).||615,452 +CONGO (THE)|Africa|Middle Africa|Lower Middle Income|2011-12|4648|1,7|6,0|24,4|11,8|3,5|Enquête démographique et de santé du Congo (EDSC-II) 2011-2012. Demographic and Health Surveys. Calverton, Maryland, USA : CNSEE et ICF International, 2013 (and additional analysis).||754,671 +CONGO (THE)|Africa|Middle Africa|Lower Middle Income|2014-15|8757|2,6|8,2|21,2|12,3|5,9|Enquête par grappes à indicateurs multiples (MICS5 2014-2015), Rapport final. Brazzaville, Congo : Institut National de la Statistique et UNICEF (and additional analysis)||813,95 +COSTA RICA|Latin America and the Caribbean|Central America|Upper Middle Income|1989|197000||||2,4||Analisis del estado nutricional de la poblacion Costarricense 1992. Departamento de Nutricion y Atencion Integral, Seccion Vigilancia Nutricional. San Jose, Costa Rica, 1994 (and additional analysis).|NSS; converted estimate|395,31800000000004 +COSTA RICA|Latin America and the Caribbean|Central America|Upper Middle Income|1990|190000||||2,5||Analisis del estado nutricional de la poblacion Costarricense 1992. Departamento de Nutricion y Atencion Integral, Seccion Vigilancia Nutricional. San Jose, Costa Rica, 1994 (and additional analysis).|NSS; converted estimate|400,13 +COSTA RICA|Latin America and the Caribbean|Central America|Upper Middle Income|1991|191000||||2,2||Analisis del estado nutricional de la poblacion Costarricense 1992. Departamento de Nutricion y Atencion Integral, Seccion Vigilancia Nutricional. San Jose, Costa Rica, 1994 (and additional analysis).|NSS; converted estimate|402,564 +COSTA RICA|Latin America and the Caribbean|Central America|Upper Middle Income|1992|176935||||2,0||Analisis del estado nutricional de la poblacion Costarricense 1992. Departamento de Nutricion y Atencion Integral, Seccion Vigilancia Nutricional. San Jose, Costa Rica, 1994 (and additional analysis).|NSS; converted estimate|404,279 +COSTA RICA|Latin America and the Caribbean|Central America|Upper Middle Income|1993|174000||||2,0||Estado nutricional de preescolares atendidos por el programa de atencion primaria. Departamento de Nutriticion, Seccion de Vigilancia Nutricional. San José, Costa Rica, 1996 (and additional analysis).|NSS; converted estimate|405,24199999999996 +COSTA RICA|Latin America and the Caribbean|Central America|Upper Middle Income|1994|161000||||1,9||Estado nutricional de preescolares atendidos por el programa de atencion primaria. Departamento de Nutriticion, Seccion de Vigilancia Nutricional. San José, Costa Rica, 1996 (and additional analysis).|NSS; converted estimate|405,64599999999996 +COSTA RICA|Latin America and the Caribbean|Central America|Upper Middle Income|1996|1008||2,4|8,2|3,8|9,5|Encuesta nacional de nutricion: 1 fasciculo antropometria. San Jose, Costa Rica, 1996 (and additional analysis).|Age-adjusted; converted estimates|404,29400000000004 +COSTA RICA|Latin America and the Caribbean|Central America|Upper Middle Income|2008-09|351||1,0|5,6|1,1|8,1|Encuesta nacional de nutricion 2008-2009. San Jose, Costa Rica, 2011.||356,955 +COTE D'IVOIRE|Africa|Western Africa|Lower Middle Income|1986|1947||10,3|22,5|10,8||Malnutrition in Côte d'Ivoire, prevalence and determinants. Working paper No. 4. Washington D.C.: The World Bank, 1990 (and additional analysis).|Converted estimates|1959,655 +COTE D'IVOIRE|Africa|Western Africa|Lower Middle Income|1994|3486|2,2|8,3|34,2|20,3|2,5|Enquête demographique et de santé, Côte d'Ivoire 1994. Demographic and Health Surveys. Abidjan, Côte d'Ivoire, 1995 (and additional analysis).|Age-adjusted;|2454,409 +COTE D'IVOIRE|Africa|Western Africa|Lower Middle Income|1998-99|1690|1,9|6,9|31,2|18,2|4,6|Enquête démographique et de santé, Côte d'Ivoire 1998-99. Demographic and Health Surveys. Calverton, Maryland, USA: Institut National de la Statistique et ORC Macro, 2001 (and additional analysis).||2757,551 +COTE D'IVOIRE|Africa|Western Africa|Lower Middle Income|2006|8482|3,4|9,0|40,5|16,5|8,9|Enquête à indicateurs multiples, Côte d'Ivoire 2006, Rapport final, Abidjan, Côte d'Ivoire : INS, 2007 (and additional analysis).||3146,3 +COTE D'IVOIRE|Africa|Western Africa|Lower Middle Income|2007|854|5,4|14,0|39,0|29,4|4,9|Evaluation des carences en vitamine A et fer en Côte d'Ivoire (Rapport final). Ministère de la Santé et de l'Hygiène Publique et Helen Keller Int., Abidjan, Côte d'Ivoire, 2009 (and additional analysis).||3188,212 +COTE D'IVOIRE|Africa|Western Africa|Lower Middle Income|2011-12|3680|1,8|7,6|29,9|15,7|3,2|Enquête démographique et de santé et à indicateurs multiples de Côte d'Ivoire 2011-2012. Demographic and Health Surveys and MICS. Calverton, Maryland, USA : INS et ICF International, 2012 (and additional analysis).||3511,797 +COTE D'IVOIRE|Africa|Western Africa|Lower Middle Income|2016|8809|1,2|6,1|21,6|12,8|1,5|Enquête par grappes à indicateurs multiples - Côte d’Ivoire 2016, Rapport Final, Septembre 2017 (and additional analysis)||3860,612 +CUBA|Latin America and the Caribbean|Caribbean|Upper Middle Income|2000|1571||2,4|7,0|3,4||Encuesta de agrupacion de indicadores multiples: Informe final, diciembre del 2000 (MICS2). La Habana, Cuba, 2000 (and additional analysis).|Converted estimates|753,523 +CZECHIA|Europe|Eastern Europe|High Income|1991|32345||2,8|3,1|0,9|6,7|Vth. Nation-wide anthropological survey of children and adolescents 1991 (Czech Republic). Prague: National Institute of Public Health, 1993 (and additional analysis).|Converted estimates|669,528 +CZECHIA|Europe|Eastern Europe|High Income|2001-02|16932|1,0|4,6|2,6|2,1|4,4|6th nationwide anthropological survey of children and adolescents 2001, Czech Republic. Summary results. Prague, Czech Republic: National Institute of Public Health, 2006 (and additional analysis).||417,626 +DEMOCRATIC PEOPLE'S REP. OF KOREA (THE)|Asia|Eastern Asia|Low Income|1998|1263||20,8|63,9|55,5||Nutrition survey of the Democratic People's Republic of Korea. Report by the EU, UNICEF and WFP of a study undertaken in collaboration with the Government to DPRK (Internet, 7 January 1999 at http://www.wfp.org/OP/Countries/dprk/nutrion_survey.html).|Converted estimates; subtotals|2064,2329999999997 +DEMOCRATIC PEOPLE'S REP. OF KOREA (THE)|Asia|Eastern Asia|Low Income|2000|4175||12,2|51,0|24,7||Report of the second multiple indicator cluster survey 2000, DPRK (MICS). Pyongyang, Democratic People's Republic of Korea, 2000.|Converted estimates|1987,652 +DEMOCRATIC PEOPLE'S REP. OF KOREA (THE)|Asia|Eastern Asia|Low Income|2002|5297|3,5|8,7|44,7|17,8|0,9|Nutrition assessment 2002 D.P.R. Korea. Pyongyang: Government of D.P.R. Korea, United Nations Children's Fund and World Food Programme, 2003 (and additional analysis).||1931,5610000000001 +DEMOCRATIC PEOPLE'S REP. OF KOREA (THE)|Asia|Eastern Asia|Low Income|2004|4795||8,5|43,1|20,6||DPRK 2004 nutrition assessment, report of survey results. Democratic People's Republic of Korea: Central Bureau of Statistics, 2005.|Converted estimates|1924,503 +DEMOCRATIC PEOPLE'S REP. OF KOREA (THE)|Asia|Eastern Asia|Low Income|2009|2172|0,5|5,2|32,4|18,8|0,0|The Democratic People's Republic of Korea (DPR Korea) multiple indicator cluster survey 2009 (MICS4). Final Report. Pyongyang, DPR Korea: CBS and UNICEF, 2010.||1773,511 +DEMOCRATIC PEOPLE'S REP. OF KOREA (THE)|Asia|Eastern Asia|Low Income|2012|8036|0,6|4,0|27,9|15,2||Final report of the national nutrition survey 2012, September 17th to October 17th 2012. Pyongyang, Democratic People's Republic of Korea, 2013.||1696,64 +DEMOCRATIC PEOPLE'S REP. OF KOREA (THE)|Asia|Eastern Asia|Low Income|2017|2271|0,5|2,5|19,1|9,3|2,3|DPR Korea Multiple Indicator Cluster Survey 2017, Survey Findings Report. Pyongyang, DPR Korea: Central Bureau of Statistics and UNICEF ||1733,371 +DEMOCRATIC REP. OF THE CONGO (THE)|Africa|Middle Africa|Low Income|1995|4362||11,4|51,0|30,7||Enquête nationale sur la situation des enfants et des femmes au Zaire en 1995. Kinshasa, Zaire, 1996 (and additional analysis).|Converted estimates|7692,581999999999 +DEMOCRATIC REP. OF THE CONGO (THE)|Africa|Middle Africa|Low Income|2001|9170|11,9|20,9|44,4|33,6|6,5|Enquête nationale sur la situation des enfants et des femmes MICS2 / 2001. Rapport d'analyse. Kinshasa, République Démocratique du Congo, juillet 2002 (and additional analysis).||8927,312 +DEMOCRATIC REP. OF THE CONGO (THE)|Africa|Middle Africa|Low Income|2007|4149|4,8|10,4|45,8|25,6|7,0|Enquête démographique et de santé, République Démocratique du Congo 2007. Demographic and Health Surveys. Calverton, Maryland, U.S.A.: Ministère du Plan et Macro International, 2008 (and additional analysis).||10986,313999999998 +DEMOCRATIC REP. OF THE CONGO (THE)|Africa|Middle Africa|Low Income|2010|10784|5,2|10,7|43,4|25,6|4,7|Enquête par grappes à indicateurs multiples en République Démocratique du Congo (MICS-RDC 2010). Rapport final, mai 2011. Kinshasa, République Démocratique du Congo, 2011 (and additional analysis).||12126,623 +DEMOCRATIC REP. OF THE CONGO (THE)|Africa|Middle Africa|Low Income|2013-14|9397|2,9|8,1|42,7|23,4|4,4|Enquête démographique et de santé en République Démocratique du Congo 2013-2014. Demographic and Health Surveys. Rockville, Maryland, USA : MPSMRM, MSP et ICF International, 2014 (and additional analysis).||13347,831 +DJIBOUTI|Africa|Eastern Africa|Lower Middle Income|1989|3750||12,5|28,0|20,2||Enquete couverture vaccinale malnutrition. Republique de Djibouti, Djibouti: Ministere de la Sante Publique et des Affaires Sociales,1990 (and additional analysis).|Converted estimates|103,074 +DJIBOUTI|Africa|Eastern Africa|Lower Middle Income|1996|||14,9|31,7|16,0||Enquête djiboutienne auprès des ménages indicateurs sociaux (EDAM-IS 1996). Ministère du Commerce et du Tourisme, Direction Nationale de la Statistique. Djibouti ville, République de Djibouti, 1997 (and additional analysis).|Converted estimates|96,75200000000001 +DJIBOUTI|Africa|Eastern Africa|Lower Middle Income|2002|1425|9,5|19,4|26,8|24,4|8,4|Enquête djiboutienne sur la santé de la famille (EDSF/PAPFAM) 2002, PAPFAM Rapport final. Djibouti, 2004 (and additional analysis).||105,119 +DJIBOUTI|Africa|Eastern Africa|Lower Middle Income|2012|3153|9,2|21,6|33,5|29,9|8,1|Enquête djiboutienne à indicateurs multiples (EDIM): Rapport preliminaire. Djibouti: Ministère de la Santé et PAPFAM, 2013 (and additional analysis).||99,06700000000001 +DOMINICAN REPUBLIC (THE)|Latin America and the Caribbean|Caribbean|Upper Middle Income|1986|1794|1,0|3,3|20,4|8,7|3,8|Encuesta demografica y de salud, 1986. Demographic and Health Surveys. Consejo Nacional de Poblacion y Familia. Santo Domingo, Republica Dominicana, 1987 (and additional analysis).|Age-adjusted;|961,232 +DOMINICAN REPUBLIC (THE)|Latin America and the Caribbean|Caribbean|Upper Middle Income|1991|2991|0,6|2,1|21,1|8,4|4,2|Encuesta demografica y de salud 1991. Demographic and Health Surveys. Santo Domingo, Republica Dominicana, 1992 (and additional analysis).||993,17 +DOMINICAN REPUBLIC (THE)|Latin America and the Caribbean|Caribbean|Upper Middle Income|1996|3565|0,6|2,0|13,5|4,7|6,7|Encuesta demografica y de salud 1996 (DHS). Centro de Estudios Sociales y Demograficos, Asociacion Dominicana Pro Bienestar de la Familia, Oficina Nacional de Planificacion. Santo Domingo, Republica Dominicana, 1997 (and additional analysis).||1032,126 +DOMINICAN REPUBLIC (THE)|Latin America and the Caribbean|Caribbean|Upper Middle Income|2000|1869|0,5|1,5|7,7|3,3|6,9|Encuesta por conglomerados de indicadores multiples (MICS-2000). Santo Domingo, D.N.: Secretariado Técnico de la Presidencia, Fondo de las Naciones Unidas para la Infancia (UNICEF), 2001 (and additional analysis).||1019,829 +DOMINICAN REPUBLIC (THE)|Latin America and the Caribbean|Caribbean|Upper Middle Income|2002|10666|0,8|2,2|11,6|4,2|8,6|Encuesta demografica y de salud, ENDESA 2002. Demographic and Health Surveys. Santo Domingo, Republica Dominicana: Centro de Estudios Sociales y Demograficos, 2003 (and additional analysis).||1022,1310000000001 +DOMINICAN REPUBLIC (THE)|Latin America and the Caribbean|Caribbean|Upper Middle Income|2006|3782||1,9|10,5|4,6|7,4|Encuesta nacional de hogares de proposito multiples (ENHOGAR 2006): Informe general. Santo Domingo, Republica Dominicana: ONE, 2008 (and additional analysis).|Converted estimates|1065,649 +DOMINICAN REPUBLIC (THE)|Latin America and the Caribbean|Caribbean|Upper Middle Income|2007|10770|0,9|2,3|10,1|3,4|8,3|Encuesta demográfica y de salud 2007. Demographic and Health Surveys. Santo Domingo, República Dominicana: CESDEM y Macro International Inc., 2008 (and additional analysis).||1070,143 +DOMINICAN REPUBLIC (THE)|Latin America and the Caribbean|Caribbean|Upper Middle Income|2013|3667|0,8|2,4|7,1|4,0|7,6|Encuesta demográfica y de salud 2013. Demographic and Health Surveys. Santo Domingo, República Dominicana: CESDEM y ICF International, 2014 (and additional analysis).||1063,448 +ECUADOR|Latin America and the Caribbean|South America|Upper Middle Income|1986|7798||2,3|40,2|14,5||[Diagnostico de la situacion alimentaria, nutricional y de salud de la poblacion ecuatoriana menor de cinco años. Quito: Ministerio de Salud Publica y Consejo Nacional de Desarrollo, 1988 (and additional analysis).|Converted estimates|1335,5179999999998 +ECUADOR|Latin America and the Caribbean|South America|Upper Middle Income|1998|1368536|0,4|2,7|27,9|10,4|2,6|Equidad desde el principio - situacion nutricional de los niños ecuatorianos. Encuesta de condiciones de vida, 1998. Organizacion Panamericana de la Salud y Ministerio de Salud Publica, Ecuador. Washington, D.C.: OPS, 2001 (and additional analysis).||1507,441 +ECUADOR|Latin America and the Caribbean|South America|Upper Middle Income|2004|5263|0,7|2,0|29,2|6,7|5,3|Encuesta demografía y de salud materna e infantil, ENDEMAIN 2004: Informe final. Quito, Ecuador: CEPAR, 2005 (and additional analysis).||1515,4920000000002 +ECUADOR|Latin America and the Caribbean|South America|Upper Middle Income|2005-06|1438765|0,5|2,1|25,9|6,8|5,2|Ecuador - Encuesta de Condiciones De Vida 2005-2006 v.1.4, V Ronda (and additional analysis)||1518,099 +ECUADOR|Latin America and the Caribbean|South America|Upper Middle Income|2012-13|1621518|0,7|2,4|25,4|6,4|7,5|RESUMEN EJECUTIVO. TOMO I. Encuesta Nacional de Salud y Nutrición del Ecuador. ENSANUT-ECU 2011-2013 Ministerio de Salud Pública/Instituto Nacional de Estadística y Censos. (and additional analysis).||1603,808 +ECUADOR|Latin America and the Caribbean|South America|Upper Middle Income|2013-14|1523946|0,6|1,6|23,9|5,1|8,0|Tabulados Encuesta de Condiciones de Vida 2014 - Sexta Ronda (and additional analysis)||1607,961 +EGYPT|Africa|Northern Africa|Lower Middle Income|1988|2077|0,6|1,9|34,0|9,4|6,9|Egypt demographic and health survey 1988. Demographic and Health Surveys. Egypt National Population Council. Cairo, Egypt, 1989 (and additional analysis).|Age-adjusted;|8787,823 +EGYPT|Africa|Northern Africa|Lower Middle Income|1991|3614|2,3|4,5|34,9|10,5|14,9|Egyptian maternal and child health survey (EMCHS). PAPCHILD Surveys. Agency for Public Mobilisation and Statistics. Cairo, Arab Republic of Egypt, 1992 (and additional analysis).||9132,702 +EGYPT|Africa|Northern Africa|Lower Middle Income|1992-93|7644|1,8|4,0|31,1|8,2|14,3|Egypt demographic and health survey 1992. Demographic and Health Surveys. Cairo, Egypt, 1993 (and additional analysis).||8873,349 +EGYPT|Africa|Northern Africa|Lower Middle Income|1995-96|10226|2,3|5,7|34,8|10,8|14,6|Egypt demographic and health survey 1995. Demographic and Health Surveys. National Population Council. Cairo, Egypt, 1996 (and additional analysis).||8510,313 +EGYPT|Africa|Northern Africa|Lower Middle Income|1997-98|3328||7,5|30,9|10,2||Egypt demographic and health survey 1997. Demographic and Health Surveys. El-Zanaty and Associates, Cairo, Egypt, 1998 (and additional analysis).|Converted estimates|8156,704000000001 +EGYPT|Africa|Northern Africa|Lower Middle Income|1998|3997||6,4|26,3|9,4||Egypt demographic and health survey 1998. Demographic and Health Surveys. Cairo, Egypt, 1999 (and additional analysis).|Converted estimates|8158,771 +EGYPT|Africa|Northern Africa|Lower Middle Income|2000|10675|||24,4|||Egypt demographic and health survey 2000. Demographic and Health Surveys. Calverton, Maryland, USA: Ministry of Health and Population [Egypt], National Population Council and ORC Macro, 2001 (and additional analysis).| Weight data possibly flawed|8272,629 +EGYPT|Africa|Northern Africa|Lower Middle Income|2003|5940|1,8|5,2|20,2|8,7|9,2|2003 Egypt interim demographic and health survey. Demographic and Health Survey. Cairo, Egypt: Ministry of Health and Population [Egypt], National Population Council, El-Zanaty and Asociates, and ORC Macro, 2004 (and additional analysis).||8696,987 +EGYPT|Africa|Northern Africa|Lower Middle Income|2005|12828|2,5|5,3|23,9|5,4|14,1|Egypt demographic and health survey 2005. Demographic and Health Surveys. Caire, Egypt: Ministry of Health and Population, National Population Council, El-Zanaty and Associates, and ORC Macro, 2006 (and additional analysis).||9000,943000000001 +EGYPT|Africa|Northern Africa|Lower Middle Income|2008|10047|3,8|7,9|30,7|6,8|20,4|Egypt demographic and health survey 2008. Demographic and Health Surveys. Cairo, Egypt: Ministry of Health, 2009 (and additional analysis).||9427,461 +EGYPT|Africa|Northern Africa|Lower Middle Income|2014|14899|4,8|9,5|22,3|7,0|15,7| Egypt demographic and health survey 2014. Demographic and Health Surveys. Cairo, Egypt and Rockville, Maryland, USA: Ministry of Health and Population and ICF International, 2015 (and additional analysis)||11982,538999999999 +EL SALVADOR|Latin America and the Caribbean|Central America|Lower Middle Income|1988|2002|0,5|2,2|36,7|11,1|3,0|Evaluacion de la situacion alimentaria nutricional en El Salvador (ESANES-88). Ministerio de Salud Publica y Asistencia Social. San Salvador, El Salvador, 1990 (and additional analysis).||738,903 +EL SALVADOR|Latin America and the Caribbean|Central America|Lower Middle Income|1993|3598|0,4|1,4|29,5|7,2|3,9|National family health survey 1993 (FESAL-93). San Salvador: Government of El Salvador, 1994 (and additional analysis).||764,618 +EL SALVADOR|Latin America and the Caribbean|Central America|Lower Middle Income|1998|13788|0,4|1,5|32,3|9,7|3,9|National family health survey 1998: final report (FESAL-98). San Salvador, Republica de San Salvador, C.A., 2000 (and additional analysis).||772,357 +EL SALVADOR|Latin America and the Caribbean|Central America|Lower Middle Income|2002-03|6368|0,3|1,3|24,6|6,1|5,8|Encuesta nacional de salud familiar (FESAL) 2002/03. Informe final (and additional analysis)||687,987 +EL SALVADOR|Latin America and the Caribbean|Central America|Lower Middle Income|2008|605724|0,5|1,6|20,8|6,7|5,7|Encuesta nacional de salud familiar, FESAL 2008. Informe resumido. San Salvador, El Salvador: ADS, 2009 (and additional analysis).||611,036 +EL SALVADOR|Latin America and the Caribbean|Central America|Lower Middle Income|2014|7229|0,4|2,1|13,6|5,0|6,4|Encuesta nacional de salud 2014 - Encuesta de indicadores multiples por conglomerados 2014, Resultados principales. San Salvador, El Salvador: Ministerio de Salud e Instituto Nacional de Salud.||584,868 +EQUATORIAL GUINEA|Africa|Middle Africa|Upper Middle Income|1997|412|2,5|4,0|38,7|13,8|3,4|The economic and nutrition transition in Equatorial Guinea coincided with a double burden of over- and under nutrition. Economics and Human Biology 2010;8:80-87 (and additional analysis).||90,985 +EQUATORIAL GUINEA|Africa|Middle Africa|Upper Middle Income|2000|2429|4,2|9,2|42,6|15,7|13,9|Encuesta de indicadores multiples (MICS 2000): Informe final. Malabo, República de Guinea Educatorial:Ministerio de Planificación y Desarrollo Económico y UNICEF, 2001 (and additional analysis).||102,044 +EQUATORIAL GUINEA|Africa|Middle Africa|Upper Middle Income|2004|33334|1,3|2,8|35,0|10,6|8,3|Nutritional status and its correlates in Equatorial Guinean preschool children: Results from a nationally representative survey. Food and Nutrition Bulletin 2008;29:49-58 (and additional analysis).||118,949 +EQUATORIAL GUINEA|Africa|Middle Africa|Upper Middle Income|2011|1094|1,7|3,1|26,2|5,6|9,7|Encuesta demográfica y de salud en Guinea Ecuatorial (EDSGE-I). Demographic and Health Surveys. Guinea Ecuatorial y Calverton, Maryland, USA: MSBS, MEPIP e ICF, 2012.||155,894 +ERITREA|Africa|Eastern Africa|Low Income|1993|||11,8|69,6|36,9||Children and women in Eritrea: 1994. Government of the State of Eritrea/UNICEF Situation Analysis. Asmara, Eritrea, 1994 (and additional analysis).|Converted estimates|536,756 +ERITREA|Africa|Eastern Africa|Low Income|1995-96|2371|5,1|17,0|47,8|39,6|1,3|Eritrea demographic and health survey 1995. Demographic and Health Surveys. Calverton, Maryland: National Statistics Office and Macro International Inc, 1997 (and additional analysis).|Age-adjusted;|516,888 +ERITREA|Africa|Eastern Africa|Low Income|2002|5721|4,8|15,0|43,0|34,3|1,6|Eritrea demographic and health survey 2002. Demographic and Health Surveys. Calverton, Maryland, USA: National Statistics amd Evaluation Office and ORC Macro, 2003 (and additional analysis).||552,486 +ERITREA|Africa|Eastern Africa|Low Income|2010|6634|4,5|15,3|52,0|39,4|2,0|Eritrea population and health survey 2010. Asmara, Eritrea: National Statistics Office and Fafo Institute for Applied International Studies, 2013. (and additional analysis)||715,42 +ESWATINI|Africa|Southern Africa|Lower Middle Income|2000|3406|0,7|1,7|36,5|9,1|14,9|Multiple indicator cluster survey (MICS): Model full report. Maseru, Swaziland: Central Statistical Office, 2002 (and additional analysis)||157,286 +ESWATINI|Africa|Southern Africa|Lower Middle Income|2006-07|3029|1,3|2,9|29,2|6,0|11,1|Swaziland demographic and health survey 2006-07. Demographic and Health Surveys. Mbabane, Swaziland: Central Statistical Office and Macro International Inc., 2008 (and additional analysis).||159,558 +ESWATINI|Africa|Southern Africa|Lower Middle Income|2008|3817|0,3|1,1|40,4|7,3||Swaziland national nutrition survey report (November 2008). Mbabane, Swaziland: Ministry of Health, 2009.||163,95 +ESWATINI|Africa|Southern Africa|Lower Middle Income|2010|2572|0,7|1,1|30,9|6,2|10,7|Swaziland multiple indicator cluster survey 2010 (MICS): Final report. Mbabane, Swaziland, Central Statistical Office and UNICEF, 2011 (and additional analysis).||169,062 +ESWATINI|Africa|Southern Africa|Lower Middle Income|2014|2641|0,4|2,0|25,5|5,8|9,0|Swaziland Multiple Indicator Cluster Survey 2014. Final Report. Mbabane, Swaziland, Central Statistical Office and UNICEF (and additional analysis)||176,87900000000002 +ETHIOPIA|Africa|Eastern Africa|Low Income|1992|20230||9,2|66,9|41,9||Report on the National Rural Nutrition Survey, Core Module. Transitional Government of Ethiopia, Central Statistical Authority. Statistical Bulletin No 113. Addis Ababa, Ethiopia; 1993.|Adjusted NR to NA; converted est. (22/29 regions)|9725,636999999999 +ETHIOPIA|Africa|Eastern Africa|Low Income|2000|10901|3,8|12,4|57,6|42,0|2,0|Ethiopia demographic and health survey 2000. Demographic and Health Surveys. Addis Ababa, Ethiopia and Calverton, Maryland, USA: Central Statistical Authority and ORC Macro, 2001 (and additional analysis).||12409,891000000001 +ETHIOPIA|Africa|Eastern Africa|Low Income|2005|5015|4,7|12,4|50,4|34,4|5,1|Ethiopia demographic and health survey 2005. Demographic and Health Surveys. Addis Ababa, Ethiopia and Calverton, Maryland, USA: General Statistical Agency and ORC Macro, 2006 (and additional analysis).||13485,013 +ETHIOPIA|Africa|Eastern Africa|Low Income|2010-11|11224|2,9|9,8|44,4|29,2|1,8|Ethiopia demographic and health survey 2011. Demographic and Health Surveys. Addis Ababa, Ethiopia and Calverton, Maryland, USA: Central Statistical Agency and ICF International, 2012 (and additional analysis).||14053,5 +ETHIOPIA|Africa|Eastern Africa|Low Income|2014|4921|2,5|8,7|40,4|25,2|2,6|Ethiopia mini demographic and health survey 2014. Addis Ababa, Ethiopia, 2014.||14688,673 +ETHIOPIA|Africa|Eastern Africa|Low Income|2016|10552|3,0|10,0|38,4|23,6|2,9|Ethiopia Demographic and Health Survey 2016. Addis Ababa, Ethiopia, and Rockville, Maryland, USA. CSA and ICF (and additional analysis)||15177,181 +FIJI|Oceania|Melanesia|Upper Middle Income|1993|618||9,8|4,3|6,9|2,2|1993 National nutrition survey - main report. Suva: National Food and Nutrition Committee, 1995 (and additional analysis).|Converted estimates|98,52 +FIJI|Oceania|Melanesia|Upper Middle Income|2004|818|2,0|6,3|7,5|5,3|5,1|2004 Fiji national nutrition survey: Main report. Suva, Fiji, 2007 (and additional analysis).||89,95200000000001 +GABON|Africa|Middle Africa|Upper Middle Income|2000-01|3179|1,5|4,2|25,9|9,0|5,5|Enquête démographique et de santé Gabon 2000. DHS. Calverton, Maryland: Direction Générale de la Statistique et des Etudes Economiques, et Fonds des Nations Unies pour la Population, et ORC Macro, 2001 (and additional analysis).||185,356 +GABON|Africa|Middle Africa|Upper Middle Income|2012|3999|1,3|3,4|17,0|6,4|7,7|Enquête démographique et de santé du Gabon 2012. Demographic and Health Surveys. Calverton, Maryland, et Libreville, Gabon : DGS et ICF International, 2013 (and additional analysis).||247,01 +GAMBIA (THE)|Africa|Western Africa|Low Income|1996|2401|||36,1|23,2||Report of the progress of the mid-decade goals in the Gambia (MICS), 1996. Banjul: The Republic of The Gambia and UNICEF, 1998 (and additional analysis).|Converted estimates|208,08900000000003 +GAMBIA (THE)|Africa|Western Africa|Low Income|2000|2596|2,5|9,1|24,1|15,4|3,0|The Gambia multiple indicator cluster survey report, 2000 (MICS). Banjul, The Gambia, 2002 (and additional analysis).||232,55900000000003 +GAMBIA (THE)|Africa|Western Africa|Low Income|2005-06|6421|1,8|7,4|27,7|15,8|2,7|The Gambia Multiple Indicator Cluster Survey 2005/2006 Report. Banjul, The Gambia: GBoS, 2007 (and additional analysis).||279,808 +GAMBIA (THE)|Africa|Western Africa|Low Income|2010|11480|2,2|9,7|23,4|17,6|1,9|The Gambia multiple indicator cluster survey 2010 (MICS): Final report. Banjul, The Gambia: GBOS, 2012 (and additional analysis)||310,434 +GAMBIA (THE)|Africa|Western Africa|Low Income|2012|7050|1,6|9,6|21,2|18,0|1,1|2012 National Nutrition Survey in the Gambia using the Standardised Monitoring and Assessment of Relief Transition (SMART) methods (and additional analysis)||327,281 +GAMBIA (THE)|Africa|Western Africa|Low Income|2013|3680|4,3|11,0|24,6|16,5|3,2|The Gambia Demographic and Health Survey 2013. Banjul, The Gambia, and Rockville, Maryland, USA: GBOS and ICF International, 2014 (and additional analysis)||335,659 +GEORGIA|Asia|Western Asia|Lower Middle Income|1999|3434||3,1|16,1|2,7|17,9|Georgia multiple indicator cluster survey 1999 (MICS). Tibilisi, Georgia, 2000 (and additional analysis).|Converted estimates|301,226 +GEORGIA|Asia|Western Asia|Lower Middle Income|2005|1924|1,1|3,0|14,6|2,4|20,8|Georgia monitoring the situation of children and women. Mulitple indicator cluster survey 2005 (and additional analysis).||249,646 +GEORGIA|Asia|Western Asia|Lower Middle Income|2009|3020|0,6|1,6|11,3|1,1|19,9|Report of the Georgia national nutrition survey (GNNS) 2009. Tbilisi, Georgia: NCDC&PH and UNICEF, 2010.||273,752 +GERMANY|Europe|Western Europe|High Income|2003-06|4667|0,1|1,0|1,3|1,1|3,5|2003-2005 Ergebnisse des bundesweiten Kinder- und Jugendgesundheitssurveys (KiGGS).||3599,277 +GHANA|Africa|Western Africa|Lower Middle Income|1988|1934|1,6|7,0|42,6|24,8|0,8|Ghana demographic and health survey 1988. Demographic and Health Surveys. Ghana Statistical Service. Accra, Ghana, 1989 (and additional analysis).|Age-adjusted;|2368,05 +GHANA|Africa|Western Africa|Lower Middle Income|1993-94|1970|3,8|10,9|41,2|25,8|2,5|Ghana demographic and health survey 1993. Demographic and Health Surveys. Calverton, Maryland: GSS and MI, 1994 (and additional analysis).|Age-adjusted;|2602,14 +GHANA|Africa|Western Africa|Lower Middle Income|1998-99|2656|2,5|9,9|30,6|20,1|2,7|Ghana demographic and health survey 1998. Demographic and Health Surveys. Calverton, Maryland: GSS and MI, 1999 (and additional analysis).||2916,815 +GHANA|Africa|Western Africa|Lower Middle Income|2003|3356|2,8|8,4|35,4|19,0|4,5|Ghana demographic and health survey 2003. Demographic and Health Surveys. Calverton, Maryland: GSS, NMIMR, and ORC Macro, 2004 (and additional analysis).||3135,8940000000002 +GHANA|Africa|Western Africa|Lower Middle Income|2006|3237|1,8|6,0|27,9|13,9|2,6|Monitoring the situation of children, women and men. Multiple indicator cluster survey 2006 (and additional analysis).||3301,68 +GHANA|Africa|Western Africa|Lower Middle Income|2008|2708|2,4|8,7|28,4|14,4|5,7|Ghana demographic and health survey 2008. Demographic and Health Surveys. Accra, Ghana: GSS, GHS, and ICF Macro, 2009 (and additional analysis).||3455,835 +GHANA|Africa|Western Africa|Lower Middle Income|2011|7374|2,2|6,9|22,8|14,0|2,5|Ghana multiple indicator cluster survey (MICS) with an enhanced malaria module and biomarker 2011: Final report. Accra, Ghana, 2012 (and additional analysis)||3728,445 +GHANA|Africa|Western Africa|Lower Middle Income|2014|2911|0,7|4,7|18,8|11,2|2,6| Ghana Demographic and Health Survey 2014. Rockville, Maryland, USA: GSS, GHS, and ICF International (and additional analysis)||3963,27 +GUATEMALA|Latin America and the Caribbean|Central America|Upper Middle Income|1987|2227|0,4|1,9|66,2|27,9|2,4|Encuesta nacional de salud materno infantil 1987. Demographic and Health Surveys. Ministerio de Salud Publica y Asistencia Social. Guatemala, Central America, 1989 (and additional analysis).|Age-adjusted;|1530,355 +GUATEMALA|Latin America and the Caribbean|Central America|Upper Middle Income|1995|8028|1,5|3,8|55,4|21,7|6,2|Encuesta nacional de salud materno infantil 1995. Demographic and Health Surveys. Ciudad de Guatemala, Guatemala, 1996 (and additional analysis).||1766,975 +GUATEMALA|Latin America and the Caribbean|Central America|Upper Middle Income|1998-99|3762|1,4|2,9|53,1|20,3|6,9|Encuesta nacional de salud materno infantil 1998-1999. Demographic and Health Surveys. Ciudad de Guatemala, Guatemala, 1999 (and additional analysis).||1874,5629999999999 +GUATEMALA|Latin America and the Caribbean|Central America|Upper Middle Income|2000|1684954|1,6|3,7|51,0|18,8|7,3|Guatemala Living Standards Measurement Survey 2000. Washington DC, United States: World Bank (and additional analysis)||1895,158 +GUATEMALA|Latin America and the Caribbean|Central America|Upper Middle Income|2002|5625|0,8|1,9|54,8|18,2|5,2|Guatemala encuesta nacional de salud materno infantil 2002. Ciudad de Guatemala, Republica de Guatemala: Oscar de Leon Palacios, 2003 (and additional analysis).||1931,725 +GUATEMALA|Latin America and the Caribbean|Central America|Upper Middle Income|2008-09|8647|0,2|1,1|48,0|13,0|4,9|Encuesta nacional de salud materno infantil 2008 (ENSMI-2008/09). Ciudad de Guatemala, Guatemala: Ministerio de Salud Pública, MSPAS, INE y CDC, 2010 (and additional analysis).||1956,264 +GUATEMALA|Latin America and the Caribbean|Central America|Upper Middle Income|2014-15|12609|0,1|0,8|46,7|12,4|4,9| Encuesta Nacional de Salud Materno Infantil 2014-2015. Ciudad de Guatemala, Guatemala, 2015 (and additional analysis)||1994,029 +GUINEA|Africa|Western Africa|Low Income|1994-95|3542||14,0|35,3|21,2||Enquête intégrale sur les conditions de vie des ménages avec module budget et consommation (EIBC) 1994-95. Ministère du Plan et de la Coopération, Direction Nationale de la Statistique. Conakry, République de Guinée, 1998.|Converted estimates|1353,171 +GUINEA|Africa|Western Africa|Low Income|1999|3098|4,0|9,7|31,1|20,0|4,4|Enquête démographique et de santé, Guinée 1999. Demographic and Health Surveys. Direction Nationale de la Statistique. Conakry , Guinée, 2000 (and additional analysis).||1524,316 +GUINEA|Africa|Western Africa|Low Income|2005|2903|4,2|11,0|39,2|22,7|5,2|Enquête démographique et de santé, Guinée 2005. Demographic and Health Surveys. Direction Nationale de la Statistique. Calverton, Maryland, U.S.A.: DNS et ORC Macro, 2006 (and additional analysis).||1659,749 +GUINEA|Africa|Western Africa|Low Income|2007-08|11781|2,8|8,3|40,0|20,8||le suivi des principaux indicateurs de survie de l'enfant. Rapport provisoire, Mai 2008 (30/12/09 http://ochaonline.un.org/CoordinationIASC/Securitealimentairenutrition/tabid/5651/language/fr-FR/Default.aspx).| Période de récolte|1720,787 +GUINEA|Africa|Western Africa|Low Income|2011-12|6967|1,1|5,1|34,1|15,8|3,1|Enquête nationale nutrition-santé, basée sur la méthodologie SMART, 2011-12. Rapport final. Conakry, Republique de Guinée, 2012 (and additional analysis).||1839,6589999999999 +GUINEA|Africa|Western Africa|Low Income|2012|3674|4,1|10,0|31,1|18,8|3,8|Enquête démographique et de santé (EDS-IV) et enquête par grappe à indicateurs multiples (MICS). L'EDS-MICS 2012. Conakry, Guinée et Calverton, MD: INS et ICF, 2013 (and additional analysis).||1866,37 +GUINEA|Africa|Western Africa|Low Income|2016|7138|2,9|8,1|32,4|18,3|4,0|Enquête par grappes à indicateurs multiples (MICS, 2016), Rapport final, Conakry, Guinée. 2017 (and additional analysis)||1982,894 +GUINEA-BISSAU|Africa|Western Africa|Low Income|2000|4497|4,8|11,8|33,8|19,8|5,0|Multiple indicator cluster survey Guinea-Bissau, 2000 (MICS). Bissau, Guinea-Bissau: General Direction of Planning, National Institute of Statistics and Census and UNICEF, 2000 (and additional analysis).||213,452 +GUINEA-BISSAU|Africa|Western Africa|Low Income|2006|5282|4,5|8,8|47,7|17,4|16,9|Enquête par grappes à indicateurs multiples, Guinée-Bissau, 2006, Rapport final. Bissau, Guinée-Bissau : Ministère de l`Economie - Secrétariat d`Etat du Plan et à l`Intégration Régionale, 2006 (and additional analysis).||232,97099999999998 +GUINEA-BISSAU|Africa|Western Africa|Low Income|2010|12420|0,9|5,8|32,2|18,1|3,2|Inquérito aos indicadores múltiplos (MICS), inquérito demográfico de saúde reprodutiva - Guiné-Bissau, 2010: Relatório final. Bissau, Guiné-Bissau, 2011.|(pending reanalysis)|255,954 +GUINEA-BISSAU|Africa|Western Africa|Low Income|2014|7460|1,4|6,0|27,6|17,0|2,3|Inquérito aos Indicadores Múltiplos (MICS) 2014, Principais Resultados. Bissau, Guiné-Bissau: Ministério da Economia e Finanças, Direcçao Geral do Plano Instituto Nacional de Estatística (INE), 2015 (and additional analysis)||280,44599999999997 +GUYANA|Latin America and the Caribbean|South America|Upper Middle Income|1993|581||||16,1||Household income and expenditure survey 1993 and Guyana living standards measurement survey. In: Guyana strategies for reducing poverty. Report No. 12861-GUA. Washington: The World Bank, 1994:50-67 (and additional analysis).|Converted estimate|94,65299999999999 +GUYANA|Latin America and the Caribbean|South America|Upper Middle Income|1997|289||13,3|14,0|10,3|1,9|Micronutrient study report - Guyana survey - Vitamin A, beta-carotene, iron and iodine status. PAHO/CFNI/97.J5. Kingston, Jamaica, 1997 (and additional analysis).|Converted estimates|102,931 +GUYANA|Latin America and the Caribbean|South America|Upper Middle Income|2000|2562|4,3|12,1|13,9|11,9|5,5|Guyana multiple indicator cluster survey (MICS). Georgetown, Guyana, 2001 (and additional analysis).||95,93700000000001 +GUYANA|Latin America and the Caribbean|South America|Upper Middle Income|2006-07|2267|2,6|8,3|17,9|10,8|6,8|Guyana multiple indicator cluster survey 2006, final report. Georgetown, Guyana: Bureau of Statistics and UNICEF, 2008 (and additional analysis).||81,19 +GUYANA|Latin America and the Caribbean|South America|Upper Middle Income|2009|1656|1,2|5,6|19,3|11,0|6,7|Guyana demographic and health survey 2009. Demographic and Health Surveys. Georgetown, Guyana: MOH, BOS, and ICF Macro, 2010 (and additional analysis).||75,544 +GUYANA|Latin America and the Caribbean|South America|Upper Middle Income|2014|3134|1,7|6,4|11,3|8,2|5,3|Guyana Multiple Indicator Cluster Survey 2014, Final Report. Georgetown, Guyana: Bureau of Statistics, Ministry of Public Health and UNICEF (and additional analysis)||74,768 +HAITI|Latin America and the Caribbean|Caribbean|Low Income|1990|1843||5,9|40,1|23,7||Haiti's nutrition situation in 1990: A report based on anthropometric data of the 1990 nutrition surveys. Port-au-Prince, Haiti, 1993 (and additional analysis).|Converted estimates|1158,5739999999998 +HAITI|Latin America and the Caribbean|Caribbean|Low Income|1994-95|2914|3,1|9,3|37,1|23,8|4,3|Enquête mortalité, morbidité et utlisation des services (EMMUS-II) Haiti 1994/95. Demographic and Health Surveys. Pétionville, Haiti, 1995 (and additional analysis).||1177,202 +HAITI|Latin America and the Caribbean|Caribbean|Low Income|2000|6263|1,5|5,5|28,8|13,9|3,1|Enquête mortalité, morbidité et utilisation des services, Haiti 2000. Demographic and Health Surveys. Calverton, Maryland: Ministère de la Santé Publique et de la Population, Institut Haitien de l'Enfance et ORC Macro, 2001 (and additional analysis).||1218,649 +HAITI|Latin America and the Caribbean|Caribbean|Low Income|2005-06|2905|3,3|10,2|29,6|18,9|3,9|Enquête mortalité, morbidité et utilisation des services, Haïti, 2005-2006. DHS. Calverton, Maryland, USA: Ministère de la Santé Publique et de la Population, Institut Haïtien de l'Enfance et Macro International Inc., 2007 (and additional analysis).||1227,4289999999999 +HAITI|Latin America and the Caribbean|Caribbean|Low Income|2012|4591|1,3|5,1|22,0|11,6|3,6|Enquête mortalité, morbidité et utilisation des services, Haïti, 2012. Demographic and Health Surveys. Calverton, Maryland, USA : MSPP, IHE et ICF International, 2012 (and additional analysis).||1253,345 +HAITI|Latin America and the Caribbean|Caribbean|Low Income|2016-17|6646|0,8|3,7|21,9|9,5|3,4|Enquête Mortalité, Morbidité et Utilisation des Services (EMMUS-VI 2016-2017) Pétion-Ville, Haïti, et Rockville, Maryland, USA : IHE et ICF (and additional analysis)||1232,271 +HONDURAS|Latin America and the Caribbean|Central America|Lower Middle Income|1987|3244||2,3|43,3|18,1|2,7|Encuesta nacional de nutricion, Honduras, 1987. Cuadros de frequencias por regiones de salud y nacionales. Ministerio de Salud Publica. Tegucigalpa, Republica de Honduras, 1988 (and additional analysis).|Converted estimates|809,829 +HONDURAS|Latin America and the Caribbean|Central America|Lower Middle Income|1991-92|5961||2,1|42,5|15,8||Encuesta nacional de epidemiologia y salud familiar (ENESF), 1991/92. Tegucigalpa, Republica de Honduras, 1993 (and additional analysis).|Converted estimates|892,59 +HONDURAS|Latin America and the Caribbean|Central America|Lower Middle Income|1993-94|1875||2,7|45,7|16,1||National survey of socio-economic indicators 1993/94. Tegucigalpa, Republica de Honduras, 1996 (and additional analysis).|Converted estimates|930,674 +HONDURAS|Latin America and the Caribbean|Central America|Lower Middle Income|1996|1456|0,3|1,6|38,6|17,9|2,8|National micronutrient survey Honduras 1996. Tegucigalpa, Republic of Honduras, 1997 (and additional analysis).|Age-adjusted;|965,578 +HONDURAS|Latin America and the Caribbean|Central America|Lower Middle Income|2001|5663|0,2|1,3|35,5|12,8|3,0|Honduras encuesta nacional de epidemiologia y salud familiar ENESF-2001/encuesta nacional de salud masculina ENSM-2001: Informe final. Tegucigalpa, Honduras, 2002 (and additional analysis).||1009,513 +HONDURAS|Latin America and the Caribbean|Central America|Lower Middle Income|2005-06|9733|0,3|1,4|29,8|8,7|5,8|Encuesta nacional de salud y demografía 2005-2006. Demographic and Health Surveys. Tegucigalpa, Honduras: SS, INE y Macro International, 2006 (and additional analysis).||1030,28 +HONDURAS|Latin America and the Caribbean|Central America|Lower Middle Income|2011-12|10254|0,3|1,4|22,6|7,1|5,2|Encuesta nacional de salud y demografía 2011-2012. Demographic and Health Surveys. Tegucigalpa, Honduras: SS, INE e ICF International, 2013 (and additional analysis).||976,935 +INDIA|Asia|Southern Asia|Lower Middle Income|1988-90|13548||20,3|62,7|55,5||National Nutrition Monitoring Bureau, 1988-90 (8 States pooled data). Hyderabad, India; 1993 (data reanalyzed for WHO).|Adjusted NR to NA; 8 States; converted estimates|120678,709 +INDIA|Asia|Southern Asia|Lower Middle Income|1991-92|2948||20,0|61,9|52,8||National Nutrition Monitoring Bureau, 1991-92 (8 States pooled data). Hyderabad, India; 1993 (data reanalyzed for WHO).|Adjusted NR to NA; 8 States; converted estimates|122660,364 +INDIA|Asia|Southern Asia|Lower Middle Income|1992-93|38418|7,0|19,9|57,7|51,2|2,9|National family health survey, India 1992-93. Demographic and Health Surveys. Bombay, India, 1995 (and additional analysis).|Age-adjusted;|123230,57 +INDIA|Asia|Southern Asia|Lower Middle Income|1996-97|22959||18,4|45,9|38,4|5,9|Diet and nutrition situation in rural India. Indian Journal of Medical Research 1998;108:243-253 (and additional analysis).|Adjusted NR to NA; 11 States; converted estimates|125787,455 +INDIA|Asia|Southern Asia|Lower Middle Income|1998-99|26403|5,7|17,1|54,2|46,3|2,9|National family health survey (NFHS-2) 1998-99. Demographic and Health Surveys. Mumbai, India, 2000 (and additional analysis).|Age-adjusted;|127025,304 +INDIA|Asia|Southern Asia|Lower Middle Income|2005-06|49149|6,8|20,0|47,8|43,5|1,9|National family health survey (NFHS-3), 2005-06: India: Volume I. Demographic and Health Surveys. Mumbai, India: IIPS, 2007 (and additional analysis).||129854,049 +INDIA|Asia|Southern Asia|Lower Middle Income|2013-14|91273|4,6|15,1|38,7|29,4||Rapid survey on children 2013-2014. India factsheet. . http://wcd.nic.in/ accessed 14 August 2014.|(pending reanalysis)|122588,114 +INDIA|Asia|Southern Asia|Lower Middle Income|2015-16|230448|7,7|20,8|37,9|36,3|2,4|National Family Health Survey (NFHS-4), 2015-16: India. Mumbai: IIPS. 2017 (and additional analysis)||121415,293 +INDONESIA|Asia|South-Eastern Asia|Lower Middle Income|1987|28169||||35,9||National socioeconomic survey 1987 (SUSENAS-1987). Central Bureau of Statistics. Jakarta, Indonesia, 1992 (and additional analysis).|Converted estimate|22820,857999999997 +INDONESIA|Asia|South-Eastern Asia|Lower Middle Income|1989|14101||||31,0||The effect of economic crisis on the nutritional status of Indonesian pre-school children. Gizi Indonesia 2000;33-41 (and additional analysis), and http://www.gizi.net, accessed 18/12/03.||22413,764 +INDONESIA|Asia|South-Eastern Asia|Lower Middle Income|1992|33742||||29,8||The effect of economic crisis on the nutritional status of Indonesian pre-school children. Gizi Indonesia 2000;33-41 (and additional analysis), and http://www.gizi.net, accessed 18/12/03.||21964,595 +INDONESIA|Asia|South-Eastern Asia|Lower Middle Income|1995|9227||14,9|48,1|30,3|6,5|Indonesia multiple indicator cluster survey (MICS) 1995. Jakarta: UNICEF, 1997 (preliminary results provided by the Centers for Disease Control and Prevention; and additional analysis).|Converted estimates|21890,868 +INDONESIA|Asia|South-Eastern Asia|Lower Middle Income|1998|25505||||25,8||The effect of economic crisis on the nutritional status of Indonesian pre-school children. Gizi Indonesia 2000;33-41 (and additional analysis), and http://www.gizi.net, accessed 18/12/03.||21544,138 +INDONESIA|Asia|South-Eastern Asia|Lower Middle Income|1999|78849||||22,8||The effect of economic crisis on the nutritional status of Indonesian pre-school children. Gizi Indonesia 2000;33-41 (and additional analysis), and http://www.gizi.net, accessed 18/12/03.||21349,842 +INDONESIA|Asia|South-Eastern Asia|Lower Middle Income|2000|106147|0,9|5,5|42,4|24,8|1,5|Summary: Second Annual Report of the Nutrition and Health Surveillance System in Indonesia with data from the period 2000-2001, http://www.hki.org/research/nutrition_surveillance.html (and additional analysis).||21307,215 +INDONESIA|Asia|South-Eastern Asia|Lower Middle Income|2001|96417|0,8|5,4|41,6|23,4|1,5|Summary: Second Annual Report of the Nutrition and Health Surveillance System in Indonesia with data from the period 2000-2001, http://www.hki.org/research/nutrition_surveillance.html (and additional analysis).||21510,112 +INDONESIA|Asia|South-Eastern Asia|Lower Middle Income|2002|74360||||23,0||Indonesian nutritional status of children 1989-2005: Poverty and household food security, dietary diversity and infection: which is the most important risk? Gizi Indonesia 2005;28: (and additional analysis).||21757,811 +INDONESIA|Asia|South-Eastern Asia|Lower Middle Income|2003|77110||||23,1||National socioeconomic survey 2003 (SUSENAS-2003). Central Bureau of Statistics. Jakarta, Indonesia, 2006 (and additional analysis).||22064,384 +INDONESIA|Asia|South-Eastern Asia|Lower Middle Income|2004|3116|5,1|14,4|28,6|19,7|5,1|National Institute of Health Research and Development, 2005. National Household Health Survey (SKRT) 2004, Volume 2: Community Health Status in Indonesia. Jakarta, Indonesia, 2007 (and additional analysis).||22387,338 +INDONESIA|Asia|South-Eastern Asia|Lower Middle Income|2005|94652||||24,4||National socioeconomic survey 2005 (SUSENAS-2005). Central Bureau of Statistics. Jakarta, Indonesia, 2006 (and additional analysis).||22680,512000000002 +INDONESIA|Asia|South-Eastern Asia|Lower Middle Income|2007|77808|6,8|14,8|40,1|19,6|11,2|"Basic Health Survey, Riskesdas, 2007. Results to be presented at the ICN in Bangkok, October 2009: ""Changes in malnutrition from 1989 to 2007 in Indonesia"" by Ita Atmarita, Ministry of Health."||23122,406000000003 +INDONESIA|Asia|South-Eastern Asia|Lower Middle Income|2010|18768|5,4|12,3|39,2|18,6|12,3|National report on basic health research, Riskesdas, 2010. Jakarta, Indonesia, 2012 (and additional analysis).||23793,077999999998 +INDONESIA|Asia|South-Eastern Asia|Lower Middle Income|2013|75232|6,7|13,5|36,4|19,9|11,5|National report on basic health research, RISKESDAS, 2013. Jakarta, Indonesia, 2014 (and additional analysis).||24249,408 +IRAN (ISLAMIC REPUBLIC OF)|Asia|Southern Asia|Upper Middle Income|1995|11139||8,1|24,4|13,8|5,5|Cluster survey for evaluation of mid decade goal indicators (MICS). Theran, Islamic Republic of Iran, April 1996 (and additional analysis).|Converted estimates|7630,74 +IRAN (ISLAMIC REPUBLIC OF)|Asia|Southern Asia|Upper Middle Income|1998|2536||6,1|20,4|9,5|6,9|The nutritional status of children, October-November 1998 (ANIS). Teheran: Ministry of Health and Medical Education and UNICEF, 2000 (and additional analysis).|Converted estimates|6747,56 +IRAN (ISLAMIC REPUBLIC OF)|Asia|Southern Asia|Upper Middle Income|2004|34200||4,8|7,1|4,6||Current status and the 10 years trend in the malnutrition indexes of children under 5 years in Iran. Iranian Journal of Epidemiology Spring 2008;4:21-8 (and additional analysis).|Converted estimates|5578,539000000001 +IRAN (ISLAMIC REPUBLIC OF)|Asia|Southern Asia|Upper Middle Income|2010-11||1,4|4,0|6,8|4,1||Iran“s Multiple Indicator Demographic and Health Survey - 2010.|(pending reanalysis)|6630,397 +IRAQ|Asia|Western Asia|Upper Middle Income|1991|2565||4,4|27,6|10,4||Infant and child mortality and nutritional status of Iraqi children after the Gulf conflict: Results of a community-based study. Center for Population and Development Studies, Harvard University, Cambridge, MA, USA; 1992 (and additional analysis).|Converted estimates|3066,48 +IRAQ|Asia|Western Asia|Upper Middle Income|2000|14188|2,4|6,6|28,1|12,8|5,5|Multiple indicator cluster survey (MICS) for the year 2000 (detailed report). Baghdad, Republic of Iraq: UNICEF, 2001 (and additional analysis).||3840,776 +IRAQ|Asia|Western Asia|Upper Middle Income|2003|||5,6|33,7|10,1||Baseline food security analysis in Iraq. Baghdad, Iraq: WFP Iraq Country Office, September 2004 (and additional analysis).|Converted estimates|4095,05 +IRAQ|Asia|Western Asia|Upper Middle Income|2004|16464||6,9|20,0|8,0||Iraq living conditions survey 2004. Volume 1: Tabulation report. Baghdad, Iraq: Central Organization for Statistics and Information Technology, Ministry of Planning and Development Cooperation, 2005 (and additional analysis).|Converted estimates|4161,09 +IRAQ|Asia|Western Asia|Upper Middle Income|2006|16263|2,7|5,8|27,5|7,1|15,0|Iraq multiple indicator cluster survey 2006, Final report. Iraq, 2007 (and additional analysis).||4318,21 +IRAQ|Asia|Western Asia|Upper Middle Income|2011|35633|2,7|6,5|22,1|7,2|11,4|Iraq multiple indicator cluster survey (MICS) 2011: Final report. Baghdad, Iraq: The Central Statistics Organization and the Kurdistan Regional Statistics Office, 2012 (and additional analysis)||5018,159000000001 +JAMAICA|Latin America and the Caribbean|Caribbean|Upper Middle Income|1989|860||4,4|12,4|6,3||Jamaica Living Standards and Measurement Survey 1989. Kingston: The World Bank, 1990 (and additional analysis).|Converted estimates|296,683 +JAMAICA|Latin America and the Caribbean|Caribbean|Upper Middle Income|1991|709|1,2|5,5|11,8|5,6|2,3|Jamaica survey of living conditions - report 1991. Kingston: The Planning Institute and the Statistical Institute of Jamaica, 1992 (and additional analysis).||288,856 +JAMAICA|Latin America and the Caribbean|Caribbean|Upper Middle Income|1992|1797|0,3|2,7|14,4|5,7|3,1|Jamaica survey of living conditions 1992. Kingston: The Planning Institute and the Statistical Institute of Jamaica, 1994 (and additional analysis).||287,545 +JAMAICA|Latin America and the Caribbean|Caribbean|Upper Middle Income|1993|910|2,7|4,4|12,6|6,1|4,6|Jamaica survey of living conditions 1993. Kingston: The Planning Institute and the Statistical Institute of Jamaica, 1995 (and additional analysis).||288,711 +JAMAICA|Latin America and the Caribbean|Caribbean|Upper Middle Income|1994|951|0,8|2,9|12,1|4,6|6,2|Jamaica survey of living conditions, 1994. Kingston: The Planning Institute and the Statistical Institute of Jamaica, 1996 (and additional analysis).||290,48 +JAMAICA|Latin America and the Caribbean|Caribbean|Upper Middle Income|1995|976|0,8|4,8|9,7|4,8|5,9|Jamaica survey of living conditions, 1995. Kingston: The Planning Institute and the Statistical Institute of Jamaica, 1997 (and additional analysis).||291,551 +JAMAICA|Latin America and the Caribbean|Caribbean|Upper Middle Income|1996|980|0,1|2,5|11,2|5,6|3,8|Jamaica survey of living conditions, 1996. Kingston: The Planning Institute and the Statistical Institute of Jamaica, 1997 (and additional analysis).||293,447 +JAMAICA|Latin America and the Caribbean|Caribbean|Upper Middle Income|1997|918|0,3|2,2|8,7|3,5|5,5|Jamaica survey of living conditions, 1997. Kingston: The Planning Institute and the Statistical Institute of Jamaica, 1998 (and additional analysis).||294,212 +JAMAICA|Latin America and the Caribbean|Caribbean|Upper Middle Income|1998|2321|0,9|2,6|9,5|3,8|4,3|Jamaica survey of living conditions, 1998. Kingston: The Planning Institute and the Statistical Institute of Jamaica, 1999 (and additional analysis).||293,687 +JAMAICA|Latin America and the Caribbean|Caribbean|Upper Middle Income|1999|736|0,9|2,4|5,7|2,1|6,3|Jamaica survey of living conditions, 1999. Kingston: The Planning Institute and the Statistical Institute of Jamaica, 2000 (and additional analysis).||291,936 +JAMAICA|Latin America and the Caribbean|Caribbean|Upper Middle Income|2000|732|1,5|3,0|7,2|3,9|7,3|Jamaica survey of living conditions data set 2000. The Planning Institute and the Statistical Institute of Jamaica, 2001 (and additional analysis).||289,019 +JAMAICA|Latin America and the Caribbean|Caribbean|Upper Middle Income|2001|582|1,0|3,2|6,6|4,0|5,8|Jamaica survey of living conditions data set 2001. The Planning Institute and the Statistical Institute of Jamaica, 2002 (and additional analysis).||285,733 +JAMAICA|Latin America and the Caribbean|Caribbean|Upper Middle Income|2002|3251|0,7|2,4|8,1|2,7|8,5|Jamaica survey of living conditions data set 2002. The Planning Institute and the Statistical Institute of Jamaica, 2003 (and additional analysis).||279,722 +JAMAICA|Latin America and the Caribbean|Caribbean|Upper Middle Income|2004|793|1,1|4,5|4,9|3,1|7,5|Jamaica survey of living conditions data set 2004. The Planning Institute and the Statistical Institute of Jamaica, 2005 (and additional analysis).||264,375 +JAMAICA|Latin America and the Caribbean|Caribbean|Upper Middle Income|2006|615|0,9|3,7|7,5|4,8|6,1|Jamaica survey of living conditions data set 2006. The Planning Institute and the Statistical Institute of Jamaica, 2013 (and additional analysis).||247,68599999999998 +JAMAICA|Latin America and the Caribbean|Caribbean|Upper Middle Income|2007|665|1,2|2,7|5,4|1,8|8,7|Jamaica survey of living conditions data set 2007. The Planning Institute and the Statistical Institute of Jamaica, 2013 (and additional analysis).||241,847 +JAMAICA|Latin America and the Caribbean|Caribbean|Upper Middle Income|2008|1581|0,3|2,5|6,9|2,4|7,7|Jamaica survey of living conditions data set 2008. The Planning Institute and the Statistical Institute of Jamaica, 2013 (and additional analysis).||238,482 +JAMAICA|Latin America and the Caribbean|Caribbean|Upper Middle Income|2010|592|1,5|5,0|6,0|3,4|4,1|Jamaica survey of living conditions data set 2010. The Planning Institute and the Statistical Institute of Jamaica, 2013 (and additional analysis).||230,567 +JAMAICA|Latin America and the Caribbean|Caribbean|Upper Middle Income|2012|1740|0,8|3,0|6,8|2,7|7,8|Jamaica survey of living conditions data set 2012. The Planning Institute and the Statistical Institute of Jamaica, 2015(and additional analysis).||222,66400000000002 +JAMAICA|Latin America and the Caribbean|Caribbean|Upper Middle Income|2014|584|0,5|3,6|6,0|2,2|8,3|Jamaica survey of living conditions data set 2014. The Planning Institute and the Statistical Institute of Jamaica, 2017 (and additional analysis)||208,845 +JAPAN|Asia|Eastern Asia|High Income|2010|6643|0,2|2,3|7,1|3,4|1,5|Updated Japanese growth references for infants and preschool children, based on historical, ethnic and environmental characteristics. Acta Paediatrica 2014;103(6):e251-e261 (and additional analysis).||5554,595 +JORDAN|Asia|Western Asia|Upper Middle Income|1990|6762|1,5|4,1|19,9|5,1|8,4|Jordan population and family health survey 1990. Demographic and Health Surveys. Ministry of Health. Amman, Jordan, 1992 (and additional analysis).||598,145 +JORDAN|Asia|Western Asia|Upper Middle Income|1997|5651|0,6|2,4|11,1|3,8|4,3|Jordan population and family health survey 1997. Demographic and Health Surveys. Calverton, Maryland: DOS and MI, 1998 (and additional analysis).||722,1510000000001 +JORDAN|Asia|Western Asia|Upper Middle Income|2002|4762|0,8|2,5|11,6|3,7|4,4|Jordan population and family health survey 2002. Demographic and Health Surveys. Calverton, Maryland, USA: Department of Statistics and ORC Macro, 2003 (and additional analysis).||754,696 +JORDAN|Asia|Western Asia|Upper Middle Income|2009|4118|0,2|1,6|8,2|1,9|6,6|Jordan population and family health survey 2009. Demographic and Health Surveys. Calverton, Maryland, USA: Department of Statistics and ICF Macro, 2010 (and additional analysis).||922,842 +JORDAN|Asia|Western Asia|Upper Middle Income|2012|5924|0,7|2,4|7,8|3,0|4,7|Jordan population and family health survey 2012. Demographic and Health Surveys. Calverton, Maryland, USA: Department of Statistics and ICF International, 2013 (and additional analysis).||1084,774 +KAZAKHSTAN|Asia|Central Asia|Upper Middle Income|1995|729|1,8|6,4|23,3|4,4|4,1|Kazakhstan demographic and health survey 1995. Demographic and Health Surveys. Almaty, Kazakhstan, 1996 (and additional analysis).|Age-adjusted;|1470,319 +KAZAKHSTAN|Asia|Central Asia|Upper Middle Income|1999|624|1,0|2,5|13,2|3,8|4,9|Kazakhstan demographic and health survey 1999. Demographic and Health Surveys. Calverton, Maryland: Academy of Preventive Medicine [Kazakhstan] and Macro International Inc., 1999 (and additional analysis).||1139,462 +KAZAKHSTAN|Asia|Central Asia|Upper Middle Income|2006|4400|2,3|4,9|17,5|4,9|16,9|Kazakhstan multiple indicator cluster survey 2006. Final report. Astana, Kazakhstan: UNICEF and Agency of the Republic of Kazakhstan on Statistic, 2007 (and additional analysis).||1313,736 +KAZAKHSTAN|Asia|Central Asia|Upper Middle Income|2010-11|5015|1,7|4,1|13,1|3,7|13,3|Multiple indicator cluster survey (MICS) in the Republic of Kazakhstan (RK), 2010-2011. Final report. Astana, Kazakhstan: the Agency of Statistics, RK and the Republican State Enterprise Information Computing Center, 2012 (and additional analysis).||1606,237 +KAZAKHSTAN|Asia|Central Asia|Upper Middle Income|2015|5304|1,1|3,1|8,0|2,0|9,3|2015 Kazakhstan Multiple Indicator Cluster Survey, Final Report. Astana, Kazakhstan: The Statistics Committee of the Ministry of National Economy of the Republic of Kazakhstan, 2016. ||1991,066 +KENYA|Africa|Eastern Africa|Lower Middle Income|1985-89|6957||5,5|37,0|||Fourth Rural Child Nutrition Survey, 1987. Central Bureau of Statistics, Ministry of Planning and National Development. Republic of Kenya, Nairobi; 1991 (and additional analysis).|Adjusted NR to NA; converted estimates|4204,81 +KENYA|Africa|Eastern Africa|Lower Middle Income|1993|5006|2,6|7,1|40,2|19,4|5,8|Kenya demographic and health survey 1993. Demographic and Health Surveys. Central Bureau of Statistics. Nairobi, Kenya, 1994 (and additional analysis).||4565,4259999999995 +KENYA|Africa|Eastern Africa|Lower Middle Income|1994|3712355|2,4|6,8|41,1|17,9|5,1|Fifth child nutrition survey, 1994. Welfare monitoring survey. Nairobi, Kenya, 1995 (and additional analysis)||4598,795999999999 +KENYA|Africa|Eastern Africa|Lower Middle Income|1998|3050|3,1|7,2|37,4|17,5|5,8|Kenya demographic and health survey 1998. Demographic and Health Surveys. Central Bureau of Statistics. Calverton, Maryland: NDPD, CBS, and MI., 1999 (and additional analysis).|Age-adjusted;|5062,827 +KENYA|Africa|Eastern Africa|Lower Middle Income|2000|6418|2,9|7,4|40,8|17,1|8,1|Kenya multiple indicator cluster survey 2000 (MICS). Government of Kenya and Unicef. Nairobi, Kenya, 2002 (and additional analysis).||5422,693 +KENYA|Africa|Eastern Africa|Lower Middle Income|2003|5544|2,4|6,2|35,8|16,4|5,8|Kenya demographic and health survey 2003. Demographic and Health Surveys. Calverton, Maryland: CBS, MOH, and ORC Macro, 2004 (and additional analysis).||5881,097 +KENYA|Africa|Eastern Africa|Lower Middle Income|2005-06|3818246|2,4|6,9|40,2|18,0|7,9|Kenya integrated household budget survey (KIHBS), 2006/06: Revised edition, basic report. Nairobi, Kenya 2006 (and additional analysis).||6079,73 +KENYA|Africa|Eastern Africa|Lower Middle Income|2008-09|5705|2,1|6,9|35,5|16,5|5,0|Kenya demographic and health survey 2008-09. Demographic and Health Surveys. Calverton, Maryland: KNBS and ICF Macro, 2010 (and additional analysis).||6614,54 +KENYA|Africa|Eastern Africa|Lower Middle Income|2014|19250|1,0|4,2|26,2|11,2|4,1|National Council for Population and Development (NCPD). Kenya demographic and health Survey (2014 KDHS): Key indicators. Demongraphic and Health Surveys. Nairobi, Kenya: KNBS, Ministry of Health, NACC, KEMRI, NCPD, 2015 (and additional analysis).||6950,404 +KIRIBATI|Oceania|Micronesia|Lower Middle Income|1985|2941||12,6|34,4|11,3|15,9|National nutrition survey, 1985. Government of Kiribati. South Tarawa, Republic of Kiribati, 1990 (draft version; and additional analysis).|Converted estimates|10,009 +KIRIBATI|Oceania|Micronesia|Lower Middle Income|2009|1045||||14,9||Kiribati demographic and health survey. Noumea, Kiribati: SPC, 2009.||13,196 +KUWAIT|Asia|Western Asia|High Income|1996-97|12376||1,7|5,0|1,5|8,9|Kuwait national nutritional surveillance system. Nutrition unit, Ministry of Health. Al Shaab, Kuwait, 1998 (and additional analysis).|NSS; converted estimate|172,83 +KUWAIT|Asia|Western Asia|High Income|2001|4878|0,4|2,2|4,0|2,2|11,0|Kuwait nutrition surveillance system, 2005 report: 2001-2005 trends. Kuwait, State of Kuwait: Administration of Food and Nutrition, Ministry of Health, 2006 (and additional analysis).|National Surveillance System|231,22400000000002 +KUWAIT|Asia|Western Asia|High Income|2002|3842|0,5|2,2|3,6|2,1|6,6|Kuwait nutrition surveillance system, 2005 report: 2001-2005 trends. Kuwait, State of Kuwait: Administration of Food and Nutrition, Ministry of Health, 2006 (and additional analysis).|National Surveillance System|227,484 +KUWAIT|Asia|Western Asia|High Income|2003|4308|0,7|2,6|3,9|2,3|6,8|Kuwait nutrition surveillance system, 2005 report: 2001-2005 trends. Kuwait, State of Kuwait: Administration of Food and Nutrition, Ministry of Health, 2006 (and additional analysis).|National Surveillance System|218,64 +KUWAIT|Asia|Western Asia|High Income|2004|4381|1,1|3,4|4,1|2,8|7,1|Kuwait nutrition surveillance system, 2005 report: 2001-2005 trends. Kuwait, State of Kuwait: Administration of Food and Nutrition, Ministry of Health, 2006 (and additional analysis).|National Surveillance System|211,955 +KUWAIT|Asia|Western Asia|High Income|2005|5601|1,0|3,3|4,5|2,7|7,5|Kuwait nutrition surveillance system, 2005 report: 2001-2005 trends. Kuwait, State of Kuwait: Administration of Food and Nutrition, Ministry of Health, 2006 (and additional analysis).|National Surveillance System|213,65200000000002 +KUWAIT|Asia|Western Asia|High Income|2006|3422|0,6|2,8|4,6|2,7|8,7|Kuwait nutrition surveillance system: 2006-2009 trends. Kuwait, State of Kuwait: Administration of Food and Nutrition, Ministry of Health, 2010 (and additional analysis).|National Surveillance System|211,59799999999998 +KUWAIT|Asia|Western Asia|High Income|2007|3949|0,8|3,6|5,1|2,9|8,5|Kuwait nutrition surveillance system: 2006-2009 trends. Kuwait, State of Kuwait: Administration of Food and Nutrition, Ministry of Health, 2010 (and additional analysis).|National Surveillance System|220,34900000000002 +KUWAIT|Asia|Western Asia|High Income|2008|4199|0,5|2,2|5,1|2,3|9,3|Kuwait nutrition surveillance system: 2006-2009 trends. Kuwait, State of Kuwait: Administration of Food and Nutrition, Ministry of Health, 2010 (and additional analysis).|National Surveillance System|237,334 +KUWAIT|Asia|Western Asia|High Income|2009|4099|0,3|1,8|3,8|1,7|9,0|Kuwait nutrition surveillance system: 2006-2009 trends. Kuwait, State of Kuwait: Administration of Food and Nutrition, Ministry of Health, 2010 (and additional analysis).|National Surveillance System|256,791 +KUWAIT|Asia|Western Asia|High Income|2010|4062|0,6|2,4|4,1|1,7|7,8|Kuwait Nutrition Surveillance System [KNSS] 2010-2012. Kuwait city, Kuwait: Food & Nutrition Administration, 2013 (and additional analysis).||273,83799999999997 +KUWAIT|Asia|Western Asia|High Income|2011|4200|0,4|1,7|4,0|2,1|8,3|Kuwait Nutrition Surveillance System [KNSS] 2010-2012. Kuwait city, Kuwait: Food & Nutrition Administration, 2013 (and additional analysis).||291,37 +KUWAIT|Asia|Western Asia|High Income|2012|3860|0,6|2,4|4,3|2,2|9,5|Kuwait Nutrition Surveillance System [KNSS] 2010-2012. Kuwait city, Kuwait: Food & Nutrition Administration, 2013 (and additional analysis).||302,623 +KUWAIT|Asia|Western Asia|High Income|2013|3571|0,7|2,7|4,8|3,1|7,8|Kuwait Nutrition Surveillance System [KNSS] 2013-2014. Kuwait city, Kuwait: Food & Nutrition Administration, 2015.||307,95 +KUWAIT|Asia|Western Asia|High Income|2014|2864|0,6|2,4|5,8|3,0|8,7|Kuwait Nutrition Surveillance System [KNSS] 2013-2014. Kuwait city, Kuwait: Food & Nutrition Administration, 2015.||309,91200000000003 +KUWAIT|Asia|Western Asia|High Income|2015|3571||3,1|4,9||6,0|The Kuwait Nutrition Surveillance System [KNSS] 2015 Annual Report. Kuwait City. Food & Nutrition Administration|overweight using BMI-for-age z-scores|310,784 +KYRGYZSTAN|Asia|Central Asia|Lower Middle Income|1997|1034|0,8|2,9|36,2|10,4|8,1|Kyrgyz Republic demographic and health survey 1997. Demographic and Health Surveys. Bishkek City, Kyrgyz Republic, 1998 (and additional analysis).|Age-adjusted;|564,401 +KYRGYZSTAN|Asia|Central Asia|Lower Middle Income|2005-06|2944|1,0|3,4|18,1|2,7|10,7|Multiple indicator cluster survey 2006, Kyrkyz Republic. Final report. Bishkek, Kyrkyzstan: National Statistical Committee of the Kyrkyz Republic and United Nations Children's Fund, 2007 (and additional analysis).||495,77099999999996 +KYRGYZSTAN|Asia|Central Asia|Lower Middle Income|2009|1743|0,3|1,3|22,6|4,7|4,4|National survey of the nutritional status of children 6-59 months of age and their mothers, Kyrgyzstan 2009. Bishkek: Ministry of Health, National Statistical Committee, UNICEF, Kyrgyz-Swiss-Swedish Health Project, US CDC, 2010.||573,163 +KYRGYZSTAN|Asia|Central Asia|Lower Middle Income|2012|4421|1,3|2,9|17,9|3,8|8,9|Kyrgyz Republic demographic and health survey 2012. Demographic and Health Surveys. Bishkek, Kyrgyz Republic, and Calverton, Maryland, USA: NSC, MOH, and ICF International, 2013 (and additional analysis).||678,7489999999999 +KYRGYZSTAN|Asia|Central Asia|Lower Middle Income|2014|4441|0,8|2,8|12,9|2,8|7,0|Kyrgyzstan multiple indicator cluster survey 2014: Final Report (MICS). Bishkek, Kyrgyzstan: National Statistical Committee of the Kyrgyz Republic and UNICEF, 2014. ||732,295 +LAO PEOPLE'S DEMOCRATIC REP. (THE)|Asia|South-Eastern Asia|Lower Middle Income|1993|1365||11,8|53,6|39,8||Women and children in the Lao People's Democratic Republic. Results from the LAO social indicator survey (LSIS). Vientiane: Mother and Child Institute, 1994 (and additional analysis).|Converted estimates|819,674 +LAO PEOPLE'S DEMOCRATIC REP. (THE)|Asia|South-Eastern Asia|Lower Middle Income|1994|2950||12,3|52,9|35,9||Diagnostic de la situation nutritionnel et consommationn alimentaire au Laos. Rapport complet de l'étude sur l'état nutritionnel de la population Laotienne. ESNA: TCP/LAO/2354. Rome: Food and Agriculture Organization, 1995 (and additional analysis).|Converted estimates|832,15 +LAO PEOPLE'S DEMOCRATIC REP. (THE)|Asia|South-Eastern Asia|Lower Middle Income|2000|1505|7,6|17,5|48,2|36,4|2,7|Report on national health survey: Health status of the people in Lao PDR. Vientiane, Lao People's Democratic Republic, January 2001 (and additional analysis).||796,669 +LAO PEOPLE'S DEMOCRATIC REP. (THE)|Asia|South-Eastern Asia|Lower Middle Income|2006|3992|1,7|7,4|47,7|31,6|1,3|Lao PDR multiple indicator cluster survey 2006, final report. Vientiane, Lao PDR: Department of Statistics and UNICEF, 2008 (and additional analysis).||755,6510000000001 +LAO PEOPLE'S DEMOCRATIC REP. (THE)|Asia|South-Eastern Asia|Lower Middle Income|2011-12|10814|1,9|6,4|44,2|26,9|2,0|Lao social indicator survey LSIS (MICS/DHS). Vientiane, Lao PDR: MoH and LSB, 2012 (and additional analysis).||789,4630000000001 +LEBANON|Asia|Western Asia|Upper Middle Income|1996|1824|1,6|3,6|17,2|3,5|20,8|Lebanon maternal and child health survey (summary report). PAPCHILD Surveys. Cairo: The League of Arab States, 1998 (and additional analysis).||328,07199999999995 +LEBANON|Asia|Western Asia|Upper Middle Income|2004|1128|2,9|6,6|16,5|4,2|16,7|Lebanon family health survey 2004: Principal report. Tutelian M, Khayyat M , Monem AA, eds. The Pan Arab Project for Family Health, 2006 (additional analysis conducted by PAPFAM).||328,825 +LESOTHO|Africa|Southern Africa|Lower Middle Income|1992|4687||3,2|39,2|13,8||National nutrition survey report, May-June 1992. Maseru, Kingdom of Lesotho, 1992 (and additional analysis).|Converted estimates|257,092 +LESOTHO|Africa|Southern Africa|Lower Middle Income|1993|449||22,4|37,5|18,9||National survey on iodine, vitamin A and iron status of women and children in Lesotho. Maseru, Lesotho, 1994 (and additional analysis).|Age-adjusted; converted estimates|259,601 +LESOTHO|Africa|Southern Africa|Lower Middle Income|2000|3530|3,0|6,8|52,7|14,9|21,0|Kingdom of Lesotho 2000 end decade multiple indicator cluster survey (EMICS). Draft preliminary report. Maseru, Lesotho: Government of Lesotho, Bureau of Statistics and UNICEF, 2002 (and additional analysis).||272,42900000000003 +LESOTHO|Africa|Southern Africa|Lower Middle Income|2004-05|1754|2,2|5,6|44,7|16,6|6,7|Lesotho demographic and health survey 2004. Demographic and Health Surveys. Calverton, Maryland: MOH, BOS, and ORC Macro, 2005 (and additional analysis).||260,186 +LESOTHO|Africa|Southern Africa|Lower Middle Income|2009-10|2138|1,5|3,8|39,3|13,4|7,3|Lesotho demographic and health survey 2009. Demographic and Health Surveys. Maseru, Lesotho: MOHSW and ICF Macro, 2010 (and additional analysis).||254,949 +LESOTHO|Africa|Southern Africa|Lower Middle Income|2014|1914|0,6|2,8|33,4|10,5|7,5|Lesotho demographic and health survey (2014 LDHS): Key indicators. Demographic and Health Surveys. Maseru, Lesotho: Ministry of Health and ICF International, 2015 (and additional analysis).||276,04200000000003 +LIBERIA|Africa|Western Africa|Low Income|1999-00|4702|2,2|7,4|45,3|22,8|4,6|Liberia national nutrition survey 1999-2000. Monrovia, Liberia, 2001 (and additional analysis).||495,149 +LIBERIA|Africa|Western Africa|Low Income|2006-07|5441|3,0|7,9|39,6|20,4|4,2|Liberia demographic and health survey 2007. Demographic and Health Surveys. Monrovia, Liberia: Liberia Institute of Statistics and Geo-Information Services (LISGIS) and Macro International Inc., 2008 (and additional analysis).||598,804 +LIBERIA|Africa|Western Africa|Low Income|2010|6288|0,2|2,8|41,8|14,9||The 2010 State of Food and Nutrition Security in Liberia.|(pending reanalysis)|653,631 +LIBERIA|Africa|Western Africa|Low Income|2013|3625|2,0|5,6|32,1|15,3|3,2|Demographic and health survey 2013. Demographic and Health Surveys. Monrovia, Liberia: Liberia Institute of Statistics and Geo-Information Services (LISGIS) and ICF International, 2014 (and additional analysis).||686,582 +LIBYA|Africa|Northern Africa|Upper Middle Income|1995|4681|1,5|3,6|21,1|4,2|13,4|Libyan maternal and child health survey. PAPCHILD Surveys. Cairo: The League of Arab States, 1997 (and additional analysis).||601,7280000000001 +LIBYA|Africa|Northern Africa|Upper Middle Income|2007|10723|2,9|6,5|21,0|5,6|22,4|National Libyan family health survey. PAPFAM surveys. Cairo: The league of Arab States, 2008 (and additional analysis conducted by PAPFAM).||592,638 +MADAGASCAR|Africa|Eastern Africa|Low Income|1992|4319|1,2|6,4|60,5|35,2|1,6|Enquête nationale démographique et sanitaire 1992. Demographic and Health Surveys. Centre National de Recherches sur l'Environnement. Antananarivo, Madagascar, 1994 (and additional analysis).||2226,883 +MADAGASCAR|Africa|Eastern Africa|Low Income|1993-94|3131||16,4|54,1|40,9||Enquête permanente aupres des menages - rapport principal, décembre 1995. Antananarivo, Madagascar, 1995 (and additional analysis).|Converted estimates|2292,7129999999997 +MADAGASCAR|Africa|Eastern Africa|Low Income|1995|5049||9,0|55,2|30,4||Enquête par grappes a indicateurs multiples [multiple indicators cluster survey (MICS)], Madagascar 1995 (rapport préliminaires). Antananarivo, Madagascar: Institut National de la Statistique et UNICEF, 1996 (and additional analysis).|Converted estimates|2438,716 +MADAGASCAR|Africa|Eastern Africa|Low Income|1997|3331|2,5|8,9|58,2|38,0|2,2|Enquête démographique et de santé, Madagascar 1997. Demographic and Health Surveys. Institut Nacional de la Statistique. Antananarivo, Madgascar, 1998 (and additional analysis).|Age-adjusted;|2611,192 +MADAGASCAR|Africa|Eastern Africa|Low Income|2003-04|5766|5,6|15,2|52,6|36,7|6,2|Enquête Démographique et de Santé de Madagascar 2003-2004. Demographic and Health Surveys. Calverton, Maryland, USA : INSTAT et ORC Macro, 2005 (and additional analysis).||3079,3579999999997 +MADAGASCAR|Africa|Eastern Africa|Low Income|2008-09|5845|||49,4|||Enquête démographique et de santé de Madagascar 2008-2009. Demographic and Health Surveys. Antananarivo, Madagascar: INSTAT et ICF Macro, 2010 (and additional analysis).|Weight data not validated|3352,2009999999996 +MADAGASCAR|Africa|Eastern Africa|Low Income|2012-13|10877|1,3|7,9|48,9|32,9|1,1|Madagascar 2012-13 Millenium Development Goals National Monitoring Survey -ENSOMD (and additional analysis)||3579,718 +MALAWI|Africa|Eastern Africa|Low Income|1992|3419|2,1|6,6|55,4|24,4|9,8|Malawi demographic and health survey 1992. Demographic and Health Surveys. National Statistics Office. Zomba, Malawi, 1993 (and additional analysis).||1843,902 +MALAWI|Africa|Eastern Africa|Low Income|1995|3654||8,5|53,8|26,5||Malawi social indicators survey 1995. MICS surveys. National Statistical Office and the Centre for Social Research. Lilongwe, Malawi, 1996 (and additional analysis).|Converted estimates|1834,6370000000002 +MALAWI|Africa|Eastern Africa|Low Income|1997-98|1038651|4,1|8,7|62,3|24,5|17,3|A relative profile of poverty in Malawi, 1998: A quintile-based poverty analysis of the Malawi integrated household survey, 1997-98. Poverty Monitoring System (and additional analysis).||1958,961 +MALAWI|Africa|Eastern Africa|Low Income|2000|10728|2,9|6,8|54,6|21,5|8,8|Malawi demographic and health survey 2000. Demographic and Health Surveys. Zomba, Malawi and Calverton, Maryland, USA: National Statistical Office and ORC Macro, 2001 (and additional analysis).||2080,159 +MALAWI|Africa|Eastern Africa|Low Income|2004-05|9440|3,2|6,3|52,4|18,6|10,2|Malawi demographic and health survey 2004. Demographic and Health Surveys. Calverton, Maryland: NSO and ORC Macro, 2005 (and additional analysis).||2286,081 +MALAWI|Africa|Eastern Africa|Low Income|2006|22348|1,5|4,2|53,1|15,6|11,3|Malawi multiple indicator cluster survey 2006, Final report. Lilongwe, Malawi: National Statistical Office and UNICEF, 2008. http://www.childinfo.org/mics3_surveys.html accessed 6 February 2009 (and additional analysis).||2415,187 +MALAWI|Africa|Eastern Africa|Low Income|2009|981||1,8|48,8|12,1|4,9|UNICEF and CDC. The national micronutrient survey 2009. Lilongwe, Malawi: Ministry of Health, UNICEF, Irish Aid and CDC, 2011.||2656,238 +MALAWI|Africa|Eastern Africa|Low Income|2010|5167|1,5|4,1|47,3|13,9|9,0|Malawi demographic and health survey 2010. Demographic and Health Surveys. Zomba, Malawi, and Calverton, Maryland, USA: NSO and ICF Macro. 2011 (and additional analysis).||2721,433 +MALAWI|Africa|Eastern Africa|Low Income|2013-14|18523|1,1|3,8|42,4|16,7|5,1|Malawi MDG endline survey 2014. Final Report. Zomba, Malawi: National Statistical Office, 2014 (and additional analysis)||2854,9959999999996 +MALAWI|Africa|Eastern Africa|Low Income|2015-16|5786|0,6|2,8|37,4|11,8|4,6|Malawi Demographic and Health Survey 2015-16. Zomba, Malawi, and Rockville, Maryland, USA. NSO and ICF (and additional analysis)||2887,867 +MALAYSIA|Asia|South-Eastern Asia|Upper Middle Income|1990|316306||||22,1||Annual reports, 1990-1993. Family Health Information System. Information and Documentation Unit. Kuala Lumpur, Malaysia, 1994 (and additional analysis).|NSS; converted estimate|2438,54 +MALAYSIA|Asia|South-Eastern Asia|Upper Middle Income|1991|323299||||23,1||Annual reports, 1990-1993. Family Health Information System. Information and Documentation Unit. Kuala Lumpur, Malaysia, 1994 (and additional analysis).|NSS; converted estimate|2470,317 +MALAYSIA|Asia|South-Eastern Asia|Upper Middle Income|1992|325469||||22,6||Annual reports, 1990-1993. Family Health Information System. Information and Documentation Unit. Kuala Lumpur, Malaysia, 1994 (and additional analysis).|NSS; converted estimate|2501,874 +MALAYSIA|Asia|South-Eastern Asia|Upper Middle Income|1993|313246||||20,5||Annual reports, 1990-1993. Family Health Information System. Information and Documentation Unit. Kuala Lumpur, Malaysia, 1994 (and additional analysis).|NSS; converted estimate|2533,864 +MALAYSIA|Asia|South-Eastern Asia|Upper Middle Income|1994|317551||||19,7||Annual reports, 1994 and 1995. Family Health Information System. Division of Family Health Development. Kuala Lumpur, Malaysia, 1996 (and additional analysis).|NSS; converted estimate|2565,97 +MALAYSIA|Asia|South-Eastern Asia|Upper Middle Income|1995|344736||||17,7||Annual reports, 1994 and 1995. Family Health Information System. Division of Family Health Development. Kuala Lumpur, Malaysia, 1996 (and additional analysis).|NSS; converted estimate|2596,542 +MALAYSIA|Asia|South-Eastern Asia|Upper Middle Income|1999|5108||15,3|20,7|16,7|5,5|A study of malnutrition in under five children in Malaysia. Kuala Lumpur, Malaysia: Ministry of Health, 2000 (and additional analysis).|Converted estimates|2684,1620000000003 +MALAYSIA|Asia|South-Eastern Asia|Upper Middle Income|2006|5546|||17,2|12,9||Nutritional status of children below five years in Malaysia: Anthropometric analyses from the third national health and morbidity survey III (NHMS, 2006). Malaysian Journal of Nutrition 2009;15:121-36.||2479,848 +MALAYSIA|Asia|South-Eastern Asia|Upper Middle Income|2015|2486||8,0|17,7|12,4|7,1|National Health and Morbidity Survey 2015 (NHMS 2015). Vol. II: Non-Communicable Diseases, Risk Factors & Other Health Problems. Kuala Lumpur, Malaysia: IPH, 2015.||2569,345 +MALAYSIA|Asia|South-Eastern Asia|Upper Middle Income|2016|||11,5|20,7|13,7|6,0|National Health and Morbidity Survey 2015 (NHMS 2016)||2612,2470000000003 +MALDIVES|Asia|Southern Asia|Upper Middle Income|1994|1995|3,5|16,1|36,1|32,5|1,2|Nutritional status and child feeding practices of Maldivian children. Department of Public Health. Male, Maldives, 1994.||40,933 +MALDIVES|Asia|Southern Asia|Upper Middle Income|1995|798||18,9|33,0|39,0|2,2|Maldives multiple indicator survey report (MICS). United Nations Children's Fund. Malé, Maldives, June 1996 (and additional analysis).|Converted estimates|39,92 +MALDIVES|Asia|Southern Asia|Upper Middle Income|1997-98|1486|9,2|19,9|43,0|36,7|9,8|Vulnerability and poverty assessment 1998. Male', Republic of Maldives, 1999 (and additional analysis).|Age-adjusted;|36,94 +MALDIVES|Asia|Southern Asia|Upper Middle Income|2001|746|3,5|13,4|31,9|25,7|3,9|Multiple indicator cluster survey (MICS 2) Maldives (draft). Ministry of Health. Male, Republic of Maldives, 2001 (and additional analysis).||31,522 +MALDIVES|Asia|Southern Asia|Upper Middle Income|2009|2840|2,7|10,8|18,6|17,7|6,1|Maldives demographic and health survey 2009. Demographic and Health Surveys. Calverton, Maryland: MOHF and ICF Macro, 2010 (and additional analysis).||31,933000000000003 +MALI|Africa|Western Africa|Low Income|1987|1525|3,2|11,3|35,8|28,6|0,5|Enquête démographique et de santé au Mali, 1987. Demographic and Health Surveys. Bamako, Mali, 1989 (and additional analysis).|Age-adjusted;|1503,1889999999999 +MALI|Africa|Western Africa|Low Income|1995-96|4987|9,8|22,0|39,9|37,7|2,3|Enquête demographique et de santé Mali 1995-1996. Demographic and Health Surveys. Cellule de Planification et de Statistique. Bamako, Mali, 1996 (and additional analysis).|Age-adjusted;|1867,412 +MALI|Africa|Western Africa|Low Income|2001|10568|4,2|12,6|42,5|30,0|3,1|Enquête démographique et de santé au Mali 2001. Demographic and Health Surveys. Calverton, Maryland, USA: CPS/MS, DNSI et ORC Macro, 2002 (and additional analysis).||2143,647 +MALI|Africa|Western Africa|Low Income|2006|12602|6,1|15,4|37,6|27,9|4,7|de l'Économie, de l'Industrie et du Commerce (DNSI/MEIC) et Macro International Inc. Enquête démographique et de santé du Mali 2006. DHS. Calverton, Maryland, USA: CPS/DNSI et Macro International Inc., 2007 (and additional analysis).||2573,9970000000003 +MALI|Africa|Western Africa|Low Income|2009-10|22934|2,2|9,0|27,8|19,1|1,0|Enquête par Grappes à Indicateurs Multiples 2009 - 2010, Rapport final, Bamako Mali, 2011 (and additional analysis)||2931,546 +MALI|Africa|Western Africa|Low Income|2015|14941|3,4|13,5|30,4|25,0|1,9|Enquête par Grappes à Indicateurs Multiples au Mali (MICS-Mali), 2015, Résultats clés. Bamako, Mali, INSTAT (and additional analysis)||3274,1459999999997 +MARSHALL ISLANDS|Oceania|Micronesia|Upper Middle Income|2017|876|1,1|3,5|34,8|11,9|4,1|Republic of the Marshall Islands Integrated Child Health and Nutrition Survey 2017, Final Report. Majuro, Republic of the Marshall Islands: RMI Ministry of Health and Human Services, RMI Economic, Policy Planning and Statistic Office, 2017 (and additional analysis)|oedema not considered|1,0 +MAURITANIA|Africa|Western Africa|Lower Middle Income|1988|931||19,1|40,2|||The socio-economic determinants of nutritional status among children under five in Mauritania. Social Dimensions of Adjustment Surveys. Washington D.C.: The World Bank, 1990 (and additional analysis).|Converted estimates|336,885 +MAURITANIA|Africa|Western Africa|Lower Middle Income|1990|4294|8,0|17,4|54,6|43,1|6,8|Mauritania maternal and child health survey 1990-91 (MMCHS). PAPCHILD Surveys. Nouakchott, Islamic Republic of Mauritania; 1992 (and additional analysis).||353,026 +MAURITANIA|Africa|Western Africa|Lower Middle Income|1995-96|3733||8,7|49,8|20,3||Enquête nationale sur les indicateurs des objectifs à mi-terme en Mauritanie (MICS). Nouakchott, République Islamique de Mauritanie, 1996 (and additional analysis).|Converted estimates|405,332 +MAURITANIA|Africa|Western Africa|Lower Middle Income|2000-01|3824|7,2|15,3|38,6|29,7|3,8|Enquête démographique et de santé Mauritanie 2000-2001. Demographic and Health Surveys. Calverton, Maryland, USA: ONS et ORC Macro, 2001 (and additional analysis).||447,05800000000005 +MAURITANIA|Africa|Western Africa|Lower Middle Income|2007|8107|3,8|13,6|31,5|25,5|2,3|Mauritanie, enquête par grappes à indicateurs multiples 2007. Nouakchott, Mauritania: ONS and UNICEF, 2008 (and additional analysis).||526,951 +MAURITANIA|Africa|Western Africa|Lower Middle Income|2008|6338|1,1|8,1|23,0|15,9|1,0|Enquête rapide nationale sur la nutrition et survie de l'enfant en Mauritanie: Rapport final. Nouakchott, Mauritanie: ANED, ONS et UNICEF, 2008 (and additional analysis).||539,113 +MAURITANIA|Africa|Western Africa|Lower Middle Income|2011|8527|9,0|18,1|29,7|27,7|3,1|Suivi de la situation des femmes et des enfants. Enquête par grappes à indicateurs multiples (MICS) 2011: Rapport final. Nouakchott, Mauritanie: ONS, 2012 (and additional analysis)||581,069 +MAURITANIA|Africa|Western Africa|Lower Middle Income|2012|6569|1,9|11,6|22,0|19,5|1,2|Enquête nutritionnelle nationale utilisant la méthodologie SMART: Résultats préliminaires. Nouakchott, Mauritanie, Juillet 2012 (and additional analysis).||596,372 +MAURITANIA|Africa|Western Africa|Lower Middle Income|2015|9926|3,5|14,8|27,9|24,9|1,3|Mauritanie Enquête par Grappes à Indicateurs Multiples (MICS) 2015 - Rapport Final, Mars 2017 (and additional analysis)||640,1669999999999 +MAURITIUS|Africa|Eastern Africa|Upper Middle Income|1985|2430||18,3|27,3|21,1|8,8|Mauritius national nutrition survey 1985: summary report. Evaluation and Nutrition Unit. Port Louis, Mauritius, 1988 (and additional analysis).|Converted estimates|104,34100000000001 +MAURITIUS|Africa|Eastern Africa|Upper Middle Income|1995|1537||15,7|13,6|13,0|6,5|A survey on nutrition in Mauritius and Rodrigues, 1995 (final report). Port Louis, Mauritius, 1996 (and additional analysis).|Converted estimates|111,01100000000001 +MEXICO|Latin America and the Caribbean|Central America|Upper Middle Income|1988|7422||7,4|28,7|12,4|6,1|Estado nutricional de preescolares y las mujeres en Mexico: resultados de una encuesta probabilistica nacional. Gaceta Medica de Mexico 1990;126:207-226 (and additional analysis).|Converted estimates|11393,073999999999 +MEXICO|Latin America and the Caribbean|Central America|Upper Middle Income|1989|14932|1,7|6,1|26,0|9,6|11,0|Encuesta nacional de alimentacion en el medio rural, 1989 (ENAL). Instituto de la Nutricion 'Salvador Zubiran'. Comision Nacional de Alimentacion. Division de Nutricion, INNSZ. Tlalpan, Mexico, D.F, 1990 (and additional analysis).|Adjusted NR to NA;|11447,713 +MEXICO|Latin America and the Caribbean|Central America|Upper Middle Income|1996|31601||8,5|25,8|10,3||La desnutricion infantil en el medio rural mexicano. Salud Publica de Mexico 1998;40:150-160.|Adjusted NR to NA; converted estimates|11885,226999999999 +MEXICO|Latin America and the Caribbean|Central America|Upper Middle Income|1998-99|10125945|0,7|2,0|21,4|5,6|7,5|Encuesta nacional de nutricion 1999. Tomo 1: Resultados, niños menores de 5 años. Instituto Nacional de Salud Publica. Cuernavaca, Mexico, 2000 (and additional analysis).||11995,837 +MEXICO|Latin America and the Caribbean|Central America|Upper Middle Income|2006|9400075|0,4|2,0|15,5|3,4|7,5|Encuesta nacional de salud y nutrición 2006. Cuernavaca, México: Instituto Nacional de Salud Pública, 2006 (and additional analysis).||11623,607 +MEXICO|Latin America and the Caribbean|Central America|Upper Middle Income|2011-12|10747724|0,4|1,6|13,6|2,8|9,0|Encuesta nacional de salud y nutrición 2012. Resultados nacionales. Cuernavaca, México: Instituto Nacional de Salud Pública, 2012 (and additional analysis).||11459,499 +MEXICO|Latin America and the Caribbean|Central America|Upper Middle Income|2015|7806|0,4|1,0|12,4|3,9|5,2|Encuesta Nacional de Niños, Niñas y Mujeres 2015 - Encuesta de Indicadores Múltiples por Conglomerados 2015, Informe Final. Ciudad de México, México: Instituto Nacional de Salud Pública y UNICEF México (and additional analysis)||11533,065 +MEXICO|Latin America and the Caribbean|Central America|Upper Middle Income|2016|11093877|0,3|2,0|10,0|4,2|5,3|Encuesta nacional de salud y nutrición 2016. Cuernavaca, México: Instituto Nacional de Salud Pública, 2016 (and additional analysis)||11581,28 +MONGOLIA|Asia|Eastern Asia|Lower Middle Income|1992|1679||2,4|33,1|11,8||Report of a consultancy on the Mongolian Child Nutrition Survey. Institute of Nutrition. Nakornpathom, Thailand, 1992 (and additional analysis).|Age-adjusted; converted estimates|326,29200000000003 +MONGOLIA|Asia|Eastern Asia|Lower Middle Income|1999|4146|1,9|4,3|30,1|10,8|7,0|Report on the 2nd national child and nutrition survey, Mongolia 1999. Institute of Nutrition and Faculty of Medicine, Ramathibodi Hospital, Mahidol University, Thailand, 2000 (and additional analysis).||239,324 +MONGOLIA|Asia|Eastern Asia|Lower Middle Income|2000|5918|3,0|7,1|29,8|11,6|12,7|Mongolia child and development survey - 2000 (MICS-2): National report 2001. Ulaanbaatar, Mongolia: National Statistics Office, 2001 (and additional analysis).||233,94 +MONGOLIA|Asia|Eastern Asia|Lower Middle Income|2004|1247|0,1|0,6|23,5|4,8|6,1|Nutritional status of Mongolian children and women: 3rd National nutrition survey report. Ulaanbaatar, Mongolia, 2006.||219,17700000000002 +MONGOLIA|Asia|Eastern Asia|Lower Middle Income|2005|3357|1,1|2,7|27,5|5,3|14,2|"Mongolia ""Child and Development 2005"" survey (MICS-3), final report. Ulaanbaatar, Mongolia, 2007 (and additional analysis)."||221,60299999999998 +MONGOLIA|Asia|Eastern Asia|Lower Middle Income|2010|21390978|0,6|1,9|15,5|4,7|6,7|Population nutrition status. Fourth national survey report. Ulaanbaatar, Mongolia: NTC, 2013 (and additional analysis).||280,317 +MONGOLIA|Asia|Eastern Asia|Lower Middle Income|2013|5744|0,4|1,0|10,8|1,6|10,5|Social indicator sample survey 2013 (MICS). Final Report.Ulaanbaatar, Mongolia: National Statistical Office, 2014.||337,111 +MONGOLIA|Asia|Eastern Asia|Lower Middle Income|2016|2243|0,5|1,3|7,3|0,9|11,7|Nutrition Status of the Population of Mongolia: Fifth National Nutrition Survey Report, Ulanbaatar, Mongolia 2017 (and additional analysis)||367,586 +MONTENEGRO|Europe|Southern Europe|Upper Middle Income|2005-06|891|2,2|4,2|7,9|2,2|15,6|Montenegro multiple indicator cluster survey 2005, Final report. Podgorica, Montenegro: MONSTAT, SMMRI and UNICEF, 2006. (and additional analysis).||40,302 +MONTENEGRO|Europe|Southern Europe|Upper Middle Income|2013|1392|1,2|2,8|9,4|1,0|22,3|2013 Montenegro multiple indicator cluster survey and 2013 Montenegro Roma settlements multiple indicator cluster survey, (MICS): Final Report. Podgorica, Montenegro: MONSTAT and UNICEF, 2014 (and additional analysis)||38,514 +MOROCCO|Africa|Northern Africa|Lower Middle Income|1987|4404|1,5|3,9|31,0|10,4|5,6|Enquête national sur la planification familiale, la fécondité et la santé de la population au Maroc (ENPS) 1987. Demographic and Health Surveys. Ministère de la Santé Publique. Rabat, Maroc, 1989 (and additional analysis).||3543,885 +MOROCCO|Africa|Northern Africa|Lower Middle Income|1992|4649|1,1|2,6|30,1|8,1|10,8|Enquête nationale sur la population et la santé (ENPS-II) 1992. Demographic and Health Surveys. Rabat, Royaume du Maroc, 1993 (and additional analysis).||3344,383 +MOROCCO|Africa|Northern Africa|Lower Middle Income|1996-97|3653|2,0|4,7|28,9|7,7|13,7|Enquête de santé materno-infantil sur la population Marocaine 1996-97. Pan Arab project for child development (PAPCHILD). Rabat, Maroc, 2000 (and additional analysis).||3283,03 +MOROCCO|Africa|Northern Africa|Lower Middle Income|2003-04|5602|5,0|10,8|23,1|9,8|13,3|Enquête dur la population et la santé familiale (EPSF) 2003-2004. Demographic and Health Surveys. Calverton, Maryland, USA: Ministère de la Santé et ORC Macro, 2005 (and additional analysis).||3037,949 +MOROCCO|Africa|Northern Africa|Lower Middle Income|2010-11|6873|1,0|2,3|14,9|2,9|10,8|Enquête nationale sur la population et la santé familiale (ENPSF) 2010-2011. Rapport préliminaire. Rabat, Royaume de Maroc: Ministère de la Santé, 2012 (and additional analysis).||3212,909 +MOZAMBIQUE|Africa|Eastern Africa|Low Income|1995|4586||9,6|59,9|23,9||Multiple indicator cluster survey Mozambique - 1995. MICS Surveys. Ministry of Planning and Finance. Maputo, Mozambique, 1996 (and additional analysis).|Converted estimates|2840,304 +MOZAMBIQUE|Africa|Eastern Africa|Low Income|1997|3621|4,3|9,8|48,7|26,3|5,9|Moçambique inquérito demográfico e de saude 1997. Demographic and Health Surveys. Instituto Nacional de Estatistica. Maputo, Moçambique, 1998 (and additional analysis).|Age-adjusted;|3051,434 +MOZAMBIQUE|Africa|Eastern Africa|Low Income|2000-01|1868604|3,6|8,1|50,7|24,5|8,8|Questionario de indicadores basicos de bem-estar (QUIBB): Relatorio final. Maputo, Moçambique: Instituto Nacional de Estadisticas, 2001 (and additional analysis).||3401,7090000000003 +MOZAMBIQUE|Africa|Eastern Africa|Low Income|2003|9052|2,1|5,4|46,9|21,2|6,3|Moçambique inquérito demográfico e de saúde 2003. Demographic and Health Surveys. Calverton, Maryland, USA: Instituto Nacional de Estatística, Ministério da Saúde and ORC Macro, 2005 (and additional analysis).||3613,88 +MOZAMBIQUE|Africa|Eastern Africa|Low Income|2008|10691|1,3|4,2|43,5|18,2|3,6|Mozambique multiple indicator cluster survey 2008 (MICS). Maputo, Mozambique: INE, 2009 (and additional analysis).||4145,28 +MOZAMBIQUE|Africa|Eastern Africa|Low Income|2011|10696|2,4|6,1|42,9|15,6|7,8|Moçambique inquérito demográfico e de Saúde 2011. Demographic and Health Surveys. Calverton, Maryland, USA: MISAU, INE e ICFI, 2013 (and additional analysis).||4443,616 +MYANMAR|Asia|South-Eastern Asia|Lower Middle Income|1990|5899||||32,5||Ministry of Health. Nutrition Situation of Myanmar Children. Preliminary report of the national nutrition survey 1990. Rangoon, Myanmar, 1991 (and additional analysis).|Age-adjusted; converted estimates|5165,424 +MYANMAR|Asia|South-Eastern Asia|Lower Middle Income|1991|5540||12,7|53,6|37,0||Nutrition situation of Myanmar children. Report of the National Nutrition Survey 1991. Ragoon, Myanmar, 1994 (and additional analysis).|Age-adjusted; converted estimates|5064,125 +MYANMAR|Asia|South-Eastern Asia|Lower Middle Income|1994|5994||9,2|58,7|31,2||National nutrition survey, 1994. National Nutrition Centre. Yangon, Myanmar, 1995 (and additional analysis).|Age-adjusted; converted estimates|4912,187 +MYANMAR|Asia|South-Eastern Asia|Lower Middle Income|1995|19908||||38,7||Monitoring progress toward the goals of the World Summit for Children through multiple indicator cluster survey (MICS). Yangon, Myanmar, 1995 (and additional analysis).|Converted estimate|4896,417 +MYANMAR|Asia|South-Eastern Asia|Lower Middle Income|1997|4894||9,6|55,4|28,1|9,7|National nutrition survey 1997. National Nutrition Centre. Yangon, Myanmar, 2000 (and additional analysis).|Age-adjusted; converted estimates|4929,849 +MYANMAR|Asia|South-Eastern Asia|Lower Middle Income|2000|8492|2,9|10,7|40,8|30,0|2,4|Union of Myanmar monitoring national programme of action goals though multiple indicator cluster survey 2000. Yangon, Myanmar, 2001 (and additional analysis).||5057,418 +MYANMAR|Asia|South-Eastern Asia|Lower Middle Income|2003|8452|2,9|10,7|40,6|29,6|2,4|Multiple indicator cluster survey 2003 (MICS). Yangon, Myanmar, 2004 (and additional analysis).||5298,581 +MYANMAR|Asia|South-Eastern Asia|Lower Middle Income|2009-10|15430|2,1|7,9|35,1|22,6|2,6|Myanmar multiple indicator cluster survey 2009 - 2010: Final Report (MICS3). Nay Pyi Taw, Myanmar: Ministry of National Planning and Economic Development and Ministry of Health, 2011.||5021,325 +MYANMAR|Asia|South-Eastern Asia|Lower Middle Income|2015-16|4204|1,3|6,6|29,4|18,5|1,5|Myanmar Demographic and Health Survey 2015-16: Final Report. 2016 (and additional analysis)||4537,81 +NAMIBIA|Africa|Southern Africa|Upper Middle Income|1992|2553|3,2|9,6|35,6|21,4|4,5|Namibia demographic and health survey 1992. Demographic and Health Surveys. Windhoek, Republic of Namibia, 1993 (and additional analysis).||249,93599999999998 +NAMIBIA|Africa|Southern Africa|Upper Middle Income|2000|4273|3,0|10,0|29,3|20,2|3,3|Namibia demographic and health survey 2000 (Demographic and Health Surveys). Windhoek, Namibia: MOHSS, 2003 (and additional analysis).||276,686 +NAMIBIA|Africa|Southern Africa|Upper Middle Income|2006-07|5151|2,0|7,6|29,2|17,4|4,7|Namibia demographic and health survey 2006-07. Demographic and Health Surveys. Windhoek, Namibia and Calverton, Maryland, USA: MoHSS and Macro International Inc., 2008 (and additional analysis).||281,507 +NAMIBIA|Africa|Southern Africa|Upper Middle Income|2013|2610|2,8|7,1|22,7|13,2|4,0|The Namibia demographic and health survey 2013. Demographic and Health Surveys. Windhoek, Namibia, and Rockville, Maryland, USA: MoHSS and ICF International, 2014 (and additional analysis).||317,961 +NAURU|Oceania|Micronesia|Upper Middle Income|2007|267|0,2|1,0|24,0|4,8|2,8|Nauru 2007 demographic and health survey. Demographic and Health Surveys. Auckland, New Zealand: NBS, SPC and Macro, 2009 ( http://www.spc.int/prism/country/nr/stats/Publication/DHS/dhs.htm, accessed 10/05/11).||1,0 +NEPAL|Asia|Southern Asia|Low Income|1995|6781||6,0|68,2|42,6||Nepal multiple indicator surveillance: cycle I, Jan to March 1995 health and nutrition - final report (MICS). Kathmandu, Nepal, 1996 (and additional analysis).|Age-adjusted; converted estimates|3350,507 +NEPAL|Asia|Southern Asia|Low Income|1996|3972|2,8|12,6|65,7|47,1|0,7|Nepal family health survey, 1996. Demographic and Health Surveys. Ministry of Health. Kathmandu, Nepal, 1997 (and additional analysis).|Age-adjusted;|3422,0429999999997 +NEPAL|Asia|Southern Asia|Low Income|1997-98|17471|1,4|7,9|61,1|38,2|0,4|Nepal micronutrient status survey 1998. Kathmandu, Nepal: Ministry of Health, Child Health Division, HMG/N, New ERA, Micronutrient Initiative, UNICEF Nepal and WHO, 2000 (and additional analysis).||3523,677 +NEPAL|Asia|Southern Asia|Low Income|2001|6356|2,8|11,3|57,1|42,8|0,7|Nepal demographic and health survey 2001. Demographic and Health Surveys. Calverton, Maryland, USA: Family Health Division, Ministry of Health; New ERA; and ORC Macro, 2002 (and additional analysis).||3585,4829999999997 +NEPAL|Asia|Southern Asia|Low Income|2006|5195|2,7|12,7|49,2|38,5|0,6|Nepal demographic and health survey 2006. Demographic and Health Surveys. Kathmandu, Nepal: Ministry of Health and Population, New ERA, and Macro International Inc., 2007 (and additional analysis).||3384,3559999999998 +NEPAL|Asia|Southern Asia|Low Income|2011|2521|2,9|11,2|40,5|29,1|1,5|Nepal demographic and health survey 2011. Demographic and Health Surveys. Kathmandu, Nepal: Ministry of Health and Population, New ERA, and ICF International, Calverton, Maryland 2012 (and additional analysis).||3101,5359999999996 +NEPAL|Asia|Southern Asia|Low Income|2014|5155|3,2|11,3|37,5|30,1|2,1|Nepal Multiple Indicator Cluster Survey 2014: Final Report (and additional analysis)||2857,447 +NEPAL|Asia|Southern Asia|Low Income|2016-17|2477|1,9|9,6|36,0|27,2|1,2|Nepal Demographic and Health Survey 2016. Kathmandu, Nepal: Ministry of Health, Nepal. 2017 (and additional analysis)||2756,281 +NICARAGUA|Latin America and the Caribbean|Central America|Lower Middle Income|1993|3609|0,9|2,5|29,5|9,6|5,5|Nicaragua 1993 living standards measurement survey (LSMS). Washington, D.C.: The World Bank, 1997 (and additional analysis).||691,541 +NICARAGUA|Latin America and the Caribbean|Central America|Lower Middle Income|1997-98|6837|1,5|3,4|30,5|10,3|6,9|Encuesta nicaragüense de demografia y salud 1998. Demographic and Health Surveys.Instituto Nacional de Estadisticas y Censos. Managua, Nicaragua, 1999 (and additional analysis).||676,9810000000001 +NICARAGUA|Latin America and the Caribbean|Central America|Lower Middle Income|2001|5741|0,9|2,3|25,1|7,7|7,2|Encuesta nicaragüense de demografia y salud 2001. Demographic and Health Surveys. Calverton, Maryland, USA: INEC, MINSA, and ORC Macro, 2002 (and additional analysis).||660,342 +NICARAGUA|Latin America and the Caribbean|Central America|Lower Middle Income|2003-05|1494|0,0|0,3|18,8|4,3|5,2|Sistema integrado de vigilancia de interventiones nutricionales (SIVIN): Informe de progreso, Nicaragua 2003-05. Managua, Nicaragua 2008 (and additional analysis).||641,307 +NICARAGUA|Latin America and the Caribbean|Central America|Lower Middle Income|2006-07|12318|0,5|1,5|23,1|5,7|6,2|Encuesta nicaragüense de demografía y salud ENDESA 2006/07, informe final. Managua, Nicaragua: INIDE y CDC, 2008 (and additional analysis).||632,424 +NICARAGUA|Latin America and the Caribbean|Central America|Lower Middle Income|2011-12|10311|0,7|2,2|17,3|4,6|8,3|Encuesta Nicaragüense de Demografía y Salud 2011/12 - Informe Final (and additional analysis)||625,669 +NIGER (THE)|Africa|Western Africa|Low Income|1985|1672||25,3|43,8|45,0||Enquête nationale sur la morbidité et la mortalité, rapport No 1. Cellule de Planification. Niamey, République de Niger, 1985 (and additional analysis).|Converted estimates|1430,494 +NIGER (THE)|Africa|Western Africa|Low Income|1992|4284|6,7|18,8|45,3|38,7|2,0|Enquête démographique et de santé, Niger 1992. Demographic and Health Surveys. Niamey, Niger, 1993 (and additional analysis).||1726,497 +NIGER (THE)|Africa|Western Africa|Low Income|1998|4204|6,5|19,8|50,7|46,9|1,1|Enquête démographique et de santé, Niger 1998. Demographic and Health Surveys. Calverton, Maryland, U.S.A.: Care International/Niger et Macro International Inc., 1998 (and additional analysis).|Age-adjusted;|2173,154 +NIGER (THE)|Africa|Western Africa|Low Income|2000|4831|6,1|16,2|53,5|43,1|1,7|Enquête à indicateurs multiples de la fin de la décennie (MICS2): draft. Niamey: République du Niger and UNICEF, 2001 (and additional analysis).||2342,97 +NIGER (THE)|Africa|Western Africa|Low Income|2006|4389|4,3|12,5|54,8|39,9|3,5|Enquête démographique et de santé et à indicateurs multiples du Niger 2006. Demographic and Health Surveys adn MICS-3. Calverton, Maryland, USA : INS et Macro International Inc., 2007 (and additional adnalysis).||2949,612 +NIGER (THE)|Africa|Western Africa|Low Income|2012|5822|6,7|18,2|43,5|38,0|3,1|Enquête démographique et de santé et indicateurs multiples du Niger 2012. Demographic and Health Surveys and MICS. Calverton, Maryland, USA: INS et ICF International, 2013 (and additional analysis).||3667,929 +NIGER (THE)|Africa|Western Africa|Low Income|2016|1698329|2,1|10,1|40,6|31,4|1,1|Evaluation Nationale De La Situation Nutritionnelle par La Methodologie SMART Au Niger, November 2016 (and additional analysis)||4217,879 +NIGERIA|Africa|Western Africa|Lower Middle Income|1990|5854|4,4|11,7|48,7|33,1|3,3|Nigerian demographic and health survey 1990. Demographic and Health Surveys. Federal Office of Statistics, Lagos, Nigeria, 1992 (and additional analysis).||16808,703999999998 +NIGERIA|Africa|Western Africa|Lower Middle Income|1993|2664||20,6|43,8|35,1|5,5|National micronutrient survey, 1993. Ibadan, Nigeria, 1996 (and additional analysis).|Converted estimates|17839,139 +NIGERIA|Africa|Western Africa|Lower Middle Income|2003|5219|4,8|11,2|42,5|26,7|6,2|Nigeria demographic and health survey 2003. Demographic and Health Surveys. Calverton, Maryland: National Population Commission and ORC Macro, 2004 (and additional analysis).||23033,519 +NIGERIA|Africa|Western Africa|Lower Middle Income|2007|13323|6,7|13,4|39,2|23,3|13,3|Nigeria multiple indicator cluster survey 2007: Final report (MICS). Abuja, Nigeria: NBS, 2007 (and additional analysis).| High exclusion rate|25765,534 +NIGERIA|Africa|Western Africa|Lower Middle Income|2008|23792|7,7|14,5|40,6|26,7|10,4|Nigeria demographic and health survey 2008. Demographic and Health Surveys. Abuja, Nigeria: National Population Commission and ICF Macro, 2009 (and additional analysis).||26394,363999999998 +NIGERIA|Africa|Western Africa|Lower Middle Income|2011|24173|4,6|11,6|35,8|25,4|2,9|Nigeria multiple indicator cluster survey 2011 (MICS): Monitoring the situation of children and women. Abuja, Nigeria, 2011 (and additional analysis).||28404,179 +NIGERIA|Africa|Western Africa|Lower Middle Income|2013|28947|9,0|18,1|36,5|31,0|5,0|Nigeria demographic and health survey 2013. Demographic and Health Surveys. Abuja, Nigeria, and Rockville, Maryland, USA: NPC and ICF International, 2014 (and additional analysis).||29791,267000000003 +NIGERIA|Africa|Western Africa|Lower Middle Income|2014|19945|2,0|7,9|32,9|19,8|1,8|Summary findings of national nutrition and health survey, 9th feb to 5th May 2014, Nigeria: SMART methods (and additional analysis).||30461,065 +NIGERIA|Africa|Western Africa|Lower Middle Income|2015||1,8|7,2|32,9|19,4|1,6|National Nutrition and Health Surveys (NNHS) - Report on The Nutrition and Health Situation of Nigeria, November 2015|(pending reanalysis)|31109,161 +NIGERIA|Africa|Western Africa|Lower Middle Income|2016-17|27398|2,9|10,8|43,6|31,5|1,5|Multiple Indicator Cluster Survey 2016-17, Final Report. Abuja, Nigeria: National Bureau of Statistics and United Nations Children’s Fund. 2017 (and additional analysis)||31801,515 +NORTH MACEDONIA|Europe|Southern Europe|Upper Middle Income|1999|1117|0,4|1,7|8,0|1,9|9,6|Multiple indicator cluster survey in FYR Macedonia with micronutrient component (MICS). National Institute of Nutrition, Rome, Italy, 2000 (and additional analysis).||140,378 +NORTH MACEDONIA|Europe|Southern Europe|Upper Middle Income|2005|4223|1,7|3,4|11,3|1,8|16,2|Republic of Macedonia - multiple indicator cluster survey 2005-06. Final report. Skopje: State Statistcial Office of the Republic of Macedonia, 2007 (and additional analysis).||124,035 +NORTH MACEDONIA|Europe|Southern Europe|Upper Middle Income|2011|1332|0,2|1,8|4,9|1,3|12,4|Multiple indicator cluster survey 2011 (MICS). Skopje, the former Yugoslav Republic of Macedonia: Ministry of Health, Ministry of Education and Science, Ministry of Labour and Social Policy, 2012 (and additional analysis)||110,93700000000001 +OMAN|Asia|Western Asia|High Income|1991|764||7,8|24,2|18,6|8,4|Ministry of Health. National Nutrition Survey of the Sultanate of Oman. UNICEF Muscat, Oman, 1993 (and additional analysis).|Age-adjusted; converted estimates|323,08 +OMAN|Asia|Western Asia|High Income|1994-95|639|0,8|7,2|21,1|10,4|1,0|National study on the prevalence of vitamin A deficiency (VAD) among children 6 months to 7 years. Muscat, Sultanate of Oman, 1995 (and additional analysis).|Age-adjusted;|316,531 +OMAN|Asia|Western Asia|High Income|1999|14076|1,1|7,3|12,9|11,3|1,6|Implications of the use of the new WHO growth charts on the interpretation of malnutrition and obesity in infants and young children in Oman. Eastern Mediterranean Health Journal 2009;15:890-8 (and additional analysis).||288,705 +OMAN|Asia|Western Asia|High Income|2009|8105|0,8|7,1|9,8|8,6|1,7|Second national PEM survey 2009. Ministry of Health. Muscat, Oman, 2011.||275,056 +OMAN|Asia|Western Asia|High Income|2014||2,4|7,5|14,1|9,7|4,4|Multiple Indicator Cluster Survey 2014, Key Findings. Muscat, Oman, 2016. ||369,95300000000003 +PAKISTAN|Asia|Southern Asia|Lower Middle Income|1985-87|6707||24,0|62,5|44,4|7,8|National nutrition survey 1985-87 report. National Institute of Health, Nutrition Division. Islamabad, Pakistan, 1988 (and additional analysis).|Converted estimates|16239,89 +PAKISTAN|Asia|Southern Asia|Lower Middle Income|1990-91|4588|4,8|12,5|54,5|39,0|5,4|Pakistan demographic and health survey 1990/91. Demographic and Health Surveys. National Institute of Population Studies. Islamabad, Pakistan, 1992 (and additional analysis).||18961,337 +PAKISTAN|Asia|Southern Asia|Lower Middle Income|1990-94|3240|5,0|17,2|42,7|35,3|1,6|National health survey of Pakistan (NHSP, 1990-94): Health profile of the people of Pakistan. Islamabad, Pakistan, 1998 (and additional analysis).||19244,166 +PAKISTAN|Asia|Southern Asia|Lower Middle Income|1995|7368||||34,2||Multiple indicator cluster survey of Pakistan, 1995. MICS surveys. Government of Pakistan. Islamabad, Pakistan, 1996 (and additional analysis).|Converted estimate|19550,139 +PAKISTAN|Asia|Southern Asia|Lower Middle Income|2001|10027|5,9|14,2|41,5|31,3|4,8|National nutrition survey 2001-2002. Islamabad, Pakistan: Planning Commission, Government of Pakistan and UNICEF, 2004 (and additional analysis).||20265,38 +PAKISTAN|Asia|Southern Asia|Lower Middle Income|2011|29525|5,7|14,8|43,0|30,9|6,4|National nutrition survey Pakistan, 2011. Islamabad, Pakistan: Aga Khan University, PMRC, Government of Pakistan and UNICEF, 2012 (and additional analysis).||23272,257999999998 +PAKISTAN|Asia|Southern Asia|Lower Middle Income|2012-13|3838|3,3|10,5|45,0|31,8|4,8|Pakistan demographic and health survey 2012-13. Demographic and Health Surveys. Islamabad, Pakistan, and Calverton, Maryland, USA: NIPS and ICF International, 2013 (and additional analysis).||24171,491 +PAKISTAN|Asia|Southern Asia|Lower Middle Income|2017-18|3622|2,4|7,1|37,6|23,1|2,5|Pakistan Demographic and Health Survey 2017-18. Islamabad, Pakistan, and Rockville, Maryland, USA: NIPS and ICF (and additional analysis)||25224,011000000002 +PANAMA|Latin America and the Caribbean|Central America|High Income|1997|2289|0,4|1,4|21,5|6,3|6,2|Encuesta de niveles de vida. 1997 Panama living standards survey (LSMS). Ciudad de Panama, Republica de Panama, 1998 (and additional analysis).||327,721 +PANAMA|Latin America and the Caribbean|Central America|High Income|2003|313165|0,4|1,6|23,7|5,3|11,1|Situacion nutricional, patron de consumo y acceso a alimentos de la poblacion panameña: Segunda encuesta de niveles de vida - 2003. Panama City, Republica de Panama, 2006 (and additional analysis)||350,213 +PANAMA|Latin America and the Caribbean|Central America|High Income|2008|288853|0,3|1,2|19,0|3,9|9,7|Estado nutricional de niños menores de cinco años: Encuesta de niveles de vida, 2008. Panama City, Republica de Panama, 2009 (and additional analysis)||360,62699999999995 +PAPUA NEW GUINEA|Oceania|Melanesia|Lower Middle Income|1982-83|27510|1,2|5,5|46,0|22,8|3,1|Summary results by environmental zone from the 1982/83 National Nutrition Survey of Papua New Guinea. Papua New Guinea Institute of Medical Research. Goroka, Papua New Guinea, 1992 (and additional analysis).| Adjusted NR to NA; 85% of total population|601,519 +PAPUA NEW GUINEA|Oceania|Melanesia|Lower Middle Income|2005|924|0,8|4,4|43,9|18,1|3,4|Papua New Guinea national micronutrient survey 2005: Final report. Port Moresby, Papua New Guinea, 2009 (and additional analysis).||920,7869999999999 +PAPUA NEW GUINEA|Oceania|Melanesia|Lower Middle Income|2009-11|945911|6,4|14,1|49,5|27,8|13,7|2009-2010 Papua New Guinea household income and expenditure survey: Summary tables. Port Moresby: National Statistical Office, 2013 (and additional analysis).||983,166 +PARAGUAY|Latin America and the Caribbean|South America|Upper Middle Income|1990|3450|0,2|0,6|18,3|2,8|6,3|Encuesta nacional de demografia y salud 1990. Demographic and Health Surveys. Asuncion, Paraguay, 1991 (and additional analysis).||653,506 +PARAGUAY|Latin America and the Caribbean|South America|Upper Middle Income|2005|483612||1,1|17,5|3,4|7,1|Informe final de consultoria: Analisis de la situacion de salud infantil y antropometria en menores de 5 años. Paraguay EPH 2005. Asuncion, Paraguay: PNUD Paraguay, 2006.||669,0369999999999 +PARAGUAY|Latin America and the Caribbean|South America|Upper Middle Income|2011-12|558648|0,4|2,6|10,7|2,6|11,3|Análisis de la situación nutricional de los niños menores de cinco años en Paraguay a partir de la encuesta de ingresos y gastos y de condiciones de vida 2011-2012. Asunción, Paraguay, 2014 (and additional analysis).||683,938 +PARAGUAY|Latin America and the Caribbean|South America|Upper Middle Income|2016|4428|0,4|1,0|5,6|1,3|12,4|Encuesta de Indicadores Multiples por Conglomerados MICS Paraguay 2016 (and additional analysis)||671,653 +PERU|Latin America and the Caribbean|South America|Upper Middle Income|1991-92|7205|0,6|1,9|37,3|8,8|9,3|Encuesta demografica y de salud familiar 1991/1992. Demographic and Health Surveys. Lima, Peru, 1992 (and additional analysis).||3060,35 +PERU|Latin America and the Caribbean|South America|Upper Middle Income|1996|13829|0,7|1,6|31,6|5,7|9,9|Peru demographic and health survey 1996. Demographic and Health Surveys. Instituto Nacional de Estadistica e Informacion. Lima, Peru, 1997 (and additional analysis).||3063,74 +PERU|Latin America and the Caribbean|South America|Upper Middle Income|2000|10710|0,4|1,1|31,3|5,2|11,8|Encuesta demografica y de salud familiar 2000. Demographic and Health Surveys. Lima, Peru and Calverton, Maryland, USA: Instituto Nacional de Estadistica e Informacion y ORC Macro, 2001 (and additional analysis).||3009,387 +PERU|Latin America and the Caribbean|South America|Upper Middle Income|2005|1912|0,1|1,0|29,2|5,4|9,1|Peru, encuesta demografica y de salud familiar. Informe principal: ENDES continua 2004-2006. Demographic and Health Surveys. Lima, Peru: INEI, USAID and ORC Macro, 2007 (and additional analysis).||2960,998 +PERU|Latin America and the Caribbean|South America|Upper Middle Income|2007-08|7911|0,2|0,8|28,0|4,3|10,0|Encuesta demografica y de salud familiar. Informe principal: ENDES continua 2007-2008. Demographic and Health Surveys. Lima, Peru: INEI, USAID y ORC Macro, 2009 (and additional analysis).||2952,039 +PERU|Latin America and the Caribbean|South America|Upper Middle Income|2009|9180|0,2|0,6|23,9|4,3|10,3|Encuesta demografica y de salud familiar - ENDES continua 2009. Demographic and Health Surveys. Lima, Peru: INEI, USAID y ORC Macro, 2010 (and additional analysis).||2946,0759999999996 +PERU|Latin America and the Caribbean|South America|Upper Middle Income|2010|8726|0,1|0,7|23,3|4,3|8,0|Encuesta demografica y de salud familiar - ENDES continua 2010. Demographic and Health Surveys. Lima, Peru: INEI, USAID y ORC Macro, 2011 (and additional analysis).||2950,506 +PERU|Latin America and the Caribbean|South America|Upper Middle Income|2011|8869|0,1|0,4|19,5|4,2|8,8|Encuesta demografica y de salud familiar - ENDES continua 2011. Demographic and Health Surveys. Lima, Peru: INEI, USAID y ORC Macro, 2012 (and additional analysis).||2957,4570000000003 +PERU|Latin America and the Caribbean|South America|Upper Middle Income|2012|9190|0,1|0,6|18,4|3,4|7,2|Encuesta demografica y de salud familiar - ENDES continua 2012. Demographic and Health Surveys. Lima, Peru: INEI, USAID y ORC Macro, 2013 (and additional analysis).||2972,6479999999997 +PERU|Latin America and the Caribbean|South America|Upper Middle Income|2013|8316|0,2|0,4|17,7|3,6|8,4|Encuesta demografica y de salud familiar – ENDES continua 2013 Nacional y Departmental. Demographic and Health Surveys. Lima, Peru: INEI, 2013 (and additional analysis)||2993,0229999999997 +PERU|Latin America and the Caribbean|South America|Upper Middle Income|2014|9164|0,1|0,6|14,8|3,2|8,8|Encuesta demografica y de salud familiar - ENDES continua 2014. Demographic and Health Surveys. Lima, Peru: INEI,2015 (and additional analysis)||3010,6620000000003 +PERU|Latin America and the Caribbean|South America|Upper Middle Income|2015|11141|0,1|0,6|14,7|3,4|8,2|Encuesta Demográfica y de Salud Familiar-ENDES 2015 Nacional y Departamental (and additional analysis)||3020,032 +PERU|Latin America and the Caribbean|South America|Upper Middle Income|2016|10586|0,1|0,6|13,1|3,2|7,7|Perú Encuesta Demografica y de salud Familiar 2016: nacional y regional, 2017 (and additional analysis)||3032,5820000000003 +PERU|Latin America and the Caribbean|South America|Upper Middle Income|2017|9362|0,1|0,5|12,9|3,2|8,0|Encuesta Demográfica y de Salud Familiar-ENDES 2017 Nacional y Departamental (and additional analysis)||3026,862 +PHILIPPINES (THE)|Asia|South-Eastern Asia|Lower Middle Income|1987|2250||5,7|44,7|29,3||Third National Nutrition Survey Philippines, 1987. Food and Nutrition Research Institute. Manila, Philippines; 1991 (and additional analysis).|Converted estimates|8882,434000000001 +PHILIPPINES (THE)|Asia|South-Eastern Asia|Lower Middle Income|1989-90|5629||6,9|43,3|29,9||Regional Updating of Nutritional Status of Filipino Children, 1989-90. Food and Nutrition Research Institute. Manila, Philippines; 1991 (and additional analysis).|Converted estimates|9450,035 +PHILIPPINES (THE)|Asia|South-Eastern Asia|Lower Middle Income|1992|5858||8,8|40,9|29,8|1,7|The 1992 regional nutrition survey. Food and Nutrition Research Institute. Manila, Philippines; 1994 (and additional analysis).|Converted estimates|9770,793 +PHILIPPINES (THE)|Asia|South-Eastern Asia|Lower Middle Income|1993|4229||9,1|38,9|26,3||The fourth national nutrition survey: Philippines 1993. Food and Nutrition Institute. Manila, Philippines; 1995 (and additional analysis).|Converted estimates|9868,664 +PHILIPPINES (THE)|Asia|South-Eastern Asia|Lower Middle Income|1998|24308||8,0|38,3|28,3|1,9|The 5th national nutrition survey. Philippine nutrition: Facts & figures. Taguig, Metro Manila, Philipines: UNICEF, 2001 (and additional analysis).|Converted estimates|10441,046999999999 +PHILIPPINES (THE)|Asia|South-Eastern Asia|Lower Middle Income|2003|3499|1,6|6,0|33,8|20,7|2,4|Sixth National Nutrition Survey: Philippines, 2003. Food and Nutrition Research Institute, 2004.||11250,61 +PHILIPPINES (THE)|Asia|South-Eastern Asia|Lower Middle Income|2008|18403|2,0|6,9|32,3|20,7|3,3|7th national nutrition survey. Manila, Philippines: FNRI-DOST, 2010 (and additional analysis).||11155,915 +PHILIPPINES (THE)|Asia|South-Eastern Asia|Lower Middle Income|2011|17309|2,4|7,3|33,6|20,2|4,3|Philippine Nutrition Facts and Figures 2011. DOST Complex, FNRI Bldg., Bicutan, Taguig City, Metro, Manila, Philippines, 2012 (and additional analysis).||11076,073999999999 +PHILIPPINES (THE)|Asia|South-Eastern Asia|Lower Middle Income|2013-14|||7,9|30,3|19,9|5,0|8th National nutrition survey Philippines 2013.|(pending reanalysis)|11240,688 +PHILIPPINES (THE)|Asia|South-Eastern Asia|Lower Middle Income|2015|||7,1|33,4|21,5|3,9|Philippines 2015 National Nutrition Survey - Updating Survey Results||11434,444 +POLAND|Europe|Eastern Europe|High Income|2009||||2,9|||Poland European Health Interview Survey 2009||1972,211 +POLAND|Europe|Eastern Europe|High Income|2014||||2,6|||Poland European Health Interview Survey 2014||1950,715 +QATAR|Asia|Western Asia|High Income|1995|1180||2,1|11,6|4,8|10,4|Nutritional assessment in Qatar. Assignment report EM/NUT169/E/R/01.96/27. Alexandria: World Health Organization Regional Office, 1996 (and additional analysis).|Converted estimates|49,998000000000005 +REPUBLIC OF KOREA (THE)|Asia|Eastern Asia|High Income|2003|2040|0,2|0,9|2,5|0,9|6,2|Recent growth of children in the two Koreas: a meta-analysis. Economics and Human Biology 2009;7:109-12.||2685,532 +REPUBLIC OF KOREA (THE)|Asia|Eastern Asia|High Income|2008-11|1783845|0,1|1,2|2,5|0,7|7,3|Data Resource Profile: The Korea National Health and Nutrition Examination Survey (KNHANES). International Journal of Epidemiology 2014;43:69-77 (and additional analysis).| Age-adjusted;|2288,7729999999997 +REPUBLIC OF MOLDOVA (THE)|Europe|Eastern Europe|Lower Middle Income|2005|1581|2,4|5,9|10,7|3,2|8,8|Moldova demographic and health survey 2005. Demographic and Health Surveys. Calverton, Maryland: NCPM of the Ministry of Health and Social Protection and ORC Macro, 2006 (and additional analysis).||205,40099999999998 +REPUBLIC OF MOLDOVA (THE)|Europe|Eastern Europe|Lower Middle Income|2012|1724|0,5|1,9|6,4|2,2|4,9|2012 Republic of Moldova multiple indicator cluster survey. Final report (MICS4). Chisinau, Republic of Moldova, 2014 (and additional analysis)||225,609 +ROMANIA|Europe|Eastern Europe|Upper Middle Income|1991|10957||3,3|11,2|5,0|4,0|Report of Romania national nutrition survey, 1991. Part I: child nutrition section. Atlanta: Division of Nutrition, Centers for Disease Control, 1993 (and additional analysis).|Converted estimates|1792,329 +ROMANIA|Europe|Eastern Europe|Upper Middle Income|1999|21103|0,8|3,6|15,3|3,4|10,1|National nutritional surveillance programme, 1993-2002. Bukarest, Romania, 2003 (and additional analysis).|National surveillance system|1113,677 +ROMANIA|Europe|Eastern Europe|Upper Middle Income|2000|22225|1,1|4,3|12,8|3,7|8,9|National nutritional surveillance programme, 1993-2002. Bukarest, Romania, 2003 (and additional analysis).||1120,087 +ROMANIA|Europe|Eastern Europe|Upper Middle Income|2001|22667|1,0|3,9|14,0|3,8|9,1|National nutritional surveillance programme, 1993-2002. Bukarest, Romania, 2003 (and additional analysis).||1167,846 +ROMANIA|Europe|Eastern Europe|Upper Middle Income|2002|15533|0,7|3,5|12,8|3,5|8,3|National nutritional surveillance programme, 1993-2002. Bukarest, Romania, 2003 (and additional analysis).||1165,17 +RWANDA|Africa|Eastern Africa|Low Income|1992|4498|1,8|5,0|56,8|24,2|4,0|Enquête démographique et de santé, Rwanda 1992. Demographic and Health Surveys. Kigali, Rwanda, 1994 (and additional analysis).||1161,152 +RWANDA|Africa|Eastern Africa|Low Income|1996|1115||11,0|45,4|22,6||National nutrition survey of women and children in Rwanda in 1996. Kigali, République Rwandaise, 1997 (and additional analysis).|Adjusted NR to NA; converted estimates|757,452 +RWANDA|Africa|Eastern Africa|Low Income|2000|6793|3,8|8,7|47,9|20,3|7,1|Enquête démographique et de santé, Rwanda 2000. Demographic and Health Surveys. Kigali, Rwanda et Calverton, Maryland, USA: Ministère de la Santé, Office National de la Population et ORC Macro, 2001 (and additional analysis).||1312,971 +RWANDA|Africa|Eastern Africa|Low Income|2005|3999|1,7|4,9|51,4|17,9|6,7|Rwanda demographic and health survey 2005. Demographic and Health Surveys. Calverton, Maryland, U.S.A.: INSR and ORC Macro, 2006 (and additional analysis).||1454,3029999999999 +RWANDA|Africa|Eastern Africa|Low Income|2010-11|4408|0,9|2,9|44,3|11,7|6,9|Rwanda demographic and health survey 2010. Demographic and Health Surveys. Calverton, Maryland, USA: NISR, MOH, and ICF International, 2012 (and additional analysis).||1641,692 +RWANDA|Africa|Eastern Africa|Low Income|2015|4051|0,4|2,0|36,9|8,9|5,6|Rwanda 2015 Comprehensive Food Security and Vulnerabilty Analysis (and additional analysis)||1734,543 +RWANDA|Africa|Eastern Africa|Low Income|2014-15|3881|0,7|2,3|38,2|9,6|7,9|Rwanda Demographic and Health Survey 2014-15. Kigali, Rwanda: National Institute of Statistics of Rwanda, Ministry of Finance and Economic Planning/Rwanda, Ministry of Health/Rwanda, and ICF International (and additional analysis)||1734,543 +SAINT LUCIA|Latin America and the Caribbean|Caribbean|Upper Middle Income|2012|283|0,7|3,7|2,5|2,8|6,3|Saint Lucia multiple indicator cluster survey 2012: Final report. MICS. Castries, Saint Lucia, 2014 (and additional analysis)||10,895 +SAMOA|Oceania|Polynesia|Upper Middle Income|1999|1107||1,3|6,4|1,7|6,2|Samoa national nutrition survey 1999. Part 3: Child growth, diet, contact with the health system and interview with carers. Technical report. Apia, Samoa: Nutrition Centre, 2003 (and additional analysis).|Converted estimates|25,639 +SAMOA|Oceania|Polynesia|Upper Middle Income|2014|2961|1,3|3,9|4,9|3,2|5,3|Samoa Demographic and Health Survey 2014 (and additional analysis)||24,718000000000004 +SAO TOME AND PRINCIPE|Africa|Middle Africa|Lower Middle Income|1986|2155||6,0|32,0|14,5||Estado nutricional e cobertura vacinal des criancas menoras de 5 anos na. Seccao de Nutricao. Sao Tome, Republica Democratica de Sao Tome e Principe, 1986 (and additional analysis).|Converted estimates|17,67 +SAO TOME AND PRINCIPE|Africa|Middle Africa|Lower Middle Income|2000|1737|1,2|3,9|35,5|10,2|9,2|Enquête de grappes à indicateurs multiples MICS - rapport d'analyse (projet, 14 juillet 2000). Sao Tome, République Démocratique de Sao Tome et Principe, 2000. (and additional analysis).||23,151 +SAO TOME AND PRINCIPE|Africa|Middle Africa|Lower Middle Income|2006|2848||9,6|28,9|8,0|15,4|Democratic Republic of Sao Tome e Principe 2006 multiple indicator cluster survey (MICS3): Final report. Sao Tome: INE and UNICEF, 2007.|Converted estimates|27,579 +SAO TOME AND PRINCIPE|Africa|Middle Africa|Lower Middle Income|2008-09|1751|5,1|11,6|30,6|14,8|11,2|Enquête démographique et de santé à Sao Tomé e Príncipe (EDS-STP) 2008-2009. Rapport préliminaire. Sao Tomé: INE et le Ministre de la Santé, 2009 ( and additional analysis).||28,419 +SAO TOME AND PRINCIPE|Africa|Middle Africa|Lower Middle Income|2014|1939|0,8|4,0|17,2|8,8|2,4|Sao Tome and Principe Multiple Indicator Cluster Survey 2014, Final Report. São Tomé, Sao Tome and Principe, 2016 (and additional analysis)||30,58 +SAUDI ARABIA|Asia|Western Asia|High Income|1994|23821||2,9|21,4|13,5|1,2|Comparison of the growth standards between Saudi and American children aged 0-5 years. Saudi Medical Journal 2003;24:598-602 [Erratum Saudi Medical Journal 2003;24:1032] (and additional analysis).|Converted estimates|2761,921 +SAUDI ARABIA|Asia|Western Asia|High Income|2004-05|15601|4,5|11,8|9,3|5,3|6,1|Growth charts for Saudi children and adolescents. Saudi Medical Journal 2007;28:1555-68 (and additional analysis).||2745,367 +SENEGAL|Africa|Western Africa|Low Income|1986|630|1,2|5,1|26,5|17,0|2,3|Enquête démographique et de santé au Sénégal, 1986. Demographic and Health Surveys. Dakar, Republique du Sénégal, 1987 (and additional analysis).|Age-adjusted;|1285,753 +SENEGAL|Africa|Western Africa|Low Income|1991-92|||9,0|34,4|20,4|4,0|Social Dimensions of Adjustment Household Priority Survey 1991-92. New York: The World Bank, 1993 (and additional analysis).|Age-adjusted; converted estimates|1444,067 +SENEGAL|Africa|Western Africa|Low Income|1992-93|4047|3,0|9,4|29,7|19,0|4,0|Enquête démographique et de santé au Sénégal (EDS-II) 1992/93. Demographic and Health Surveys. Dakar, Sénégal, 1994 (and additional analysis).||1476,981 +SENEGAL|Africa|Western Africa|Low Income|1996|||8,2|28,8|19,6||Evaluation des objectives intermédiares (MICS). Dakar: UNICEF, September 1996 (and additional analysis).|Converted estimates|1573,0729999999999 +SENEGAL|Africa|Western Africa|Low Income|2000|1098683|2,9|10,0|26,0|17,8|3,2|Rapport de l'enquête sur les objectives de la fin de decennie sur l'enfance (MICS-II-2000). Dakar, Senegal, Novembre 2000 (and additional analysis).||1672,115 +SENEGAL|Africa|Western Africa|Low Income|2005|3010|2,3|8,7|19,9|14,5|2,5|Enquête démographique et de santé au Sénégal 2005. Demographic and Health Surveys. Calverton, Maryland, USA : Centre de Recherche pour le Développement Humain [Sénégal] et ORC Macro, 2006 (and additional analysis).||1870,068 +SENEGAL|Africa|Western Africa|Low Income|2010-11|3925|2,3|9,8|26,6|18,4|2,7|Enquête démographique et de santé à indicateurs multiples au Sénégal (EDS-MICS) 2010-2011. Demographic and Health Surveys and MICS. Calverton, Maryland, USA: ANSD et ICF International, 2012 (and additional analysis).||2248,346 +SENEGAL|Africa|Western Africa|Low Income|2012|27528|1,2|8,7|15,5|14,4|0,7|Rapport final SMART 2012. Dakar, Senegal: CLM, 2013 (and additional analysis).||2316,8579999999997 +SENEGAL|Africa|Western Africa|Low Income|2012-13|5961|1,9|9,0|18,7|16,7|1,4|Enquête démographique et de santé continue (EDS-Continue 2012-2013). Demographic and Health Surveys. Calverton, Maryland, USA: ANSD et ICF International., 2013 (and additional analysis).||2380,743 +SENEGAL|Africa|Western Africa|Low Income|2014|5978|0,8|5,9|18,7|12,8|1,3|Sénégal : Enquête Démographique et de Santé Continue (EDS-Continue 2014). Rockville, Maryland, USA : ANSD et ICF International, 2015 (and additional analysis)||2439,437 +SENEGAL|Africa|Western Africa|Low Income|2015|6097|1,5|7,8|20,7|16,1|1,0|Sénégal : Enquête Démographique et de Santé Continue (EDS-Continue 2015). Octobre 2016 (and additional analysis)||2492,79 +SENEGAL|Africa|Western Africa|Low Income|2016|5750|1,2|7,1|17,1|13,8|0,9|Sénégal : Enquête Démographique et de Santé Continue (EDS-Continue) 2016. August 2017 (and additional analysis)||2544,313 +SENEGAL|Africa|Western Africa|Low Income|2017|10911|1,5|9,0|16,5|14,4|0,9|Enquête Démographique et de Santé Continue du Sénégal, Cinquième Phase 2017 : Rapport de synthèse. Rockville, Maryland, USA : ANSD et ICF (and additional analysis)||2583,824 +SERBIA|Europe|Southern Europe|Upper Middle Income|2005-06|3525|1,8|4,5|8,1|1,8|19,3|Republic of Serbia multiple indicator cluster survey 2005, final report. Belgrade, Republic of Serbia: Statistical Office of the Republic of Serbia and Strategic Marketing Research Agency, 2006 (and additional analysis).||533,2130000000001 +SERBIA|Europe|Southern Europe|Upper Middle Income|2010|3004|0,8|3,5|6,6|1,6|15,6|Serbia multiple indicator cluster survey 2010 (MICS). Belgrade, Republic of Serbia: Statistical Office of the Republic of Serbia, 2011 (and additional analysis).||488,31699999999995 +SERBIA|Europe|Southern Europe|Upper Middle Income|2014|2353|1,1|3,9|6,0|1,8|13,9|2014 Serbia multiple indicator cluster survey and 2014 Serbia Roma Settlements multiple indicator cluster survey (MICS). Final Report. Belgrade, Serbia: Statistical Office of the Republic of Serbia and UNICEF, 2014 (and additional analysis)||469,62699999999995 +SEYCHELLES|Africa|Eastern Africa|High Income|1987-88|836||2,7|7,7|5,0|5,8|Nutritional status of Seychellois children (unpublished data). Victoria, Seychelles, 1989 (and additional analysis).|Converted estimates|8,401 +SEYCHELLES|Africa|Eastern Africa|High Income|2012|5283|1,2|4,3|7,9|3,6|10,2|The nutritional status and associated risk factors of 0-5 year old children in Seychelles. 7706 Med Health Project (thesis). Queensland, Australia: Griffith University, 2014.|Health centres (80% coverage)|7,697 +SIERRA LEONE|Africa|Western Africa|Low Income|1989|4424||8,4|41,4|23,7||Ministry of Health. The Republic of Sierra Leone National Nutrition Survey. Freetown, Sierra Leone; 1990.|Converted estimates; rain|769,566 +SIERRA LEONE|Africa|Western Africa|Low Income|1990|4595||10,2|40,9|25,4||Ministry of Health. The Republic of Sierra Leone National Nutrition Survey. Freetown, Sierra Leone; 1990.|Converted estimates; dry|772,2410000000001 +SIERRA LEONE|Africa|Western Africa|Low Income|2000|1977|3,9|11,6|35,5|23,4|4,8|The status of women and children in Sierra Leone. A household survey report (MICS-2). Central Statistics Office, Ministry of Development and Economic Planning, November 2000 (and additional anaysis).||810,096 +SIERRA LEONE|Africa|Western Africa|Low Income|2005|4428|4,2|10,2|45,0|27,2|5,9|Sierra Leone multiple indicator cluster survey 2005: Final Report. Freetown, Sierra Leone: Statistics Sierra Leone and UNICEF-Sierra Leone, 2007 (and additional analysis).||991,441 +SIERRA LEONE|Africa|Western Africa|Low Income|2008|3052|4,6|10,5|37,2|21,5|10,1|Sierra Leone demographic and health survey 2008. Demographic and Health Surveys. Calverton, Maryland, USA: Statistics Sierra Leone (SSL) and ICF Macro, 2009 (and additional analysis).||1066,714 +SIERRA LEONE|Africa|Western Africa|Low Income|2010|8104|4,8|10,0|44,4|22,9|9,4|Sierra Leone multiple indicator cluster survey 2010, Final report (MICS). Freetown, Sierra Leone: Statistics Sierra Leone and UNICEF-Sierra Leone, 2011 (and additional analysis).||1091,253 +SIERRA LEONE|Africa|Western Africa|Low Income|2013|5776|4,4|9,5|37,8|18,2|8,8|Sierra Leone demographic and health survey 2013. Demographic and Health Surveys. Freetown, Sierra Leone and Rockville, Maryland, USA: SSL and ICF International, 2014 (and additional analysis).||1123,225 +SINGAPORE|Asia|South-Eastern Asia|High Income|2000|16220|0,5|3,6|4,4|3,3|2,6|National healthcare group polyclinics' anthropometric growth charts for Singapore preschool children 2000. Singapore Health Booklet, revised edition April 2003 (and additional analysis).||255,543 +SOLOMON ISLANDS|Oceania|Melanesia|Lower Middle Income|1989|3980|2,0|7,4|33,7|16,3|1,9|Solomon Islands national nutrition survey 1989. Honiara, Solomon Islands, 1990 (and additional analysis).||52,056000000000004 +SOLOMON ISLANDS|Oceania|Melanesia|Lower Middle Income|2006-07|2029|1,4|4,3|32,8|11,5|2,5|Solomon Islands 2006-2007 demographic and health survey. DHS. Noumea, New Caledonia: SISO, SPC and Macro International Inc., 2007 (accessed 22/12/09 http://www.spc.int/prism/Country/SB/Stats/Publication/DHS07/report/SI-DHS-REPORT_TOC_Summary.pdf)||75,94800000000001 +SOLOMON ISLANDS|Oceania|Melanesia|Lower Middle Income|2015|3767|3,6|8,5|31,6|16,2|4,5|Solomon Islands Ministry of Health and Medical Services and the Pacific Community. 2017. Solomon Islands Demographic and Health Survey, 2015 (and additional analysis)||82,681 +SOMALIA|Africa|Eastern Africa|Low Income|2000|3582||19,3|29,2|22,8||Somalia end-decade multiple indicator cluster survey. Full technical report. Nairobi: UNICEF Somilia, 2001 (and additional analysis).|Converted estimates|1804,7820000000002 +SOMALIA|Africa|Eastern Africa|Low Income|2006|5696|4,4|13,3|42,0|32,8|4,7|Monitoring the situation of women and children. Somalia multiple indicator cluster survey 2006. New York: UNICEF, 2007 (and additional analysis).||2042,3570000000002 +SOMALIA|Africa|Eastern Africa|Low Income|2009|1137|5,2|15,0|25,3|23,0|3,0|National Micronutrient and Anthropometric Survey Somalia 2009 (and additional analysis).||2221,771 +SOUTH AFRICA|Africa|Southern Africa|Upper Middle Income|1993-94|4089|4,2|9,1|29,7|14,9|13,6|South Africans rich and poor: baseline household statistics. Project for statistics on living standards and development. Cape Town, 1994 (and additional analysis).||5147,3 +SOUTH AFRICA|Africa|Southern Africa|Upper Middle Income|1994-95|9807||3,3|28,7|8,0|10,3|Children aged 6 to 71 months in South Africa, 1994: their anthropometric, vitamin A, iron and immunisation coverage status. Johannesburg, South Africa, 1995 (and additional analysis).|Converted estimates|5131,4529999999995 +SOUTH AFRICA|Africa|Southern Africa|Upper Middle Income|1999|1556||4,5|30,1|9,8|10,4|The National Food Consumption Survey (NFCS): South Africa, 1999. Public Health Nutrition 2005;8:533-43 (and additional analysis).|Age-adjusted; converted estimates|5151,241 +SOUTH AFRICA|Africa|Southern Africa|Upper Middle Income|2003-04|4652|4,3|7,8|35,7|12,1|16,7|South Africa demographic and health survey 2003 (SADHS). Demographic and Health Surveys. Pretoria: Department of Health, 2007 (and additional analysis).||5241,529 +SOUTH AFRICA|Africa|Southern Africa|Upper Middle Income|2008|3151438|2,4|4,8|24,9|8,8|13,3|National income dynamics study (NIDS). Health: Analysis of the NIDS wave 1 dataset. Discussion paper no. 2. South Africa: The Presidency Republic of South Africa and SALDRU, 2009. (and additional analysis)|Age 0-5 months not covered; unadjusted|5333,303000000001 +SOUTH AFRICA|Africa|Southern Africa|Upper Middle Income|2012|4892568|3,1|5,6|27,2|8,5|17,2|South Africa 2012 National Income Dynamics Study Wave 3 (and additional analysis)|Age 0-5 months not covered; unadjusted|5513,938 +SOUTH AFRICA|Africa|Southern Africa|Upper Middle Income|2016|1416|0,6|2,5|27,4|5,9|13,3|South Africa Demographic and Health Survey 2016. Pretoria, South Africa, and Rockville, Maryland, USA: NDoH, Stats SA, SAMRC, and ICF (and additional analysis)||5704,84 +SOUTH SUDAN|Africa|Eastern Africa|Low Income|2006|1329786|12,9|24,6|36,2|32,5|10,9|Sudan household health survey (SHHS) - 2006. Khartoum and Juba: Government of National Unity, Government of Southern Sudan, December 2007 (additional analysis conducted by PAPFAM, June 2013).||1427,444 +SOUTH SUDAN|Africa|Eastern Africa|Low Income|2010|6390|11,9|24,3|31,3|29,1|5,8|South Sudan Household Survey 2010. Final Report (MICS4). Juba, South Sudan, 2013 (and additional analysis)||1657,58 +SRI LANKA|Asia|Southern Asia|Lower Middle Income|1987|1974|1,6|14,9|32,3|32,8|0,3|Sri Lanka demographic and health survey 1987. Demographic and Health Surveys. Colombo, Sri Lanka, 1987 (and additional analysis).|Age-adjusted;|1883,703 +SRI LANKA|Asia|Southern Asia|Lower Middle Income|1993|3067||17,5|29,7|33,8||Sri Lanka demographic and health survey 1993. Colombo, Sri Lanka, 1995 (and additional analysis).|Converted estimates|1723,845 +SRI LANKA|Asia|Southern Asia|Lower Middle Income|1995|2782||15,3|26,1|29,3||Preliminary report on the fourth national nutrition and health survey July - August, 1995. The Ceylon Journal of Medical Science 1997;40:13-24 (and additional analysis).|Converted estimates|1716,6529999999998 +SRI LANKA|Asia|Southern Asia|Lower Middle Income|2000|2513|2,4|15,5|18,4|22,8|1,0|Sri Lanka demographic and health survey 2000. Colombo, Sri Lanka, 2001 (and additional analysis).|Excl. north & east provinces|1641,6070000000002 +SRI LANKA|Asia|Southern Asia|Lower Middle Income|2006-07|6648|2,8|14,7|17,3|21,1|1,6|Sri Lanka demographic and health survey 2006/07: Preliminary report and selected tables from the chapters of the final report (I:\UnitData\SURVEILLANCE\GDCGM\data sets\Sri Lanka\DHS_MoH 2006_07_WHO\DHS_web_links.htm, accessed 03/07/09).||1797,145 +SRI LANKA|Asia|Southern Asia|Lower Middle Income|2009|2589|1,9|11,8|19,2|21,6|0,8|Nutrition and food security survey 2009. Colombo, Sri Lanka: Medical Research Institute, 2010.||1797,296 +SRI LANKA|Asia|Southern Asia|Lower Middle Income|2012|7306|3,0|21,4|14,7|26,3|0,6|National nutrition and micronutrient survey. Part I: Anaemia among children aged 6-59 months and nutritional status of children and adults. Colombo, Sri Lanka, 2013 (and additional analysis).||1743,692 +SRI LANKA|Asia|Southern Asia|Lower Middle Income|2016|7908|3,0|15,1|17,3|20,5|2,0| Sri Lanka 2016 Demographic and Health Survey (SLDHS)|(pending reanalysis)|1601,546 +STATE OF PALESTINE|Asia|Western Asia|Lower Middle Income|1996|4451||3,6|10,6|3,6|4,0|The health survey in the West Bank and Gaza Strip: main findings (MICS). Palestinian Central Bureau of Statistics. Ramallah, Palestine, 1996 (and additional analysis).|Converted estimates|545,313 +STATE OF PALESTINE|Asia|Western Asia|Lower Middle Income|2002|936||9,4|16,1|||Rapid nutritional assessment for West Bank and Gaza Strip. Executive summary. September 2002 Accessed 05.01.10 http://anahri.alquds.edu/index_files/PNACR368.pdf.|Converted estimates|578,268 +STATE OF PALESTINE|Asia|Western Asia|Lower Middle Income|2006-07|9359|0,7|1,8|13,6|2,6|11,4|Palestinian family health survey, 2006: Final report. Ramallah, Palestine, 2007 (and additional analysis)||586,105 +STATE OF PALESTINE|Asia|Western Asia|Lower Middle Income|2010|9157|1,0|3,3|10,9|3,7|5,3|Final report of the Palestinian family survey 2010 (MICS). Ramallah, State of Palestine: Palestinian Central Bureau of Statistics, 2013 (and additional analysis)||627,864 +STATE OF PALESTINE|Asia|Western Asia|Lower Middle Income|2014|7222|0,3|1,2|7,4|1,4|8,2|Palestinian Multiple Indicator Cluster Survey 2014, Final Report, Ramallah, Palestine (and additional analysis)||685,6239999999999 +SUDAN (THE)|Africa|Northern Africa|Lower Middle Income|2006|4151294|5,7|14,5|38,3|27,0|4,2|Sudan household health survey (SHHS) - 2006. Khartoum and Juba: Government of National Unity, Government of Southern Sudan, December 2007 (additional analysis conducted by PAPFAM, June 2013).||5253,891 +SUDAN (THE)|Africa|Northern Africa|Lower Middle Income|2010|12193|5,1|16,3|34,1|30,5|1,5|Sudan household health survey, second round 2010 (and additional analysis)||5529,78 +SUDAN (THE)|Africa|Northern Africa|Lower Middle Income|2014|11718|5,1|16,8|38,2|33,5|3,0|Multiple Indicator Cluster Survey 2014 of Sudan, Final Report. Khartoum, Sudan: UNICEF and Central Bureau of Statistics (CBS), February 2016 (and additional analysis)||5783,861999999999 +SURINAME|Latin America and the Caribbean|South America|Upper Middle Income|1999-00|1768|2,0|7,0|14,1|11,1|2,9|Full report: Suriname multiple indicator cluster survey (MICS) 2000. Paramaribo, Suriname, March 2001 (and additional analysis).||53,393 +SURINAME|Latin America and the Caribbean|South America|Upper Middle Income|2006|1981|1,0|4,9|10,6|7,5|4,0|Suriname multiple indicator cluster survey 2006, Final Report (MICS3). Paramaribo, Suriname, 2009 (and additional analysis).||51,001999999999995 +SURINAME|Latin America and the Caribbean|South America|Upper Middle Income|2010|2871|1,6|5,8|8,8|6,4|4,0|Suriname multiple indicator cluster survey 2010, Final Report (MICS). Paramaribo, Suriname, 2012 (and additional analysis).||50,043 +SYRIAN ARAB REPUBLIC (THE)|Asia|Western Asia|Low Income|1993|4154|4,5|10,0|32,8|11,5|15,0|Syrian maternal and child health survey (SMCHS). PAPCHILD surveys. Cairo: The League of Arab States, 1994 (and additional analysis).||2157,302 +SYRIAN ARAB REPUBLIC (THE)|Asia|Western Asia|Low Income|1995|2425||10,4|26,5|11,3||Multiple indicator cluster survey in the Syrian Arab Republic (MICS). Central Bureau of Statistics. Damascus, The Syrian Arab Republic, 1996.|Converted estimates|2185,908 +SYRIAN ARAB REPUBLIC (THE)|Asia|Western Asia|Low Income|2000|6262||4,9|24,3|6,0||[Multiple Indicator Cluster Survey II (MICS II) concerning Child Health and Welfare. Main report.] Damascus, Syrian Arab Republic: UNICEF, 2002 (and additional analysis).|Converted estimates|2432,026 +SYRIAN ARAB REPUBLIC (THE)|Asia|Western Asia|Low Income|2001|6367|5,4|10,3|31,1|11,1|19,7|The family health survey in the Syrian Arab Republic. Principal Report. Cairo: The League of Arab States, 2002 (and additional analysis).||2498,158 +SYRIAN ARAB REPUBLIC (THE)|Asia|Western Asia|Low Income|2006|10595|4,8|10,3|28,7|10,0|18,7|Syrian Arab Republic multiple indicator cluster survey 2006. February 2008 (and additional analysis).||2532,363 +SYRIAN ARAB REPUBLIC (THE)|Asia|Western Asia|Low Income|2009|14289|5,5|11,5|27,6|10,2|17,9|Family health survey of the Arab Republic of Syria 2009: Principal report (PAPFAM). Cairo: The League of Arab States, 2011 (and additional analysis).||2706,0490000000004 +TAJIKISTAN|Asia|Central Asia|Low Income|1999|3599||11,4|41,5|||National nutrition survey, Tajikistan (September/October 1999). London, UK: Action Against Hunger UK, 2000 (and additional analysis).|Converted estimates|895,515 +TAJIKISTAN|Asia|Central Asia|Low Income|2000|5657||9,4|42,1|||National nutrition survey of Tajikistan (September/October 2000). London, UK: Action Against Hunger UK, 2001 (and additional analysis).|Converted estimates|892,398 +TAJIKISTAN|Asia|Central Asia|Low Income|2001|3704||19,4|43,2|||Representative national nutrition survey Tajikistan (Sughd, RRS, Kouliab and Kurgan Teppe regions), October/November 2001. London, UK: Action Against Hunger UK, 2002 (and additional analysis).|Converted estimates|890,5880000000001 +TAJIKISTAN|Asia|Central Asia|Low Income|2002|4543||6,1|37,1|||National nutrition survey Tajikistan, May/June 2002. Action against Hunger and European Community Humanitarian Office, 2002 (and additional analysis).|Converted estimates|879,315 +TAJIKISTAN|Asia|Central Asia|Low Income|2003|4654||5,9|42,4|||National nutrition and water & sanitation survey, Tajikistan, October 2003. Dushanbe, Tajikistan: Action Against Hunger (lead agency nutrition) and Mercy Corps (lead agency wat/san), 2004 (and additional analysis).|Converted estimates|864,0260000000001 +TAJIKISTAN|Asia|Central Asia|Low Income|2005|4219|3,5|8,7|33,0|14,9|6,7|Tajikistan multiple indicator cluster survey 2005, Final Report. Dushanbe, Tajikistan: State Committee on Statistics of the Republic of Tajikistan, 2007 (and additional analysis).||858,597 +TAJIKISTAN|Asia|Central Asia|Low Income|2007|5157083|3,7|7,5|39,2|15,7|11,9|Tajikistan living standards measurement survey 2007 (TLSS): Indicators at a glance. Dushanbe, Republic of Tajikistan: State Committee on Statistics and UNICEF, 2009 (and additional analysis)||884,118 +TAJIKISTAN|Asia|Central Asia|Low Income|2009|2139|1,3|4,3|28,8|8,3|4,2|Micronutrient status survey in Tajikistan, 2009. Dushanbe, Republic of Tajikistan: Ministry of Health and UNICEF, 2010 (and additional analysis).||965,653 +TAJIKISTAN|Asia|Central Asia|Low Income|2012|5348|4,1|9,9|26,8|13,3|6,7|Tajikistan demographic and health survey 2012. Demographic and Health Surveys. Dushanbe, Tajikistan, and Calverton, Maryland, USA: SA, MOH, and ICF International, 2013 (and additional analysis).||1099,272 +TAJIKISTAN|Asia|Central Asia|Low Income|2017|6716|1,8|5,6|17,5|7,6|3,3|Tajikistan Demographic and Health Survey 2017: Key Indicators. Rockville, Maryland, USA: Statistical Agency under the President of the Republic of Tajikistan(SA), Ministry of Health and Social Protection of Population of the Republic of Tajikistan and ICF (and additional analysis)||1194,242 +THAILAND|Asia|South-Eastern Asia|Upper Middle Income|1987|1843|0,9|5,7|24,6|20,2|1,3|Thailand demographic and health survey 1987. Demographic and Health Surveys. Institute of Population Studies, Chulalongkorn University. Bangkok, Thailand, 1988 (and additional analysis).|Age-adjusted;|5588,076999999999 +THAILAND|Asia|South-Eastern Asia|Upper Middle Income|1993|11748||7,3|21,1|16,3||Random survey on nutritional status of children of ages under five. Thailand Journal of Health Promotion and Environmental Health 1996;19:57-66 (and additional analysis).|Converted estimates|5224,563 +THAILAND|Asia|South-Eastern Asia|Upper Middle Income|1995|4178||6,7|18,1|15,4|4,7|The fourth national nutrition survey of Thailand 1995. Department of Health. Bangkok, Thailand 1998 (and additional analysis).|Converted estimates|5125,727 +THAILAND|Asia|South-Eastern Asia|Upper Middle Income|2005-06|4711296|1,4|4,7|15,7|7,0|8,0|Thailand multiple indicator cluster survey December 2005 - February 2006, Final report. Bangkok, Thailand: National Statistical Office, 2006 (and additional analysis).||4187,655 +THAILAND|Asia|South-Eastern Asia|Upper Middle Income|2012|9203|2,2|6,7|16,4|9,2|10,9|International Health Policy Program (IHPP). Thailand multiple indicator cluster survey 2012. MICS. Bangkok, Thailand: NSO, UNICEF, MOPH, NHSO, THPF, IHPP, 2013 (and additional analysis)||4019,889 +THAILAND|Asia|South-Eastern Asia|Upper Middle Income|2015-16|11189|1,4|5,4|10,5|6,7|8,2|Thailand Multiple Indicator Cluster Survey 2015- 2016, Final Report, NSO and UNICEF, Bangkok, 2016 (and additional analysis0||3767,698 +TIMOR-LESTE|Asia|South-Eastern Asia|Lower Middle Income|2002|4133|4,9|13,7|55,7|40,6|5,7|Multiple indicator cluster survey (MICS - 2002). UNICEF, Dili, Timor-Leste, 2003 (and additional analysis).||182,111 +TIMOR-LESTE|Asia|South-Eastern Asia|Lower Middle Income|2003|5255||14,3|54,8|41,5||Timor Leste 2003 demographic and health survey. Newcastle, NSW, Australia: MOH and University of Newcastle, 2003 (and additional analysis).|Converted estimates|180,672 +TIMOR-LESTE|Asia|South-Eastern Asia|Lower Middle Income|2007-08||7,5|24,5|53,9|48,6||Final statistical abstract: Timor-Leste survey of living standards 2007. http://dne.mof.gov.tl/TLSLS/StatisticalData/6_Health/Main%20Tables/index.htm, accessed 27 March 2012.||173,18599999999998 +TIMOR-LESTE|Asia|South-Eastern Asia|Lower Middle Income|2009-10|9114|7,6|18,9|57,5|44,9|5,8|Timor-Leste demographic and health survey 2009-10. Demographic and Health Surveys. Dili, Timor-Leste: NSD [Timor-Leste] and ICF Macro, 2010 (and additional analysis).||182,28599999999997 +TIMOR-LESTE|Asia|South-Eastern Asia|Lower Middle Income|2013|1451858|2,3|10,5|50,9|37,5|1,4|Timor-Leste food and nutrition survey, Final report 2015. Dili, Timor Leste: Ministry of Health, 2015 (and additional analysis)||200,72799999999998 +TOGO|Africa|Western Africa|Low Income|1988|1667|1,4|5,9|40,7|21,7|2,9|Enquête démographique et de santé au Togo 1988. Demographic and Health Surveys. Direction Generale de la Santé. Lomé, Togo, 1989 (and additional analysis).|Age-adjusted;|660,02 +TOGO|Africa|Western Africa|Low Income|1996|3761|||40,2|16,7||Enquête national sur la situation des enfants au Togo en 1995 (MICS -Togo -96). Lomé, République Togolaise: Ministère du Plan et de l'Amenagement du Territoire et UNICEF, September 1996.|Converted estimates|739,48 +TOGO|Africa|Western Africa|Low Income|1998|3603|3,6|12,4|33,2|23,8|2,3|Enquete démographique et de santé, Togo 1998. Demographic and Health Surveys. Ministère de la Planification et du Développement Economique, Direction de la Statistique. Lomé, Togo, 1999 (and aditional analysis).|Age-adjusted;|774,056 +TOGO|Africa|Western Africa|Low Income|2006|3595|6,7|16,5|29,5|23,3|4,6|Résultats de l'enquête nationale à indicateurs multiples, Togo 2006. Rapport final, aôut 2007 (and additional analysis).||983,2289999999999 +TOGO|Africa|Western Africa|Low Income|2008|3204|0,7|6,0|26,9|20,5||Rapport d'enquête nationale nutrition et survie des enfants de 0 à 59 mois, pratique d'alimentation de nourrisson et du jeune enfants. SMART. Togo, décembre 2008||1033,691 +TOGO|Africa|Western Africa|Low Income|2010|4626|1,3|5,1|29,7|16,8|1,6|Enquête par grappes à indicateurs multiples MICS Togo, 2010: Rapport final. Lomé, Togo: DGSCN, 2010 (and additional analysis).||1076,937 +TOGO|Africa|Western Africa|Low Income|2013-14|3325|1,5|6,6|27,6|16,1|2,0|Enquête démographique et de santé au Togo 2013-2014. Demographic and Health Surveys. Rockville, Maryland, USA : MPDAT, MS et ICF International, 2015 (and additional analysis)||1147,214 +TONGA|Oceania|Polynesia|Upper Middle Income|1986|1094||1,3|2,2|||The 1986 national nutrition survey of the Kingdom of Tonga. Technical report National Food and Nutrition Committee. Nuku'alofa: Government of the Kingdom of Tonga, 1987 (and additional analysis).|Converted estimates|14,519 +TONGA|Oceania|Polynesia|Upper Middle Income|2012|1394|2,1|5,2|8,1|1,9|17,3|Tonga demographic and health survey 2012. Noumea, New Caledonia: Secretariat of the Pacific Community, 2013.||13,517999999999999 +TRINIDAD AND TOBAGO|Latin America and the Caribbean|Caribbean|High Income|1987|826|1,2|4,8|6,3|6,2|3,5|Trinidad and Tobago demographic and health survey 1987. Demographic and Health Surveys. Family Planning Association of Trinidad and Tobago. Port-of-Spain, Trinidad, 1988 (and additional analysis).|Age-adjusted;|153,942 +TRINIDAD AND TOBAGO|Latin America and the Caribbean|Caribbean|High Income|2000|761|0,9|5,2|5,3|4,3|5,0|2000 Multiple indicator cluster survey Trinidad and Tobago: Full report. UNICEF website (and additional analysis).||89,616 +TRINIDAD AND TOBAGO|Latin America and the Caribbean|Caribbean|High Income|2011|1095|2,1|6,4|9,2|4,9|11,4|Trinidad and Tobago Multiple Indicator Cluster Survey 2011, Key Findings & Tables. Port of Spain, Trinidad and Tobago: Ministry of Social Development and Familyvices, Central Statistical Office and UNICEF. 2017 (and additional analysis)||97,60600000000001 +TUNISIA|Africa|Northern Africa|Lower Middle Income|1988|2015|0,6|3,1|18,5|7,9|3,7|Enquête démographique et de santé en Tunisie 1988. Demographic and Health Surveys. Office National de la Famille et de la Population. Tunis, Tunisie, 1989 (and additional analysis).|Age-adjusted;|1070,323 +TUNISIA|Africa|Northern Africa|Lower Middle Income|1996-97|891||7,2|11,9|3,3|1,4|Enquête nationale 1996-1997. Evaluation de l'état nutritionnel de la population Tunisienne: Rapport national. Tunis, Tunisia: Sotepa Grafic, 1998 (and additional analysis).|Converted estimates|897,635 +TUNISIA|Africa|Northern Africa|Lower Middle Income|2000|10553||2,9|16,8|3,5||Tunisia multiple indicator cluster survey II 2000 (MICS II). Tunis, Tunisia: 2000 (and additional analysis).|Converted estimates|840,2610000000001 +TUNISIA|Africa|Northern Africa|Lower Middle Income|2006|2842|1,2|3,4|9,0|3,3|8,8|Enquête sur la santé et le bien être de la mère et l'enfant: MICS 3. Tunis, Tunisia, 2008 (and additional analysis conducted by PAPFAM).||803,193 +TUNISIA|Africa|Northern Africa|Lower Middle Income|2011-12|2677|2,2|3,3|10,1|2,8|14,2|Suivi de la situation des enfants et des femmes en Tunisie- Enquête par grappes à indicateurs multiples 2011-2012: Rapport Final. MICS. Tunis, Tunisie: MDCI, INS, UNICEF, 2013 (and additional analysis)||927,5189999999999 +TURKEY|Asia|Western Asia|Upper Middle Income|1993|3255|1,1|3,9|23,6|8,7|4,9|Turkey demographic and health survey, 1993. Demographic and Health Surveys. Ankara, Turkey, 1994 (and additional analysis).||6445,356 +TURKEY|Asia|Western Asia|Upper Middle Income|1995|2871||||9,0||Multiple indicator cluster survey in Turkey 1995. Ankara: National Bureau of Statistics, 1996 (and additional analysis).|Converted estimate|6438,939 +TURKEY|Asia|Western Asia|Upper Middle Income|1998|2867|0,8|3,0|18,8|7,0|3,8|Turkish demographic and health survey 1998. Demographic and Health Surveys. Hacettepe University, Institute of Population Studies. Ankara, Turkey, 1999 (and additional analysis).||6565,826999999999 +TURKEY|Asia|Western Asia|Upper Middle Income|2003-04|3772|0,4|1,1|15,2|3,5|8,8|Demographic and health survey, 2003. Ankara, Turkey: Hacettepe University Institute of Population Studies, MoH General Directorate of Mother and Child Health and Family Planning, State Planning Organization and the EU, 2004 (and additional analysis)||6580,174 +TURKEY|Asia|Western Asia|Upper Middle Income|2008|2694|0,3|1,0|12,5|1,9|9,7|Turkey Demographic and Health Survey 2008. Ankara, Turkey: Institute of Population Studies, Hacettepe University (and additional analysis)||6382,8240000000005 +TURKEY|Asia|Western Asia|Upper Middle Income|2013-14|2651|0,5|1,9|9,9|2,3|11,1|2013 Turkey demographic and health survey. Ankara, Turkey: Hacettepe University Institute of Population Studies, T.R. Ministry of Development and TÜBYTAK, 2014 (and additional analysis)||6635,619000000001 +TURKMENISTAN|Asia|Central Asia|Upper Middle Income|2000|2928||7,1|28,1|10,5||Turkmenistan demographic and health survey 2000. Demographic and Health Surveys. Calverton, Maryland, USA: GECRCMCH and ORC Macro, 2001(and additional analysis).|Converted estimates|489,648 +TURKMENISTAN|Asia|Central Asia|Upper Middle Income|2006|2040|2,1|7,2|18,9|9,2|4,5|Turkmenistan multiple indicator cluster survey 2006, Final Report. Ashgabat, Turkmenistan: Turkmenmillihasabat, 2006 (and additional analysis).||522,4630000000001 +TURKMENISTAN|Asia|Central Asia|Upper Middle Income|2015-16|3718|1,1|4,2|11,5|3,2|5,9|2015-2016 Turkmenistan Multiple Indicator Cluster Survey, Final Report (and additional analysis)||678,7660000000001 +TUVALU|Oceania|Polynesia|Upper Middle Income|2007|430|0,9|3,3|10,0|1,6|6,3|Tuvalu demographic and health survey. DHS. Noumea, New Caledonia: TCSD, SPC and Macro International Inc, 2007 (accessed 22/12/09 http://www.spc.int/sdp/index.php?option=com_docman&task=cat_view&gid=53&Itemid=42).||1,0 +UGANDA|Africa|Eastern Africa|Low Income|1988-89|3819|0,9|3,1|47,7|19,7|3,6|Uganda demographic and health survey 1988/89. Demographic and Health Surveys. Ministry of Health. Entebbe, Uganda, 1989 (and additional analysis).||3203,494 +UGANDA|Africa|Eastern Africa|Low Income|1995|5012|2,0|5,9|45,7|20,8|5,0|Uganda demographic and health survey 1995. Demographic and Health Surveys. Calverton, Maryland: Statistics Department and Macro International Inc., 1996 (and additional analysis).|Age-adjusted;|4142,0470000000005 +UGANDA|Africa|Eastern Africa|Low Income|2000-01|6315|1,5|5,0|44,9|19,2|4,9|Uganda demographic and health survey 2000-2001. Demographic and Health Surveys. Calverton, Maryland, USA: UBOS and ORC Macro, 2001 (and additional analysis).| (41 out of 45 districts)|4842,238 +UGANDA|Africa|Eastern Africa|Low Income|2006|2742|2,2|6,2|38,3|16,3|4,9|Uganda demographic and health survey 2006. Demographic and Health Surveys. Calverton, Maryland, USA: UBOS and Macro International Inc., 2007 (and additional analysis).||5935,783 +UGANDA|Africa|Eastern Africa|Low Income|2011|2395|1,5|4,6|33,4|14,1|3,8|Uganda demographic and health survey 2011. Demographic and Health Surveys. Kampala, Uganda: UBOS and Calverton, Maryland: ICF International Inc., 2012 (and additional analysis).||6810,5830000000005 +UGANDA|Africa|Eastern Africa|Low Income|2011-12|2966543|0,9|4,7|33,7|12,4|5,8|Uganda National Panel Survey (UNPS) - Wave III. Kampala, Uganda: UBOS, 2013 (and additional analysis).||6985,4 +UGANDA|Africa|Eastern Africa|Low Income|2016|5136|1,3|3,5|28,9|10,4|3,7|Uganda Demographic and Health Survey 2016. Kampala, Uganda and Rockville, Maryland, USA: UBOS and ICF. 2018 (and additional analysis)||7698,908 +UKRAINE|Europe|Eastern Europe|Lower Middle Income|2000|4247|3,8|8,2|22,9|4,1|26,5|2000 Multiple indicator cluster survey (full report). MICS. (and additional analysis).||2160,554 +UNITED REPUBLIC OF TANZANIA (THE)|Africa|Eastern Africa|Low Income|1991-92|6400|2,8|7,8|49,9|24,8|5,8|Tanzania demographic and health survey 1991/92. Demographic and Health Surveys. Dar es Salaam, United Republic of Tanzania, 1992 (and additional analysis).||4806,784000000001 +UNITED REPUBLIC OF TANZANIA (THE)|Africa|Eastern Africa|Low Income|1996|5561|3,0|8,5|49,6|26,8|4,6|Tanzania demographic and health survey 1996. Demographic and Health Surveys. Calverton, Maryland: Bureau of Statistics and Macro International Inc., 1997 (and additional analysis).||5507,29 +UNITED REPUBLIC OF TANZANIA (THE)|Africa|Eastern Africa|Low Income|1999|2648|2,0|5,6|48,3|25,3|3,3|Tanzania reproductive and child health survey 1999. Demographic and Health Surveys. Calverton, Maryland: National Bureau of Statistics [Tanzania] and Macro International Inc., 2000 (and additional analysis).||5829,325 +UNITED REPUBLIC OF TANZANIA (THE)|Africa|Eastern Africa|Low Income|2004-05|8168|1,0|3,6|44,4|16,7|4,9|Tanzania demographic and health survey 2004-05. Demographic and Health Surveys. Dar es Salaam, Tanzania: National Bureau of Statistics and ORC Macro, 2005 (and additional analysis).||6855,840999999999 +UNITED REPUBLIC OF TANZANIA (THE)|Africa|Eastern Africa|Low Income|2008-09|5211951|0,8|2,9|43,1|16,4|4,6|Tanzania National Panel Survey Report (NPS) –Round 1, 2008 - 2009. Dar es Salaam, Tanzania: NBS, 2009 (and additional analysis)||8005,096 +UNITED REPUBLIC OF TANZANIA (THE)|Africa|Eastern Africa|Low Income|2009-10|7676|1,3|4,9|42,1|16,1|5,4|Tanzania demographic and health survey 2010. Demographic and Health Surveys. Dar es Salaam, Tanzania: NBS and ICF Macro, 2011 (and additional analysis).||8225,569 +UNITED REPUBLIC OF TANZANIA (THE)|Africa|Eastern Africa|Low Income|2010-11|6497375|1,7|6,3|34,9|14,1|5,2|Tanzania National Panel Survey Report (NPS) - Wave 2, 2010 - 2011. Dar es Salaam, Tanzania: NBS, 2012 (and additional analysis)||8455,923 +UNITED REPUBLIC OF TANZANIA (THE)|Africa|Eastern Africa|Low Income|2012-13|6352019|1,5|4,5|37,1|13,1|5,0|Tanzania National Panel Survey Report (NPS) - Wave 3, 2012 - 2013. Dar es Salaam, Tanzania: NBS, 2014 (and additional analysis).||8943,136 +UNITED REPUBLIC OF TANZANIA (THE)|Africa|Eastern Africa|Low Income|2014|16867|0,9|3,8|34,7|13,4||Tanzania national nutrition survey 2014: Final report. United Republic of Tanzania, December 2014.|(pending reanalysis)|9186,715 +UNITED REPUBLIC OF TANZANIA (THE)|Africa|Eastern Africa|Low Income|2015-16|9886|1,2|4,5|34,5|13,7|3,7|Tanzania demographic and health survey 2015-16. Demographic and Health Surveys. Dar es Salaam, Tanzania: NBS and ICF International, 2016 (and additional analysis)||9419,084 +UNITED STATES OF AMERICA (THE)|Northern America|Northern America|High Income|1988-94|6662|0,1|0,7|3,2|0,9|5,4|Plan and operation of the third national health and nutrition examination survey, 1988-94 (NHANES III). Vital Health Statistics 1994;32:1-2 (and additional analysis).|(2-60 months)|19555,672 +UNITED STATES OF AMERICA (THE)|Northern America|Northern America|High Income|1999-02|2666|0,0|0,4|3,3|1,1|7,0|Prevalence of overweight and obesity among US children, adolescents, and adults, 1999-2002. JAMA 2004;291:2847-50 (and additional analysis).||19382,292 +UNITED STATES OF AMERICA (THE)|Northern America|Northern America|High Income|2003-06|3092|0,1|0,8|3,2|1,1|8,1|National Health and Nutrition Examination Survey Data. Hyattsville, MD: U.S. Department of Health and Human Services, CDC, [2003-06 combined][wwwn.cdc.gov/nchs/nhanes/search/nhanes03_04.aspx and wwwn.cdc.gov/nchs/nhanes/search/nhanes05_06.aspx].||20273,45 +UNITED STATES OF AMERICA (THE)|Northern America|Northern America|High Income|2007-10|2898|0,0|0,5|2,7|0,8|7,8|National Health and Nutrition Examination Survey Data. Hyattsville, MD: U.S. Department of Health and Human Services, CDC, [2007-10 combined][wwwn.cdc.gov/nchs/nhanes/search/nhanes07_08.aspx and wwwn.cdc.gov/nchs/nhanes/search/nhanes09_10.aspx].||20913,782 +UNITED STATES OF AMERICA (THE)|Northern America|Northern America|High Income|2011-12|600|0,0|0,5|2,1|0,5|6,0|National Health and Nutrition Examination Survey Data. Hyattsville, MD: U.S. Department of Health and Human Services, CDC, [2011-12] [wwwn.cdc.gov/nchs/nhanes/search/nhanes11_12.aspx].||20508,408 +UNITED STATES OF AMERICA (THE)|Northern America|Northern America|High Income|2013-14|||0,3|2,4||8,2|National Health and Nutrition Examination Survey Data. Hyattsville, MD: U.S. Department of Health and Human Services, CDC, [2013-14] ||19969,078999999998 +UNITED STATES OF AMERICA (THE)|Northern America|Northern America|High Income|2015-16|||0,4|3,5||9,4|National Health and Nutrition Examination Survey Data. Hyattsville, MD: U.S. Department of Health and Human Services, CDC, [2015-16]||19606,548 +URUGUAY|Latin America and the Caribbean|South America|High Income|1987|3471|||21,0|6,5||Uruguay: Situacion alimentario-nutricional, algunos factores condicionantes 1970-87. Document prepared for the ACC/SCN. Montevideo, Uruguay, 1987 (and additional analysis).|Converted estimates|258,579 +URUGUAY|Latin America and the Caribbean|South America|High Income|1999|11413|0,8|2,3|12,8|4,7|9,0|Trends in early growth indices (stunting and overweight) in the first 24 months of life in Uruguay over the past decade. Public Health Nutrition 2013 (in press). Encuesta nacional sobre estado nutricional, prácticas de alimentación y anemia. Montevideo, Uruguay: MSP, MIDES, RUANDI, UNICEF, 2011 (and additional analysis).|Age-adjusted;|274,48400000000004 +URUGUAY|Latin America and the Caribbean|South America|High Income|2002|7091|0,5|2,4|14,7|5,4|10,0|Sistema de vigilancia del estado nutricional (SISVEN), 2002. Programa Nacional de Nutrición. Montevideo, Uruguay, 2007.| National monitoring system|262,51099999999997 +URUGUAY|Latin America and the Caribbean|South America|High Income|2003|2787|0,9|2,8|15,8|5,1|11,5|Trends in early growth indices (stunting and overweight) in the first 24 months of life in Uruguay over the past decade. Public Health Nutrition 2013 (in press). Encuesta nacional sobre estado nutricional, prácticas de alimentación y anemia. Montevideo, Uruguay: MSP, MIDES, RUANDI, UNICEF, 2011 (and additional analysis).|Age-adjusted;|259,86400000000003 +URUGUAY|Latin America and the Caribbean|South America|High Income|2004|7012|0,7|3,0|13,9|6,0|9,4|Sistema de vigilancia del estado nutricional (SISVEN), 2004. Programa Nacional de Nutrición. Montevideo, Uruguay, 2007.|National monitoring system|257,60900000000004 +URUGUAY|Latin America and the Caribbean|South America|High Income|2007|3004|1,0|2,5|10,8|4,2|7,9|Trends in early growth indices (stunting and overweight) in the first 24 months of life in Uruguay over the past decade. Public Health Nutrition 2013 (in press) (and additional analysis)|Age-adjusted;|251,8 +URUGUAY|Latin America and the Caribbean|South America|High Income|2011|2979|0,0|1,3|10,7|4,0|7,2|Trends in early growth indices (stunting and overweight) in the first 24 months of life in Uruguay over the past decade. Public Health Nutrition 2013 (in press) (and additional analysis)|Age-adjusted;|246,171 +UZBEKISTAN|Asia|Central Asia|Lower Middle Income|1996|1148|6,1|10,7|39,5|13,3|15,9|Uzbekistan demographic and health survey 1996. Demographic and Health Surveys. Calverton, Maryland: Institute of Obstetrics and Gynecology and Macro International Inc., 1997 (and additional analysis).|Age-adjusted;|3237,5490000000004 +UZBEKISTAN|Asia|Central Asia|Lower Middle Income|2002|2524|3,9|9,0|24,9|7,4|10,9|Uzbekistan health examination survey 2002. Demographic and Health Surveys. Calverton, Maryland, USA: Analytical and Information Center, State Department of Statistics, and ORC Macro, 2004 (and additional analysis)||2650,155 +UZBEKISTAN|Asia|Central Asia|Lower Middle Income|2006|4883|1,6|4,4|19,6|4,4|12,2|Uzbekistan multiple indicator cluster survey 2006, Final report. Tashkent, Uzbekistan: UNICEF, 2007 (and additional analysis).||2606,1679999999997 +VANUATU|Oceania|Melanesia|Lower Middle Income|1996|1297||6,8|25,7|10,6||Report of the second national nutrition survey 1996. Government of the Republic of Vanuatu, Department of Health and AusAID, 1998 (and additional analysis).|Converted estimates|26,796999999999997 +VANUATU|Oceania|Melanesia|Lower Middle Income|2007|1342|1,9|5,9|25,7|11,5|4,7|Vanuatu multiple indicator cluster survey 2007 (MICS). Final Report. Port Vila, Vanuatu: Ministry of Health, Government of Vanuatu, 2008 (and additional analysis).||30,912 +VANUATU|Oceania|Melanesia|Lower Middle Income|2013|1241|1,1|4,4|28,5|10,7|4,6|Vanuatu demographic and health survey 2013. Port Vila, Vanuatu, 2014.|(pending reanalysis)|35,244 +VENEZUELA (BOLIVARIAN REPUBLIC OF)|Latin America and the Caribbean|South America|Upper Middle Income|1987|18023||2,2|7,0|3,9|9,0|Proyecto Venezuela 1987. Caracas: Centro de estudios sobre crecimiento y desarrollo de la poblacion venezolana, 1995 (and additional analysis).|Converted estimates|2605,928 +VENEZUELA (BOLIVARIAN REPUBLIC OF)|Latin America and the Caribbean|South America|Upper Middle Income|1990|180709||5,7|18,6|6,7|4,0|Resultados de la evalucion antropométrica del componente menores de 5 anos del Sistema de Vigilancia Alimentaria y Nutricional (SISVAN): Venezuela 1990-1993. Caracas: Instituto Nacional de Nutricion, 1996 (and additional analysis).|Converted estimates|2764,28 +VENEZUELA (BOLIVARIAN REPUBLIC OF)|Latin America and the Caribbean|South America|Upper Middle Income|1991|261095||4,5|18,2|5,4|4,3|Resultados de la evalucion antropométrica del componente menores de 5 anos del Sistema de Vigilancia Alimentaria y Nutricional (SISVAN): Venezuela 1990-1993. Caracas: Instituto Nacional de Nutricion, 1996 (and additional analysis).|Converted estimates|2807,3779999999997 +VENEZUELA (BOLIVARIAN REPUBLIC OF)|Latin America and the Caribbean|South America|Upper Middle Income|1992|257491||4,3|18,3|4,5|4,9|Resultados de la evalucion antropométrica del componente menores de 5 anos del Sistema de Vigilancia Alimentaria y Nutricional (SISVAN): Venezuela 1990-1993. Caracas: Instituto Nacional de Nutricion, 1996 (and additional analysis).|Converted estimates|2822,53 +VENEZUELA (BOLIVARIAN REPUBLIC OF)|Latin America and the Caribbean|South America|Upper Middle Income|1993|256344||4,0|17,4|4,0|4,9|Resultados de la evalucion antropométrica del componente menores de 5 anos del Sistema de Vigilancia Alimentaria y Nutricional (SISVAN): Venezuela 1990-1993. Caracas: Instituto Nacional de Nutricion, 1996 (and additional analysis).|Converted estimates|2817,672 +VENEZUELA (BOLIVARIAN REPUBLIC OF)|Latin America and the Caribbean|South America|Upper Middle Income|1994|235552||3,8|17,9|3,9|5,0|Clasificacion antropometrica nutricional, Venezuela 1994. INN-SISVAN componente menores de 5 anos. Caracas: Instituto Nacional de Nutricion, 1996 (and additional analysis).|Converted estimates|2807,8340000000003 +VENEZUELA (BOLIVARIAN REPUBLIC OF)|Latin America and the Caribbean|South America|Upper Middle Income|1995|341155||3,8|18,9|4,1|4,7|Evaluacion antropometrica nutricional de los menores de cinco anos, para comparacion internacional: Venezuela 1995-1997. Caracas: Instituto Nacional de Nutricion, 1998 (and additional analysis).|Converted estimates|2803,4840000000004 +VENEZUELA (BOLIVARIAN REPUBLIC OF)|Latin America and the Caribbean|South America|Upper Middle Income|1996|344701||3,8|19,3|4,4|4,7|Evaluacion antropometrica nutricional de los menores de cinco anos, para comparacion internacional: Venezuela 1995-1997. Caracas: Instituto Nacional de Nutricion, 1998 (and additional analysis).|Converted estimates|2786,423 +VENEZUELA (BOLIVARIAN REPUBLIC OF)|Latin America and the Caribbean|South America|Upper Middle Income|1997|291749||3,8|19,9|4,5|5,0|Evaluacion antropometrica nutricional de los menores de cinco anos, para comparacion internacional: Venezuela 1995-1997. Caracas: Instituto Nacional de Nutricion, 1998 (and additional analysis).|Converted estimates|2785,99 +VENEZUELA (BOLIVARIAN REPUBLIC OF)|Latin America and the Caribbean|South America|Upper Middle Income|1998|299531||4,4|19,2|4,6|4,9|Evaluacion antropometrica nutricional de los menores de cinco años, para comparacion internacional. Venezuela 1990-1998. Caracas: Instituto Nacional de Nutricion, 1999 (and additional analysis).|Converted estimates|2797,808 +VENEZUELA (BOLIVARIAN REPUBLIC OF)|Latin America and the Caribbean|South America|Upper Middle Income|1999|377496||4,0|18,3|4,1|5,2|Evaluacion antropometrica nutricional de los menores de cinco anos, para comparacion internacional. Venezuela 1990-1999. Caracas: Instituto Nacional de Nutricion, 2000 (and additional analysis).|Converted estimates|2812,4629999999997 +VENEZUELA (BOLIVARIAN REPUBLIC OF)|Latin America and the Caribbean|South America|Upper Middle Income|2000|321257||3,9|17,4|3,9|5,3|Evaluacion antropometrica nutricional de los menores de cinco años, para comparacion internacional. Venezuela 2000. Caracas: Instituto Nacional de Nutrition, 2001(and additional analysis).|Converted estimates|2823,4120000000003 +VENEZUELA (BOLIVARIAN REPUBLIC OF)|Latin America and the Caribbean|South America|Upper Middle Income|2001|||4,4|17,3|4,0|5,4|Ficha técnica: Evaluación antropométrica nutricional en menores de 5 años según criterios internacionales. Caracas, Venezuela: Gobierno Bolivariano de Venezuela, Ministerio del Poder Popular para la Salud, INN, 2012 (and additional analysis).|Converted estimates|2840,423 +VENEZUELA (BOLIVARIAN REPUBLIC OF)|Latin America and the Caribbean|South America|Upper Middle Income|2002|||4,8|17,6|4,2|5,4|Ficha técnica: Evaluación antropométrica nutricional en menores de 5 años según criterios internacionales. Caracas, Venezuela: Gobierno Bolivariano de Venezuela, Ministerio del Poder Popular para la Salud, INN, 2012 (and additional analysis).|Converted estimates|2854,1440000000002 +VENEZUELA (BOLIVARIAN REPUBLIC OF)|Latin America and the Caribbean|South America|Upper Middle Income|2003|||5,2|17,7|4,6|5,3|Ficha técnica: Evaluación antropométrica nutricional en menores de 5 años según criterios internacionales. Caracas, Venezuela: Gobierno Bolivariano de Venezuela, Ministerio del Poder Popular para la Salud, INN, 2012 (and additional analysis).|Converted estimates|2864,68 +VENEZUELA (BOLIVARIAN REPUBLIC OF)|Latin America and the Caribbean|South America|Upper Middle Income|2004|||5,2|17,1|4,5|5,2|Ficha técnica: Evaluación antropométrica nutricional en menores de 5 años según criterios internacionales. Caracas, Venezuela: Gobierno Bolivariano de Venezuela, Ministerio del Poder Popular para la Salud, INN, 2012 (and additional analysis).|Converted estimates|2874,7529999999997 +VENEZUELA (BOLIVARIAN REPUBLIC OF)|Latin America and the Caribbean|South America|Upper Middle Income|2005|||4,8|16,2|4,1|5,5|Ficha técnica: Evaluación antropométrica nutricional en menores de 5 años según criterios internacionales. Caracas, Venezuela: Gobierno Bolivariano de Venezuela, Ministerio del Poder Popular para la Salud, INN, 2012 (and additional analysis).|Converted estimates|2886,49 +VENEZUELA (BOLIVARIAN REPUBLIC OF)|Latin America and the Caribbean|South America|Upper Middle Income|2006|||4,8|16,2|3,9|6,1|Ficha técnica: Evaluación antropométrica nutricional en menores de 5 años según criterios internacionales. Caracas, Venezuela: Gobierno Bolivariano de Venezuela, Ministerio del Poder Popular para la Salud, INN, 2012 (and additional analysis).|Converted estimates|2906,309 +VENEZUELA (BOLIVARIAN REPUBLIC OF)|Latin America and the Caribbean|South America|Upper Middle Income|2007|242775||5,0|15,6|3,7|6,1|Sistema de vigilancia alimentaria y nutricional Venezuela 2007. Caracas, Venezuela: Instituto Nacional de Nutrición, 2009 (y análisis adicional).|Converted estimates|2921,0209999999997 +VENEZUELA (BOLIVARIAN REPUBLIC OF)|Latin America and the Caribbean|South America|Upper Middle Income|2008|||4,5|14,6|3,2|6,3|Ficha técnica: Evaluación antropométrica nutricional en menores de 5 años según criterios internacionales. Caracas, Venezuela: Gobierno Bolivariano de Venezuela, Ministerio del Poder Popular para la Salud, INN, 2012 (and additional analysis).|Converted estimates|2932,204 +VENEZUELA (BOLIVARIAN REPUBLIC OF)|Latin America and the Caribbean|South America|Upper Middle Income|2009|||4,1|13,4|2,9|6,4|Ficha técnica: Evaluación antropométrica nutricional en menores de 5 años según criterios internacionales. Caracas, Venezuela: Gobierno Bolivariano de Venezuela, Ministerio del Poder Popular para la Salud, INN, 2012 (and additional analysis).|Converted estimates|2941,185 +VIET NAM|Asia|South-Eastern Asia|Lower Middle Income|1987-89|7044||11,1|61,3|40,7||Report on re-analyzed data collected by the General Nutrition Survey 1987-89. Department of Planning. Hanoi, Viet Nam, 1991 (and additional analysis).|Converted estimates|9040,48 +VIET NAM|Asia|South-Eastern Asia|Lower Middle Income|1992-93|2833|1,3|6,7|61,4|36,9|2,8|Viet Nam living standards survey 1992-93 (VNLSS). Washington, D.C.: The World Bank, 1998 (and additional analysis).||9409,280999999999 +VIET NAM|Asia|South-Eastern Asia|Lower Middle Income|1994|37764||13,5|52,5|40,6||Viet Nam: Xerophthalmia free; 1994 national Vitamin A deficiency and protein-energy malnutrition prevalence survey. Consultancy report 5-17 March 1995. National Institute of Nutrition. Hanoi, Viet Nam, 1995 (and additional analysis).|Converted estimates|9363,981 +VIET NAM|Asia|South-Eastern Asia|Lower Middle Income|1998|12919||11,9|42,1|35,8|1,4|National protein energy malnutrition survey, Viet Nam 1998. National Institute of Nutrition, Hanoi, Viet Nam and Centre for Clinical Epidemiology & Biostatistics, Newcastle, Australia, 1999 (and additional analysis).|Converted estimates|8106,876 +VIET NAM|Asia|South-Eastern Asia|Lower Middle Income|1999|1540|2,8|11,0|43,7|31,1|1,8|Annual national nutrition monitoring. Nutrition Surveillance Department. Hanoi, Vietnam: National Institute of Nutrition, 2009 (and additional analysis).|Surveillance data - weighted|7619,840999999999 +VIET NAM|Asia|South-Eastern Asia|Lower Middle Income|2000|3041|1,0|6,1|43,2|26,7|2,6|Multiple indicator cluster survey Viet Nam, 2000. New York: UNICEF, 2004. Standard tables (and additional analysis).||7244,526999999999 +VIET NAM|Asia|South-Eastern Asia|Lower Middle Income|2002|1529|2,4|8,9|37,5|23,4|2,6|Annual national nutrition monitoring. Nutrition Surveillance Department. Hanoi, Vietnam: National Institute of Nutrition, 2009 (and additional analysis).|Surveillance data - weighted|6553,569 +VIET NAM|Asia|South-Eastern Asia|Lower Middle Income|2003|1457|2,8|10,9|35,4|24,6|2,2|Annual national nutrition monitoring. Nutrition Surveillance Department. Hanoi, Vietnam: National Institute of Nutrition, 2009 (and additional analysis).|Surveillance data - weighted|6587,677 +VIET NAM|Asia|South-Eastern Asia|Lower Middle Income|2004|1500|2,8|11,3|33,7|23,8|2,7|Annual national nutrition monitoring. Nutrition Surveillance Department. Hanoi, Vietnam: National Institute of Nutrition, 2009 (and additional analysis).|Surveillance data - weighted|6691,533 +VIET NAM|Asia|South-Eastern Asia|Lower Middle Income|2005|1493|2,8|10,7|33,2|22,7|2,6|Annual national nutrition monitoring. Nutrition Surveillance Department. Hanoi, Vietnam: National Institute of Nutrition, 2009 (and additional analysis).|Surveillance data - weighted|6760,019 +VIET NAM|Asia|South-Eastern Asia|Lower Middle Income|2006|1531|2,5|9,9|31,8|22,1|3,1|Annual national nutrition monitoring. Nutrition Surveillance Department. Hanoi, Vietnam: National Institute of Nutrition, 2009 (and additional analysis).|Surveillance data - weighted|6988,751 +VIET NAM|Asia|South-Eastern Asia|Lower Middle Income|2007|1507|2,4|10,1|32,2|22,6|2,9|Annual national nutrition monitoring. Nutrition Surveillance Department. Hanoi, Vietnam: National Institute of Nutrition, 2009 (and additional analysis).|Surveillance data - weighted|7108,596 +VIET NAM|Asia|South-Eastern Asia|Lower Middle Income|2008|1484|2,5|9,7|30,5|20,2|3,0|Annual national nutrition monitoring. Nutrition Surveillance Department. Hanoi, Vietnam: National Institute of Nutrition, 2009 (and additional analysis).|Surveillance data - weighted|7149,052 +VIET NAM|Asia|South-Eastern Asia|Lower Middle Income|2009-10|94256|3,8|7,1|29,3|17,5||General nutrition survey 2009-2010. Hanoi, Viet Nam: Medical Publishing House, 2010.||7277,420999999999 +VIET NAM|Asia|South-Eastern Asia|Lower Middle Income|2010-11|3607|1,5|4,4|22,7|12,0|4,4|Viet Nam multiple indicator cluster survey 2011 (MICS), final report. Ha Noi, Viet Nam, 2011 (and additional analysis).||7418,376 +VIET NAM|Asia|South-Eastern Asia|Lower Middle Income|2013|99421|1,6|6,6|25,9|15,3|4,6|Nutrition surveillance profiles 2013. Hanoi, Viet Nam, 2014.|Surveillance data (updated report 13/5/2014)|7629,968000000001 +VIET NAM|Asia|South-Eastern Asia|Lower Middle Income|2014|98424|4,8|6,8|24,9|14,5|3,5|Nutrition surveillance profiles 2014. Hanoi, Viet Nam, 2016.|Surveillance data (updated report 11/1/2014)|7705,15 +VIET NAM|Asia|South-Eastern Asia|Lower Middle Income|2015|98447|1,4|6,4|24,6|14,1|5,3|Nutrition surveillance profiles 2015. Hanoi, Viet Nam, 2017.||7752,861 +YEMEN|Asia|Western Asia|Low Income|1991-92|3885|5,5|14,3|52,4|29,6|8,1|Yemen maternal and child health survey (YDMCHS). PAPCHILD Surveys. Sana, Republic of Yemen, 1992 (and additional analysis).||2715,5240000000003 +YEMEN|Asia|Western Asia|Low Income|1996|3833||17,4|50,4|34,2|6,9|Yemen multiple indicator cluster survey (March 1996): Final results. Ministry of Planning and Development. Sanaa, Republic of Yemen, 1996 (and additional analysis).|Converted estimates|3152,9590000000003 +YEMEN|Asia|Western Asia|Low Income|1997|8222|6,8|16,5|55,2|43,0|3,7|Yemen demographic and maternal and child health survey 1997. Demographic and Health Surveys. Central Statistical Organization. Sana'a, Yemen, 1998 (and additional analysis).||3174,3059999999996 +YEMEN|Asia|Western Asia|Low Income|2003|12364|6,3|15,2|57,7|43,1|5,0|The Yemen family health survey: Principal report. Pan Arab Project for Family Health. Cairo, Egypt: The Republic of Yemen Ministry of Health & Population, Central Statistical Organization an League of Arab States, 2004 (and additional analysis).||3227,6040000000003 +YEMEN|Asia|Western Asia|Low Income|2011|3769453|3,4|13,3|46,6|35,5|1,5|The state of food security and nutrition in Yemen. Comprehensive food security survey 2011. Sana'a, Republic of Yemen, 2013 (and additional analysis).||3751,3759999999997 +YEMEN|Asia|Western Asia|Low Income|2013|14624|5,4|16,4|46,4|39,9|2,5|Yemen National Health and Demographic Survey 2013. Rockville, Maryland, USA: MOPHP, CSO, PAPFAM, and ICF International, 2014 (and additional analysis)||3895,949 +ZAMBIA|Africa|Eastern Africa|Lower Middle Income|1992|5057|2,2|6,3|46,3|21,2|4,7|Zambia demographic and health survey 1992. Demographic and Health Surveys. Central Statistical Office. Lusaka, Zambia, 1993 (and additional analysis).||1557,0720000000001 +ZAMBIA|Africa|Eastern Africa|Lower Middle Income|1995||||58,1|||Zambia's children in 1995: Key results of a survey to monitor progress towards goals for children (MICS2). Lusaka, Zambia: Government of the Republic of the Zambia, 1997 (and additional analysis).|Converted estimate|1670,747 +ZAMBIA|Africa|Eastern Africa|Lower Middle Income|1996-97|5612|1,7|5,4|48,6|19,6|6,2|Zambia demographic and health survey 1996. Demographic and Health Surveys. Calverton, Maryland: Central Statistical Office and Macro International Inc., 1997 (and additional analysis).||1722,2179999999998 +ZAMBIA|Africa|Eastern Africa|Lower Middle Income|1999|1105300|1,8|5,0|59,2|19,6|14,0|Zambia 1999 multiple indicator cluster survey report: Report on the monitoring of the end of decade goals. Lusaka, Zambia, 2000 (and additional analysis).||1888,128 +ZAMBIA|Africa|Eastern Africa|Lower Middle Income|2001-02|6023|2,3|6,2|52,5|23,2|5,9|Zambia demographic and health survey 2001-2002. Demographic and Health Surveys. Calverton, Maryland, USA: Central Statistical Office, Central Board of Health, and ORC Macro, 2003 (and additional analysis).||2079,324 +ZAMBIA|Africa|Eastern Africa|Lower Middle Income|2007|5933|2,3|5,6|45,8|14,9|8,4|Zambia demographic and health survey 2007. Demographic and Health Surveys. Calverton, Maryland, USA: CSO and Macro International Inc., 2009 (and additional analysis).||2342,367 +ZAMBIA|Africa|Eastern Africa|Lower Middle Income|2013-14|12877|2,5|6,2|40,0|14,9|6,2|Zambia demographic and health Survey 2013-14. Demographic and Health Surveys. Rockville, Maryland, USA: Central Statistical Office, Ministry of Health, and ICF International, 2014 (and additional analysis)||2626,277 +ZIMBABWE|Africa|Eastern Africa|Low Income|1987|419964||||10,5||Report of the nutrition component of the national health information system. Harare, Zimbabwe, 1987 (and additional analysis).|Converted estimate|1702,055 +ZIMBABWE|Africa|Eastern Africa|Low Income|1988|2470|0,4|1,7|31,0|8,0|5,4|Zimbabwe demographic and health survey, 1988. Demographic and Health Surveys. Harare, Zimbabwe, 1989 (and additional analysis).||1718,519 +ZIMBABWE|Africa|Eastern Africa|Low Income|1994|2070|1,7|5,3|28,5|11,8|6,4|Zimbabwe demographic and health survey 1994. Demographic and Health Surveys. Calverton, Maryland: Central Statistical Office and Macro International Inc., 1995 (and additional analysis).|Age-adjusted;|1776,085 +ZIMBABWE|Africa|Eastern Africa|Low Income|1999|3181|4,1|8,3|33,8|11,5|10,5|Zimbabwe demographic and health survey 1999. Demographic and Health Surveys. Calverton, Maryland: Central Statistical Office and Macro International Inc., 2000 (and additional analysis).||1817,125 +ZIMBABWE|Africa|Eastern Africa|Low Income|2005-06|5273|2,9|7,3|35,3|14,0|8,8|Zimbabwe demographic and health survey 2005-06. Demographic and Health Surveys. Calverton, Maryland: CSO and Macro International Inc., 2007 (and additional analysis).||1950,476 +ZIMBABWE|Africa|Eastern Africa|Low Income|2009|6196|1,9|3,8|35,1|12,6|3,5|Zimbabwe multiple indicator monitoring survey (MIMS), 2009. Report August 2010. Harare, Zimbabwe: ZIMSTAT, 2010 (and additional analysis).||2160,621 +ZIMBABWE|Africa|Eastern Africa|Low Income|2010-11|5414|0,8|3,2|32,2|10,2|5,8|Zimbabwe demographic and health survey 2010-11. Demographic and Health Surveys. Calverton, Maryland: ZIMSTAT and ICF International Inc., 2012 (and additional analysis).||2225,702 +ZIMBABWE|Africa|Eastern Africa|Low Income|2014|9591|0,9|3,4|27,6|11,3|3,6|Zimbabwe Multiple Indicator Cluster Survey 2014, Final Report. Harare, Zimbabwe (and additional analysis)||2466,295 +ZIMBABWE|Africa|Eastern Africa|Low Income|2015|6380|1,1|3,3|27,1|8,5|5,6|Zimbabwe Demographic and Health Survey 2015, November 2016 (and additional analysis)||2505,484