Soutěž v programování – 30. ročník
Krajské kolo 2015/2016
Koeficient 1
Prokop dostal k Vánocům arduino se spoustou součástek a návodů na zapojení. Ihned se chtěl pustit do práce, ale všiml si, že zatímco v návodech jsou hodnoty rezistorů uváděny číselně. On má jen jakési válečky s barevnými proužky. Neváhal a na wikipedii si nalezl pravidla pro barevné značení a rozhodl, že si na to napíše program. Pomůžete mu?
Vaším úkolem je napsat program, který ze zadané číselné hodnoty rezistoru, která může obsahovat i jednotku k – kilo nebo M – mega (např. 7k1 = 7100), nakreslí rezistor s jeho barevným značením (viz obrázek) – odchylku ignorujte.
Zdroj: http://www.amapro.cz
Zadávání hodnot rezistorů se řídí těmito pravidly:
kde
Například:
pro 6 => 6 ohmů (d=6)
pro 68 => 68 ohmů (d=6, n=8)
pro 680 => 680 ohmů (d=6, n=8)
pro 6K => 6 kiloohmů (d=6)
pro 6K8 => 6,8 kiloohmů (d=6, n=8)
...
Rozšiřte program tak, aby uměl vykreslit seriové či paralelní zapojení podle zadaného výrazu včetně barevného zobrazení.
Pravidla zadání:
Příklady:
Body | Za co |
---|---|
0,5 | Program lze spustit |
0,5 | Program zobrazí schématickou značku rezistoru |
1 | Program správně zobrazí barevné značení číselných hodnot (první dva barevné pruhy
- nezávisle na násobiteli) |
1 | Program správně zobrazí barevné značení násobitele (třetí barevný pruh) |
1 | Program správně zobrazí jednoduché seriové zapojení (viz.Příklad 1) |
2 | Program správně zobrazí jednoduché paralélní zapojení (viz.Příklad 2) |
1 | Program správně zobrazí jednoduché kombinované zapojení (viz.Příklad 3) |
2 | Program optimalizuje složitější kombinované značení tak, aby všechny rezistory byly zobrazené -např. zmenší velikost rezistorů, popř. zobrazí v další vodorovné řadě. |
1 | Dokumentace |
Koeficient 1
Strýček Skrblík si chce naplánovat výdaje za tisk. Pomůže mu, pokud zjistí, které slovo z textu obsahuje nejvíce různých znaků.
Napište program, který v zadaném textu nalezne slovo, které obsahuje nejvíce různých znaků a ukáže ho. Je možné, že takových slov je v textu více a nejsou stejná. V takovém případě zobrazte všechna taková slova v pořadí, v jakém jsou ve vstupním souboru.
Vstup pro programy bez grafiky (konzole) je textový soubor, jehož jméno je zadáno
jako první parametr při spuštění.
Na obrazovce (stdout) zobrazte nalezené slovo. Pokud je takových slov více, zobrazte
každé takové slovo na samostatném řádku.
Vstup pro programy s grafickým rozhraním (GUI) je textový soubor, jehož
jméno uživatel zvolí výběrem ze seznamu zvoleného adresáře.
Nalezené slovo nebo slova se zobrazí samostatně v textovém okně. Pokud je takových
slov více, zobrazte každé takové slovo na samostatném řádku.
Pokud váš program umožňuje obě varianty vstupu, je třeba to zveřejnit v dokumentaci
i v grafickém rozhraní (GUI). Výstup bude stejného typu, jako je aktuální vstup.
V obou případech zobrazte postup prohledávání (animaci).
Slova jsou tvořena znaky s kódy 33 až 255. Znaky s kódy 1 až 32 slova oddělují. Kódování
souborů je windows-1250, každý bajt je právě jeden znak.
Velikost písmen, háčky a čárky se rozlišují.
Například následující znaky jsou různé: E É Ě e é ě
Interpunkce je součástí slova.
Například na následujícím řádku je jen jedno slovo, které má 12 různých znaků.
Slovo;slovodva"slovoIII/slovo4
V adresáři s testovacími daty naleznete tři soubory:
název souboru | počet různých znaků | počet nejdelších slov | hledané/á slovo/a | poznámka |
---|---|---|---|---|
Slovo1.txt | 11 | 1 | Předsednictvo | |
Slovo2.txt | 14 | 1 | prostřednictvím | |
Slovo3.txt | 8 | 4 | zvláštní "Listina") soudcům, Republice |
Soubor má 4 různá slova s nejvyšším počtem znaků. Každé slovo je na samostatném řádku. |
Body | Za co |
---|---|
1 | Program lze spustit a lze vybrat soubor (krátký text) |
1 | Program správně vyhodnotí porota1.txt 1 hledané slovo: přezkoumávání |
2 | Program správně vyhodnotí porota2.txt 1 hledané slovo: přezkoumávání |
3 | Program správně vyhodnotí porota3.txt 5 hledaných slov: bezprostředně bezpečnostních přezkoumávání shromáždění, demokratických |
1 | Program zobrazuje animaci vyhledávání |
1 | Program umožňuje obě metody vstupu a je to uvedeno v dokumentaci i GUI |
1 | Dokumentace |
Koeficient 1
K maximálně 8místnému přirozenému číslu X nalezněte nejmenší číslo Y, které je větší než číslo X a je současně součinem právě tří různých prvočísel.
Například pro číslo 30 to je číslo 42 (= 2×3×7).
V adresáři hratky-s-cisly
máte k dispozici tabulku potřebných prvočísel. Hledání
jedné trojice prvočísel nesmí překročit dobu deseti sekund.
Body se přidělí pouze pokud program výsledek oznámí do deseti sekund.
Body | Za co |
---|---|
1 | 99999999 100000006 = 2 * 491 * 101833 |
1 | 42142 42143 = 17 * 37 * 67 |
1 | 83788396 83788397 = 7 * 11 * 1088161 |
1 | 99938130 99938131 = 379 * 457 * 577 |
1 | 99938127 99938131 = 379 * 457 * 577 |
1 | 99938126 99938127 = 3 * 233 * 142973 |
1 | 99938124 99938127 = 3 * 233 * 142973 |
1 | 99938123 99938127 = 3 * 233 * 142973 |
1 | 99938121 99938127 = 3 * 233 * 142973 |
1 | dokumentace, komentáře, přehlednost, výstižné názvy proměnných,funkčnost: třetí prvočíslo se nehledá hrubou silou, ale přibližně určí například jako X/(a*b) a v několika krocích dohledá - 0.5 bodu |
Koeficient 3
Zisky strýčka Skrblíka stouply do takových výšek, že Skrblík ani nestačí sčítat a zapisovat vydělané peníze do svého notesu. Pomozte mu vytvořením programu, který bude rozpoznávat ručně psané číslice, takže se zisky budou sčítat automaticky.
Vaším cílem je poznat, jaká číslice 0 až 9 je na daném obrázku ve stupni šedi. Velikost obrázku je vždy 28×28.
Abyste měli z čeho vycházet, pro každou číslici dostanete 100 ukázkových psaní této číslice.
Na vstupu dostanete dva soubory, vzory.bmp
a cislice.bmp
. Soubor cislice.bmp
obsahuje obrázek
ve stupních šedi o velikosti 28×28, který obsahuje jednu neznámou
ručně psanou číslici 0 až 9. Soubor vzory.bmp
je také ve
stupních šedi a obsahuje 100 variant každé ručně psané číslice 0 až
9, a to následujícím způsobem: v souboru je nejprve vedle sebe uloženo
100 variant číslice 0, pod nimi 100 variant číslice 1, a tak dále, až
na spodku obrázku je uloženo 100 variant číslice 9. Velikost obrázku
vzory.bmp
je tedy 2800×280.
Na výstup vypište, jaká ručně psaná číslice 0 až 9 se nachází na vstupním
obrázku cislice.bmp
Pokud nemáte k dispozici knihovnu načítající obrázky ve formátu BMP, můžete se spolehnout na to, že obrázky BMP v této úloze jsou vždy uloženy následovně. Prvních 1146 bajtů je hlavička a po ní následují jednotlivé pixely obrázku, každý pixel je reprezentován jako jeden bajt, přičemž hodnota 0 reprezentuje zcela černou a hodnota 255 zcela bílou. Pixely jsou uloženy po řádcích od spodního k hornímu, takže první pixel za hlavičkou je levý spodní bod obrázku a poslední pixel v souboru je pravý horní bod obrázku.
Pro následující vstup:
vzory.bmp |
cislice.bmp |
---|---|
by měl váš program vypsat 3
.
Program soutěžících se vyhodnotí na desíti vstupních souborech
cislice0.bmp
až cislice9.bmp
, za každý dostane
soutěžící 0 bodů nebo 0.9 bodu.
Při vyhodnocování souboru cisliceN.bmp
zkopírujeme tento
soubor do adresáře s programem soutěžícího a přejmenujeme ho na
cislice.bmp
. Do tohoto adresáře také zkopírujeme soubor
vzory.bmp
a program soutěžícího spustíme (pokud to program
vyžaduje, vybereme soubory vzory.bmp
a cislice.bmp
). Program musí skončit do deseti vteřin.
Pokud program v limitu vypsal, že neznámá číslice je N
,
dostane 0.9 bodu, jinak dostane 0 bodů.
Body | Za co |
---|---|
0.9 | Program vrátí hodnotu 0 pro soubor cislice0.bmp |
0.9 | Program vrátí hodnotu 1 pro soubor cislice1.bmp |
0.9 | Program vrátí hodnotu 2 pro soubor cislice2.bmp |
0.9 | Program vrátí hodnotu 3 pro soubor cislice3.bmp |
0.9 | Program vrátí hodnotu 4 pro soubor cislice4.bmp |
0.9 | Program vrátí hodnotu 5 pro soubor cislice5.bmp |
0.9 | Program vrátí hodnotu 6 pro soubor cislice6.bmp |
0.9 | Program vrátí hodnotu 7 pro soubor cislice7.bmp |
0.9 | Program vrátí hodnotu 8 pro soubor cislice8.bmp |
0.9 | Program vrátí hodnotu 9 pro soubor cislice9.bmp |
1 | dokumentace, komentáře, přehlednost, výstižné názvy proměnných, … |