Zápočty

Náměty na zápočtové úlohy

(Samozřejmě můžete sami navrhnout a realizovat úlohu podobného rozsahu.
Pro inspiraci např. na File Exchange je několik desítek tisíc příkladů.)

Algoritmizace

  1. Hanojské věže: na začátku jsou všechny kruhy navlečeny na prvním kůlu, jak je vidět na obrázku. Cílem úlohy je přemístit všechny kruhy na prostřední kůl, přičemž je povoleno pouze přemístit kruh z jednoho kůlu na druhý a není možné, aby byl na jednom kůlu umístěn větší kruh na menším kruhu. Vaším úkolem je sestavit program, který tuto úlohu vyřeší.

  2. Sudoku: Napište program, který bude řešit Sudoku zadané jako matici 9x9 s nulami na místě neznámých číslic.

  3. Osm dam: Napište program, který bude schopen rozmístit 8 dam na šachovnici 8x8 tak, aby se navzájem neohrožovaly a případně nalezne všechny varianty.

  4. Šestnáctka: Na šachovnici 4x4 je místěno 15 kamenů s čísly. Cílem této úlohy je postupným posouváním kamenů na volné místo (vždy jen kámen na sousedním poli, nikdy ne kámen přes roh) je poskládat do cílové polohy. Vaším úkolem je napsat program, který načte aktuální stav šachovnice a vytiskne posloupnost tahů do cílové polohy.

Geometrie

  1. Průnik dvou trojúhelníků ve 2D: Napište funkci, která vypočítá průnik dvou trojúhelníků. Vstupem funkce jsou x-ové a y-ové vektory souřadnic vrcholů obou trojúhelníků, výstupem pak x-ové a y-ové vektory souřadnic vrcholů výsledného polygonu. Napište také program, který využije tuto funkci ke grafickému znázornění všech možných situací - tj. situace, kdy výsledkem je šestiúhelník, pětiúhelník, atd.

  2. Průnik přímky a úsečky ve 2D: Mějme úsečku zadanou krajními body a přímku zadanou bodem a vektorem. Napište funkci, která vrátí strukturu obsahující následující informace: (a) zda jsou rovnoběžné, (b) zda je průsečík uvnitř úsečky, (c) zda je průsečík v jednom z krajních bodů úsečky, (d) zda je průsečík v bodě, kterým je zadána přímka, (e) zda je průsečík ve směru směrového vektoru přímky a (f) souřadnice průsečíku. Funkci důkladně otestujte, musí fungovat pro všechny možné případy.

Numerická matematika

  1. Metoda Regula Falsi: Implementujte hledání kořenů reálné funkce metodou Regula Falsi a otestujte ji na vhodně zvolené funkci. Váš program by také měl vykreslovat jednotlivé kroky algoritmu.

  2. Newton - Rhapsonova metoda: Implementujte hledání kořenů reálné funkce Newton - Rhapsonovou metodou a otestujte ji. Váš program by také měl vykreslovat jednotlivé kroky algoritmu.

  3. Lagrangeův interpolační polynom: Napište funkci, která pro N bodů zadaných jako vektory x a y vykreslí Lagrangeovu interpolaci těchto bodů.

  4. Generátor pseudonáhodných čísel: Implementujte algoritmus pro generování pseudonáhodných čísel. Generujte pomocí tohoto algoritmu čísla z intervalu (0,1) a vykreslete histogram.

Simulace

  1. Život: Implementujte nejznámější buněčný automat, Game of Life.

  2. Narozeninový paradox: Ověřte experimentálně narozeninový paradox pro 30 lidí tak, že vygenerujete náhodně velké množství (> 100000) konfigurací a spočítáte výsledný poměr příznivých ku všem. Nezapomeňte v programu inicializovat generátor pseudonáhodných čísel.

Grafika & animace

  1. Kulečníková koule: Animujte pohyb kulečníkové koule, která se odráží od stěn kulečníkového stolu. Jako kulečníkový stůl uvažujte nejen obdélník, ale i obecný polygon, elypsu...

  2. Epitrochoida: Animujte vznik epitrochoidy.

  3. Hypotrochoida: Animujte vznik hypotrochoidy.

  4. Platónská tělesa: Vykreslete všech pět Platónských těles

  5. Fraktály: vykreslete některý fraktál.

  6. Dopplerův jev: napište program, který provede animaci nerelativistického Dopplerova jevu.

Milan Šiňor
2023-04-12
Valid CSS! Valid HTML 4.0!