Domácí úloha 6 IB111 Deadline 23. 12 (sk. 29) 25. 12. (sk. 30) 1. část – zpracování textu (13 bodů) Dataset student-mat.txt obsahuje informace o studentech, o jejich podmínkách, chování a výsledcích. Vaším úkolem je napsat program, který načte a zpracuje data ze souboru. Jednotlivé záznamy odpovídají řádkům, atributy jsou odděleny středníky. Napište funkci: analyzeDataset(filename = "student-mat.txt", filter, requestedColumn): s parametry: • filename: jméno souboru s daty • filter: string ve tvaru "sloupecOPERATORhodnota" udávající výraz – do statistik se pak započítají pouze záznamy, pro které je výraz pravdivý ◦ sloupec: udává jméno atributu z hlavičky, podle kterého se data filtrují ◦ OPERATOR: >, >=, <, <=, =, != (pro výčtové hodnoty dává smysl pouze = a !=) ◦ hodnota: referenční hodnot filtru Příklad: filter = "age>16" ▪ použitý: "GP";"F";17;"U";"GT3";"T";1;1;"at_home";"other"; ... ▪ ignorovaný: "GP";"F";15;"U";"LE3";"T";1;1;"at_home";"other"; ... !! Bude-li filtr nevalidní (neexistující sloupec, operátor atd), vypište varování a oznamte, že se pokračuje bez aplikace filtru. To samé, pokud bude použit výčtový typ sloupce společně některým z operátorů >, >=, <, <=. • requestedColumn: volba sloupce, pro který budeme ukládat statistiky Funkce načte soubor a bude ukládat počty záznamů pro jednotlivé hodnoty. K tomuto účelu použijte objekt (třídu) "obalující" (tzn. Mající jako instanční proměnnou) nějaký vhodný ATD jako seznam, slovník, ... Vytvořenou strukturu s uloženými počty pak funkce vrátí. K tomuto objektu dopište metodu generate(), která náhodně vygeneruje hodnotu atributu "requestedColumn" tak, že zohlední četnosti výskytů. Obě funkcionality pak použijte v jednoduché funkci, která zavolá AnalyzeDataset a následně vygeneruje a vypíše 40 hodnot. 2. část – práce s bitmapami (12 bodů) Připravte RGB obrázek s bílým pozadím 640 x 840 bodů 1) Napište funkci, která vykreslí černou kružnici (obrys) pro zadaný střed a poloměr Doporučuji implementovat tzv. Midpoint algoritmus – wiki S její pomocí nakreslete do obrázku 6 náhodných kružnic (pohlídejte si, aby se vešly) 2) Napište funkci, která v obrázku detekuje křížení/dotyky kružnic a zvolená místa podbarví červeně Nemusí jít přesně pouze o bod křížení, stačí přibližně, viz ukázka. (Použijte průhod celým obrázkem a sledujte počty černých bodů v matici 3x3) 3) Napište funkci, která obrázek rozmaže (Použijte průhod celým obrázkem a intenzity RGB složek počítejte z matice 3x3) Knihovna PIL: pro windows: https://pypi.python.org/pypi/Pillow/3.0.0 (najděte verzi 3.5, stáhnout, nainstalovat) pro linux: sudo pip3 install pillow (mělo by fungovat,kdyby ne, ptejte se)