Brezplačni e-vodič: Kako postati programer?
Poglej več
BLACK FRIDAY POPUSTI PRI SMARTNINJA! TEČAJI ŽE OD 39,00€!
Tečaji programiranja

SmartNinja izziv maj/junij 2020 – kdo je zmagal?

V SmartNinja izzivu za meseca maj in junij so tečajniki morali narediti program oz. aplikacijo za uporabo Cezarjeve šifre.

Cezarjeva šifra? Kaj je to?

Cezarjeva šifra je zelo preprost način enkripcije podatkov, ki se imenuje po Juliju Cezarju. In zelo verjetno si ta način šifriranja nekoč že uporabil/a.

Priljubljen je bil namreč med osnovnošolci (vsaj v času pred mobilniki), ko so si med poukom pošiljali skrivna sporočila preko listkov.

Kako deluje Cezarjeva šifra?

Recimo, da želimo zašifrirati sporočilo “Dober dan”. Enkripcijo bomo naredili tako, da bomo premaknili vse črke v tem sporočilu za določeno število mest v abecedi, npr. za 4 mesta.

Črka “d” bo tako postala “h”. Črka “o” bo postala “š”. “B” bo postal “e”. In tako naprej.

Iz sporočila “Dober dan” tako dobimo zašifrirano poved “Hšeiu hds”. Vse črke v sporočilu so bile premaknjene za 4 mesta (glede na slovensko abecedo, seveda).

Ko pošljemo šifrirano sporočilo prejemniku, mora ta vedeti, za koliko mest smo premaknili črke, zato se moramo s prejemnikom že prej dogovoriti za to številko (temu lahko rečemo tudi skrivni ključ).

Primer, ko premaknemo abecedo za 3 mesta

(Na zgornji sliki so črke angleške abecede zamaknjene za 3 mesta)

Kaj je bila naloga v izzivu?

Naloga je bila pripraviti računalniški program, ki bi nam pomagal šifrirati sporočila, zato da tega ne rabimo početi ročno.

Tečajniki so lahko naredili bodisi namizni program, bodisi spletno aplikacijo.

Zahteve so bile, da ima program grafični vmesnik, da uporablja programski jezik Python ter da algoritem za šifriranje napiše tečajnik/tečajnica sam/a (ne pa da bi uporabil/a kako že narejeno implementacijo Cezarjeve šifre v obliki programskega paketka).

Kdo je zmagal?

Tudi tokrat sta zmagovalca dva: Jaka Fefer ter Beno Zupanc.

Beno

Beno se je udeležil tečaja Programiranje za začetnike, kjer se je naučil programskega jezika Python in izdelave namiznih programov. Zato je za ta izziv naredil namizni program, ki za grafični vmesnik uporablja Tkinter (to je standardna Python knjižnica).

Smartninja_sola_programiranja_tecaji_benigma 1593686139

Številko zamika črk se določi z drsnikom, hkrati pa se ob tem premika tudi rdeča vrstica abecede in tako poda lep pregled konverzije vseh črk v abecedi.

S klikom na “Benigma” (oz. z odkljukanjem te opcije), se zadeva obrne, in neko šifrirano sporočilo lahko odšifriramo.

Koda Benotove rešitve je dostopna na njegovem GitHubu: povezava.

Jaka

Jaka se je udeležil naših tečajev Web development 1 in Web development 2, zato je za izziv namesto namizne aplikacije naredil spletno aplikacijo.

Spletna aplikacija uporablja priljubljeno Python ogrodje Flask, za komunikacijo med frontendom ter backendom pa skrbi JavaScript.

S pomočjo HTML in CSS kode je oblikoval lep uporabniški vmesnik, ki se zna prilagoditi tudi mobilnim zaslonom.

Smartninja_sola_programiranja_tecaji_fefer caesar 1593687006

Koda Jakove rešitve je dostopna na njegovem GitHubu. Sama spletna aplikacija pa teče na Heroku strežniku: https://ccipher.herokuapp.com/.

Čestitke!

Čestitke obema zmagovalcema! 🎉 Že v kratkem pa bo na našem GitHubu objavljen nov izziv za julij in avgust. 🤓

Nadaljuj z branjem