(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.

CodeWars Logo

Ciele

  1. Prihlásiť sa do komunikačného systému Slack.
  2. Vytvoriť si projekt na stránkach GitLab-u.
  3. Zaregistrovať sa v službe CodeWars.
  4. 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:

  1. Anketa v IS MAIS
  2. Docker a jeho využitie v univerzitnom prostredí
  3. 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á:

  1. Správajte sa (voči sebe) slušne!
  2. Vo svojich príspevkoch neposielajte riešenia alebo čiastočné riešenia úloh, ktoré predstavujú zadanie!
  3. 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ť).
  4. 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ý.
  5. 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.

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

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.

Additional Tasks

  1. Riešte ďalšie úlohy na serveri CodeWars pre jazyk C.

  2. Pozrite sa na ďalšie systémy a služby, ktoré vám podobným spôsobom ako CodeWars pomôžu byť lepšími programátormi. Pozrieť sa môžete napríklad na tieto služby: