Zápočty
Informace k zápočtu
Pro zápočet bude postačovat napsat test
a vytvořit vlastní úlohu, kterou mi někdy v tomto akademickém roce pošlete.
Kdo ještě nepsal test, tak si jej může po dohodě napsat v učebně T-124
téměř kdykoliv (průběžně i během prázdnin až do září).
(Příklad zadání testu)
Test pro zápočet slon.jpg
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
- 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ší.
- 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.
- Š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
- 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.
- 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
- 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.
- 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.
- 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ů.
- 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
- Život: Implementujte nejznámější buněčný automat,
Game of
Life.
- 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
- 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...
- Epitrochoida: Animujte vznik
epitrochoidy.
- Hypotrochoida: Animujte vznik
hypotrochoidy.
- Platónská tělesa: Vykreslete všech pět
Platónských těles
- Fraktály: vykreslete některý
fraktál.
- Dopplerův jev: napište program, který provede animaci
nerelativistického Dopplerova
jevu.
Milan Šiňor
2024-07-03