Cvičení z programování II pro pokročilé

Ve školním roce 2012/2013 vedeme s Jirkou Setničkou speciální cvičení z předmětu Programování II [NPRG031] pro pokročilé studenty, kteří již nasbírali nějaké zkušenosti z programování (třeba v olympiádách a korespondenčních seminářích) a chtěli by se naučit víc.

Viz též letáček :-)

Cvičení se koná každé pondělí od 12:20 v S8, kdo chcete chodit, přihlašte se v SISu, případně nám pošlete mail, pokud vám to SIS nedovolí.

Tematicky bude navazovat na Programování I pro pokročilé z minulého semestru, ale jeho absolvování určitě nebude nutné pro účast na tomto cvičení.

Zápočet získáte za vypracování zápočtového programu a domácích úkolů za alespoň 100 bodů.

Svým cvičícím pište na adresu mami@ucw.cz.

Zápočtový program

Domácí úkoly

Domácí úkoly jsou dvou druhů:

Na získání kýžené stovky bodů bohatě stačí praktické úlohy, pokud je řešíte včas.

Teoretické úkoly

DatumKódBodyZadání
18. 2. funrb7Co dělá funkce rb() z letáčku?
funflr10Co dělá funkce flr() z letáčku? Jakou má časovou složitost?
kbest10Zobecněme úlohu o rozkladu textu na slova. Každé slovo má ve slovníku určeno skóre, což je nějaké celé číslo. Skóre rozkladu získáme sečtením skóre použitých slov. Najděte K rozkladů v pořadí podle skóre.
mobil15Naprogramujte úlohu o optimalizaci klávesnice mobilu. Uvažujte anglickou abecedu s mezerou (na konci abecedy) a mobil s 10 tlačítky. Pokud píšeme dva znaky z téže klávesy po sobě, musíme čekat dobu ekvivalentní dvěma zmáčknutím klávesy. Spočítejte podle nějakého dost dlouhého anglického textu četnosti jednotlivých dvojic znaků a podle nich najděte optimální rozložení.
18. 3. trav10Domyslete detaily úlohy o 2D trávníku.
20. 5. brus15Domyslete detaily úlohy o bruslařích.

Co jsme dělali

datum co se cvičilo
18. 2. Dynamické programování poprvé: rozklad textu na slova, optimalizování mobilnice.
25. 2. DP podruhé: úloha o knihovně.
4. 3. Knihovny s uspořádáním i bez. Jak ukládají knížky loupežníci do batohu?
11. 3. Počet obdélníků, ve kterých leží daný bod. Sekání 1D trávníku.
18. 3. Sekání 2D trávníku. Body v rovině a jejich rozklad na dvě středově symetrické množiny.
25. 3. Hrátky s kvadrantovými kódy. Komprese a dekomprese. Transformování kvadrantových obrázků. Problém malíře kvadrantisty. Vězení v bludišti.
8. 4. Resty z (před)minula.
15. 4. Ještě trocha symetrie. Řezání trámů. Chemikálie v ledničce.
22. 4. Vlk a vajíčka. Datová struktura na střílení paprskometem po konvexním nepříteli.
29. 4. Cvičení se nekonalo (soustředění KSP)
6. 5. Znovu paprskomet. Věže v obdélnících. Opice na stromě.
13. 5. Pásové dopravníky. Roboti na přímce. Obvod obdélníků. Dělení roviny kružnicemi.
20. 5. Spolek bruslařů.
Stránku spravuje Martin Mareš