Co je to FIKS?

Fiťácký informatický korespondenční seminář (FIKS) je každoroční programovací soutěž pořádaná Fakultou informačních technologií (FIT) Českého vysokého učení technického v Praze (ČVUT). Tradičně probíhá přes školní rok od září do dubna a sestává se z několika kol, kde v každém kole je řada úloh.

Proč bych se měl/a účastnit této soutěže?

Jedná se o dobré rozšíření znalostí, které máš ze střední školy. Tyto nové znalosti ti velmi pomoůžou, pokud se rozhodneš pro studium v oboru IT. Jednou z výhod spojených s úspěšným absolvováním soutěže FIKS je možnost odpuštění přijímací zkoušky na FIT ČVUT. Také jsou každý rok pořádána dvě soustředění (podzimní a jarní), kde je možné se setkat s organizátory a ostatními řešiteli. Na soustředění tradičně zveme 30 nejlepších řešitelů.

Bylo zmíněno odpuštění přijímací zkoušky. Jaké to má háčky? Mám něco psát do přihlášky?

Odpuštění přijímací zkoušky platí pro účastníky, kteří dosáhli statutu úspěšného řešitele. Zároveň se musí jednat o první nástup na vysokou školu. Přesné znění možností přijmutí na FIT ČVUT nalezneš v podmínkách pro přijetí ke studiu pro daný akademický rok.

V přihlášce na vysokou je dobré zmínit (v kolonce na olympiády), že jsi úspěšný řešitel FIKSu za ročník např. 2022/2023. Případně zmiň, že očekáváš, že se staneš úspěšným řešitelem tento rok. (Jelikož se přihlášky podávají před koncem soutěže.) Přihlášky jsou zpracovávány ručně, a pokud jsi indikoval FIKS, tak budeš hledán v seznamu, který předáváme studijnímu oddělení – proto je nutné se na stránku FIKS zaregistrovat s pravdivými informacemi, a stejným e-mailem, jako používáš na přihlášce. Pokud je něco kolem přihlášek nejasné, tak nás kontaktuj.

Kdo je úspěšný řešitel?

Úspěšný řešitel je student střední nebo základní školy, který získá alespoň polovinu z možných bodů celého ročníku, a zároveň získá alespoň 10 bodů dohromady z úloh typu ’Rozmysli, popiš naprogramuj!’ a ‘Zamysli se!’. Výjimečně se lze stát úspěšným řešitelem i prokázáním nadprůměrných schopností na soustředění.

Jak je to se soustředěním a COVID-19?

Doufáme, že na jaře (koncem dubna) uspořádáme presenční soustředění v klasickém stylu, pokud to bude možné. O detailech soustředění budeme informovat aktivní účastníky emailem.

Jaký je rozdíl mezi podzimním a jarním soustředěním?

Podzimní soustředění je většinou pouze pár dní (přes víkend) a koná se v Praze. V rámci tohoto soustředění je možné se těšit na prohlídku fakulty FIT ČVUT, různé hry, přednášky a workshopy, a samozřejmě deskovky. Oproti tomu jarní soustředění se koná mimo Prahu a trvá celý týden. K aktivitám, které jsou v rámci tohoto soustředění, se ještě přidává kupříkladu šifrovačka, programovací soutěž, výlety a různé hry v přírodě.

Jaké typy úloh se ve FIKSu vyskytují?

Primárně se vyskytují tři druhy úloh: ‘Odpověz Sfinze!’, ‘Rozmysli, popiš naprogramuj!’ a ‘Zamysli se!’.

Více informací o typech úloh, a co očkávat, je možné nalézt na stránce Jak řešit FIKS?.

Mohu převzít části kódu z internetu?

Ano, je ale potřeba je odcitovat. V případě, že více účastníků přejme stejný zdroj bez citace, tak bychom detekovali plagiátorství - citace tomuto předejde. U kódu by mělo být vyznačeno jaká konkrétní část kódu je převzatá a url adresa odkud.

Mohu na úlohách spolupracovat s dalšími účastníky?

Je potřeba dát pozor, aby vaše spolupráce nevedla k podvádění. Jde o soutěž, takže by měl každý soutěžit za sebe. O řešení úloh se spolu můžete bavit po jejich uzavření. Konkrétně kopírování kódu nebo přepis kódu od dalšího účastníka je zakázané. Veškerý kód i text, který do soutěže posíláte, musí být napsaný vámi, případně musí být citovaný, pokud je část převzata z internetu. Pokud sdílíte testovací vstupy a výstupy tak dejte pozor, abyste za kolegu úlohu nechtěně nevyřešili - tj. měla by tu být časová prodleva, aby výstup už nešlo včas odvezdat (cca 10m).

Právě jsem se dozvěděl o FIKSu, ale bohužel už jsou některé úlohy ukončené. Má cenu dělat úlohy v tomto ročníku?

Určitě ano. Pokud nevyhraješ, tak alespoň načerpáš zkušenosti do dalšího ročníku. Navíc je toto dobrý způsob bezbolestně zjistit, co vlastně FIKS je a jak funguje, abys do příštího ročníku mohl vstoupit jako ostřílený vlk.

Pokud už jsi v maturitním ročníku, a je už hodně kol uzavřených, tak je stále možnost se stát úspěšným řešitelem na soustředění – ovšem, není to garantované.

V jakém programovacím jazyku můžu FIKS dělat?

Primární jazyky, které přijímáme, jsou Python, C, C++, Java, C#, Rust, … Ve zkratce, přijmeme téměř cokoliv, pokud jazyk není příliš exotický. Každopádně, pokud je zvolen nějaký málo používaný jazyk, prosíme o detailnější komentáře zdrojového kódu. Naše odevzdávátko nemusí dovolit nahrát koncovku souboru zvoleného jazyka, v tom případě prosíme o přidání koncovky txt a na první řádek zdrojového souboru napsat, o jaký jazyk se jedná.

Jsem student, ale jsem v netypické situaci (např. přebývám většinu času v zahraničí). Vztahují se na mě nějaká omezení?

Zahraniční pobyt nemá s vlastním řešením úloh a ostatními pravidly žádný problém.

V případě nejasností kolem tvoji konkrétní situace je možné nás kontaktovat e-mailem nebo přímo na discordu, rádi ti vyjasníme co a jak.

Přečetl jsem si úlohu, ale nevím, jak ji vyřešit. Kde si mohu nastudovat běžné postupy a známé algoritmy?

Primárním zdrojem pro nastudování algoritmů by měly být webové stránky FIKSu v záložce Studijní materiály. Zde se vyskytuje naprostá většina algoritmů, které jsou potřeba pro vyřešení úloh. Pokud se algoritmus nevyskytuje zde, pak bude nejjednodušší prohledat internet, ale zároveň asi bude buď moc obtížný, nebo jsme ho zapomněli uvážit v materiálech.

Nalezl jsem v úloze chybu. Jak mám dále postupovat?

Pokud účastník najde chybu v zadání, je dobré kontaktovat tým FIKSu (přes discord nebo e-mail). V takovémto případě poprosíme o přiložení vstupu a drobného popisu odhalené chyby.

Mám problém s úlohou. Kam mám psát své dotazy?

Organizátory můžeš kontaktovat na e-mailu fiks(zavináč)fit.cvut.cz nebo na Discordu. Na Discordu je vytvořený kanál pro každé kolo aktuálního ročníku, kam můžeš směřovat dotazy na klarifikaci zadání. Pokud máš individuální dotaz ke svojemu odevzdání tak na Discordu napiš do soukromé zprávy našemu botovi (FIKS bot) příkaz !dotaz. Tvůj dotaz tak budou moct vidět všichni organizátoři, ale žádní další účastníci. Zde ovšem prosíme o drobné strpení, protože může chvíli trvat, než se některý z členů týmu k dotazu dostane.

Bude někdy zveřejněno referenční řešení úloh?

Referenční řešení úloh se snažíme zveřejňovat po konci ročníku. Na jarním soustředění navíc děláme editoriál, ve kterém si popovídáme o řešení úloh proběhlého ročníku.

Je třeba používat nějaké pokročilé metody jazyka? Kupříkladu paralelizaci nebo openCL?

Všechny úlohy jsou psány tak, aby byly řešitelné bez použití paralelizace nebo openCL/CUDA. Pokud je zapotřebí využít složitějších metod, bude to explicitně specifikováno v zadání.

Programuji na MS Windows. Jsou nějaké pasti, na které bych si měl dávat pozor?

Protože většina z organizátorů a server používá nějakou verzi GNU/Linux, jsou i generátory psány v těchto prostředích. Jediné místo, kde se pravidelně vyskytují problémy, je odlišný způsob konce řádků (Windows používá CR LF, kdežto GNU/Linux pouze LF).

Pozor na to, že to se týká jak vstupů tak výstupů. Vstupní data, která si stáhneš budou mít řádky oddělené pouze pomocí LF a v některé textové editory na Windows LF bez CR neumí rozpoznat jako konec řádku a tak ti zobrazí vstupní soubor zvláštně – pokud tedy vidíš celé zadání na jednom řádku a nemá tak být tak soubor zkus otevřít v jiném editoru (kupříkladu sublime nebo notepad++). Při odevzdávání se pak většinou snažíme, aby odevzdávátko přijímalo oba typy konce řádků, ale nemusí to být pravidlem.

Pokud by problémy přetrvávaly, je vhodné nás kontaktovat (discord/email).

Je možné dělat Sfinx na pomalejším stroji?

Pouze velmi výjimečně se může stát, že by pouze stroj způsobil takový problém. V rychlosti běhu programu hraje roli několik věcí: použitý algoritmus, programovací jazyk, a samotný stroj. Limity pro běžné úlohy jsou nastavené s rezervou tak, aby měly šanci i pomalejší jazyky, a pomalejší stroj by neměl mít problém. Přesto je možné, že pomalý stroj + pomalý jazyk způsobí, že řešení, které by mělo projít nestihne limit. Proto radši zvol rychlejší jazyk, a pokud to jazyk dovoluje, nastav pro kompilaci optimalizaci, např. g++ -O2 pro cpp, nebo cargo run --release pro Rust.

Pokud je jisté, že při řešení je použit správný algoritmus, ale neprochází na čas, tak napiš organizátorům – takovéto případy řešíme individuálně.

Nedaří se mi odevzdat pdf s popisem úlohy. Co mám dělat?

Nahrávání pdf má své limity. Velikost je omezená na cca 200Kb, proto do pdf nedávej veliké obrázky, a radši preferuj vektory (např. svg malované v inkscape nebo ipe). Pokud má pdf větší velikosti, než je limit, doporučíme toto pdf nějak zmenšit (snížit kvalitu). K tomu je možné kupříkladu použít nástroj https://smallpdf.com/compress-pdf.

U úlohy typu ‘Rozmysli, popiš a naprogramuj!’ je třeba odevzdat program a popis. Mám tedy odevzdat zkompilovaný program (exe)?

Exe soubor se rozhodně neodezvdává, potřebujeme zdrojový kód, abychom mohli zhodnotit, jestli je program napsaný správně.