(Code Wars) Intermezzo
Staňte sa majstrom v programovaní vďaka programátorským výzvam.
Motivácia
CodeWars je jedným z mnohých webov, ktoré dnes ponúkajú možnosť zlepšiť svoje programátorské schopnosti. Služba CodeWars poskytuje prostredie, v ktorom môžete riešiť rôzne programátorské úlohy (nazývané kata) v rôznych jazykoch a za ich úspešné riešenie získavať body. Máte však aj možnosť vidieť riešenia ostatných, čím sa vaše schopnosti môžu zlepšiť ešte viac. Na dnešnom cvičení sa na túto službu pozrieme zblízka.

Ciele
- Prihlásiť sa do komunikačného systému Slack.
- Vytvoriť si projekt na stránkach GitLab-u.
- Zaregistrovať sa v službe CodeWars.
- Vyriešiť (aspoň) jeden kata.
Postup
Before we really Start
Ešte skôr, ako sa vrhneme do programovania, sa vás niečo opýtame. A to rovno dvakrát. V rámci cvičenia prosím vyplňte nasledovné dotazníky:
- Anketa v IS MAIS
- Docker a jeho využitie v univerzitnom prostredí
- Výskum gramotnosti v oblasti spracovania textov - kvôli technickým normám je tento prieskum len pre českých a slovenských študentov
Course Bootstrap
Ešte skôr, ako sa vrhneme do programovania, sa pripravíme na prácu počas semestra. Prihlásite sa do komunikačného systému Slack, ktorý budeme používať v rámci rýchlej komunikácie s vami, a v Gitlab-e si vytvoríte projekt, ktorý budete používať na odovzdávanie vašich zadaní.
Okrem toho sa prosím prihláste do komunikačného systému Slack, ktorý budeme používať v rámci rýchlej komunikácie s vami. Komunikačný kanál predmetu nájdete na adrese https://kpi-pvjc-2025.slack.com.
Úloha
Prihláste sa do komunikačného systému Slack.
Slack budeme používať pre rýchlu komunikáciu s vami. Komunikačný kanál predmetu nájdete na adrese https://kpi-pvjc-2025.slack.com.
Počas komunikácie sa však snažte dodržiavať nasledovné pravidlá:
- Správajte sa (voči sebe) slušne!
- Vo svojich príspevkoch neposielajte riešenia alebo čiastočné riešenia úloh, ktoré predstavujú zadanie!
- Vo svojich príspevkoch neposielajte obrázky, ktoré obsahujú kód alebo výpis obrazovky! Takéto obrázky budú ostránené! Pošlite ich ako text (ktorý sa dá okrem iného aj skopírovať a tým pádom jednoduchšie vyskúšať vašu problematickú časť).
- Obrázky (ideálne memečka), prípadne pozvánky na zaujímavé akcie,
môžete posielať napr. do kanála
#random
, ktorý je na to určený. - Na otázky ohľadom zadaní používajte na to určené kanály!
Úloha
Prihláste sa na GitLab a vytvorte si nový projekt.
Ak vytvárate projekt prvýkrát, urobte tak na tejto stránke. Návod na to, ako si inicializovať prostredie a ako pracovať s GitLab-om, nájdete na stránkach predmetu ZAP.
Názov vytvoreného projektu bude v tvare prog-X
, kde
X
je poradové číslo vytváraného projektu.
Poznámka
V materiáloch s cvičeniami budeme používať názov projektu
prog-2025
. To však neznamená, že váš projekt, ktorý ste si
vytvorili v GitLab-e sa bude
alebo sa má volať práve takto. Poradové číslo vášho projektu bude totiž
výrazne vyššie.
Súčasťou projektu je aj súbor README
, ktorý obsahuje len
jeden riadok s informáciou o skupine, ktorú navštevujete na cvičeniach v
tvare:
GROUP : A1
Upozornenie
Pokiaľ len skopírujete a vložíte postupnosť príkazov priamo z GitLab-u, nezabudnite súbor
README.md
premenovať na súbor README
.
Upozornenie
Ak nebudete vedieť projekt u seba lokálne naklonovať alebo inak pracovať so vzdialeným repozitárom, skontrolujte svoje SSH kľúče! Návod ako na to nájdete napríklad v jednom z návodov predmetu Základy algoritmizácie a programovania.
Upozornenie
Z projektu neodchádzajte ani sa ho nesnažte odstárniť! Na odstránenie projektu totiž nemáte práva a budete mať len zbytočný problém s návratom do neho! Pre opätovný návrat do projektu totiž budete musieť kontaktovať svojho cvičiaceho, aby vám s tým pomohol. A otravovať svojho cvičiaceho učite nechcete :-P
Project Creation
V predchádzajúcom kroku sme vytvorili nový projekt na serveri GitLab. V tomto kroku si do neho stiahneme a uložíme kostru prvého zadania.
Úloha
Vo svojom projekte si vytvorte priečinok ps1/
, v ktorom
sa bude nachádzať riešenie vášho prvého zadania.
Úloha
Do vytvoreného priečinku ps1/
si zo stránky so zadaním
projektu Top Secret
stiahnite a rozbaľte jeho kostru.
Pokiaľ poznáte adresu súboru na stiahnutie, môžete si ho stiahnuť
pomocou príkazu wget
v tvare:
$ wget URL
kde URL
je adresa súboru na stiahnutie. Súbor sa
následne stiahne do priečinka, v ktorom ste tento príkaz zadali.
Pre rozbalenie zip
balíku môžete s výhodou použiť
konzolový nástroj unzip
v tvare:
$ unzip FILE
kde FILE
je názov, resp. cesta k zip
balíku
na rozbalenie.
Úloha
V priečinku ps1/
vytvorte prázdne zostávajúce
(chýbajúce) súbory zadania.
Presná podoba štruktúry projektu sa nachádza na stránke požiadaviek zadania Top Secret. V stiahnutej kostre projektu sa však nenachádzajú všetky potrebné súbory. Tie vytvoríme ručne.
Prázdne súbory môžete vytvoriť buď príkazom touch
alebo
uložením prázdneho súboru vo vašom textovom editore. Ak následne sputíte
príkaz tree
nad priečinkom projektu prog-2025
,
jeho výstup bude vyzerať nasledovne:
$ tree prog-2025
prog-2025/
├── ps1/
│ ├── playfair.c
│ ├── playfair.h
│ ├── bmp.c
│ ├── bmp.h
│ ├── main.c
│ └── Makefile
└── README
Úloha
Vytvorený priečinok pridajte do Git projektu a odošlite ho do GitLab-u.
Úspešnosť úlohy si overíte otvorením webového rozhrania GitLab-u s vaším projektom. Ak
ste postupovali správne, uvidíte v ňom váš projekt s vytvoreným
priečinkom ps1/
aj s jeho obsahom.
Codewars Warmup
Ak si chcete zlepšiť vaše programátorské schopnosti, môžete tak urobiť na rozlišných miestach a rozličným spôsobom. V tomto kroku sa pozrieme na portál Codewars, ktorý môžete presne na tento účel použiť. Ešte predtým, ako sa však vrhneme do samotného riešenia kata, sa zaregistrujeme.
Úloha
Otvorte vo svojom prehliadači stránku https://www.codewars.com a zaregistrujte sa.
Po kliknutí na tlačidlo Sign Up v pravom hornom rohu stránky sa spustí sprievodca, ktorý vás prevedie procesom registrácie. Najprv si vyberiete programovací jazyk (C/C++). Následne budete vyzvaní, aby ste vyriešili jednoduchú úlohu v tomto jazyku (s ktorou po zvládnutí predmetu Základy algoritmizácie a programovania nemôžete mať žiadny problém). Potom už len dokončíte registráciu vyplnením kontaktných údajov. Ako svoj klan uveďte pvjc-2025.
Let’s Solve Some Kata
Po úspešnej registrácii sa môžeme pokúsiť vyriešiť niekoľko katas a zvýšiť tak svoje hodnotenie.
Úloha
Vyriešte úlohu IP Validation v jazyku C.
Vašou úlohou je napísať funkciu is_valid_ip()
, ktorá
zistí, či vstupný parameter funkcie predstavuje valídny zápis IP adresy
vo verzii 4. Pre jej riešenie však nemôžete použiť žiadnu existujúcu
funkciu jazyka C, ktorá je na tento účel priamo určená alebo
ktorá nepriamo tento problém vyrieši za vás. Rovnako tak nemôžete použiť
na riešenie regulárne výrazy (riešeniu tohto problému pomocou
regulárnych výrazov sa budeme venovať neskôr).
Úloha
Po vyriešení úlohy porovnajte svoje riešenie s existujúcimi riešeniami.