Cieľom zadania je naprogramovať slovnú hru Wordle, ktorej zmyslom je uhádnuť utajené slovo v rámci stanoveného počtu pokusov. Hra musí byť napísaná v jazyku C vo forme konzolovej aplikácie. Program musí využívať len štandardné súčasti jazyka C (žiadne externé knižnice) a byť kompilovateľný prekladačom GCC. Zadanie nebude automatizovane testované, ale bude vyhodnotené v rámci tzv. blind peer review (vzájomné anonymné hodnotenie študentmi). Každé odovzdané zadanie bude anonymne vyhodnotené 3 náhodne zvolenými študentmi. Vypracované zadanie by malo byť funkčné, esteticky vyzerajúce a kvalitne implementované. Všetky tieto faktory musia byť objektívne zvážené v rámci hodnotenia. Výsledná aplikácia je výsledkom vašej osobnej kreativity a nepodlieha žiadnym testovacím scenárom.
Wordle je logická slovná hra, v ktorej hráč musí uhádnuť skryté slovo na stanovený počet pokusov. Zvyčajne sa háda 5-písmenové slovo na max. 6 pokusov. V rámci každého pokusu hráč zvolí pre každú pozíciu v skrytom slove písmeno. Výsledkom jedného pokusu je zistenie, ktoré písmená boli v slove uhádnuté. Hráč môže uhádnuť písmeno slova na zlej pozícii (bežne sa označuje žltou farbou) alebo písmeno slova na správnej pozícii (zelená farba). Každý typ uhádnutia by mal byť vhodne vizualizovaný, napr. pomocou farieb alebo vhodných znakov. V ideálnom prípade by mala byť hra vizualizovaná mriežkou s písmenami s rozmerom 5x6 (5 je dĺžka slova, 6 je max. počet pokusov). Predtým ako zadanie naprogramujete, je dobré si Wordle zopárkrát zahrať.
Na zobrazovanie farebného textu v termináli môžete použiť
ANSI escape sekvencie, viď ukážka zdrojového kódu pod textom. Výsledok spustenia ukážkového kódu je znázornený obrázkom 2. Každá escape sekvencia má
tvar \033[XXXm
, kde XXX
predstavuje
postupnosť atribútov textu oddelených bodkočiarkou. ANSI farebné atribúty sú uvedené na obrázku 3.
#include <stdio.h>
void reset() {
printf("\033[0m");
}
void red() {
printf("\033[31m");
}
void green() {
printf("\033[32m");
}
void blue() {
printf("\033[34m");
}
int main() {
red();
printf("red\n");
green();
printf("green\n");
blue();
printf("blue\n");
reset();
printf("normal\n");
return 0;
}
Dôležité pokyny:
Odovzdáva sa len 1 zdrojový súbor, ktorý obsahuje celú implementáciu. Po odovzdaní máte v systéme prístup k poslednému odovzdanému súboru (odkaz hneď pod odovzdávacím formulárom). Počet odovzdávacích pokusov je neobmedzený. Na odovzdávanie sa nevzťahuje penalizácia.
Za toto zadanie je možné získať max. 10 bodov.
Zadanie nebude hodnotené automatizovane serverom v rámci testovacích scenárov, ale formou tzv. peer review. Peer review je proces, ktorý existuje v akademickej sfére na hodnotenie vykonanej práce inými ľudmi, ktorí sú znalcami v danej oblasti. V kontexte tohto zadania to znamená, že vaše odovzdané zadanie bude anonymne vyhodnotené 3 náhodne zvolenými študentmi a vy taktiež vyhodnotíte 3 náhodne pridelené zadania. Hodnotenia sa zúčastnia len tí študenti, ktorí odovzdali zadanie 6. Hodnotenie pozostáva z prideleného počtu bodov a slovného komentára.
Bodovanie sa skladá z 2 časti:
Každý recenzent by mal vo svojom hodnotení zohľadniť nasledovné kritériá:
Nasledujúce zdroje vám môžu pomôcť pri riešení zadania. Odporúčame si tieto zdroje pozrieť/preštudovať.