Hodnocení soutěžních úloh

Kategorie mládež

Soutěž dětí a mládeže v programování – 16. ročník krajské kolo 2001/2002


Dokonalá čísla – koeficient 1

Napište program, který nalezne všechna dokonalá čísla v intervalu 2 až 1000000. Dokonalé číslo je takové číslo, které je součtem všech svých dělitelů vyjma sama sebe. Tedy například 6 je dokonalé číslo, protože 1+2+3=6, podobně 1+2+4+7+14 = 28.

Řešení

6, 28, 496, 8128

Hodnocení

funkčnost4 bodyběží a vypisuje správná čísla
2 bodyzobrazuje průběh výpočtu
efektivita2 bodydělitelnost čísla N netestuje až do N ale jen do odmocniny z N
1 bodVšechna dokonalá čísla mají tvar (2n-1)(2n-1) a to pro taková n, pro něž je (2n-1) prvočíslo. Toto je však obtížné dokázat a tak předpokládáme, že soutěžící budou problém řešit postupným hledáním dělitelů. Pokud někdo využije výše zmíněné vztahy, má nárok na bod navíc a všeobecnou úctu. Páté dokonalé číslo je 33550336
dokumentace0,5 bodukomentáře nebo popis činnosti
0,5 bodupřehledný zdrojový text

Součet CSV souboru – koeficient 2

CSV soubor je soubor obsahující tabulku. Co řádek tabulky, to řádek souboru. Jednotlivé položky na řádku jsou odděleny čárkami. Položky obsahující čárku musí být uzavřeny v uvozovkách, ostatní položky v uvozovkách být mohou, ale nemusí. Samotné položky uvozovky obsahovat nemohou. Jako oddělovač desetinných míst se používá tečka. Prázdné položky chápejte jako číselné s hodnotou 0. Pokud se ve sloupci alespoň jednou objeví nečíselná hodnota, celý sloupec je nečíselný.

Příklad souboru:

"Lopaty","5",125.50
"Krumpáče",10,"4340"
"Kladiva, násady",30,900

Vaším úkolem je navrhnout program, který sečte číselné sloupečky zadaného souboru. Tedy pro soubor z tohoto zadání program vypíše:

Sloupec 1: není číslo
Sloupec 2: 45
Sloupec 3: 5365.5

Předpokládejte maximální délku řádku 1024 znaků a nejvýše 100 položek na řádku.

Hodnocení

funkčnost1 bodzadání souboru, kontrola existence souboru
2 bodyvýpočet a zobrazení výsledků, soubory bez uvozovek
1 bodvýpočet a zobrazení výsledků, soubory s uvozovkami
1 bodzpracuje i záporná a desetinná čísla
1 bodrozpozná chyby a singulární případy v datech (neuzavřené uvozovky, apod. – soubory problem1.csv, prazdny.csv, sloupec.csv, problem2.csv)
efektivita1 bodpouze jeden průchod čtení souboru
2 bodyjednoprůchodová analýza řádku souboru
dokumentace0,5 bodukomentáře nebo popis činnosti
0,25 bodupřehledný zdrojový text
0,25 boduvýstižné názvy proměnných

Piškvorky – koeficient 1

Napište program, který vytvoří hrací plochu 20×20 pro hru piškvorky a umožní je hrát dvěma hráčům. Počítač bude kontrolovat průběh hry a sledovat zda nějaký hráč nevyhrál.

Hodnocení

funkčnost1 bodvykreslení hrací plochy
2 bodymožnost přikládat piškvorky, střídání hráčů
0,5 bodutest vítězství – vodorovně
0,5 bodutest vítězství – svisle
1 bodtest vítězství – na hlavní diagonále
1 bodtest vítězství – na vedlejší diagonále
efektivita3 bodypři testování vítězství se kontroluje jen okolí právě položené piškvorky, ne celá hrací plocha
dokumentace0,5 bodukomentáře nebo popis činnosti
0,25 bodupřehledný zdrojový text
0,25 boduvýstižné názvy proměnných

Vykreslení grafu – koeficient 2

Napište program, který vykreslí graf funkce k1*tan(k2*x). Konstanty k1, k2 a interval hodnot proměnné x bude zadám z klávesnice. Graf musí optimálně vyplnit plochu.

Hodnocení

funkčnost1 bodzadání hodnot a kontrola jejich správnosti
1 bodsprávné vykreslení os
1 bodvykreslení grafu funkce
3 bodysprávné vyplnění plochy grafu
efektivita1 bodtabelační krok pro výpočet hodnot funkce se volí tak, aby se nepočítaly hodnoty navíc
1 bodpři hledání minima a maxima se vypočtené hodnoty uloží do pole, z kterého se následně vykreslí graf
1 bodpomocné konstanty se vypočtou před cyklem počítajícím hodnoty funkce
dokumentace0,5 bodukomentáře nebo popis činnosti
0,25 bodupřehledný zdrojový text
0,25 boduvýstižné názvy proměnných

Karetní hra „Bitva“ – koeficient 2

Napište program na motivy karetní hry "Bitva". Program by měl simulovat následující funkce:

zadání údajů

Na začátku hry se zadají následující údaje: počet karet (32 nebo 64), počet hráčů (2–4), počet karet na začátku hry (5–10).

míchání karet

Míchání karet probíhá po dobu stisku klávesy mezerník. Míchání probíhá tak, že se balíček karet rozdělí na dvě části dle náhodného čísla z intervalu <1;počet karet>, a tento balíček se přeloží. Vše se opakuje dokud hráč neuvolní klávesu mezerník.

rozdání karet

Každý hráč dostane daný počet karet (balíčky by měly být vizuálně zobrazené na monitoru).

vykládání

Vykládání se děje buď v režimu krokování na klávesu Enter nebo automaticky po 2 sekundách. Vizuálně se zobrazí karty všech hráčů a určí se vítěz, v případě rovnosti nejvyšších karet v daném kole se vyloží další kolo (vykládají jen ti hráči, kteří předtím vyložili karty se stejnou hodnotou). Hráč, který již nemá kartu končí.

konec

Konec hry nastane v okamžiku, kdy zbude pouze jediný hráč.

Popis hry. Na začátku hry má každý hráč daný počet karet. Jedno kolo hry probíhá tak, že všichni hráči vezmou horní kartu ze svého balíčku a vyloží ji. Karty se musí brát pouze shora a jejich pořadí je dáno tím, jak karty hráč dostal. Z vyložených karet se vybere vítěz podle nejvyšší hodnoty vyložené karty (pořadí karet je 7, 8, 9, 10, spodek, svršek, král, eso). V případě rovnosti dvou karet vykládají odpovídající hráči znovu po jedné kartě. Vítězí ten, kdo má nejvyšší kartu. Vítěz získá všechny vyložené karty a ty se přidají dospod jeho balíčku karet v libovolném pořadí. Pokud hráč již nemá kartu na vykládání, končí.

Hodnocení

funkčnost1 bodzadání hodnot a kontrola jejich správnosti (dodržení intervalu, číselné hodnoty)
1 bodfunkční míchání karet
1 bodmíchání se ukončí po uvolnění mezerníku
1 bodrozdání karet
1 bodautomatický a ruční režim vykládání
1 bodsprávné určení vítěze kola a předání karet
efektivita3 bodygrafické ztvárnění programu
dokumentace0,5 bodukomentáře nebo popis činnosti
0,25 bodupřehledný zdrojový text
0,25 boduvýstižné názvy proměnných