Cvičení z Programování I pro pokročilé

Ve školním roce 2013/2014 vedeme s Jirkou Setničkou speciální cvičení z předmětu Programování I [NPRG030] 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ždou středu od 15:40 v S8. Kdo chcete chodit, přihlašte se, prosíme, v SISu, případně nám pošlete mail, pokud vám to SIS nedovolí.

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í
2. 10. funf5Co dělá funkce f() z letáčku?
funb5Co dělá funkce bc() z letáčku?
9. 10. xorn8Jak spočítat 1 XOR 2 XOR 3 XOR … XOR N v čase rychlejším než &Theta(N);?
2mis15Princezně se rozsypaly perly z náhrdelníku (očíslované 1 až N) a dvě z nich se ztratily. Jak v lineárním čase a konstantní paměti zjistit, které?
comb15Spočítejte "N nad K modulo M". Mezikroky: (1) M je prvočíslo, (2) M je mocnina prvočísla, (3) M je libovolné. Uměli byste pomocí této úlohy spočítat "N nad K" přesně a rychle? Bereme i částečná řešení.
27. 11. kones10Vygenerujte všechny posloupnosti nul a jedniček délky N, ve kterých je právě K jedniček. Vypište je v takovém pořadí, aby se dvě sousední posloupnosti lišily na právě dvou pozicích.
8. 1. jerab20Vymyslete datovou strukturu pro zjišťování pozic háků stromového jeřábu. Měla by podporovat operace "otoč úsekem X o Y stupňů okolo kloubu, na němž je připojen" a "zjisti pozici háku H".

Co jsme dělali

datum co se cvičilo
2. 10. Pár příkladů na úvod: Házení vajíček z mrakodrapu. Robin Hood a euklidovská lukostřelba.
9. 10. Střílení lukem po billboardech. Chybějící číslo (aneb princeznin náhrdelník). Číslo s lichým počtem výskytů. Počítání kombinačních čísel.
16. 10. Úlohy o posloupnostech: dvojice s daným součtem, úsek s daným součtem. Také jejich verze pro monotónní nebo nezápornou posloupnost. Jak to dopadne pro matice a podmatice? A jsou-li čtvercové?
23. 10. Děkanský sportovní den. Necvičíme, protože cvičíme.
30. 10. Pokračování posloupností z minula. Nejdelší vyvážený úsek. Nejdelší rostoucí podposloupnost.
6. 11. Hledání v setříděné matici a umění dolních odhadů.
13. 11. Volby na mnoho způsobů: bity, randomizace a konečně i lineární řešení. RGB třídění.
20. 11. Generování všech objektů s danou vlastností: posloupnosti nul a jedniček, právě k jedniček, právě jedna změna; permutace, dobrá uzávorkování.
27. 11. Generování podruhé.
4. 12. O stromech, strážnících, mafiánech a asfaltérech (neváženě, váženě, vypočítavě).
11. 12. Asfaltéři podruhé, tentokrát v obecných grafech. Agenti a jejich šéf. Vyvážená a skrovyvážená orientace grafu.
18. 12. Střílení po konvexním cíli. Barvení a orientování rovinných grafů.
9. 1. Jeřábníkovy starosti. Pokrývání bažiny hatěmi. Medvěd a včely.
Stránku spravuje Martin Mareš