Soutěž v programování – 27. ročník
Krajské kolo 2012/2013
Mladý Ramses se rozhodl nechat si postavit pyramidu. Jelikož se nemohl rozhodnout, jak by měla být vysoká, rozhodl se nejdříve si vytvořit plochou maketu, aby si udělal lepší představu.
Pomozte Ramsesovi a napište program, který při zadání výšky pyramidy v rozmezí 1 až 500 spočte, kolik je potřeba kvádru na její stavbu, a pyramidu vykreslí. Program by měl při vykreslení optimalně využít plochu okna.
Kvádry mají rozměry 2:1 a řady se o půl kvadrů překrývají. Například pro plošnou pyramidu výšky 3 je třeba šest kvádrů.
funkčnost | 1 bod | program kontroluje vstup hodnot a umožní zadat jen hodnoty 1-500 |
1 bod | program vypíše spravný výsledek pro výšku 15 = 120 | |
1 bod | program vypíše spravný výsledek pro výšku 351 = 61776 | |
1 bod | program vypíše spravný výsledek pro výšku 500 = 125520 | |
1 bod | výpočet se provádí pomocí vzorce pro součet aritmetické posloupnosti | |
1 bod | program zobrazí pyramidu správně - bloky velikosti 2:1, správně se překrývají | |
1 bod | pyramida optimálně vyplňuje okno | |
1 bod | pyramida se dynamicky mění na základě změny velikosti zobrazovaného okna | |
1 bod | kvádry jsou odděleny spárami | |
dokumentace | 1 bod | dokumentace, komentáře, přehlednost, výstižné názvy proměnných, … |
Odstraňování bugů z programu může být velmi vyčerpávající práce. Velká vědecká kapacita doktor Z. Ounek proto hledá způsob, jak by bylo možné odstraňovat bugy automaticky. Protože je ale příliš zaměstnán přemítáním o tom, jak bude slavný až se mu to podaří, zůstala implementace zkušební verze Dr. Z. Ounkova odstraňovače na vás.
Napište program, který dostane dva textové řetězce BUG a PROGRAM. Délka každého z nich je nejvýš 200 000 znaků a oba obsahují pouze číslice a velká a malá písmena anglické abecedy. Vaším úkolem je odstranit všechny výskyty řetězce BUG z PROGRAMu. Pozor na to, že odstraněním jednoho BUGu může vzniknout další.
Vstup načtěte ze souboru bugy.txt
v aktuálním adresáři.
Soubor bugy.txt
obsahuje dva řádky. První obsahuje
řetězec BUG a druhý řetězec PROGRAM.
Délka každého z nich je nanejvýš 200 000 znaků a oba
obsahují pouze číslice a velká a malá písmena anglické abecedy. Oba řádky
jsou ukončeny dvojicí znaků CR
a LF
.
Výstup vypište do souboru vystup.txt
v aktuálním adresáři.
Na jediný řádek souboru vystup.txt
vypište řetězec,
který zůstane z řetězce PROGRAM po odstranění všech
BUGů. Řádek ukončete dvojicí znaků
CR
a LF
. Pozor na to, že
odstraněním jednoho BUGu může vzniknout další.
V adresáři bugy
se nachází ukázková data včetně
příkladu ze zadání. Pro získání plného počtu bodů by měl váš program
vyřešit každá z nich během vteřiny.
Program soutěžících se vyhodnotí na devíti vstupních adresářích
bugy/test-1
až bugy/test-9
,
za každý dostane soutěžící 0 bodů nebo 1 bod.
Při vyhodnocování adresáře se z něj zkopíruje soubor
vstup.txt
do adresáře s programem soutěžícího
a program se spustí. Program musí skončit do jedné vteřiny. Pokud
program v limitu vytvořil soubor vystup.txt
,
který se přesně shoduje se souborem z vyhodnocovaného adresáře,
dostane 1 bod. (Porovnání dvou souborů podle obsahu lze provést ve
Windows pomocí příkazu fc
, v Linuxu pomocí
příkazu diff
.)
funkčnost | 1 bod | zpracování bugy/test-1
|
1 bod | zpracování bugy/test-2
| |
1 bod | zpracování bugy/test-3
| |
1 bod | zpracování bugy/test-4
| |
1 bod | zpracování bugy/test-5
| |
1 bod | zpracování bugy/test-6
| |
1 bod | zpracování bugy/test-7
| |
1 bod | zpracování bugy/test-8
| |
1 bod | zpracování bugy/test-9
| |
dokumentace | 1 bod | Dokumentace, komentáře, přehlednost a výstižné názvy proměnných. |
Náš oblíbený strýček Pompo by od vás potřeboval pomoci. Každou chvíli dostane mailem soubor, ve kterém je vidět, jak se mu měnil stav na bankovních účtech. Bohužel se v něm špatně orientuje a tak by mu pomohlo, když by se mohl podívat, zda mu peníze přibývají či ubývají. Napiště pro strýčka Pompa program, který převede přijatý textový soubor na spojnicový graf.
Uvažujte, že v jednom souboru mohou být informace o jednom až pěti bankovních účtech. Všechny pak vykreslete do jednoho grafu a pro jejich rozlišení použijte různé barvy. Nezapomeňte na legendu (popis grafu).
Na vstupu je textový soubor, který obsahuje v prvním řádku
hlavičku, v dalších řádcích pak jednotlivé hodnoty. Hodnoty na řádku
jsou mezi sebou odděleny znakem středník. První sloupec obsahuje vždy
datum, další sloupce pak jednotlivé zůstatky na účtech k danému
datu. Zůstatky jsou vždy celočíselné. Hlavička obsahuje texty bez
diakritiky a její první položka vždy obsahuje řetězec
Datum
. Umožněte uživateli, aby si vstupní soubor mohl sám
vybrat po sputění programu.
Osa X bude zachycovat datum.
Osa Y bude zachycovat stav na účtu (uvažujte, že stav na účtu může být dočasně i záporný).
Vykreslený graf by měl optimálně vyplnit celou plochu obrazovky.
Vykreslený graf vždy obsahuje legendu.
Vstupní soubor denni_vypis.csv | Vykreslený graf | |
Datum;Ucet v Kc;Ucet v EUR; 1.2.2013;1000;100; 2.2.2013;1000;105; 3.2.2013;2000;105; 4.2.2013;2000;105; 5.2.2013;42000;5000; 6.2.2013;32000;500; 7.2.2013;25000;600; 8.2.2013;25000;-2000; 9.2.2013;25000;-2000; 10.2.2013;20195;-2000; 11.2.2013;20195;-2500; 12.2.2013;20542;300; 13.2.2013;27329;700; 14.2.2013;30037;1500; |
Vstupní soubor mesicni_vypis.csv | Vykreslený graf | |
Datum;Ucet v CSOB;Ucet v KB;Ucet v CS; 31.1.2013;159123;1000123;312345; 28.2.2013;234576;2001239;300986; 31.3.2013;20432;3002561;253612; |
funkčnost | 1 bod | správně zobrazený graf pro Test1.csv |
1 bod | správně zobrazený graf pro Test2.csv | |
1 bod | správně zobrazený graf pro Test3.csv | |
1 bod | správně zobrazený graf pro Test4.csv | |
1 bod | oznámení chyby pro
Test5.csv | |
1 bod | oznámení chyby pro
Test6.csv | |
2 body | graf využívá celou plochu obrazovky | |
1 bod | správně zobrazená legenda | |
dokumentace | 1 bod | dokumentace, komentáře, přehlednost, výstižné názvy proměnných, … |