Bilten s 22. kampa mladih informatičara Hrvatske

Transcription

Bilten s 22. kampa mladih informatičara Hrvatske
SADRŽAJ
22. kamp mladih informatičara Hrvatske....................................................................................3
Popis polaznika ...................................................................................................................4
Pregled radionica, voditelja i pohvaljenih polaznika ..........................................................6
Intervju: Ivo Šeparović, dipl. ing., tajnik HSIN-a.......................................................................7
Razgovori o Kampu
Novi voditelji radionica.......................................................................................................9
Polaznici ............................................................................................................................10
S priprema na Kampu
Olimpijci ...........................................................................................................................12
Voditelj tima......................................................................................................................13
Završna svečanost 22. kampa .....................................................................................................14
Prva juniorska hrvatska informatička olimpijada....................................................................16
Program .............................................................................................................................17
Rezultati ............................................................................................................................18
Pravila ...............................................................................................................................19
Radionica: Olimpijci juniori..............................................................................................23
Intervju: Nikola Dmitrović, prof. mentor ..........................................................................26
Popis polaznika po radionicama .................................................................................................28
RADIONICE
Logo početni......................................................................................................................35
Logo napredni ...................................................................................................................37
BASIC početni ..................................................................................................................41
BASIC napredni ................................................................................................................44
Programski jezici PYTHON / C++ ...................................................................................48
Početnici ............................................................................................................................50
Visual Basic / SQL Server ................................................................................................53
PHP ...................................................................................................................................55
Algoritmi početni ..............................................................................................................57
Algoritmi napredni ............................................................................................................60
Olimpijci seniori................................................................................................................62
PRILOG: Zadaci i opisi algoritama s 1. JHIO-a.......................................................................67
22. KAMP MLADIH INFORMATIČARA HRVATSKE – KRK 2012.
22. kamp mladih informatičara Hrvatske, u organizaciji
Hrvatskog saveza informatičara – HSIN-a, održan je u Krku od 19. do 29.
lipnja 2012. godine. Suorganizatori ove tradicionalne ljetne škole
informatike bili su Osnovna škola Frana Krste Frankopana u Krku i Klub
informatičara otoka Krka – KIOK.
22. kamp u Krku organiziran je u jednom terminu u trajanju od 11
dana. Za polaznike Kampa održano je 12 radionica, koje su vodili stručni
suradnici HSIN-a i KIOK-a.
Program Kampa uspješno je završilo 70 učenika i to: 47 učenika osnovnih škola, od kojih je 16
pozvao HSIN temeljem natječaja, i 23 srednjoškolca, od kojih je 14 pozvao HSIN. Cjelokupan stručni
program održan je u prostorima OŠ F. K. Frankopana u Krku. Program se odvijao u 4 učionice opremljene sa ukupno 55 računala. Povezanost s internetom ostvarena je CARNet-ovom vezom od 10Mb/s.
Prema vlastitim interesima učenici su pohađali jednu ili više radionica. Svi su se na radionicama
istakli marljivim radom. Veliko zanimanje srednjoškolci su pokazali za radionicu "Algoritmi" dok je
među mlađim uzrastom popularna bila radionica "Početnici".
Posebna radionica "Olimpijci" i ove je godine organizirana za pripreme sedmorice informatičkih
reprezentativca Republike Hrvatske (prvotimci: D. Ćevid, A. Razum, M. Tomić i D. Gleich i pričuve: M.
Milišić, T. Tunković i M. Balunović), izabranih temeljem rezultata na HIO 2012. i Izbornim pripremama
2012. Olimpijci su se u Krku pripremali za nastupe na najznačajnijim informatičkim natjecanjima u 2012.
godini:
• 19. srednjoeuropskoj informatičkoj olimpijadi – CEOI 2012 u Mađarskoj i
• 24. međunarodnoj informatičkoj olimpijadi – IOI 2012 u Italiji.
Značajna novost u sklopu programa ovogodišnjeg Kampa bilo je održavanje
1. juniorske hrvatske informatičke olimpijade – JHIO 2012.
Na JHIO 2012. sudjelovalo je 7 najboljih juniora i jedna juniorka, tj. učenici do 16 godina starosti
na dan međunarodnog natjecanja. Natjecali su se, u dva dana (24. i 28. lipnja), u rješavanju 5 originalnih,
problemskih zadataka na algoritamskoj osnovi. Najuspješnija četiri natjecatelja: D. Bradač, B. Filipović,
N. Pintarić, V. Kurdija, izborili su mjesto u hrvatskom timu za nastup na:
•
•
Balkanskoj informatičkoj olimpijadi – JBOI 2012 u Makedoniji i
Međunarodnom informatičkom natjecanju – ITI Shumen 2012 u Bugarskoj.
Voditelji 22. kampa bili su: Aron Bohr, stručni suradnik u ime HSIN-a, Boris Bolšec, prof., u
ime škole domaćina, te Nikola Dmitrović, prof.-mentor, voditelj priprema juniora za nastup na JHIO
2012. Glavni i odgovorni organizator bio je Ivo Šeparović, dipl. ing., tajnik HSIN-a.
Program Kampa odvijao se pod pokroviteljstvom Hrvatske zajednice tehničke kulture,
Ministarstva znanosti, obrazovanja i sporta, poglavarstava Grada Krka i Županije primorsko-goranske.
KAMP 2012.
3
22. KAMP – POPIS POLAZNIKA
UČENICI OSNOVNIH ŠKOLA
R. br.
4
Ime i prezime
Škola, Općina / Grad
Razred
1.
Filip Ahčin
PŠ Strmec Samoborski
1.
2.
Sven Ahčin
PŠ Strmec Samoborski
3.
3.
Anto Avgustinović
OŠ F. K. Frankopana, Malinska
4.
4.
Patrik Bajčić
OŠ F. K. Frankopana, Malinska
2.
5.
Matej Ban
-
-
6.
Robert Benić
ZRS/Udruga informatičara Božo Težak, Zagreb
7.
7.
Domagoj Bradač
OŠ Otok, Zagreb
8.
8.
Filip Braut
OŠ F. K. Frankopana, Krk
3.
9.
Luka Braut
OŠ F. K. Frankopana, Krk
5.
10.
Renato Braut
OŠ F. K. Frankopana, Krk
3.
11.
David Brusić
OŠ F. K. Frankopana, Malinska
4.
12.
Filip Crnčić
OŠ F. K. Frankopana, Dobrinj
4.
13.
Jakov Depikolozvane
OŠ F. K. Frankopana, Vrh
5.
14.
Tomislav Franov
OŠ F. K. Frankopana, Krk
2.
15.
Marija Gegić
OŠ Retkovec, Zagreb
8.
16.
Marin Geljić
OŠ F. K. Frankopana, Krk
3.
17.
Maria Elena Hržić
OŠ F. K. Frankopana, Malinska
4.
18.
Ivan Jambrešić
ZRS / Udruga programera S VIJUGOM, Zagreb
3.
19.
Lurda Kauzlarić
OŠ F. K. Frankopana, Malinska
2.
20.
Josip Klepec
I. osnovna škola Vrbovec
6.
21.
Damjan Klobučar
OŠ F. K. Frankopana, Krk
2.
22.
Karlo Kovačić
Mladi informatičari Strahoninca, Strahoninec
7.
23.
Vedran Kurdija
OŠ Mladost, Zagreb
7.
24.
Marko Lazarić
OŠ Centar, Pula
7.
25.
Dorijan Lendvaj
RIK Popovača
2.
26.
Vilim Lendvaj
RIK Popovača
6.
27.
Elena Lukić
OŠ F. K. Frankopana, Malinska
4.
28.
Benjamin Marić
OŠ F. K. Frankopana, Krk
4.
29.
Ivana Milčetić
OŠ F. K. Frankopana, Malinska
4.
30.
Vanesa Morić
OŠ F. K. Frankopana, Krk
3.
KAMP 2012.
UČENICI OSNOVNIH ŠKOLA
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
Zoja Nekić
Petar Orlić
Nikola Pintarić
Stjepan Požgaj
Martin Rosenzweig
Luka Gabriel Rošić
Marina Samblić
Karlo Sintić
Leon Starešinić
Nikica Stijepić
Lorenzo Šamanić
Mia Šimić
Renato Šutić
Fran Vasilić
Josip Zrilić
Lucija Žužić
Marko Žužić
OŠ F. K. Frankopana, Krk
OŠ J. Račića, Zagreb
OŠ I. G. Kovačića, Sv. Juraj na Bregu
OŠ Belica, Belica
OŠ I. Filipovića, Zagreb
OŠ F. K. Frankopana, Vrh
OŠ F. K. Frankopana, Krk
OŠ F. K. Frankopana, Krk
OŠ J. Račića, Zagreb
OŠ F. K. Frankopana, Vrh
OŠ F. K. Frankopana, Krk
OŠ F. K. Frankopana, Malinska
OŠ F. K. Frankopana, Krk
OŠ F. K. Frankopana, Krk
OŠ F. K. Frankopana, Malinska
OŠ F. Frankovića, Rijeka
OŠ F. K. Frankopana, Vrh
4.
8.
8.
8.
8.
5.
6.
6.
8.
5.
5.
2.
3.
6.
4.
6.
5.
UČENICI SREDNJIH ŠKOLA
R. br.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
KAMP 2012.
Ime i prezime
Mislav Balunović
Luka Barišić
Domagoj Ćevid
Branimir Filipović
Dominik Gleich
Mislav Gucunski
Dino Ilić
Pavao Jerebić
Filip Keri
Ivan Lazarić
Mihael Liskij
Zvonimir Medić
Neven Miculinić
Helena Mikulić
Matija Milišić
Antun Razum
Tonko Sabolčec
Ivan Šego
Marin Tomić
Tomislav Tunković
Kristijan Vulinović
Mario Vuzem
Ivana Žužić
Škola, Općina / Grad
Gim. M. Mesića, Sl. Brod
XV. gimnazija, Zagreb
V. gimnazija, Zagreb
XV. gimnazija, Zagreb
XV. gimnazija, Zagreb
III. gimnazija, Osijek
SŠ za elektrotehniku i računalstvo, Rijeka
III. gimnazija, Split
XV. gimnazija, Zagreb
Gimnazija, Pula
XV. gimnazija, Zagreb
XV. gimnazija, Zagreb
Udruga darovitih informatičara Rijeke, Rijeka
XV. gimnazija, Zagreb
XV. gimnazija, Zagreb
XV. gimnazija, Zagreb
XV. gimnazija, Zagreb
XV. gimnazija, Zagreb
V. gimnazija, Zagreb
Gim. L. Vranjanina, Zagreb
Gimnazija A. Mohorovičića, Rijeka
Srednja škola Krapina, Krapina
Gimnazija A. Mohorovičića, Rijeka
Razred
2.
1.
3.
1.
2.
3.
2.
1.
2.
1.
1.
3.
3.
2.
4.
4.
1.
1.
3.
4.
2.
2.
1.
5
PREGLED RADIONICA, VODITELJA I POHVALJENIH POLAZNIKA
Radionica
6
Voditelji i predavači
Broj
polaznika
Pohvaljeni
1.
Algoritmi početni
Matija Bucić
13
Petar Orlić, Martin
Rosenzweig i Mislav
Gucunski
2.
Algoritmi napredni
Marin Smiljanić
11
Ivan Lazarić, Ivan Šego i
Luka Barišić
3.
BASIC početni
Mislav Balunović
11
Marko Žužić, Jakov
Depikolozvane i Josip Zrilić
4.
BASIC napredni
Marijan Jurešić, dipl. ing.
Mislav Balunović
8
Marina Samblić, Lucija
Žužić i Luka Braut
5.
LOGO početni
Helena Mikulić
9
David Brusić i Ivana Milčetić
6.
LOGO napredni
Mihael Liskij
8
Ivan Jambrešić, Lucija Žužić
i Dorijan Lendvaj
7.
PHP
Gordan Nekić
6
Fran Vasilić, Josip Klepec i
Dino Ilić
8.
Početnici
Diana Lendvaj, dipl. ing.
13
Tomislav Franov, Filip Braut,
Renato Šutić i Damjan
Klobučar
9.
Programski jezici
PYTHON / C++
Nikola Dmitrović, prof.
11
Martin Rosenzweig, Josip
Klepec i Lucija Žužić
10.
Visual BASIC
SQL Server
Marijan Jurešić, dipl. ing.
Gordan Nekić
6
Dino Ilić, Karlo Sintić i
Kristijan Vulinović
11.
Olimpijci juniori
Nikola Dmitrović, prof.
8
-
12.
Olimpijci seniori
Matija Osrečki
7
-
KAMP 2012.
IVO ŠEPAROVIĆ: Razgovor povodom održavanja 1. JHIO 2012. u Krku
2. MJESTO U SVIJETU I 1. U EUROPI NIJE BIO NAŠ MAKSIMUM
U okviru Kampa 2012. u Krku održano je i jedno sasvim novo natjecanje za najuspješnije
najmlađe sudionike, 1. juniorska hrvatska informatička olimpijada, natjecanje najvišeg nivoa na
nacionalnoj razini. Više o tome rekao nam je, glavni organizator, tajnik HSIN-a, Ivo Šeparović, dipl. ing.
Što Vas je potaklo da Izvršnom odboru HSIN-a predložite
utemeljenje i organiziranje prve Juniorske hrvatske
informatičke olimpijade – JHIO 2012?
Višegodišnji rad na informatičkim programima s
mladima u Hrvatskoj, te iskustva stečena u međunarodnoj
suradnji svakako su glavni pokretač ideja koje sam do sada davao
Izvršnom odboru HSIN-a i stručnim suradnicima kroz
Znanstveni odbor HSIN-a. Samo nekoliko država u Europi vodi
brigu o učenicima do 16 godina starosti na spomenutim
programima. Tako postoji Juniorska balkanska informatička
olimpijada – JBOI i ITI Shumen na kojima se natječu učenici do
16 godina na jednakim informatičkim programima kao i stariji
učenici srednjih škola.
HSIN već godinama provodi program HONI – natjecanja putem Interneta za sve učenike pa i za
ove najmlađe, a prije dvije godine priredili smo poseban program za njihov uzrast i znanje.
Pošto su ove godine naši učenici po drugi puta pozvani na JBOI i na ITI Shumen, odlučili smo se
za organizaciju JHIO 2012., kako bi izabrali najbolju četvoricu koja će nas zastupati na tim natjecanjima.
Kako su se o tom prijedlogu očitovali pojedini članovi IO-a HSIN-a?
Izvršni odbor HSIN-a je, na moje obrazloženje o korisnosti ovog programa za budućnost mladih
natjecatelja informatičara, u potpunosti prihvatio ideju o organizaciji 1. JHIO u sklopu Kampa 2012., koji
je održan u Krku. Pokazat će se to punim pogotkom, kada pogledamo rezultate naših juniora na JBOI i
ITI Shumen 2012.
Znači li to da je u školskom programu informatika, u znanstvenom pristupu, dobila mjesto koje
zaslužuje?
Ne mislim da se u školskom programu za učenike do 16 godina starosti posvećuje dovoljno
pažnje "znanstvenoj informatici" (Computer Science). Za one najbolje, mi u HSIN-u nadopunjujemo
njihova znanja, osobito na našim zimskim i ljetnim školama informatike, te na već spomenutom
programu HONI putem Interneta. Na tim našim programima sudjeluju i učenici već od 1. razreda osnovne
škole.
KAMP 2012.
7
Kakva je danas situacija s «pokrivenošću» računalima, ima li svaki učenik pristup računalnim
resursima, koji su mu neophodni?
Situacija s "pokrivenošću" računalima popravlja se iz godine u godinu i u školama i kod učenika
kod kuće. Mislim da za ovaj program to nije dovoljno, jer u mnogim školama se radi samo "korisnička
informatika", vezana za poznati ECDL, te "surfanje" Internetom. N. pr. u Gradu Zagrebu, osim u nekim
školama znanstvena informatika se poučava i u 20-tak klubova, članica HSIN-a (ujedinjenih u ZRS), te
organiziranju mnogobrojnih natjecanja i za one najmlađe osnovnoškolce. Dotle, recimo na otoku Lastovo
od svega nema ništa (mi smo pokušali nešto napraviti 1998. kada smo tamo organizirali Ljetnu školu
informatike i kada smo osnovali informatički klub), ali zbog birokracije i nerazumijevanja lokalne uprave
i države sve se ubrzo urušilo. Zaključak je da nisu svi hrvatski učenici ravnopravni u mogućnosti stjecanja
znanja iz informatike u lijepoj našoj Hrvatskoj deklariranoj "zemlje znanja" u budućnosti.
Podigli ste visoko ljestvicu za «male», znači li to da su «veliki» olimpijci Hrvatske dosegli svoj
maksimum?
Ovo je vrlo teško pitanje, ali sigurno je da će, ako se kvalitetno i stručno radi s malima, veliki
olimpijci postizati boje rezultate. Mislim da, ipak, 2. mjesto u svijetu i 1. u Europi, rezultat iz 2011.
godine nije maksimum hrvatskih učenika. Uvijek sam govorio: «Bit ćemo prvaci svijeta.», ako nam se
"dozvoli", to jest, ako se u Hrvatskoj bude vodilo dovoljno brige o nama (HSIN-u i učenicima).
Ne možemo bez usporedbi s konkurencijom. Pratite li njihove programe i koliko surađujete?
Već sam na prvom pitanju kazao da suradnja na međunarodnoj razini donosi najviše koristi ovim
našim programima u Hrvatskoj, te usporedba s konkurencijom nosi važan moment u rezultatima na
natjecanjima. 2. mjesto u svijetu, 1. mjesto u Europi na IOI 2011, i pojedinačne pobjede na JBOI, BOI i
ITI Shumen, govore same za sebe.
Već daleke 1994. povezali smo se sa zemljama srednje Europe, članicama CEOI-a. Najbolju
suradnju bili smo ostvarili s Poljskom, kasnije smo surađivali s Bugarskom i Rumunjskom. Velika
iskustava dobili smo od najmnogoljudnije zemlje svijeta Kine, s kojom smo osim stručnih ostvarili i
prijateljske veze, surađujemo s CCF-om (Chinesse Computer Federation).
Uvijek ste prepuni ideja, što planirate za budućnost?
Momentalno planiram sudjelovati na organizaciji prve Juniorske međunarodne informatičke
olimpijade – JIOI, koja će se održati u rujnu 2013. u Sofiji, u Bugarskoj, gdje sam imenovan članom
Međunarodnog informatičkog olimpijskog odbora – IC-a JIOI-a.
Razgovarala: Vlasta Šeparović
8
KAMP 2012.
RAZGOVORI U KRKU...
NOVI VODITELJI RADIONICA
Svake godine na Kampu se pojave novi predavači. Neki prvi puta u toj vrlo važnoj ulozi, a neki
već s prijašnjim sličnim iskustvima. Imena dobro poznata, uglavnom su to bivši, a i sadašnji natjecatelji, i
marljivi suradnici HSIN-a. Zamolili smo ih za kratak osvrt na ovogodišnji Kamp.
Mihael Liskij – Napredni Logo
Prvi put sam voditelj na Kampu, inače sam voditelj Loga u ZRS-u. Grupa je vrijedna i ne igra se. Imam
troje polaznika kojima dajem teže zadatke, a ovim ostalima malo više pomažem. U principu dosta brzo
sve shvaćaju. Nisam ništa posebno planirao raditi jer nisam znao da ću biti predavač, ali sam se snašao i
zadovoljan sam sa svime što smo obradili.
Mislav Balunović – Početni i napredni Basic
Predavao sam u Krapini. Iskustva su podjednaka, ali sam sada malo iskusniji i bolje sam shvatio kakav
pristup treba imati i kako im bolje objasniti. Grupa je dobra, slušaju i brzo kuže pa je lakše i meni, a i brže
napredujemo, više toga stignemo napraviti. Uspio sam obraditi sve što sam planirao, ništa nije bilo
nepredviđeno.
Matija Bucić – Početni Algoritmi
Grupa je super, svi se trude, svi rade. Mislim da su svi imali prilike nešto naučiti i da jesu nešto naučili i
nadam se da im nisam bio suviše dosadan. Nisam imao iskustva s predavanjem iz informatike, nešto sitno
sam držao u MIOC-u, ali imam iskustva s predavanjem iz matematike. Kao pripremu za predavanje
pregledao sam svoje stare kodove, stare pripreme koje sam slušao na Kampu ili u Zagrebu. Nisam održao
sve što sam planirao, za to bi mi trebalo jedno tri mjeseca, ali one glavne stvari koje sam htio sam i
napravio.
Helena Mikulić – Logo početni
Ovo mi je prvi puta da predajem na ovakvoj radionici. Grupa je super, svi su se trudili i željeli su raditi.
Naravno da je bilo nekoliko iznimaka koji su se htjeli samo igrati, ali su i oni na kraju naučili. Za
pripremu sam pregledala svoje stare udžbenike i konzultirala se sa prijateljima o količini gradiva koje
ćemo obaviti. Mislim da sam se dobro snašla i da su klinci naučili nešto novo, te da im je radionica bila
korisna.
Diana Lendvaj, dipl. ing. – Početnici
Ovo je prvi put da sam vodila ovakvu radionicu. Lakše je nego u školi zato što su djeca zainteresirana i
žele raditi. Kao pripremu za radionicu pregledala sam neke materijale prilagođene djeci te dobi kako bih
im na što jednostavniji i zanimljiviji način mogla prikazati gradivo. Obradila sam sve što sam planirala,
čak i nešto više zbog njihovog prijašnjeg poznavanja interneta i preglednika, te smo na kraju stigli sve
ponoviti.
Pripremila: Helena Mikulić
KAMP 2012.
9
RAZGOVORI U KRKU...
NAJMLAĐI POLAZNICI ...
Najveselija i stalno u pokretu, grupa najmlađih polaznika radionice Početnici i Logo spremno je
odgovarala na postavljena pitanja, iako je ponekom poneko i promaklo. U razgovoru su sudjelovali: Filip
Ahčin (1. r.), David Brusić (4. r.), Ivana Milčetić (4. r.), Matej Ban, Marko Žužić (5. r.), Ivan Jambrešić
(3. r.), Sven Ahčin (3. r.), Anto Avgustinović (4. r.), Zoja Nekić (4. r.), Josip Zrilić (4. r.), Elena Lukić (4.
r.), Jakov Depikolozvane (5. r.) i Dorijan Lendvaj (2. r.).
Na koje si sve radionice išao/išla?
Filip: Početnici
David: Početni Logo i Qbasic
Ivana: Početni Logo i Qbasic
Matej: Početnici
Marko: Početni Qbasic
Ivan: Logo i C++/Python
Filip Ahčin
Tko te naučio raditi na računalu?
Sven: Naučio me didica. Počeo sam raditi na računalu kad sam krenuo na
Zimsku školu.
Filip: Brat me naučio Logo, a sam sam se naučio raditi na kompjuteru.
David: Prvo su me zainteresirale igrice, međutim i programi koji se rade, znači
stvaranje nečeg novog i drugog. Naučio me tata.
Ivana: Moj tata je informatičar pa me on dosta toga naučio, a u 4. razredu sam
dobila informatiku pa sam tamo isto naučila.
Anto: Učiteljica iz škole i iz Kampa.
Zoja: Brat.
Matej: Prijatelji.
David Brusić
Što si sve znao/znala raditi na računalu prije Kampa?
Sven: Bojanje i Logo
Filip: Igrati igrice, Logo i kako mijenjati slike.
David: Znao sam raditi Logo. I prilično sam dobar u internetu.
Ivana: Znala sam repeat u Logu, Windowse i internet.
Josip: Neke stvari u Logu poput repeata i raditi u editoru, naredbe fd, rt, lt
Zoja: Osnovne naredbe za Logo, igrat igrice, internet.
Matej: Igrat igrice.
Marko: Logo, internet, Word
Kako ti se sviđa profesorica/profesor na radionici/radionicama?
Sven: Pa dobra je i daje nam da igramo igrice.
Filip: Sviđa mi se učiteljica.
David: Pa, učiteljica Helena je poprilično dobra, ona nam predaje Logo i sve
nas uči, a profesor iz QBasica je isto dobar.
Ivana: Oni su odlični, najbolji. Najbolji koje sam imala, puno bolji od onih u
školi, to je sigurno.
Elena: Dobri su i zanimljivi. Pomagali su nam i objašnjavali.
Anto: Bili su jako dobri, zadavali su nam malo teške, malo lake zadatke, no
zbog toga smo i naučili.
Jakov: Profesor je fora, sve dobro objašnjava i strpljiv je, osim ako smo mi
zločesti.
10
Ivana Milčetić
Matej Ban
KAMP 2012.
RAZGOVORI U KRKU...
Marko Žužić
Ivan Jambrešić
Sviđaju li ti se radionice i jesi li naučio/naučila nešto novo?
Sven: Sviđa mi se. Naučio sam u Logu naredbu repeat i kako da kornjača
nestane.
Filip: Naučio sam kopirati slike s interneta.
David: Na Logu sam naučio kako se bojaju kvadrati, a na QBasicu smo naučili
zbrajati postotak i sve drugo.
Ivana: U Logu bojati neke stvari, naredbu IF, a u Basicu mi je sve novo.
Josip: U Logu naredbu fill da se ispuni, varijable, LABEL da pišem, IF za
postavljanje uvjeta i takve naredbe.
Anto: Naučio sam kako raditi u edallu, kako bojati crteže, a Basic nikad prije
nisam znao.
Matej: Znam napravit slova u 3D, povećati slova u Wordu i mijenjati boju papira.
Dorijan: FOR u Logu i C++.
Što bi još želio/željela naučiti?
Sven: Sve o Logu i o kompjuterima i kako se dopisivati s prijateljima.
Filip: Ništa, ja već znam sve.
David: Htio bi naučiti raditi web stranice, zasad me samo to zanima.
Ivana: Htjela bih naučiti raditi na Pythonu, a u Logu malo detaljnije i teže
zadatke rješavati.
Josip: Visual Basic, C++, algoritme, internet...sve.
Elena: Kako se rade velike igrice na kompjuteru.
Anto: Htio bi još učiti Visual Basic, C++ i Flash.
Matej: Povećati slike, spremati slike, i vlastite igrice raditi. Htio bih biti
programer.
Marko: Napredni QBasic.
Dorijan: Htio bi naučiti raditi vlastite internet stranice.
Imaš li slobodnog vremena, bi li želio/ željela imati organizirano slobodno
vrijeme?
Marko: Imam još dovoljno slobodnog vremena
Dorijan: Imam dovoljno slobodnog vremena za kupanje i igranje na kompjuteru.
Ivan: Imam, onda igram igrice ili radim Logo, odem se kupati i zafrkavam svog
prijatelja Dorijana.
Elena Lukić
KAMP 2012.
Jakov Depikolozvane
Sven Ahčin
Anto Avgustinović
Zoja Nekić
Josip Zrilić
Dorijan Lendvaj
11
RAZGOVORI U KRKU...
OLIMPIJCI
Antun Razum, maturant XV. gimnazije, Zagreb
Koliko si se spremao?
Zadnjih 10 dana je bilo baš intenzivno spremanje. Inače, ako se ide na
natjecanje iz informatike treba stalno biti spreman jer su uvijek neka
događanja, natjecanja, pripreme...
Kako ti se sviđa ova vrsta priprema?
Mislim da je ova vrsta priprema dosta bitna jer treba ostati u formi. Mislim,
ako se tako intenzivno priprema onda se puno brže mogu rješavati zadaci, i
puno lakše, a mislim da je to dosta važno.
Što očekuješ dalje od natjecanja?
Nadam se najboljem, i da ću se i kao student nastaviti natjecati.
Marin Tomić, 3. razred V. gimnazije, Zagreb
Koliko si se spremao?
Rješavao sam zadatke na tjednoj bazi prije Kampa, a sad se svakodnevno
pripremamo.
Kako ti se sviđa ova vrsta priprema?
Pa ovo je super, dobro dođe da nas malo stisnu, da vježbamo i tako...
Što očekuješ dalje od natjecanja?
Malo me trema, ali nadam se najboljem.
Tomislav Tunković, maturant gimnazije Lucijana Vranjanina, Zagreb
Koliko si se spremao?
Najviše sam se pripremao ovih zadnjih deset dana na Krku. Imao sam se
prilike posvetiti malo više rješavanju zadataka za što doma baš i nemam
toliko vremena.
Koliko slobodnog vremena imate uz ove pripreme?
Ja bih rekao dosta. Onda neki odu na kupanje, neki se odu odmarati, kako
tko želi.
Što očekuješ dalje od natjecanja?
Teško je reći, vidjet ćemo kakvi će biti rezultati.
Domagoj Ćevid, 3. razred V. gimnazije, Zagreb
Kako ti se sviđaju pripreme?
Super, super je ekipa.
Koliko si se spremao?
Ne onoliko koliko sam htio. Prošao sam i na matematičku olimpijadu i time
sam se počeo prije baviti pa sam se više pripremao za to.
Što očekuješ dalje od natjecanja?
Da bude dobro, da dobro prođe. Planiram se bolje pripremati u budućnosti.
12
KAMP 2012.
RAZGOVORI U KRKU...
Dominik Gleich, 2. razred XV. gimnazije, Zagreb
Kakav je osjećaj biti dio olimpijskog tima?
Dobar. Mislim, sigurno je pozitivan osjećaj nakon što si uložio puno rada da bi se uopće kvalificirao na
olimpijadu, da napokon i prođeš jer je to zapravo i bio cilj samog
natjecanja.
Koliko si se spremao?
Tijekom cijele godine kao i svi. Riješio sam pokoji zadatak svaki tjedan i
tako...
Koliko slobodnog vremena imate uz ove pripreme?
Nađe se slobodnog vremena za pričanje, kupanje, druženje...
Što očekuješ dalje od natjecanja?
Sudjelovati. Nadam se i medalji.
VODITELJ TIMA
Matija Osrečki, student FER-a, stručni je voditelj hrvatskog tima na CEOI 2012.
Što misliš o ovogodišnjem timu?
Dobar je tim. Mislim da puno vježbaju na ovom Kampu i puno
se pripremaju. Kakvi će rezultati biti, nisam siguran, ali članovi
tima su podjednaki, bit će zanimljivo. U usporedbi s prošlom
godinom, možda su malo slabiji, ali vidjet ćemo.
Kao bivši natjecatelj imaš li kakav savjet za olimpijce, ali i
za sve ostale?
Pa olimpijci već sve znaju i više-manje su spremni. Svi ostali
trebaju vježbati i ići na što više natjecanja, uključivati se u
događanja i dolaziti na kampove, ali i naći vremena za odmor i
zabavu. Treba isprobavati razne pristupe koji nisu u okviru
algoritama. Na natjecanjima se uglavnom rade algoritmi, ali
dobro je i isprobati matematiku i kroz srednju školu se time
baviti. To na kraju pomogne.
Jesi li zadovoljan načinom i količinom priprema za
olimpijce?
Da, dosta sam zadovoljan. Uglavnom, što se tiče znanja koje
trebaju savladati, već otprije znaju puno toga. Ono što sada
trebaju je ući u kodersku praksu i puno zadataka riješiti da uđu u
formu, što uglavnom i rade i koncentrirani su na to, tako da sam
zadovoljan.
Misliš li da ćeš se snaći u ulozi voditelja?
Da, mislim da hoću. Imao sam već sličnih iskustva, ne baš ovakvih, voditi ekipu na CEOI-u, ali u
kontekstu međunarodnih natjecanja i susreta, te vođenja i koordiniranja ljudi.
Razgovore vodila: Helena Mikulić
KAMP 2012.
13
ZAVRŠNA SVEČANOST
U četvrtak, 28. lipnja 2012. svečano je zatvoren 22. kamp mladih informatičara Hrvatske –
KRK 2012. Završnu svečanost Kampa u auli OŠ F. K. Frankopana u Krku pohodili su gradonačelnik
grada Krka, Dario Vasilić, prof. i predstavnici HZTK-e, prof. dr. sc. Ante Markotić i v.d. glavne tajnice
Zdenka Terek, dipl. oec., koji su prisutnim polaznicima i organizatorima uputili čestitke i riječi srdačne
podrške.
Pozdravom svim sudionicima 22.
kampa, roditeljima, posebnim gostima i
organizatorima, HSIN-u i KRIK-u, svečanost
je započeo ravnatelj OŠ F. K. Frankopana,
Sergio Samblić, prof.: "Nadam se da ste na
ovom Kampu puno toga naučili i da ste se
lijepo proveli ovdje, da vam je bilo ugodno
družiti se, i da ćete s Krka ponijeti lijepe
uspomene." Pozvao je zatim vokalnu skupinu
učenica “Bona Forma” da izvedu prigodan
program. Skladno odjevene četiri djevojke
lijepo su otpjevale nekoliko popularnih tradicionalnih i gospel skladbi.
Predsjednik HSIN-a, Alen Spiegl, dipl. ing. naglasio je zatim
prisutnima da je na ovom Kampu održana 1. juniorska hrvatska informatička
olimpijada – JHIO 2012 i istaknuo: "U HSIN-u smatramo da je to put kojim je
potrebno ići da bi ostali ovdje gdje sada jesmo, znači raditi i s mlađim
učenicima kao što već više od 15 godina radimo s ovim velikima". Prozvao je
zatim sve natjecatelje na JHIO 2012., njih osam, i objavio nosioce prvih JHIO
medalja. Medalje su, uz pomoć tajnika i predsjednika HSIN-a, osvajačima
uručili cijenjeni gosti: brončanu ravnatelj OŠ Sergio Samblić, srebrnu
gradonačelnik Dario Vasilić i zlatnu predsjednik HZTK-e, prof. dr. sc. Ante
Markotić.
Uz tradicionalno srdačne pozdrave mladim informatičarima i
cijenjenim gostima, gradonačelnik Vasilić je naglasio: "Drago mi je da se ove vrijedne pripreme mladih
informatičara, pod nazivom Kamp mladih informatičara Hrvatske u organizaciji HSIN-a zajedno s našom
udrugom KRIK, održavaju upravo u našem gradu, u gradu Krku. Nama je to ponos grada, jer baš ona
točka na «i», završna priprema za olimpijadu i razna druga međunarodna natjecanja, radi se upravo u
gradu Krku .To znači da vam je ova škola i ovaj grad dodatna inspiracija za te vrhunske, svjetske
rezultate koje ste dosad postigli. Čestitam vam unaprijed na rezultatima koje ćete ove godine ostvariti i,
naravno, na svemu što ste do sada postigli, na svemu što ste naučili."
U ime Hrvatske zajednice tehničke kulture – HZTK, u čijem sastavu HSIN djeluje, prisutnima se
obratio predsjednik, prof. dr. sc. Ante Markotić: "Želim pozdraviti najprije vas u ime HZTK-e u čijem
sastavu danas djeluje 16 nacionalnih saveza. Međutim, treba izdvojiti HSIN, ne iz kurtoazije zato što je to
danas ovdje i vi ste ovdje prisutni, nego iz kurikuluma HSIN-a, koji, evo čuli ste koji je ovo Kamp po
redu, ja se nažalost sjećam i prvoga, što znači da imam nešto malo više godina, ali kontinuitet je velika
stvar. Ono što je veliko, ovim mladim ljudima posebno želim usaditi, to su uspjesi vaših prethodnika
upravo u vašem uzrastu. Ne znam je li vam poznato da UN danas imaju 237 zemalja, a prema nekim
podacima 222 zemlje se organizirano bave informatikom, a po uspjesima mladih informatičara u svijetu,
Hrvatska je zahvaljujući vama, peta u svijetu. Sigurno je, da baviti se informatikom nije jednostavno, ali
u svakom slučaju da je to zalog za budućnost. Rekao bih: Što smo mi bez informatičkog dijela u
sadašnjosti i budućnost?"
14
KAMP 2012.
Prof. Markotić zahvalio je zatim HSIN-u, g. Šeparoviću, predsjedniku i suradnicima HSIN-a i
nastavio je zahvalama školi domaćinu, ravnatelju i ostalima "za sve što prostorno prepuštate i ugađate
našem HSIN-u". Posebne zahvale uputio je gradonačelniku Vasiliću zaključivši da je u posljednjih 20
godina Krk prerastao u megaotok i postao pravi svjetski brend. Na kraju je zaključio: "Sukladno svojim
mogućnostima mi ćemo vas kao Zajednica i dalje pratiti".
U nastavku završne svečanosti Kampa 2012.
organizatori su uručili Priznanja HSIN-a svim sudionicima
22. kampa. Pohvalnice najuspješnijim učenicima za pokazana
znanja i zalaganje u radionicama dodijelili su voditelji, Boris
Bolšec, prof. i Nikola Dmitrović, prof. mentor.
Zahvalnice pokroviteljima i suorganizatorima za
potporu organizaciji Kampa 2012. i predavačima, stručnim
suradnicima HSIN-a, dodijelili su predsjednik HSIN-a Alen
Spiegl, dipl. ing. i organizator Kampa 2012., tajnik HSIN-a
Ivo Šeparović, dipl. ing. Na kraju su predstavili timove i
voditelje koji uskoro odlaze na međunarodne olimpijade.
Nakon još jednog nastupa mladih umjetnica s Krka,
22. kamp mladih informatičara RH završenim je proglasio ravnatelj škole domaćina OŠ F. K.
Frankopana, ravnatelj Sergio Samblić, prof.
KAMP 2012.
15
1. JUNIORSKA HRVATSKA INFORMATIČKA OLIMPIJADA – JHIO 2012.
1. juniorska hrvatska informatička olimpijada – JHIO 2012. održana je od 20. do 28. lipnja
2012. u Osnovnoj školi Frana Krste Frankopana u Krku. Ovo novo natjecanje utemeljeno je 2. lipnja
2012. odlukom Izvršnog odbora HSIN-a, a na prijedlog tajnika HSIN-a, Ive Šeparovića. Odlučeno je da
se JHIO, isto kao i HIO, održava svake godine, te da se prvi održi u 2012. godini, u sklopu Kampa mladih
informatičara Hrvatske u Krku.
Prema utvrđenim pravilima JHIO-a, na 1. JHIO pozvano je osam (8) učenika temeljem rezultata
Hrvatskog otvorenog natjecanja u informatici – HONI 2011./2012., uz uvjet da smiju imati najviše 16
godina na dan održavanja međunarodnog natjecanja na kojem će nastupiti.
Na 1. JHIO-u u Krku sudjelovalo je 7 juniora i jedna juniorka. U dva su se dana natjecali u
rješavanju 5 (2+3) originalnih, problemskih zadataka na algoritamskoj osnovi.
Najuspješnija trojica natjecatelja osvojila su JHIO medalje, i osigurali si mjesto u hrvatskom
juniorskom timu u koji je ušao i natjecatelj plasiran na 4. mjesto, kako slijedi:
1.
Domagoj Bradač
8. raz.
OŠ Otok, Zagreb
ZLATNA MEDALJA
2.
Branimir Filipović
1. raz.
XV. gimnazija, Zagreb
SREBRNA MEDALJA
3.
Nikola Pintarić
8. raz.
OŠ I. G. Kovačića Sv. Juraj na Bregu
BRONČANA MEDALJA
4.
Vedran Kurdija
7. raz.
OŠ Mladost, Zagreb
-
B. Filipović, D. Bradač, N. Pintarić i V. Kurdija
Hrvatska informatička juniorska reprezentacija u 2012. godini nastupit će na dva međunarodna
natjecanja, i to:
Juniorska balkanska informatička olimpijada – JBOI 2012 (Ohrid, Makedonija, 9.-15. kolovoza 2012.)
ITI Shumen 2012, (Shumen, Bugarska, 23.-26. studenog 2012.)
16
KAMP 2012.
Program 1. JHIO proveden je u sklopu 22. kampa mladih informatičara, kroz devet dana. Za
pripreme i natjecanja (2 ispita) mladih olimpijaca organizirana je posebna radionica Olimpijci juniori koju
je vodio Nikola Dmitrović, prof. mentor iz XV. gimnazije u Zagrebu.
PROGRAM
1. JUNIORSKE HRVATSKE INFORMATIČKE OLIMPIJADE
Krk, 20.-28. lipnja 2012.
20.-24. 06. 2012.
09.00-11.30
11.30-13.00
13.00
13.30-14.30
15.00-19.30
19.30
20.00-21.00
Rješavanje zadataka s prošlih natjecanja
Teoretska predavanja
Ručak
Rješavanje zadataka vezanih uz predavanje
Slobodno vrijeme
Večera
Probna natjecanja
25. 06.2012. (ponedjeljak)
09.00-11.00 Prvi ispit
10.30-13.00 Rezultati, prezentacija i analiza algoritama zadataka s prvog izbornog ispita
13.00
Ručak
13.00-19.00 Slobodno vrijeme
19.30
Večera
20.00-21.00 Slobodno vrijeme
26. 06. 2012.
09.00-11.30
11.30-13.00
13.00
13.30-14.30
15.00-19.30
19.30
20.00-21.00
Rješavanje zadataka sa županijskih natjecanja
Teoretska predavanja
Ručak
Rješavanje zadataka vezanih uz predavanje
Slobodno vrijeme
Večera
Rješavanje zadataka s HONI-ja
27. 06. 2012.
09.00-11.00
10.30-13.00
13.00
14.30-15.00
15.00-19.00
19.30
20.00-21.00
Pripremno natjecanje – timsko
Teoretsko predavanje
Ručak
Analiza pogrešaka u rješavanju zadataka s prvog izbornog ispita
Slobodno vrijeme
Večera
Slobodno vrijeme
28. 06.2012. (četvrtak)
09.00-12.00 Drugi ispit
12.00-13.00 Rezultati, prezentacija i analiza algoritama zadataka s drugog izbornog ispita
13.00
Ručak
14.00-18.00 Slobodno vrijeme
18.00 ...
Proglašenje rezultata 1. JHIO, dodjela olimpijskih medalja i
proglašenje hrvatskog informatičkog juniorskog tima za 2012. godinu
KAMP 2012.
17
1. JUNIORSKA HRVATSKA INFORMATIČKA OLIMPIJADA
UKUPNI REZULTATI
Mj.
NATJECATELJ
RAZ.
ŠKOLA/KLUB
BODOVI BODOVI
1. dan
2. dan
BODOVI
UKUPNO
1.
Domagoj Bradač
8.
OŠ Otok, Zagreb
110
225
335
2.
Branimir Filipović
1.
XV. gimnazija, Zagreb
180
141
321
3.
Nikola Pintarić
8.
OŠ I. G. Kovačića, Sv. Juraj na Bregu
120
198
318
4.
Vedran Kurdija
7.
OŠ Mladost, Zagreb
110
201
311
5.
Robert Benić
7.
ZRS/Udruga inf. Božo Težak, Zagreb
200
111
311
6.
Stjepan Požgaj
8.
OŠ Belica, Belica
120
132
252
7.
Marija Gegić
8.
OŠ Retkovec, Zagreb
170
64
234
8.
Vilim Lendvaj
6.
RIK Popovača, Popovača
120
82
202
Prvog dana natjecanja, 25. lipnja, natjecatelji su 120 minuta rješavali 2 zadatka, a drugi dan, 28.
lipnja, rješavali su 3 zadatka 180 minuta. Ukupan zbroj osvojenih bodova 1. i 2. dana natjecanja odredio
je plasman svakog natjecatelja na finalnoj rang listi 1. JHIO-a.
Učenici Vedran Kurdija i Robert Benić u ukupnom su poretku osvojili jednak broj bodova, i 4.
mjesto. Zbog toga su poslije ručka (u 15.00 sati) pristupili dodatnom natjecanju koje se sastojalo od
rješavanja jednog zadatka u trajanju od 90 minuta. Temeljem većeg broja osvojenih bodova na
“pripetavanju”, Vedran Kurdija zauzeo je 4. mjesto s 33 boda, a Robert Benić 5. mjesto s 20 bodova u
ukupnom poretku.
Program 1. JHIO i provedbu ispita realizirali su prijašnji uspješni hrvatski informatički olimpijci:
Matija Osrečki, ing. i Ivan Katanić, uz potporu Bojana Antolovića, dipl. ing. i Stjepana Glavine, te uz
administraciju natjecanja Krešimira Malnara. Evaluaciju ovog natjecanja na evaluatoru HSIN-a obavili
su: Tomislav Novak, dipl. ing. i Bruno Rahle.
U Krku, 28. lipnja 2012.
18
Organizator JHIO 2012.
Ivo Šeparović, dipl. ing.
KAMP 2012.
POZVANI UČENICI NA JHIO 2012.
Odlukom Izvršnog odbora HSIN-a od 2. lipnja 2012., temeljem rezultata postignutim na
Hrvatskom otvorenom natjecanju u informatici HONI 2011./12., na 1. juniorsku hrvatsku informatičku
olimpijadu JHIO 2012. pozvano je 8 učenika (do 16 godina starosti na dan održavanja međunarodnih
natjecanja za koje se vrši izbor – JBOI 2012., Ohrid, Makedonija, 9.-15. kolovoza 2012., te ITI Shumen
2012, 23.-26. studenog 2012.) kao slijedi:
R.
br.
1.
2.
3.
4.
5.
6.
7.
8.
Ime
Prezime
Raz.
Škola/klub
Robert
Domagoj
Branimir
Marija
Vedran
Vilim
Nikola
Stjepan
Benić
Bradač
Filipović
Gegić
Kurdija
Lendvaj
Pintarić
Požgaj
7.
8.
1.
8.
7.
6.
8.
8.
ZRS/Udruga informatičara Božo Težak, Zagreb
OŠ Otok, Zagreb
XV. gimnazija, Zagreb
OŠ Retkovec, Zagreb
OŠ Mladost, Zagreb
RIK Popovača
OŠ I. G. Kovačića, Sv. Juraj na Bregu
OŠ Belica, Belica
Godina
rođenja
1998.
1997.
1997.
1998.
1998.
1999.
1997.
1997.
PRAVILA 1. JUNIORSKE HRVATSKE INFORMATIČKE OLIMPIJADE
JHIO 2012.
1. juniorska hrvatska informatička olimpijada JHIO 2012. održat će se u Krku, od 20. do 28.
lipnja 2012., tijekom održavanja Kampa 2012.
Na JHIO 2012. sudjeluje osam (8) učenika pozvanih temeljem rezultata Hrvatskog otvorenog
natjecanja u informatici HONI 2011./12., a koji imaju najviše 16 godina na dan održavanja međunarodnih
natjecanja za koje se vrši izbor:
Juniorska balkanska informatička olimpijada JBOI 2012.
(Ohrid, Makedonija, 9.-15. kolovoza 2012.)
ITI Shumen 2012,
(Shumen, Bugarska, studeni 2012.)
Program JHIO provest će se kroz devet dana, a sastojat će se od stručnih predavanja, rješavanje
zadataka sa značajnih međunarodnih natjecanja, i dva izborna ispita (natjecanja).
Svi sudionici JHIO 2012. obavezni su prisustvovati cjelokupnom programu priprema te svaki
izostanak bez opravdanog razloga utječe na nemogućnost sudjelovanja u hrvatskom timu.
KAMP 2012.
19
Radno okruženje i provedba natjecanja
Natjecanje na JHIO održava se u dva dana. Prvog dana natjecanje traje 90 minuta pri čemu se rješavaju
dva (2) problemska zadatka, dok drugog dana natjecanje traje 120 minuta i rješavaju se dva (2)
problemska zadatka. Dopušteni programski jezici za rješavanje zadataka su: Pascal, C i C++. Sva
natjecateljska računala biti će opremljena samo Linux operacijskim sustavom. Prije početka JHIO
natjecanja, održat će se probno natjecanje u trajanju od jednog sata s 1-2 zadatka, radi prilagođavanja
učenika radnoj okolini.
Sljedeći softver će biti instaliran:
• Ubuntu distribucija Linuxa
• web preglednik: Firefox, Chrome
• editori: joe, vim, emacs, gedit, nano, scite, codeblocks, geany
• kompilatori: gcc >= 4.2, g++ >= 4.2, Free Pascal >= 2.2 sa dokumentacijom
• debuggeri: gdb, ddd
• STL dokumentacija
Za vrijeme natjecanja, natjecateljima će biti dostupan papir i pisaći pribor. U slučaju da natjecatelj želi
koristiti vlastitu tipkovnicu, treba ju predati tehničkom osoblju na provjeru prije početka probnog
natjecanja. Dozvoljeno je korištenje samo jednostavnih tipkovnica.
Natjecatelj ne smije unositi nikakve elektroničke uređaje, medije za pohranu podataka, uređaje za
komunikaciju, knjige, priručnike ili bilo kakav tiskani materijal.
Svaki natjecatelj će imati unaprijed određeno radno mjesto koje će biti označeno brojem. Nakon smještaja
za radno mjesto, natjecatelj će čekati službeni početak natjecanja i pri tom ne smije dirati računalo,
tipkovnicu, miša ili bilo koji drugi natjecateljski materijal.
Zadaci
Svi zadaci na Olimpijadi dizajnirani su da budu algoritamske prirode. U nekim zadacima efikasnost, tj.
brzina algoritma ima najveći udio u pisanju zadataka. Test podaci su unaprijed osmišljeni i koncipirani na
način da će programi koji koriste neke manje efikasne, ali valjane algoritme, također dobiti određeni broj
bodova. Test podaci biti će prilagođeni tako da razlikuju različite nivoe efikasnosti unutar zadanih
ograničenja. Stoga, natjecatelj ima mogućnost pokušaja rješavanja zadataka s laganim test primjerima
iako ne mora znati riješiti zadatak za složene primjere. Prilikom rješavanja zadataka, natjecatelj smije
koristiti olovku i papir za skiciranje i razradu algoritma.
• STANDARDAN ZADATAK (BATCH) – rješenje zadatka je izvorna datoteka (source) od
programa koji čita zadane podatke iz standardnog ulaza (stdin) i ispisuje traženi rezultat na
standardni izlaz (stdout).
• INTERAKTIVAN ZADATAK (REACTIVE) – rješenje zadatka je izvorna datoteka od
programa koji obavlja dijalog sa suprotstavljenim programom izrađenim od strane
organizatora. Pri tome natjecateljev program koristi standardni ulaz i izlaz za komunikaciju sa
suprotstavljenim programom.
• ZADATAK SAMO S IZLAZOM (OUTPUT-ONLY) – rješenje zadatka je skup datoteka koje
sadrže izračunate podatke. Natjecatelj isporučuje zip ili tgz arhivu koja sadrži te datoteke ili
barem neke od njih.
Za svaki zadatak biti će naznačeno memorijsko ograničenje. To se odnosi na sveukupnu zauzetost
memorije (izvršni kôd, stack, heap...)
Ulazni i izlazni podaci sastoje se od jednog ili više redova koji završavaju s end-of-line znakom,
uključujući i zadnji red. Svaki red sadrži niz ispisnih znakova od ASCII-32 do ASCII-126. Format
pojedinih ulaznih i izlaznih podataka biti će definiran unutar zadatka.
20
KAMP 2012.
Upiti o zadacima
Tijekom natjecanja, natjecatelj smije zatražiti pojašnjenje nekih elemenata zadatka. Pitanja se predaju
putem servera preko forme predviđene za upite. Pitanje mora biti definirano tako da se može odgovoriti
sa "da" ili "ne". Znanstveni odbor nakon primitka pitanja može dati slijedeće odgovore:
• "DA"
• "NE"
• "BEZ KOMENTARA"
• "PROČITATI PONOVO TEKST ZADATKA"
Evaluator / poslužitelj
Natjecanje se odvija u distribuiranom sustavu gdje su natjecateljska računala povezana u lokalnu mrežu s
natjecateljskim poslužiteljem / evaluatorom. Natjecateljsko računalo ima pristup određenim servisima
koje nudi natjecateljski poslužitelj: sustav za natjecanje, pristup dokumentaciji te pristup pisaču.
Natjecatelj rješava zadatak na svom računalu te rješenje šalje na evaluator.
Natjecateljska računala neće biti povezana međusobno niti na Internet. Svaki pokušaj natjecatelja za
uspostavom takve veze, smatrat će se varanjem, te mogućom diskvalifikacijom. U slučaju problema rada
mreže, natjecatelj ne smije sam pokušavati otkloniti kvar, već mora obavezno pozvati pripadnika
tehničkog osoblja.
Ispisivanje
Ispisivati se mogu samo tekstualne datoteke. Nakon zamolbe natjecatelja za ispisom preko servera,
pripadnik tehničkog osoblja dostavit će ispisane materijale. Natjecatelj ne smije sam napuštati radno
mjesto kako bi uzeo ispisane materijale. Ograničenja ispisa su 10 stranica i 50 KB.
Slanje / testiranje / spremanje
Slanje
Natjecatelj rješenja šalje na evaluator putem Web preglednika. Programski jezik koji je koristio
natjecatelj evaluator određuje pomoću ekstenzije (*.pas; *.c; *.cpp) ili odabirom programskog jezika iz
padajućeg izbornika. Rješenja mogu biti poslana na evaluator za vrijeme trajanja cijelog natjecanja.
Ukoliko natjecatelj pošalje više od jednog rješenja za isti zadatak, kroz sučelje "submit" ima mogućnost
odabira rješenja koje će se u konačnici vrednovati. Ako to ne učini, bodovat će se posljednje poslano
rješenje za taj zadatak.
Testiranje
Natjecatelj može testirati svoja rješenja u evaluatorskom okruženju koristeći sučelje za testiranje.
Prilikom testiranja, natjecatelj mora poslati rješenje i ulazne podatke koje želi testirati. Ograničenje
ulaznih podataka koje natjecatelj treba poštovati, nalazit će se na sustavu. Nakon izvršavanja, sustav će
ispisati vrijeme izvođenja, izlazne podatke i eventualne greške. Neće, međutim, ispisati podatke o točnosti
izvođenja.
Spremanje
Natjecatelji imaju mogućnosti spremiti kopije svoje datoteka tijekom natjecanja na evaluator. Natjecatelj
može napraviti do 100 kopija, a veličina jedne tako spremljene datoteke ne smije prelaziti 1 MB. Ukupna
veličina svih spremljenih datoteka na evaluatoru ne smije prelaziti 10 MB.
Prošireni rezultati
Nakon slanja rješenja na evaluator, sustav će natjecatelju dojaviti rezultat izvođenja na primjerima test
podataka zadanim u tekstu zadatka. U nekim slučajevima, autori zadataka mogu se odlučiti natjecateljima
ponuditi "proširene rezultate". Na zadacima na kojima se nudi mogućnost proširenih rezultata natjecatelji
će uz rezultat izvođenja na primjerima test podataka dobiti i združene rezultate izvođenja na nekim test
podacima. Rezultati će biti združeni u nekoliko kategorija (točno, krivo, vremensko ograničenje) gdje će
za svaku kategoriju pisati broj rezultata koji se nalaze u toj kategoriji. Moguće je ograničenje na broj
slanja po zadatku na kojima se nude prošireni rezultati.
KAMP 2012.
21
Završetak natjecanja
15, 5 i 1 minutu pred završetak natjecanja biti će izdano upozorenje o preostalom vremenu. Po završetku
natjecanja, natjecatelj mora odmah prekinuti sve aktivnosti i čekati za stolom bez diranja računala,
tipkovnice, miša i ostalih natjecateljskih materijala. Na objavu organizatora, natjecatelj će napustiti
dvoranu prema uputama.
Prevođenje rješenja
Rješenja poslana na sustav prevodit će se sa sljedećim argumentima:
• za C:
gcc -o xyz xyz.c -std=c99 -O2 -s -static -lm -x c
g++ -o xyz xyz.cpp -O2 -s -static -lm -x c++
• za C++:
• za Pascal: fpc -O2 -XS -Sg xyz.pas
Ocjenjivanje
Svaki zadatak ima nekoliko grupa od jednog ili više test primjera. Svaka grupa nosi određen broj bodova,
a bodovi za tu grupu dobit će se ako i samo ako svaki test primjer u njoj bude točno riješen i pritom
poštuje zadana vremenska i memorijska ograničenja iz teksta zadatka. Broj bodova na zadatku bit će
zbroj bodova po grupama test primjera tog zadatka. Ukupni broj bodova biti će zbroj bodova pojedinih
zadataka. Bodovat će se samo oni zadaci koji su poslani i zadovoljili evaluaciju od strane evaluatora.
Pravila ponašanja i varanje
Svaki natjecatelj koji ometa druge, oštećuje opremu, pristupa drugim računalima, komunicira s drugim
natjecateljima ili prepisuje tuđi kod podložan je diskvalifikaciji s natjecanja.
Varanjem će se smatrati ako natjecateljev program pokazuje sljedeće karakteristike:
• pristupa mreži
• stvaranje novih procesa (fork())
• otvara i kreira datoteke
• napada ili kompromitira sigurnost sustava ili servera
• izvršava druge programe
• mijenja prava pristupa datotekama
• iščitava informacije datotečnog sustava
• poziva sistemske procedure koje nisu vezane uz rješavanje zadataka
Žalbe
Nakon završetka natjecanja i objavljivanja rezultata, moguće je u roku od 30 minuta podnijeti žalbu
pisanim putem. Znanstveni odbor će razmotriti žalbu i ukoliko je ustanovljena greška u sustavu evaluacije
rješenja, sva predana rješenja za taj zadatak će se ponovo reevaluirati. Reevaluirana rješenja odnosit će se
na sve natjecatelje.
Nagrade i priznanja
Svi sudionici će dobiti priznanja za sudjelovanje, a najbolji medalje i diplome. Osvajači medalja na JHIOu bit će dodatno nagrađeni pozivom na Zimsku školu informatike 2013. bez natječaja.
U Zagrebu, lipanj 2012.
22
Znanstveni odbor
1. juniorske hrvatske informatičke olimpijade – JHIO 2012.
KAMP 2012.
RADIONICA: OLIMPIJCI JUNIORI
Predavač: Nikola Dmitrović, prof. mentor
Polaznici:
1. Robert Benić
2. Domagoj Bradač
3. Branimir Filipović
4. Marija Gegić
5. Vedran Kurdija
6. Vilim Lendvaj
7. Nikola Pintarić
8. Stjepan Požgaj
PRIPREME ZA JHIO
Značajna novost i dopuna programa ovogodišnjeg Kampa, bilo je održavanje 1. juniorske
hrvatske informatičke olimpijade – JHIO 2012. Kako bi se sudionici 1. JHIO-a 2012. što bolje pripremili
za ovo i buduća međunarodna natjecanja, tijekom Kampa su se organizirale pripreme i razne simulacije
natjecanja. Pripreme su bile organizirane i planski vođene tijekom cijelog dana u posebnoj informatičkoj
učionici kako bi se sudionici natjecanja zajednički družili i stjecali natjecateljsko iskustvo.
Pripreme su bile podijeljene u tri dijela. Jutarnji i večernji dio sam osobno vodio, dok je
organizacija i vođenje podnevnog dijela bila prepuštena članovima seniorskog olimpijskog tima koji su se
tijekom Kampa pripremali za CEOI i IOI 2012 te prisutnim predavačima na Kampu.
U jutarnjem terminu, koji je trajao od 9 do 11:30 sati, polaznici su u većini slučajeva rješavali
zadatke s prošlih natjecanja. Zadaci su se rješavali na različite načine, pri čemu su polaznici razmjenjivali
ideje i uz voditeljevu pomoć dolazili do optimalnih rješenja.
Podnevni dio, koji je trajao od 11:30 do 14:30 (s pauzom za ručak), bio je rezerviran za teoretska
predavanja te rješavanje tipičnih zadataka vezanih uz obrađivano područje.
Nakon popodnevnog kupanja i odmora te večere, za natjecatelje su bila organizirana probna
natjecanja, razne simulacije i natjecanja timova. Naravno, neke od ovih dionica su bile i drugačije
organizirane, ovisno o trenutnoj situaciji i raspoloženju sudionika i voditelja.
Pogledajmo detaljno (po terminima) program priprema koji su prošli sudionici 1. JHIO-a 2012.
Dan 1.
• upoznavanje s planom priprema, motivacijsko predavanje i uvodno zagrijavanje uz rješavanje
jednostavnih zadataka;
• u večernjem terminu je organizirano natjecanje u brzom rješavanju kratkih zadataka.
Dan 2.
• rješavanje drugih i trećih zadataka s HONI-ja 2011./2012.;
• teoretsko predavanje o rekurzijama, voditelj priprema: Dominik Gleich;
• zajedničko rješavanje zadatka Hitori s Državnog natjecanja 2012. za OŠ.
KAMP 2012.
23
Dan 3.
• simulacija natjecanja u trajanju od tri sata sa zadacima sa starih HONI-ja. Natjecanje je
provedeno na HSIN-ovom evaluatoru u okruženju kakvo je bilo na samom JHIO-u;
• teoretsko predavanje o geometriji, voditelj priprema: Matija Bucić;
• svaki natjecatelj je trebao odabrati jedan zadatak koji je susreo na nekom od dosadašnjih
natjecanja, a koji je imao veliki utjecaj na njegov natjecateljski razvoj. Marija Gegić i Domagoj
Bradač su predstavili svoje odabrane probleme i nakon provedene diskusije o raznim rješenjima,
predstavili svoja originalna rješenja.
Dan 4.
• analiza i predstavljanje rješenja zadataka koji su bili zadani na simulaciji prethodnog dana;
• teoretsko predavanje o logaritamskoj strukturi, voditelj priprema: Domagoj Ćevid;
• Organizirano je i provedeno timsko natjecanje u kome su natjecatelji bili podijeljeni u timove na
osnovu rezultata simulacije iz prethodnog dana. Ovo timsko natjecanje je po svom obliku najbliže
teniskom natjecanju Davis Cup. Naime, jedan natjecatelj u timu ima oznaku „prvog programera“,
drugi ima oznaku „drugog programera“ dok preostala dva natjecatelja u timu imaju ulogu
„parova“. Po uzoru na Davis Cup, natjecatelji iz suparničkih timova rješavaju zadatak, a
pobjednik „meča“ je onaj koji prije točno riješi postavljeni problem.
Dan 5.
• rješavanje zadataka s državnog i županijskog natjecanja 2012. OŠ (Avioni, Mancala, Hittori,
Othello)
• teoretsko predavanje o grafovima i stablima, voditelj priprema: Matija Milišić;
• slobodna večer za opuštanje uz organizirano praćenje nogometne utakmice
Dan 6.
• prvi JHIO ispit u trajanju od 120 minuta (2 zadatka)
• slobodno vrijeme za odmor od natjecanja;
• prezentacija rješenja zadataka s prvog dana,
voditelji prezentacije: Matija Osrečki i Ivan Katanić.
Dan 7.
• kako su se pripreme primicale ključnom trenutku 1. JHIO-a, tako su i zadaci postajali sve teži;
ovaj put su se rješavali zadaci sa županijskog natjecanja 2012. za srednje škole (M, Klingonci,
Parlament)
• rješavanje zadataka kroz koje je napravljen pregled raznih teoretskih ideja, voditelji priprema:
Marin Tomić, Dominik Gleich;
• rješavanje petih zadataka s HONI-ja 2011./2012.
24
KAMP 2012.
Dan 8.
• organizirano je drugo timsko pripremno natjecanje po uzoru na Davis Cup;
• teoretsko predavanje o Dijkstrinom i sličnim algoritmima, voditelj priprema: Antun Razum;
• motivacijsko predavanje i analiza pogrešaka učinjenih prvog dana natjecanja; slobodno vrijeme
za odmor i pripremu prije drugog dana natjecanja.
Dan 9.
• drugi JHIO ispit u trajanju od 180 minuta (3 zadatka) i dodatno natjecanje za 2 učenika s istim
brojem bodova u trajanju od 90 minuta (1 zadatak).
• proglašenje hrvatskog informatičkog juniorskog tima za 2012. godinu.
Nikola Dmitrović
KAMP 2012.
25
NIKOLA DMITROVIĆ, prof. mentor
RIJEČ JE O ZBILJA DOBROJ IDEJI
Ove se godine prvi puta održala Juniorska hrvatska informatička olimpijada – JHIO 2012, a vi ste
bili voditelj priprema olimpijaca juniora. Kako ste zadovoljni organizacijom?
Definitivno, riječ je o jednom novom projektu u koji se Hrvatski savez informatičara upustio i vjerujemo
da je to pravi način kako mlade snage koje dolaze iz osnovnih škola motivirati i pokrenuti da budu još
uspješniji i da se bave ovim poslom zbog kojeg smo mi, prvenstveno, ovdje s njima. Trenutno je u
konkurenciji na 1. juniorskoj hrvatskoj informatičkoj olimpijadi osam učenika koji su tokom ovih 9 dana
izbornih priprema stekli nova znanja i iskustva. Možemo reći da su smireniji i da su vidjeli kako izgledaju
prave natjecateljske situacije u kojima se trebaju nositi s dosta težim zadacima nego što to obično biva u
njihovim karijerama.
Mislite li da je dobro da se natjecanje održava za vrijeme Kampa ili bi se trebalo naknadno
organizirati?
Riječ je ipak o prvoj takvoj situaciji. Kad završi, sjest ćemo i analizirati sve, ali ovdje zasad nisam
primijetio ništa posebno loše u ovakvom konceptu. Ekipa u jednoj opuštenoj atmosferi provede rad u
druženju i učenju, a ovakvo natjecanje možda je manje stresno kad nije u nekom širem okruženju u koje
su baš zbog toga došli. Ovako ih popodnevna kupanja malo opuste.
Što očekujete u budućnosti od natjecatelja?
Velike stvari. Definitivno riječ je o generaciji koja u ovom trenutku može i zna stvari koje su do prije 10
godina znali samo pravi olimpijci, posebno kad držimo pripreme s njima. Bivši olimpijci koji su nam bili
u gostima, čudili su se kako objašnjavamo neke teme za koje su oni čuli tek u 3. ili 4. razredu na
pripremama za velike olimpijce, a današnji klinci već mogu pratiti takve stvari. Među ovih osam ima 7-ih
i 8-ih razreda, oni će sada ulaziti u sustav srednjih škola i, vjerujemo, zamjenjivati ove naše, trenutno
aktivne, "velike" olimpijce.
26
KAMP 2012.
Profesor-mentor ste u XV. gimnaziji i vodite pripreme za natjecatelje iz informatike. Kako se te
pripreme razlikuju od ovih na Kampu?
Pripreme su općenito koncipirane tako da najbolje odgovaraju pojedincu. Pokušavamo složiti skupine
tako da u jednoj grupi svi imaju relativno jednako predznanje. Ovdje na Kampu se može dobiti jako
nehomogena grupa u kojoj je netko jako istaknut, a netko se tek uhodava, ali želi čuti o algoritmima i
sličnom. Na Kampu nekad treba razdvojiti grupu, pa jednima pričati niže stvari, a drugima više stvari,
znači diferencirati rad, kao što smo to učinili na pripremama u XV. gimnaziji. Na Kampu su pripreme
svakodnevne, određene teme se održavaju u zadano vrijeme, dok se u školi pripreme ostvaruju jednom
tjedno po 2 sata. Pripreme se pojačavaju pred natjecanja kada se održavaju češće, po 3 ili 4 sata, a nekada
traju i cijeli dan.
Vodite li pripreme i za starije olimpijce?
Ne, jako dobar posao s njima rade bivši olimpijci, Matija Osrečki i Ivan Katanić, s ekipom koja je jako
motivirana, aktivna i željna raditi. Zanimljivo je da se u timu za IOI nalaze i natjecatelji koji idu na
Svjetsku matematičku olimpijadu, pa se te pripreme kombiniraju. Na informatici se rade matematičke
stvari, informatičke stvari na matematici. Jedna interdisciplinarnost je na djelu.
Na Kampu također vodite i radionicu C++/Python na koju vam dolazi mnogo mladih
osnovnoškolaca. Vidite li u njima neke buduće natjecatelje?
Ima, ima potencijala definitivno. Općenito na Kampu, osoba koja dođe, dobije dodatnu volju za rad, ona
je nakon Kampa prepuna ideja, prepuna motiva, prepuna želje da sama nešto istražuje i radi. Mi ovdje, u
relativno kratkom vremenu, možemo pokazati osnove, motivirati i započeti tu priču, a oni, ako su
zainteresirani, to onda nastave. U većini slučajeva to dobro ispadne, a nekad završi i s nekim medaljama
na olimpijadama, što nije tako rijetko.
A što se tiče ove grupe pokušali smo spojiti C++ i Python, pokazati kako osmisliti neku ideju i kako to
realizirati u stvarnosti, objasniti koje su razlike između jezika C++ i Pythona. U kojem jeziku se može
nešto brže, elegantnije napraviti. Jednostavno smo htjeli da shvate kako jednu stvar mogu napraviti na
više različitih načina.
Uz sve te pripreme imate li slobodnog vremena?
Pored toga što sam voditelj radionica, voditelj sam i pedagoškog dijela za određen dio učenika i svaki dan
se pobrinem da odemo na plažu. Kako su velike vrućine zavladale baš u vrijeme kad smo mi došli, što je s
jedne strane pozitivno, a s druge je najveća vrućina baš onda kada smo mi trebali ići na plažu, sve smo to
malo pomakli prema večeri tako da smo svaki dan uspjeli doći na plažu. Plivanje, picigin, kupanje, to
nam je ispunjavalo dan. Posebno se ova ekipa JHIO-vaca zajedno držala i pokušavao sam ih motivirati i
davati im savjete kako se nositi s tremom koja je definitivno prisutna kod nekih natjecatelja.
Budući da je to njima prvo veliko natjecanje, mislite li da su ga dovoljno ozbiljno shvatili, ili možda
još ne razumiju koliko je to veliko?
Neki ga čak shvaćaju i preozbiljno. Kod nekih je trema prisutna puno više nego što bi trebala, ali to sve
treba pripisati neiskustvu i njihovoj mladosti, no ozbiljno su to shvatili. Shvaćaju to prilikom da se
dokažu i da se sve ono što su zadnjih nekoliko godina, kao natjecatelji, radili i postigli naplati putovanjem
u drugu zemlju gdje će se natjecati sa svojim vršnjacima iz drugih zemalja. Tako da je motiv definitivno
prisutan.
Imate li nekakva očekivanja za razvoj ovog natjecanja?
Ovih 10 dana mi je dalo dojam da je riječ o zbilja dobroj ideji. Okupiti najbolje natjecatelje mlađe od
određenog broja godina, kako to međunarodna pravila zahtijevaju, je jako korisno i ne samo za njih kao
pojedince, već i za naš sustav, da ga možemo kroz vrijeme oplemenjivati i obogaćivati s novim ljudima
da taj sustav ne bi negdje stao, prestao postojati i ugasio se kad neki od ovih naših "velikih" olimpijaca
izađu iz te priče.
Razgovor vodila: Helena Mikulić
KAMP 2012.
27
POPIS POLAZNIKA PO RADIONICAMA
ALGORITMI POČETNI – Matija Bucić
R. br. Ime i prezime
Škola, Općina / Grad
Razred
1.
Josip Klepec
I. osnovna škola Vrbovec
6.
2.
Petar Orlić
OŠ J. Račića, Zagreb
8.
3.
Martin Rosenzweig
OŠ I. Filipovića, Zagreb
8.
4.
Mario Vuzem
Srednja škola Krapina, Krapina
2.
5.
Mislav Gucunski
III. gimnazija, Osijek
3.
6.
Ivan Šego
XV. gimnazija, Zagreb
1.
7.
Luka Barišić
XV. gimnazija, Zagreb
1.
8.
Helena Mikulić
XV. gimnazija, Zagreb
2.
9.
Pavao Jerebić
III. gimnazija, Split
1.
10.
Ivan Lazarić
Gimnazija, Pula
1.
11.
Marko Lazarić
OŠ Centar, Pula
7.
12.
Ivana Žužić
Gimnazija A. Mohorovičića, Rijeka
1.
13.
Tonko Sabolčec
XV. gimnazija, Zagreb
1.
ALGORITMI NAPREDNI – Marin Smiljanić
R. br.
28
Ime i prezime
Škola, Općina / Grad
Razred
1.
Mislav Gucunski
III. gimnazija, Osijek
3.
2.
Filip Keri
XV. gimnazija, Zagreb
2.
3.
Ivan Lazarić
Gimnazija, Pula
1.
4.
Mihael Liskij
XV. gimnazija, Zagreb
1.
5.
Zvonimir Medić
XV. gimnazija, Zagreb
3.
6.
Neven Miculinić
Udruga darovitih informatičara
Rijeke, Rijeka
3.
7.
Tonko Sabolčec
XV. gimnazija, Zagreb
1.
8.
Kristijan Vulinović
Gim. A. Mohorovičića, Rijeka
2.
9.
Ivan Šego
XV. gimnazija, Zagreb
1.
10.
Luka Barišić
XV. gimnazija, Zagreb
1.
11.
Ivana Žužić
Gim. A. Mohorovičića, Rijeka
1.
KAMP 2012.
BASIC početni – Mislav Balunović
R. br. Ime i prezime
Škola, Općina / Grad
Razred
1.
Marko Žužić
OŠ F. K. Frankopana, Vrh
5.
2.
Jakov Depikolozvane
OŠ F. K. Frankopana, Vrh
5.
3.
David Brusić
OŠ F. K. Frankopana, Malinska
4.
4.
Ivana Milčetić
OŠ F. K. Frankopana, Malinska
4.
5.
Josip Zrilić
OŠ F. K. Frankopana, Malinska
4.
6.
Filip Crnčić
OŠ F. K. Frankopana, Dobrinj
4.
7.
Anto Avgustinović
OŠ F. K. Frankopana, Malinska
4.
8.
Elena Lukić
OŠ F. K. Frankopana, Malinska
4.
9.
Maria Elena Hržić
OŠ F. K. Frankopana, Malinska
4.
10.
Zoja Nekić
OŠ F. K. Frankopana, Krk
4.
11.
Benjamin Marić
OŠ F. K. Frankopana, Krk
4.
BASIC napredni – Marijan Jurešić, dipl. ing. / Mislav Balunović
R. br. Ime i prezime
KAMP 2012.
Škola, Općina / Grad
Razred
1.
Karlo Sintić
OŠ F. K. Frankopana, Krk
6.
2.
Fran Vasilić
OŠ F. K. Frankopana, Krk
6.
3.
Marina Samblić
OŠ F. K. Frankopana, Krk
6.
4.
Lucija Žužić
OŠ F. Frankovića, Rijeka
6.
5.
Luka Braut
OŠ F. K. Frankopana, Krk
5.
6.
Lorenzo Šamanić
OŠ F. K. Frankopana, Krk
5.
7.
Luka Gabriel Rošić
OŠ F. K. Frankopana, Vrh
5.
8.
Nikica Stijepić
OŠ F. K. Frankopana, Vrh
5.
29
LOGO početni – Helena Mikulić
R. br. Ime i prezime
Škola, Općina / Grad
Razred
1.
Elena Lukić
OŠ F. K. Frankopana, Malinska
4.
2.
Maria Elena Hržić
OŠ F. K. Frankopana, Malinska
4.
3.
Anto Avgustinović
OŠ F. K. Frankopana, Malinska
4.
4.
David Brusić
OŠ F. K. Frankopana, Malinska
4.
5.
Zoja Nekić
OŠ F. K. Frankopana, Krk
4.
6.
Filip Crnčić
OŠ F. K. Frankopana, Dobrinj
4.
7.
Benjamin Marić
OŠ F. K. Frankopana, Krk
4.
8.
Josip Zrilić
OŠ F. K. Frankopana, Malinska
4.
9.
Ivana Milčetić
OŠ F. K. Frankopana, Malinska
4.
LOGO napredni – Mihael Liskij
R. br. Ime i prezime
Škola, Općina / Grad
Razred
1.
Ivan Jambrešić
ZRS / Udruga programera S
VIJUGOM, Zagreb
3.
2.
Lorenzo Šamanić
OŠ F. K. Frankopana, Krk
5.
3.
Luka Braut
OŠ F. K. Frankopana, Krk
5.
4.
Marko Lazarić
OŠ Centar, Pula
7.
5.
Lucija Žužić
OŠ F. Franković, Rijeka
6.
6.
Dorijan Lendvaj
RIK Popovača
2.
7.
Luka Gabriel Rošić
OŠ F. K. Frankopana, Vrh
5.
8.
Nikica Stijepić
OŠ F. K. Frankopana, Vrh
5.
PHP – Gordan Nekić
R. br. Ime i prezime
30
Škola, Općina / Grad
Razred
1.
Fran Vasilić
OŠ F. K. Frankopana, Krk
6.
2.
Karlo Sintić
OŠ F. K. Frankopana, Krk
6.
3.
Josip Klepec
I. osnovna škola Vrbovec
6.
4.
Pavao Jerebić
III. gimnazija, Split
1.
5.
Marko Lazarić
OŠ Centar, Pula
7.
6.
Dino Ilić
SŠ za elektr. i rač., Rijeka
2.
KAMP 2012.
Početnici – Diana Lendvaj, dipl. ing.
R. br. Ime i prezime
Škola, Općina / Grad
Razred
1.
Mia Šimić
OŠ F. K. Frankopana, Malinska
2.
2.
Sven Ahčin
PŠ Strmec Samoborski
3.
3.
Filip Ahčin
PŠ Strmec Samoborski
1.
4.
Matej Ban
-
-
5.
Tomislav Franov
OŠ F. K. Frankopana, Krk
2.
6.
Filip Braut
OŠ F. K. Frankopana, Krk
3.
7.
Renato Braut
OŠ F. K. Frankopana, Krk
3.
8.
Vanesa Morić
OŠ F. K. Frankopana, Krk
3.
9.
Patrik Bajčić
OŠ F. K. Frankopana, Malinska
2.
10.
Renato Šutić
OŠ F. K. Frankopana, Krk
3.
11.
Marin Geljić
OŠ F. K. Frankopana, Krk
3.
12.
Damjan Klobučar
OŠ F. K. Frankopana, Krk
2.
13.
Lurda Kauzlarić
OŠ F. K. Frankopana, Malinska
2.
PROGRAMSKI JEZICI PYTHON / C++ – Nikola Dmitrović, prof.
R. br. Ime i prezime
KAMP 2012.
Škola, Općina / Grad
Razred
1.
Helena Mikulić
XV. gimnazija, Zagreb
2.
2.
Mario Vuzem
Srednja škola Krapina, Krapina
2.
3.
Petar Orlić
OŠ J. Račića, Zagreb
8.
4.
Martin Rosenzweig
OŠ I. Filipovića, Zagreb
8.
5.
Dorijan Lendvaj
RIK Popovača
2.
6.
Josip Klepec
I. osnovna škola Vrbovec
6.
7.
Lucija Žužić
OŠ F. Frankovića, Rijeka
6.
8.
Karlo Sintić
OŠ F. K. Frankopana, Krk
6.
9.
Fran Vasilić
OŠ F. K. Frankopana, Krk
6.
10.
Marina Samblić
OŠ F. K. Frankopana, Krk
6.
11.
Marko Lazarić
OŠ Centar, Pula
7.
31
VISUAL BASIC / SQL SERVER – Marijan Jurešić, dipl. ing. / Gordan Nekić
R. br. Ime i prezime
Škola, Općina / Grad
Razred
1.
Ivana Žužić
Gimnazija A. Mohorovičića, Rijeka
1.
2.
Pavao Jerebić
III. gimnazija, Split
1.
3.
Dino Ilić
SŠ za elektr. i rač., Rijeka
2.
4.
Fran Vasilić
OŠ F. K. Frankopana, Krk
6.
5.
Karlo Sintić
OŠ F. K. Frankopana, Krk
6.
6.
Kristijan Vulinović
Gimnazija A. Mohorovičića, Rijeka
2.
OLIMPIJCI JUNIORI – Nikola Dmitrović, prof.
R. br. Ime i prezime
Škola, Općina / Grad
Razred
1.
Robert Benić
ZRS/Udruga informatičara Božo
Težak, Zagreb
7.
2.
Domagoj Bradač
OŠ Otok, Zagreb
8.
3.
Branimir Filipović
XV. gimnazija, Zagreb
1.
4.
Marija Gegić
OŠ Retkovec, Zagreb
8.
5.
Vedran Kurdija
OŠ Mladost, Zagreb
7.
6.
Vilim Lendvaj
RIK Popovača
6.
7.
Nikola Pintarić
OŠ I. G. Kovačića, Sv. Juraj na
Bregu
8.
8.
Stjepan Požgaj
OŠ Belica, Belica
8.
OLIMPIJCI SENIORI – Matija Osrečki
R. br. Ime i prezime
32
Škola, Općina / Grad
Razred
1.
Mislav Balunović
Gim. M. Mesića, Sl. Brod
2.
2.
Domagoj Ćevid
V. gimnazija, Zagreb
3.
3.
Dominik Gleich
XV. gimnazija, Zagreb
2.
4.
Matija Milišić
XV. gimnazija, Zagreb
4.
5.
Antun Razum
XV. gimnazija, Zagreb
4.
6.
Marin Tomić
V. gimnazija, Zagreb
3.
7.
Tomislav Tunković
Gim. L. Vranjanina, Zagreb
4.
KAMP 2012.
R A D I O N I C E KAMP 2012.
33
OSNOVNA ŠKOLA "FRAN KRSTO FRANKOPAN" Osnovna škola u Gradu Krku djeluje kao posebno područno razredno odjeljenje u sklopu OŠ "Fran
Krsto Frankopan" Krk, najveće otočne škole u Primorsko-goranskoj županiji. Ona obuhvaća još šest
osmogodišnjih i jednu četverogodišnju školu u mjestima: Omišalj, Malinska-Dubašnica, Vrh, Punat,
Dobrinj, Vrbnik i Baška, sa zajedničkom upravom smještenom u krčkoj školi koja je ujedno i matična
škola svim ostalima. Osnovna škola "Fran Krsto Frankopan" u Gradu Krku nalazi se na sjeveroistočnom
rubu staroga grada omeđenog srednjovjekovnim gradskim bedemom.
34
KAMP 2012.
RADIONICE
LOGO početni
Predavač: Helena Mikulić
Polaznici:
1. Elena Lukić
2. Maria Elena Hržić
3. Anto Avgustinović
4. David Brusić
5. Zoja Nekić
6. Filip Crnčić
7. Benjamin Marić
8. Josip Zrilić
9. Ivana Milčetić
Pohvaljeni: David Brusić i Ivana Milčetić
Na radionici LOGO – POČETNI sudjelovali su učenici 4.-ih razreda s otoka Krka. Oni su u školi
već odradili jednu godinu rada s Logom pa smo radionicu započeli ponavljanjem i utvrđivanjem
naučenog gradiva. Nakon što su svi polaznici imali utvrđeno određeno predznanje započeli smo s novim
gradivom.
Prije nego što smo počeli raditi naredbe, radili smo malo matematike i svojstva mnogokuta (učili
smo kutove, da je zbroj kutova u trokutu 180...) kako bismo što lakše radili zadatke koji su slijedili.
Započeli smo rad jednostavnim naredbama CIRCLE i ARC (ARC2) za crtanje kruga i kružnog
luka. Naučili smo pobojati unutrašnjost lika, te promijeniti boju olovke i imenovati dijelove zadatka
naredbom LABEL. Naučili smo nove načine kretanja kornjače pomoću naredbe SETPOS LIST.
Naposljetku smo se prebacili u edall gdje smo se naučili koristiti varijablama te smo naučili
naredbu raščlanjivanja, IF.
Mnogi zadaci koje smo radili činili su se teški na prvi pogled, ali uz malu pomoć (uglavnom oko
kutova) sve smo uspjeli riješiti.
KAMP 2012.
35
RADIONICE
Ovo nam je bio najdraži zadatak:
Srećko stoji pred liftom u shoping centru. Nije sasvim siguran želi li ići gore ili dolje. Pomozi Srećku tako
da nacrtaš znakove za gore ili dolje.
Napiši program LIFT :d :br koji će nacrtati crtež kao na slici. Duljine dužina strelica označene su na
slici. Ako se upiše broj 0 uključit će se strelice prema gore, a ako se upiše broj 1 strelice se trebaju crtati
prema dolje. Položaj slike na ekranu nije bitan.
Rješenje:
to
cs
if
:d
pu
rt
fd
lift :d
:br
:br=0
[rt 60 fd :d rt 60 fd :d lt 120
lt 60 fd :d/4
lt 180 fd :d/2 pd
60 fd :d rt 60 fd :d lt 120 fd :d/4 lt 60
:d lt 60 fd :d lt 60 fd :d/4]
fd :d/4 lt 60
if :br=1
[rt 180
rt 60 fd :d rt 60 fd :d lt 120
fd :d lt 60 fd :d lt 60 fd :d/4
pu lt 180 fd :d/2 pd
rt 60 fd :d rt 60 fd :d lt 120 fd :d/4 lt 60
fd :d lt 60 fd :d lt 60 fd :d/4]
end
fd :d lt 60 fd
fd :d/4 lt 60
Helena Mikulić
36
KAMP 2012.
RADIONICE
LOGO napredni
Predavač: Mihael Liskij
Polaznici:
1. Ivan Jambrešić
2. Lorenzo Šamanić
3. Luka Braut
4. Marko Lazarić
5. Lucija Žužić
6. Dorijan Lendvaj
7. Luka Gabriel Rošić
8. Nikica Stijepić
Pohvaljeni: Ivan Jambrešić, Lucija Žužić i Dorijan Lendvaj
Na radionici LOGO napredni sudjelovali su mlađi polaznici nego inače i sa različitim nivoima
znanja. Zajedno su se na radionici našli državni natjecatelji i oni koji još nisu u potpunosti upoznati s
logom. Iz tog razloga program je bio podijeljen u dvije skupine.
Državni natjecatelji su prvo dobili
raznolike zadatke kako bi se vidjelo koji im
tipovi zadataka ne idu, te se tada radilo na
njihovom poboljšavanju u tim područjima.
Za to se vrijeme s ostalim polaznicima
radilo na svladavanju osnova loga kao što su
naredbe: MAKE, IF, FOR, REMAINDER,
te rad sa listama.
Naglasak tijekom svih predavanja je
bio na korištenju ugrađenog INDEXA
(popisu i objašnjenu svake naredbe) u logu.
Polaznici su bili potaknuti da sami pokušaju
dokučiti nove naredbe, te iz konteksta
zaključiti kako raditi s njima. Također su uz svaku novu naredbu bili zadani slični zadatci kako bi se
savladala novostečena naredba.
Primjeri lakših zadataka:
Zadatak 1:
Napiši funkciju VECI :l :br koja prima listu brojeva :l i jedan broj :br. Ispiši sve brojeve iz liste
koji su veći od :br.
Rješenje:
to veci :l :br
for [i 1 [count :l] 1][
if (item :i :l)>:br [pr (item :i :l)]
]
end
KAMP 2012.
37
RADIONICE
Zadatak 2:
Napiši funkciju NEPARNI :l :br koja prima listu brojeva :l i jedan broj :br. Ispiši sve neparne
brojeve iz liste.
Rješenje:
to neparni :l :br
for [i 1 [count :l] 1][
if (remainder (item :i :l) 2) = 0 [pr (item :i :l)]
]
end
Komentar:
Rješenje oba zadatka je da pomoću for petlje obiđemo cijelu listu te na svaki element primijenimo zadanu
provjeru te ga ispišemo ako ona prolazi. Ovakvi zadatci su dobri za početnike kako bi mogli isprobati
nove naredbe kao FOR i ITEM, te REMAINDER.
Primjeri težih zadataka:
Zadatak 1:
Napiši program TO ZGRADE :l koji treba nacrtati obris zadanih zgrada. Zgrade su opisane kao
podliste liste :l koje imaju oblik [pozicija širina visina], te je oblik same zgrade pravokutnik.
Zgrade se crtaju na ravnoj crti koja je paralelna sa dnom ekrana. Pozicija zgrade se računa od
ishodišta ekrana i nikad se dvije zgrade ne će preklapati.
Rješenje:
to zgrade :l
rt 90 fd 1000
for [i 1 [count :l] 1][
make "trZgrada (item :i :l)
setxy (item 1 :trZgrada) ycor
lt 90
fd (item 3 :trZgrada)-ycor
rt 90
fd (item 2 :trZgrada)
if not :i=(count :l) [
if (not (item 1 :trZgrada)+(item 2 :trZgrada)=(item 1 (item :i+1 :l))) [
setxy xcor 0
]
]
]
setxy xcor 0
end
Komentar:
Obično rješenje ovog zadatka ne zahtjeva poznavanje koordinatnog sustava (ali se pomoću njega puno
elegantnije riješi) već samo poznavanje FOR petlja i naprednije poznavanje crtanja na ekran. Algoritam
za rješavanje ide ovako:
1) Pomakni kornjaču na početnu poziciju zgrade
2) Pomakni kornjaču na točnu visinu zgrade (u ovom koraku se nacrta lijeva strana zgrade)
3) Pomakni kornjaču za širinu zgrade (gornja strana zgrade)
4) Provjeri da li se sljedeća zgrada nastavlja na trenutnu, ako ne – spusti kornjaču natrag na “pod“
i time nacrtaj desni rub zgrade, a u suprotnom ostavi kornjaču gdje je jer će se trenutna zgrada
spojiti sa sljedećom
38
KAMP 2012.
RADIONICE
Primjeri:
cs zgrade [[100 50 30][150 50 100][210 30 30][240 80 40][320 50 20]]
cs zgrade [[-200 50 50][-150 40 60][-110 30 70][-80 30 120][0 50 70][50
20 20][80 40 60]]
Zadatak 2:
Napiši funkciju ZAMJENA :l koja prima listu čiji su elementi brojevi ili iste takve liste. Zamijeni
sve brojeve u listi s njihovim brojem pojavljivanja u svim listama i podlistama.
Rješenje:
to rek :l
localmake "l2 []
for [i 1 [count :l] 1][
ifelse listp(item :i :l) [
make "l2 lput rek (item :i :l) :l2
][
make "l2 lput switch (item :i :l) :lista :l2
]
]
op :l2
end
to switch :num :l
localmake "zbr 0
for [i 1 [count :l] 1][
ifelse listp(item :i :l) [
make "zbr :zbr+switch :num (item :i :l)
][
if (item :i :l)=:num [make "zbr :zbr+1]
]
]
op :zbr
end
KAMP 2012.
39
RADIONICE
to zamjena :l
make "lista :l
show rek :lista
end
Komentar:
Zadatak je riješen korištenjem rekurzivne REK
:l i pomoćne funkcije SWITCH :num :l .
Funkcija REK je zadužena da napravi rekurzivni
obilazak po listi :l i da svaki broj na koji naiđe
zamjeni sa rezultatom funkcije SWITCH.
Funkcija SWITCH, također s rekurzivnim obilaskom, prebroji broj pojavljivanja proslijeđenog elementa te ga vrati kao rezultat. Funkcija
ZAMJENA služi samo da stvori globalnu listu :l
nazvanu :lista, te da pokrene funkciju REK i
ispiše njen rezultat.
Primjeri:
zamjena [1 1 1 2 2 2 3 3 3 3]
Izlaz:[3 3 3 3 3 3 4 4 4 4]
zamjena [1 2 3 [ 1 [ [1] 2 ] 3 ]
4]
Izlaz: [3 2 2 [3 [[3] 2] 2] 1]
zamjena [1 7 34 [56 7 7 [1]] 32 [1 [1] 56] 7 1]
Izlaz: [5 4 1 [2 4 4 [5]] 1 [5 [5] 2] 4 5]
Zadnjih nekoliko dana radionice bili su predviđeni za utvrđivanje i istovremeno primjenjivanje
svega naučenog. Od zadataka su rješavani zadatci sa prošlih županijskih natjecanja kako bi polaznici
mogli iskusiti težinu pravih zadataka sa natjecanja. Svi polaznici su, sukladno svojem nivou znanja,
usvojili novo gradivo i uspješno primijenili na rješavanju zadataka. Najbolji su dobili pohvale za isticanje
i zalaganje tijekom radionice.
Mihael Liskij
40
KAMP 2012.
RADIONICE
BASIC početni
Predavač: Mislav Balunović
Polaznici:
1. Marko Žužić
2. Jakov Depikolozvane
3. David Brusić
4. Ivana Milčetić
5. Josip Zrilić
6. Filip Crnčić
7. Anto Avgustinović
8. Elena Lukić
9. Maria Elena Hržić
10. Zoja Nekić
11. Benjamin Marić
Pohvaljeni: Marko Žužić, Jakov Depikolozvane i Josip Zrilić
Učenici koji su pohađali ovu radionicu imali su vrlo malo predznanja iz programskog jezika
BASIC. Cilj ove radionice bio je naučiti polaznike osnovama programiranja u programskom jeziku
BASIC kako bi kasnije sami mogli nastaviti kôdirati u njemu i kako bi se zainteresirali za programiranje
općenito.
Nakon uvodnog predavanja koje se temeljilo na teoretskom objašnjavanju principa programiranja,
kôdiranja i izvršavanja programa, prva tema je bila upoznavanje sa sučeljem BASIC-a i osnovnim
elementima za početak samostalnog rada. Započeli smo sa vrlo jednostavnom sintaksom i počeli smo
rješavati laganije zadatke. Grupa je napredovala podjednakom brzinom što je olakšavalo predavanje.
Na početku radionice polaznici su učili kako se snalaziti na ekranu i općenito dobiti dojam o tome
kako se izvodi program. Primjer takvog zadatka bi bio: "Napiši program koji u prvom redu ispisuje jednu
riječ, u drugom dvije riječi, a u trećem redu jednu riječ."
Rješenje:
CLS
PRINT "prvi"
PRINT "drugi red";
PRINT "treći"
Nastavili smo s pojmom varijable i nakon nekoliko provježbanih zadataka, krenuli smo na
ozbiljniji pristup. Objašnjena im je i if-else provjera. To su svi shvatili iz prve i moglo se brže preći na
for-petlju.
Kroz radionicu su polaznici učili i sintaksu programskog jezika BASIC, ali i to da se zadaci mogu
riješiti na drugačije načine, bolje načine. Primjer zadatka na kojemu su to mogli točno vidjeti je: „Napišite
program koji učitava prirodan broj n i ispisuje sve neparne prirodne brojeve manje ili jednake od n.“
KAMP 2012.
41
RADIONICE
Prvo rješenje:
CLS
INPUT n
FOR i = 1 TO n
IF i MOD 2 = 1 THEN
PRINT i
END IF
NEXT i
Drugo rješenje:
CLS
INPUT n
FOR i = 1 TO n STEP 2
PRINT i
NEXT i
Treće rješenje:
CLS
INPUT n
FOR i = 1 TO n / 2
PRINT i * 2 – 1
NEXT i
Razlika između prvog i drugog rješenja je u tome što je drugo rješenje duplo brže od prvoga – for
petlja čini duplo manje koraka. Što se brzine tiče, između drugog i trećeg rješenja nema razlike, ali radili
smo treće rješenje kako bi polaznici vidjeli da se zadatak može riješiti na različite načine, ovisno o tome
što im se u tom trenutku čini kao bolja opcija.
Pred kraj radionice radili smo nešto napredniju temu – stringovi. Polaznicima su objašnjene
osnovne naredbe i općenito pojam stringa. Podatak tipa string sastoji se od znakova (maksimalno do 255
znakova). Prilikom rada sa stringovima moramo naglasiti da je neka varijabla tipa string. To ćemo učiniti
tako da iza imena varijable stavimo znak "$". Kad s tipkovnice učitavamo vrijednost na varijablu tipa
string, računalo očekuje znak, a ne broj, tako da ukoliko i upišemo neki broj računalo će ga tretirati kao
bilo koji drugi specijalni znak ili slovo.
Za one naprednije polaznike objašnjena je i veza između brojeva i znakova, te funkcije koji mogu
raditi pretvorbe – znakovni tip može se pretvoriti u numerički tip i obratno.
VAL() – funkcija koja znak pretvara u broj
Npr. VAL(“123”)
123
VAL(“TETE”
0
jer se riječ TETE ne može pretvoriti u broj
STR$() – funkcija koja brojeve pretvara u znakove (stringove)
Npr. STR$(89)
“89”
42
KAMP 2012.
RADIONICE
PRINT STR$(89)+STR$(100)
PRINT VAL(“89”)+VAL(“100”)
“89100”
189
Određivanje podnizova zadanog stringa
LEFT$(A$,n) – uzima prvih n znakova u stringu A$
RIGHT$(A$,n) – uzima zadnjih n znakova u stringu A$
MID$(A$,m,n) – uzima n znakova stringa A$ počevši od m-tog znaka
Primjer: Napiši program koji za učitano ime i prezime osobe ispiše njezine inicijale.
CLS
PRINT “UNESI IME:”
INPUT IME$
PRINT “UNESI PREZIME”
INPUT PREZIME$
INIME$=LEFT$(IME$,1)
INPREZ$=LEFT$(PREZIME$, 1)
PRINT INIME$;”.”;INPREZ$;”.”
Na kraju radionice uputio sam polaznike na zadatke s bivših školskih, županijskih i državnih
natjecanja kako bi što bolje utvrdili znanje stečeno na radionici. Zadnji sat rješavali smo test sa
primjerima zadataka iz svih obrađenih područja. Najbolji polaznici su, za svoje zalaganje i izniman trud,
dobili pohvalu.
Završni ispit
1.
2.
3.
4.
Ispiši sve parne brojeve do 10
Ispiši sumu brojeva do nekog zadanog broja N
Ispiši produkt brojeva do nekog zadanog broja N
Ispiši svaki n-ti broj do 100.
Primjer: Ulaz: 5
Izlaz: 0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
5. Napravi program koji će za N upisanih učenika i njihovih ocjena, ispisivati one učenike koji
imaju ocjenu nedovoljan tj. 1
6. Ispiši sve parne brojeve od 0 do 101 pa zatim sve neparne brojeve silazno od 100 do 20.
7. Za 5 upisanih ocjena izračunaj prosječnu ocjenu
8. Ispiši tablicu množenja (dvije for petlje jedna u drugoj!)
9. Za tri upisana broja provjeri da li čine niz. Brojevi čine niz ako su jedan za drugim, npr. 4,5,6
čine niz, dok 4,5,9 ne čini niz.
10. Košarkaška ekipa ima 5 igrača. Svaki igrač može dati koš koji vrijedi 2 ili 3 boda. Ulazni
podaci su imena 5 igrača i broj koševa od 2 i od 3 boda za svakog igrača. Treba ispisati:
a. Ime igrača koji je dao najviše koševa od 3 boda
b. Ime igrača koji je postigao najviše bodova
c. Koliko je ukupno bodova postigla ekipa
Ako ima više igrača s istim brojem koševa ili bodova dovoljno je ispisati jednog.
Mislav Balunović
KAMP 2012.
43
RADIONICE
BASIC napredni
Predavač: Marijan Jurešić, dipl. ing.
Polaznici:
1. Karlo Sintić
2. Fran Vasilić
3. Marina Samblić
4. Lucija Žužić
5. Luka Braut
6. Lorenzo Šamanić
7. Luka Gabriel Rošić
8. Nikica Stijepić
Pohvaljeni: Marina Samblić, Lucija Žužić i Luka Braut
Radionica BASIC napredni bila je namijenjena učenicima i natjecateljima koji su se već susreli s
BASICom u svom radu. Razina znanja polaznika bila je vrlo heterogena, pa je pristup bio više
individualan.
Na samom početku provedena je kratka anketa koliko učenici znaju o BASICu. Uspostavilo se da
jedan dio njih ne zna niti naredbe grananja niti petlje, što je zahtijevalo da radionica započne s IF
naredbom. Budući da je ova naredba izuzetno važna za bilo kakav nastavak programiranja, posvećena su
joj 2 predavanja. Tijekom ta dva predavanja rješavani su različiti zadaci u kojima je težište stavljeno na
grananje, od onih vrlo jednostavnih do zadataka težine županijskog natjecanja.
Sljedeća obrađivana tema bile su petlje (for, do-while). Petlje su isto tako esencijalne za
programiranje, no i nešto kompliciranije od naredbi grananja te im je posvećeno ukupno 3 predavanja.
Nakon
petlji
uslijedila
su
polja
(jednodimenzionalna i dvodimenzionalna) te svi
standardni algoritmi s poljima: unos, ispis,
pretraživanje, brisanje elementa, dodavanje elementa,
spajanje dvaju sortiranih polja (merge), sortiranje te
na kraju nekoliko zadataka s natjecanja kod kojih je
težište stavljeno na polja. Na polja je utrošeno 2
predavanja.
Nakon polja bili su obrađeni stringovi,
standardne BASICove funkcije za rad sa stringovima
(LEN, LEFT$, RIGT$, MID$,...). Obrađeni su
standardni algoritmi: okretanje stringa, spajanje
stringova, prebrojavanje znakova, palindrom,... Za ovu temu potrošeno je jedno predavanje.
Pred kraj radionice, rješavali smo zadatke s prijašnjih državnih natjecanja iz informatike. Neki su
od zadataka bili vrlo jednostavni za riješit nakon što je predstavljena ideja i algoritam, a neki su
zahtijevali i više kôdiranja. Tako je polaznicima prikazano, da uz samo programiranje, zadatke treba i
algoritamski analizirati.
44
KAMP 2012.
RADIONICE
Primjeri algoritamskih zadataka:
Zadatak MIRELA (DMIH 2008.)
Mala Mirela se zaljubila u šesterokute. Ona ih voli
crtati u krug, te je primijetila da u svakom sljedećem krugu
koji nacrta ima šest šesterokuta više nego u prethodnome.
Mirela prvo nacrta jedan šesterokut, zatim oko njega šest
novih, te nastavi crtati nove šesterokuta oko onih koje je
već prije nacrtala (vidi sliku). U prvom koraku nacrta samo
jedan šesterokut, a u svakom sljedećem koraku crta sloj
šesterokuta oko prije nacrtanih. Na slici je brojem unutar
pojedinog šesterokuta označeno u kojem koraku je taj
šesterokut nastao. Nakon što Mirela napravi N koraka
crtanja, zanima ju koliko šesterokuta je ukupno nacrtala.
Ulazni podaci:
Izlazni podaci:
Primjeri:
RB Ulaz
Izlaz
1.
3
19
2.
7
127
prirodan broj N (1 ≤ N ≤ 70)
ukupan broj nacrtanih šesterokuta.
Objašnjenje
Mirela je prilikom prva tri koraka crtanja nacrtala 19 šesterokuta, to su oni šesterokuti sa
slike koji imaju u sebi broj 1,2 ili 3.
Ukupan broj šesterokuta na slici.
Rješenje:
Ovo je primjer jednostavnog rješenja nakon što se shvati i detaljno analizira zadatak.
INPUT a
PRINT a * (a - 1) * 3 + 1
Zadatak PORUKA (DMIH 2008.)
Ivica i Marica su u vezi već dva tjedna i otada su nerazdvojni. Kako idu u isti razred ne mogu izdržati, a
da za vrijeme nastave ne razgovaraju. Nedavno ih je učiteljica upravo zbog toga i razmjestila te više ne
sjede zajedno. Oni su tome doskočili pa pišu poruke na komadićima papira te ih dobacuju jedno drugome.
Međutim, drugi učenici su ljubomorni na njihovu vezu pa se nerijetko dogodi da takav papirić dođe do
nekog učenika u razredu koji onda tu poruku glasno pročita pred cijelim razredom, dovodeći na taj način
Ivicu i Maricu u neugodnu situaciju. Stoga su odlučili šifrirati poruke. Poruke šifriraju na sljedeći način:
prvo naprave indeks riječi. U indeksu riječi nalazi se svaka riječ iz poruke točno jednom, a riječi su
poredane onim redoslijedom kojim se riječi pojavljuju u poruci. Nadalje poruku šifriraju na način da kad
se neka riječ prvi puta pojavi u poruci, onda ju zapišu, a kod svakog njenog daljnjeg pojavljivanja umjesto
te riječi unutar vitičastih zagrada pišu njen redni broj unutar indeksa riječi. Primjerice, poruka Marice
moja Marice ti si samo moja Marice, bit će šifrirana kao: Marice moja {1} ti si samo {2} {1}. Marica zna
dešifrirati poruku, ali joj teško ide šifriranje pa te moli za pomoć. Pomogni Marici i napiši program koji
će šifrirati poruku koju želi poslati Ivici.
Ulazni podaci:
KAMP 2012.
tekstualna datoteka poruka.txt koja se sastoji od jednog ili više redaka teksta, broj
redaka neće biti veći od 10. U svakom retku nalazi se jedna ili više riječi poruke,
broj znakova u jednom retku neće biti veći od 200. Svaka se riječ sastoji od
velikih slova engleske abecede i riječi su međusobno odvojene točno jednim
razmakom.
45
RADIONICE
Izlazni podatak:
tekstualna datoteka sifra.txt koja ima isti broj redaka kao i poruka.txt, a u svakom
se retku nalazi šifrirane riječi odgovarajućeg retka datoteke poruka.txt.
Primjeri:
Ulaz
Izlaz
poruka.txt
sifra.txt
MARICE MARICE
MOJA MARICE TI
SI SAMO MOJA
MARICE
JAKO SAM
SRETAN S TOBOM
MARICE {1}
MOJA {1} TI
SI SAMO {2}
{1}
JAKO SAM
SRETAN S TOBOM
RB
1.
2.
Objašnjenje
Riječ MARICE je prva u indeksu, i svako njeno
pojavljivanje zamijenit će se s {1}, dok je riječ MOJA
druga u indeksu i svako njeno pojavljivanje zamijenit će se
s {2},…
Sve riječi su različite
Rješenje:
CLS
OPEN "poruka.txt" FOR INPUT AS #1
OPEN "sifra.txt" FOR OUTPUT AS #2
DIM sif(1000) AS STRING
used = 0
DO WHILE NOT EOF(1)
INPUT #1, s$
last = 1
l = LEN(s$)
FOR i = 1 TO l
IF MID$(s$, i, 1) = " " THEN
a$ = MID$(s$, last, i - last)
last = i + 1
naso = 0
FOR j = 1 TO used
IF sif(j) = a$ THEN
PRINT #2, "{" + MID$(STR$(j), 2) + "} ";
naso = 1
END IF
NEXT j
IF naso = 0 THEN
used = used + 1
sif(used) = a$
PRINT #2, a$ + " ";
END IF
END IF
NEXT i
a$ = MID$(s$, last, l - last + 1)
naso = 0
FOR j = 1 TO used
IF sif(j) = a$ THEN
PRINT #2, "{" + MID$(STR$(j), 2) + "}"
naso = 1
END IF
46
KAMP 2012.
RADIONICE
NEXT j
IF naso = 0 THEN
used = used + 1
sif(used) = a$
PRINT #2, a$
END IF
LOOP
CLOSE #1
CLOSE #2
Na kraju, zadnje je predavanje bilo posvećeno potprogramima. Kroz nekoliko različitih primjera
učenici su upoznati s osnovnim svojstvima potprograma, prednostima upotreba potprograma i slično.
Učenici nisu imali završnu provjeru znanja upravo zbog velike heterogenosti grupe, ali su u globalu svi
savladali predavano gradivo.
Marijan Jurešić
Mislav Balunović
KAMP 2012.
47
RADIONICE
PROGRAMSKI JEZICI PYTHON / C++
Predavač: Nikola Dmitrović, prof. mentor
Polaznici:
1. Helena Mikulić
2. Mario Vuzem
3. Petar Orlić
4. Martin Rosenzweig
5. Dorijan Lendvaj
6. Josip Klepec
7. Lucija Žužić
8. Karlo Sintić
9. Fran Vasilić
10. Marina Samblić
11. Marko Lazarić
Pohvaljeni: Martin Rosenzweig, Josip Klepec i Lucija Žužić
Nakon što se dvije godine uzastopno na radionicama u sklopu Kmpa mladih informatičara
poučavao programski jezik Python, ove se godine organizirala radionica koja je za cilj imala usporedbu
Pythona i C++, jezika koji dolazi i jezika koji je već dobro poznat u natjecateljskim krugovima.
Polaznici radionice su, ovisno o trenutnoj razini znanja pojedinog jezika, rješavali razne
algoritamske probleme, te kroz implementacije rješenja tih problema upoznavali sličnosti i razlike
navedenih programskih jezika.
Prvi dan na radionici, učenici su proveli instalirajući editore koji će im omogućiti rad u Pythonu i
C++. Nakon toga, polaznici su rješavali prve zadatke s HONI-ja 2011./2012. Ovisno o tome poznaju li
već neki od programskih jezika, polaznici su navedene zadatke rješavali ili su samo riječima opisivali
korake koji vode rješenju navedenih zadataka.
48
KAMP 2012.
RADIONICE
Drugi dan, polaznici su upoznati s osnovnim karakteristikama Pythona, naredbom odlučivanja i s
onim stvarima koje su karakteristične za taj jezik, a odstupaju od uobičajenih programerskih navika. S tim
osnovnim znanjem, svi polaznici su bez problema mogli implementirati rješenja zadataka zadanih
proteklog dana.
Treći dan je protekao u upoznavanju polaznika s naredbama ponavljanja i načinima njihovih
implementacija u Pythonu. S tim znanjem su se rješavali oni zadaci s ovogodišnjeg HONI-ja čije je
rješenje zahtijevalo poznavanje naredbi ponavljanja. Posebno je obrađen problem kreiranja novog broja
koji se dobije okretanjem znamenki zadanog broja.
Nakon što su se polaznici upoznali s osnovama Pythona, prešlo se na upoznavanje osnovnih
karakteristika C++ uz obavezno isticanje sličnosti i razlika između dva jezika. Posebna se pažnja obratila
na naredbu ponavljanja (for) kod koje ima najviše razlike u sintaksi i mogućnostima. S ovim znanjem,
polaznici su bili u mogućnosti ponovno riješiti sve zadatke zadane proteklih dana. Napredniji polaznici su
imali priliku kroz timski rad u oba jezika rješavati zadatke koji su se pojavili na prvom danu JHIO-a
2012.
Složeni tipovi podataka u C++ (nizovi, stringovi) te strukture u Pythonu (liste, rječnici, N-torke)
su bile predmet poučavanja u posljednjim danima radionice. Polaznici su rješavali zadatke u Pythonu i
C++ koji su zahtijevali poznavanje navedenih tipova i struktura. Ovaj dio radionice je završio malim
natjecanjem u kome su polaznici trebali osmisliti i u oba jezika riješiti zadatke Password i Parlament
(Županijsko natjecanje 2012.)
Posljednjeg dana radionice, napredniji polaznici su imali priliku upoznati pojam objektno
orijentiranog programiranja i kako to izgleda u praksi u navedenim programskim jezicima. Ovaj dio je bio
motivacijske prirode te je trebao zainteresirati polaznike za općenito naprednije korištenje programskih
jezika.
Odabrati pohvaljene sudionike radionice nije bilo lako jer je većina polaznika kvalitetno i s puno
entuzijazma pristupala postavljanim problemima. Uz usvojeno znanje korištenja i sintaksi programskih
jezika Python i C++, polaznici su vježbali i naučili neke nove algoritme koji će im zasigurno pomoći u
budućim natjecanjima.
Nikola Dmitrović
KAMP 2012.
49
RADIONICE
POČETNICI
Predavač: Diana Lendvaj, dipl. ing.
Polaznici:
1. Mia Šimić
2. Sven Ahčin
3. Filip Ahčin
4. Matej Ban
5. Tomislav Franov
6. Filip Braut
7. Renato Braut
8. Vanesa Morić
9. Patrik Bajčić
10. Renato Šutić
11. Marin Geljić
12. Damjan Klobučar
13. Lurda Kauzlarić
Pohvaljeni: Tomislav Franov, Filip Braut, Renato Šutić i Damjan Klobučar
U radionici POČETNICI imali smo polaznika koji još nije krenuo u školu (Matej Ban) te učenika
prvih, drugih i trećih razreda. Cilj je da djeca tog uzrasta na lak i njima razumljiv način steknu osnovno
znanje rada na računalu i da se upoznaju s osnovama programiranja (LOGO).
Teme radionice:
I. WINDOWS
• Osobno računalo (dijelovi računala; uključivanje i isključivanje računala; mediji za pohranu
podataka; uporaba miša i tipkovnice)
• Radna površina – Desktop (ikone; promjena radne površine)
• Rad s mapama i datotekama (stvaranje mape s njihovim imenom u mapi Moji dokumenti (My
Documents))
• Crtanje slika – Bojanje-Paint) (otvaranje programa, služenje s alatima za crtanje i naredbama
kopiraj i zalijepi, spremanje crteža na računalo u mapu Moji dokumenti.
Zadatak učenicima za bolje savladavanje gradiva bio je nacrtati tortu sa svjećicama tako
da su 1. svjećicu na torti kopirali više puta i tako rasporedili po torti.
50
KAMP 2012.
RADIONICE
II. MICROSOFT WORD
• Rad s programom MS Word
• Izgled i elementi prozora
• Rad s tekstom
• Umetanje simbola, slika
• Spremanje dokumenta
III. INTERNET
• Pojam internet
• Upotreba tražilice
• Pregledavanje web stranice
Na kraju prvog dijela radionice polaznici su imali zadatak za uvježbavanje. Trebali su, služeći se
internetom, naći tekstove i slike o gradu Krku, kopirati to u MS Word, tamo oblikovati tekst i spremiti
sve u mapu sa svojim imenom.
IV. LOGO
Na kraju radionice počeli smo učiti nešto novo. Prve korake u programiranju u programskom
jeziku Logo. Naučili su osnovne naredbe za crtanje.
naredba za kretanje naprijed (forward)
FD_broj
naredba za kretanje unatrag (back)
BK_bro j
obriši zaslon (clearscreen)
CS
okretanje ulijevo za određeni kut (left)
LT_broj
okretanje udesno za određeni kut (right)
RT_broj
olovku digni(pen up)
PU
olovku spusti(pen down)
PD
uzmi gumicu(pen erase)
PE
ponovno crtanje(pen paint)
petlja ponavljanja
PPT
(ponavlja naredbu u zagradi n puta)
KAMP 2012.
REPEAT
51
RADIONICE
Primjeri:
1. Šešir
fd
fd
fd
fd
lt
120 rt 90
120 rt 90
120 rt 90
120 rt 90
90 fd 40 bk 200
Zatim smo upotrijebili naredbu repeat koja pojednostavljuje i skraćuje gornji dio kôda.
repeat
4[fd 120 rt 90] lt 90 fd 40 bk 200
2. INA
Treba nacrtati pravokutnik s kružnicom unutar njega.
repeat 2 [fd 180 rt 90 fd 80 rt 90]
fd 140 rt 90 pu fd 40 pd circle 20
3. zadatak je bio napisati riječ LOGO, gdje slova o pišemo kao pravokutnike
fd 200 bk 200 rt 90 fd 80 pu fd 50 pd lt 90
repeat 2[fd 200 rt 90 fd 80 rt 90 ]
rt 90 pu fd 130 pd lt 90 fd 200 rt 90 fd 80 rt 90
fd 30 bk 30 rt 90 fd 80 lt 90 fd 200 lt 90 fd 80
lt 90 fd 100 lt 90 fd 25 bk 25 lt 90 fd 100 lt 90
pu fd 50 pd lt 90
repeat 2 [fd 200 rt 90 fd 80 rt 90]
Diana Lendvaj
52
KAMP 2012.
RADIONICE
VISUAL BASIC / SQL SERVER
Predavači: Marijan Jurešić, dipl. ing.
Gordan Nekić
Polaznici:
1. Ivana Žužić
2. Pavao Jerebić
3. Dino Ilić
4. Fran Vasilić
5. Karlo Sintić
6. Kristijan Vulinović
Pohvaljeni: Dino Ilić, Karlo Sintić i Kristijan Vulinović
Visual Basic je radionica gdje se učenici susreću s nekim znanjima koja im neće koristiti u samim
natjecanjima, ali su ta znanja danas primjenjiva. Učenici se upoznaju s tehnologijama koje su danas
standard i na taj način dobivaju osjećaj da rade nešto što bi mogli primijeniti.
Obrađene teme:
•
•
•
•
•
•
•
•
•
•
•
•
•
Izrada Windows forms aplikacije
Postavke formi i kontrola
Sintaksa koda
Button kontrola
CheckBox kontrola
ListBox kontrola
Label kontrola
TextBox kontrola
Progressbar kontrola
Globalne varijable
Funkcije i sub-ovi
Moduli
SQL Server i SQL baza
Tijekom prvog dijela radionice učenici su se upoznali sa sučeljem Visual Basica, načinom
kreiranja projekta, spremanje projekta,... Isto tako, velika je pažnja posvećena objektima grafičkog
korisničkog sučelja. Objašnjeno je da svaki od tih objekata ima svoja nekakva svojstva te radnje koje se
nad objektima mogu izvršavati. Naglašeno je da se ovdje radi o dosta drugačijem obliku programiranja,
od onoga s kojim su se učenici susreli. Radi se o programiranju gdje je zapravo "program" odgovor na
neki događaj, tzv. programiranje upravljano događajima (event-driven programming). Za vrijeme čitavog
trajanja radionice inzistirano je na pojmovima objekt, svojstvo i metoda jer je to upravo ono na čemu se
bazira današnje programiranje. Kako se je radilo o uglavnom mlađim polaznicima nije se ulazilo u dubinu
objektno orijentiranog programiranja već se je o objektima govorilo samo kroz elemente grafičkog
korisničkog sučelja.
KAMP 2012.
53
RADIONICE
Tijekom radionice učenici su kreirali jednostavan program za rad s tekstualnim datotekama
(pisanje teksta, spremanje, otvaranje, oblikovanje,...) kroz ovaj primjer upoznali su osnovne elemente
grafičkog korisničkog sučelja (okvir za tekst, padajući izbornik, izbornik, dijaloškim prozorima,...).
Drugi dio radionice bilo je upoznavanje s bazama podataka. U tom dijelu bilo je obrađeno
kreiranje tablica u MS Accessu, jednostavni upiti (INSERT, SELECT, DELETE, UPDATE) te nešto
kompliciraniji upiti gdje se selektiraju podaci iz dviju tablica.
U naprednijem dijelu radionice naučili su kako povezati bazu podataka s Visual Studiom na
primjeru programa za vođenje podataka o polaznicima, voditeljima i radionicama na Kampu. Prvo smo
osmislili i kreirali bazu podataka sa svim tim podacima, a zatim smo kreirali program s višestrukim
formama koji je implementirao osnovne funkcionalnosti (dodavanje polaznika, dodavanje predavača,
pretraživanje polaznika, dodjeljivanje polaznika u grupu,...).
Po završetku trajanja radionice bila je provedena provjera znanja, gdje su učenici trebali kreirati
bazu podataka s proizvodima te jednostavnu aplikaciju za dućan. Svi učenici su kreirali bar osnovnu
funkcionalnost programa.
Svi su polaznici upoznati s osnovama rada te vjerujem da će mnogi od njih nastaviti s radom
aplikacija u Visual Basicu-u.
Marijan Jurešić
54
KAMP 2012.
RADIONICE
PHP
Predavač: Gordan Nekić
Polaznici:
1. Fran Vasilić
2. Karlo Sintić
3. Josip Klepec
4. Pavao Jerebić
5. Marko Lazarić
6. Dino Ilić
Pohvaljeni: Fran Vasilić, Josip Klepec i Dino Ilić
Radionicu “PHP” pohađali su učenici različitih uzrasta i predznanja. Vidjevši da je većini
polaznika to bio prvi susret s PHP-om, u nekoliko dana obrađene su sve osnovne pojedinosti PHP-a i
neke napredne funkcije kao što je spajanje na MySQL bazu podataka.
Obrađene teme:
•
•
•
•
•
•
•
•
•
•
•
PHP otvaranje tagova u html-u i PHP naredba echo
If-grananje, for petlja, while petlja
Include funkcija
Kako napraviti vlastite funkcije
GET, POST, Session, Cookies
Mail, Rand, Date, funkcije
MySql Baza i Osnove PhpMyAdmin
Spajanje PHP-a i MySQL-a
Login funkcija koja je otporna na SQL napade (sigurnost)
Registracijska funkcija s automatskim generiranjem lozinke
Administrator panel za upravljanje stranicom
Realizacija radionice:
Radionica je započela uvodom u “PHP” uz objašnjenje osnovnih naredba. Sljedeći dan započeli
smo sa samostalnim projektom tako da je svaki polaznik radio svoju vlastitu web stranicu. Treći dan
objasnili smo osnove MySQL baze te spajanje PHP-a na MySQL bazu. Upravo su ta novostečena znanja
polaznici iskoristili u izradi vlastitog projekta. Preostale dane polaznici su samostalno razvijali svoj
projekt. Kako je napredovala kompleksnost projekta, tako smo učili nove stvari. Nakon objašnjene
pojedine teme, polaznici su to trebali ukomponirati u svoj projekt.
KAMP 2012.
55
RADIONICE
Primjer kôda (implementacija spajanja na bazu):
//Spajanje na bazu
$db_host="localhost"; $db_user="korisnik"; $db_pass="lozinka";
$db_name="Imebaze";
$db_id = mysql_connect($db_host, $db_user, $db_pass)
or die("Ne mogu se spojiti na Bazu.");
mysql_select_db($db_name, $db_id)
or die("Baza nije pronađena.");
// kraj koda
Sljedeći dan napravili smo stranicu na kojoj su se korisnici mogli registrirati. Skripta bi korisnike
automatski zapisala u bazu i poslala random (nasumičnu) lozinku korisniku na e-mail. Peti dan polaznici
su s lakoćom shvatili MySQL naredbe te su uz moju pomoć uspješno napravili funkciju za prijavu
korisnika. Obradili smo i temu kako se možemo zaštititi od SQL napada kao, također, i XSS napada te
ostalih sigurnosnih prijetnji.
Šesti dan polaznici su preradili stranicu tako da su samo registrirani korisnici imali sve
mogućnosti. Na kraju su svi dobili zadatke kako bi se provjerilo njihovo znanje po završetku radionice.
Evo što su rekli neki od polaznika radionice:
"Na PHP-u smo nakon ponovljenih osnova HTML-a krenuli s teorijom PHP-a, a nakon toga smo se
dohvatili samog Web programiranja. Krenuli smo od samih osnova kao što su instaliranje XAMPPa, a nakon toga smo i napravili i konfigurirali MySQL bazu. Tu bazu smo koristili za spajanje preko
PHP-a. Kao krajnji projekt napravili smo Chat koji smo mogli koristiti međusobno unutar lokalne
mreže tako da se spojimo na računalo od jednog korisnika te tako izmjenjujemo poruke.
Gordan Nekić se kao predavač pokazao izrazito stručan, a radionice su bile vrlo zanimljive i pune
praktičnih primjera. Jako smo se dobro zabavili, a nadam se da ćemo i slijedeće godine raditi
jednako dobro."
- Dino Ilić
Svi su polaznici upoznati s osnovama rada te vjerujem da će mnogi od njih nastaviti s izradom
web stranica u PHP-u.
Gordan Nekić
56
KAMP 2012.
RADIONICE
ALGORITMI POČETNI
Predavač: Matija Bucić
Polaznici:
1. Josip Klepec
2. Petar Orlić
3. Martin Rosenzweig
4. Mario Vuzem
5. Mislav Gucunski
6. Ivan Šego
7. Luka Barišić
8. Helena Mikulić
9. Pavao Jerebić
10. Ivan Lazarić
11. Marko Lazarić
12. Ivana Žužić
13. Tonko Sabolčec
Pohvaljeni: Petar Orlić, Martin Rosenzweig i Mislav Gucunski
Obrađene su teme:
•
Brzo potenciranje
•
Ideja dinamičkog programiranja
•
Binarno pretraživanje
•
Traženje konvkesne ljuske
•
Pretraživanja po grafu (BFS,DFS)
•
Sweep line
•
Razni algoritamski zadaci:
o
Pauci i muhe
o
Obrni redoslijed niza
Svi polaznici pokazali su iznimnu sposobnost i volju za radom. Na radionici se uglavnom
fokusiralo na objašnjavanje algoritama te razne metode implementacije istih. Kôdiralo se u C++
programskom jeziku te se pokušavalo učenike same dovesti do ideje pojedinih algoritama kroz niz
podpitanja i podproblema koji polako vode učenika prema ideji algoritma koji je demonstriran.
Zbog mnoštva tema i različitih predznanja učenika koji su pohađali radionicu nisu sve gore
navedene teme bile predavane svim učenicima već su učenici birali po jednu od nekoliko tema koje su se
obrađivale na svakom predavanju i to po svome izboru dok su neki učenici ponekad slušali i više tema u
jednom predavanju.
Ideja brzog potenciranja je iznimno važna kako bi se prikazala korisnost i mogućnost optimizacije
algoritama te radi razumijevanja termina složenosti. Osim toga, ovaj algoritam je dobar primjer kako se
može minimizirati duljina potrebnog kôda te samim time i mogućnost za pogrešku u kôdu.
KAMP 2012.
57
RADIONICE
Dinamičko programiranje je jedna od iznimno korisnih ideja koja se koristi na natjecanjima.
Predavanje se fokusiralo na način razmišljanja koji koristi te na shvaćanje prednosti dinamičkog
razmišljanja pred ad-hoc algoritmima, kao i na shvaćanje da dinamika najčešće provjerava sve moguće
slučajeve te samim time ostavlja dokaz ispravnosti algoritma trivijalnim.
Binarno pretraživanje još je jedan algoritam od velike važnosti te je polaznicima predstavljen
kroz niz povezanih problema gdje se u svakom sljedećem tražilo od polaznika da poboljša trenutni
algoritam kako bi uvidio povezanost između potrošnje memorije i brzine algoritma.
Traženje konveksne ljuske bilo je predavanje samo za one polaznike koji su već savladali BFS
algoritam i spada u možda nešto kompleksnije algoritme. Međutim, polaznici su pokazali zavidnu
sposobnost i razumijevanje ovog algoritma. Ovaj algoritam je važan za rješavanje mnogih problema u
ravnini te ima mogućnost postepenog unaprjeđivanja složenosti i kompleksnosti kôda.
Pretraživanja po grafu od kojih je obrađen BFS (Breadth first search), a DFS (Depth first search)
samo predstavljen kao ideja, značajni su algoritmi i nužni su za rješavanje cijelog niza, što jednostavnih,
što kompleksnijih, problema. Polaznici su nizom laganih problema bili navođeni na ideju u pozadini ovog
algoritma.
Sweep line algoritam je često povezan s dinamičkim programiranjem te je ovdje prikazan samo
kao ideja kroz nekoliko zadataka. Zadaci koji su se rješavali su: "November rain" i "Skyscrappers", oba sa
SPOJ online judge-a.
Razni algoritamski zadaci su se rješavali sa ciljem razvijanja sposobnosti za smišljanje algoritama
koji nisu prije naučeni i uglavnom su ograničeni na manji broj zadataka, ali uvelike pomažu razvijanju
načina razmišljanja i pristupanja zadacima na natjecanjima.
Algoritamski zadaci:
Zadatak "Pauci i muhe" bio je interaktivnog tipa i glasi:
Dana je tablica n puta n. Na njoj se nalazi k pauka i 1 muha na slučajnim početnim pozicijama.
Korak se sastoji od toga da se muha pomakne za jedno polje u jednom od 4 smjera gore dolje
lijevo desno, a zatim i pauci (dozvoljeno je da ostanu na istom mjestu). Ako se neki pauk nalazi
na istoj poziciji kao i muha, pauci pobjeđuju. Zadatak je ispisati željeni broj pauka i zatim
upravljati paucima kako bi oni ulovili muhu.
58
KAMP 2012.
RADIONICE
Naravno više bodova dobiva algoritam koji koristi manje pauka.
Rješenje:
Lako se može pokazati da jedan pauk neće biti dovoljan da može nužno uloviti muhu. Međutim,
već za dva pauka postoji algoritam kako je mogu uloviti. Pauke nazovemo x i y. Na početku pauk
x pokušava izjednačiti x-koordinatu s muhom tako da se pomiče samo u x smjeru te se time u
svakom potezu pauk, ili približi po x-koordinati, ili ostaje na jednakoj udaljenosti no na istoj
udaljenosti može ostati maksimalno n koraka za redom tako da u maksimalno n2 koraka pauk
može izjednačiti svoju x-koordinatu s muhom. Istovremeno drugi pauk radi istu stvar u y-smjeru
tako da nakon maksimalno n2 koraka nužno možemo imati po jednog pauka na svakoj od osi
izjednačenog s muhom. Sada možemo primijetiti da svakim korakom, ako se muha ne kreće
prema onom kutu ploče gdje nema pauka, da pauci mogu smanjiti udaljenost, ali muha ima
maksimalno 2n poteza u kojima to može osigurati tako da će nužno biti uhvaćena kroz sljedećih
2n koraka.
Ovaj je zadatak bio dio 3. zadatka na Srpskoj matematičkoj olimpijadi i kao takav pokazuje povezanost
matematičkih i informatičkih natjecanja. Za zadaću je bilo zadano da učenici razmisle o istom problemu u
3 dimenzije. Dakle, umjesto tablice, u kocki. Zanimljivo je da je u 3 dimenzije potrebno jednako mnogo
pauka kao i u dvije.
Zadatak "Obrni redoslijed niza" nedavno se pojavio na Bubblecup natjecanju, dok je izvorno
došao s britanskog izbornog natjecanja za matematičku olimpijadu. Zadatak izvrsno ilustrira koliko
ponekad brute force algoritam može pomoći u smišljanju mnogo elegantnijeg i bržeg rješenja.
Većina polaznika ove radionice je iskazala veliki interes i sposobnost u shvaćanju i
primjenjivanju algoritama koji su se radili tijekom radionice. Pored unaprijed planiranih algoritama,
polaznici su iskazivali želju za dodatnim radom te su neki algoritmi spomenuti i ukratko teorijski
obrazloženi prema njihovim željama.
Odabrati pohvaljene sudionike radionice nije bilo lako jer je većina polaznika kvalitetno i s puno
entuzijazma radila na zadanim algoritmima. Uvjeren sam da će svim polaznicima koristiti stečeno znanje.
Matija Bucić
KAMP 2012.
59
RADIONICE
ALGORITMI NAPREDNI
Predavač: Marin Smiljanić
Polaznici:
1. Mislav Gucunski
2. Filip Keri
3. Ivan Lazarić
4. Mihael Liskij
5. Zvonimir Medić
6. Neven Miculinić
7. Tonko Sabolčec
8. Kristijan Vulinović
9. Ivan Šego
10. Luka Barišić
11. Ivana Žužić
Pohvaljeni: Ivan Lazarić, Ivan Šego i Luka Barišić
Radionica naprednih algoritama održana je učenicima do 3. razreda srednje škole koji se nisu
plasirali na Olimpijadu, no pokazuju velik potencijal i volju za radom. S obzirom da su polaznici bili vrlo
dobro upoznati s teoretskim osnovama, naglasak radionice je bio na rješavanju zadataka. Glavni su izvori
zadataka bili online evaluatori SPOJ i z-trening, kao i prošla HSIN-ova natjecanja.
Obrađivali su se zadaci iz sljedećih područja:
•
dinamičko programiranje
•
algoritmi na grafovima
•
kombinatorika
•
strukture podataka s naglaskom na tournament stablo
•
network flow
•
ad hoc zadaci
Dinamičko je programiranje vrlo vjerojatno najvažnija tema na informatičkim natjecanjima, stoga
je na radionici velik naglasak bio upravo na rješavanju zadataka iz tog područja. Sasvim općenito,
dinamičko je programiranje primarno tehnika optimizacije, iako može biti lako modificirana za rješavanje
problema s prebrojavanjem ili vjerojatnošću. Suština tehnike je razbijanje problema na manje
potprobleme koji se rješavaju rekurzivno i iskoristiti ograničen broj potproblema.
Objašnjavali su se općeniti principi rješavanja, kao i rješenja mnogih zadataka, različitih težina.
Rješavali su se zadaci s prebrojavanjem, u koje se dobro uklapa kombinatorika, kao i klasični
optimizacijski problemi.
Grafovi predstavljaju jednu od grana informatike koja se vrlo intenzivno koristi u stvarnim
problemima, problemima kakvi se susreću pri izradi softwarea. Upravo zato, područje je prilično dobro
istraženo te se često pojavljuje na natjecanjima.
60
KAMP 2012.
RADIONICE
Teorija grafova je također jedno od područja koje promatra diskretna matematika. Često se mnogi
problemi na natjecanjima mogu dočarati grafovima. Probleme je u tome obliku lakše analizirati te riješiti
algoritmom odgovarajuće složenosti.
Network flow ili mrežni protok spominjemo u teoriji grafova. Temu smo obradili zato što ona
proširuje naša dosadašnja znanja iz teorije grafova.
Mrežni protok promatra specifičan oblik grafa (usmjereni graf) s bridovima određenog propusta.
Najintuitivnji način na koji možemo shvatiti mrežni protok jest – najveća količina vode koju možemo
provesti u jednoj sekundi od izvora do krajnjeg korisnika, koristeći postojeći cjevovod s ograničenjima na
propusnost određene cijevi.
Zadaci iz ovoga područja su prilično teški, iako je ponekad očito da rješenje koristi ovu teoriju,
izraditi model mreže često je prilično teško.
Kombinatorika je iznimno važna grana matematike, a na informatičkim natjecanjima vjerojatno i
najvažnija. Većinom su se objašnjavale formule vezane uz prebrojavanje, kao i mogućnost brzog
računanja binomnih koeficijenata uz pomoć poznatih činjenica iz teorije brojeva. Nadalje, kombinatorika
se dobro uklapa u zadatke s dinamičkim programiranjem, stoga je bilo riječi i o tome.
Tournament stablo, ukratko, za određeni niz u složenosti O(log N) daje odgovore na upite o
najmanjem/najvećem elementu u intervalu, ili pak sumi. Razmatrale su se naprednije operacije na
tournament stablima, a naglasak je bio na proučavanju elegantne i efikasne implementacije.
Ad hoc zadaci su takvi zadaci koji ne koriste nijedan poznati algoritam i općenito ne mogu biti
svrstani ni u koju kategoriju. Obrađivalo se zadatke s iznimno lijepim i korisnim idejama, a posebice se
objašnjavao način razmišljanja koji vodi do istih. Iz ove se grupe zadataka rješavao i jedan olimpijski
(Sails, IOI 2007).
Uz navedene teme, objašnjena je i implementacija prioritetnog reda (priority queue), a znatan je
dio vremena radionica posvećen samostalnom radu polaznika, kada su međusobno izmjenjivali ideje i
rješavali zadatke.
Posebno treba istaknuti zalaganje polaznika Nevena Miculinića koji je često dobrovoljno izlagao
svoja rješenja i ideje i tako djelovao inspirativno.
Marin Smiljanić
KAMP 2012.
61
RADIONICE
OLIMPIJCI SENIORI
Predavač: Matija Osrečki
Polaznici:
1. Mislav Balunović
2. Domagoj Ćevid
3. Dominik Gleich
4. Matija Milišić
5. Antun Razum
6. Marin Tomić
7. Tomislav Tunković
Kao i prošlih godina, u sklopu ovogodišnjeg Kampa se održavala radionica Olimpijci. Ova
radionica je prvenstveno namijenjena pripremama hrvatskog tima za međunarodna natjecanja (CEOI i
IOI).
Primarni način priprema na ovoj radionici bile su simulacije natjecanja. Voditelj bi pažljivo
odabrao nekoliko zadataka olimpijskog tipa i olimpijske težine, najčešće tri ili četiri (jer se na CEOI-u u
jednom danu natjecanja rješavaju tri, a na IOI-u četiri zadatka) te bi ih onda olimpijci u danom vremenu
od nekoliko sati rješavali. Nakon rješavanja voditelj bi evaluirao (bodovao) sva poslana rješenja, a potom
bi se razgovaralo o rješenjima zadataka – algoritmima koji se koriste na danim zadacima, važnim
idejama, bitnim detaljima i raznim ostalim finesama te bi se iz danih zadataka na taj način mnogo naučilo.
Ako polaznik neke zadatke nije uspio riješiti za vrijeme simulacije, kasnije ih je, poučen o
rješenju od voditelja radionice i od svojih kolega, bez problema riješio. Na taj smo način iz dana u dan
pokazivali napredak: ideje, koje prije radionice nismo imali, smo usvojili i tako napredovali u rješavanju
zadataka koje isprva nismo znali riješiti. Bitno je napomenuti da jedna ideja, jedan algoritam, ne rješavaju
samo taj, konkretan zadatak na kojem smo ih naučili, već otvaraju vrata desecima drugih zadataka koji se
rješavaju na sličan način, i zato je svaki od zadataka na kojem smo nešto naučili vrijedio kao barem deset
zadataka. To, naravno, podrazumijeva dobar odabir zadataka, za što se voditelj radionice pobrinuo.
Izvori rješavanih zadataka bila su razna respektabilna prijašnja natjecanja, od poznate američke
olimpijade USACO pa do HSIN-ovih zadatka s bivših HIO-a, Izbornih priprema te VRSIH-a –
studentskih natjecanja (sve to je, naravno, dostupno na www.hsin.hr).
62
KAMP 2012.
RADIONICE
Dvije radionice bile su posvećene teorijskim predavanjima koje je održao Frane Šarić, dipl. ing.,
nekadašnji uspješni natjecatelj i nosioc informatičkih medalja s međunarodnih natjecanja.
Na predavanjima su ponovljeni neki već poznati algoritmi, ali naučeni i novi:
• Bellman-Fordov algoritam
• 0-1 BFS
• Implementacija balansiranih binarnih stabala
• Pretraživanje stringova (Knuth-Morris-Prattov algoritam)
• Hashing
• Trie
• Ternarno pretraživanje
Primjeri dva teža zadatka koja su polaznici rješavali na radionici olimpijci:
Island (Poljska olimpijada 2008/2009, 3. etapa)
U zadatku je zadana mapa gradova koji su posloženi u konveksan poligon tako da je grad 1 dolje
lijevo, grad N dolje desno, a gradovi između njih su sortirani po rednim brojevima. Potrebno je
odrediti najkraći put između gradova 1 i N, pri čemu je dozvoljeno kretati se samo po cestama i smije
se prelaziti s jedne na drugu ako se one sijeku. Primijetimo da je dovoljno za svaki grad uzeti u obzir
samo cestu prema gradu s najvećim indeksom. Tako možemo krenuti od grada 1 i njegove ceste te
redom dodavati ostale ceste i graditi put čiji će oblik izgledati kao dio konveksne ljuske. Kako pri
dodavanju nove ceste možemo brisati samo zadnje dodane ceste praktično je koristiti stack koji će
nam garantirati linearnu složenost. Dakle, glavni algoritam je složenosti O(N), dok se zbog pojedinih
sortiranja radi pripreme podataka (koje se može izbjeći) složenost povećava na O(N log N). U
nastavku se nalazi jedno od mogućih rješenje:
#include
#include
#include
#include
<cstdio>
<vector>
<cmath>
<algorithm>
using namespace std;
const long double eps = 1e-10;
struct point {
long double x, y;
point( long double _x = 0, long double _y = 0 ) { x = _x; y = _y; };
};
struct line {
long double A, B, C; // Ax + By = C
line( long double a, long double b, long double c ) { A = a; B = b; C = c; };
line( const point &P, const point &Q ) {
A = P.y - Q.y;
B = Q.x - P.x;
C = A*P.x + B*P.y;
};
};
int ccw( const point &A, const point &B, const point &C ) {
long double p = ( B.x-A.x )*( C.y-A.y ) - ( B.y-A.y )*( C.x-A.x );
return p < -eps ? -1 : p > eps;
}
long double dist( const point &A, const point &B ) {
return sqrt( ( B.x-A.x )*( B.x-A.x ) + ( B.y-A.y )*( B.y-A.y ) );
}
point presjek( const line &P1, const line &P2 ) {
KAMP 2012.
63
RADIONICE
long double d = P1.A*P2.B - P2.A*P1.B;
return point( (P2.B*P1.C - P1.B*P2.C )/d, (P1.A*P2.C - P2.A*P1.C)/d );
}
const int MAXN = 100005;
vector< int > E[MAXN];
point a[MAXN];
int v1[MAXN], v2[MAXN];
point presjek( int x, int y ) {
line l1 = line( a[ v1[x] ], a[ v2[x] ] );
line l2 = line( a[ v1[y] ], a[ v2[y] ] );
return presjek( l1, l2 );
}
int main( void ) {
int n, m;
scanf( "%d %d", &n, &m );
for( int i = 0; i < n; ++i ) {
int x, y;
scanf( "%d %d", &x, &y );
a[i] = point( x, y );
}
for( int i = 0; i < m; ++i ) {
int a, b;
scanf( "%d %d", &a, &b ); --a, --b;
if( a > b ) swap( a, b );
E[a].push_back( b );
}
m = 0;
int c = 0;
for( int i = 0; i < n; ++i ) {
sort( E[i].begin(), E[i].end() );
int l = n-1;
for( int j = E[i].size()-1; j >= 0; --j, --l )
if( E[i][j] != l ) break;
if( l <= c || l <= i ) continue;
while( m >= 2 && ccw( a[i], presjek( m-2, m-1 ), a[l] ) <= 0 ) --m;
v1[m] = i, v2[m++] = l;
c = l;
}
long double ans = 0;
point last = a[0];
for( int i = 0; i+1 < m; ++i ) {
point p = presjek( i, i + 1 );
ans += dist( last, p );
last = p;
}
ans += dist( last, a[n-1] );
printf( "%.10Lf", ans );
return 0;
}
Powerful Array, Codeforces
Zadan je niz ai duljine N. Za zadani podniz aL, aL+1, ..., aR potrebno je izračunati vrijednost sljedećeg
izraza:
S = b1K12 + b2K22 + ... + bkKk2
gdje je b1, b2, ..., bk skup različitih članova zadanog podniza, a Ki broj pojavljivanja broja bi u tom
podnizu. Potrebno je odgovoriti na Q takvih upita. N, Q <= 100000, ai <= 1000000
Rješenje se temelji na tome da ćemo izračunati rezultat za jedan upit, a onda ga proširiti ili skratiti do
sljedećeg upita. Tako obrađujemo sve upite po redu.
64
KAMP 2012.
RADIONICE
Primijetimo da, ukoliko trenutni obrađeni podniz proširimo ili skratimo za jedno polje, rješenje za
novi podniz možemo izračunati u konstantnoj složenosti. Naime, kod takve transformacije mijenja se
učestalost samo jednog elementa, za točno jedan, pa rezultat lagano ispravljamo. Budući da upite
možemo obrađivati u proizvoljnom poretku, možemo odabrati takav poredak da je ukupan broj
promjena reda veličine O( (N + Q)*sqrt N ).
Podijelit ćemo upite s obzirom na njihove početke u blokove veličine sqrt( N ). Unutar svakog bloka
upite sortiramo po desnome kraju, u rastućem poretku. Ovakvom podjelom garantiramo da će za
svaki upit popravljanje lijevog kraja biti napravljeno u najviše sqrt( N ) koraka, dok će za cijeli jedan
blok ukupan broj popravljanja desnog kraja biti najviše N. Kako blokova ima sqrt( N ), a
transformacija upita Q, ukupna složenost je O( (N + Q)*sqrt( N ) ). Podjelu na blokove činimo na
način da sve upite sortiramo po blokovima, pa po desnome kraju.
Dodatnu optimizaciju možemo napraviti tako da parne blokove sortiramo uzlazno po kraju, a neparne
silazno.
#include
#include
#include
#include
#include
<cstdio>
<cstdlib>
<cstring>
<cmath>
<algorithm>
using namespace std;
typedef long long ll;
#define MAX
200004
#define VALUE 1000004
int niz[MAX];
int A[MAX], B[MAX], block[MAX];
int Q[MAX];
int N, M, sqrtN;
int X, Y;
int cnt[VALUE];
ll sol[MAX];
ll result;
inline bool cmp( int x, int y ) {
return block[x] < block[y]
|| block[x] == block[y] && ( block[x] & 1 ? B[x] > B[y] : B[x] < B[y] );
}
inline void ADD( int x ) {
result += (2 * (++cnt[niz[x]]) - 1) * (ll)niz[x];
}
inline void DEC( int x ) {
result -= (2 * (--cnt[niz[x]]) + 1) * (ll)niz[x];
}
inline void
while ( X
while ( X
while ( Y
while ( Y
}
move( int nx, int ny ) {
> nx ) ADD( --X );
< nx ) DEC( X++ );
< ny ) ADD( ++Y );
> ny ) DEC( Y-- );
int main(void) {
scanf("%d%d", &N, &M);
sqrtN = (int)(sqrt( N ) + 1);
for ( int i = 1; i <= N; ++i )
scanf("%d", niz + i);
for ( int i = 0; i < M; ++i ) {
scanf("%d%d", A + i, B + i);
block[i] = A[i] / sqrtN;
Q[i] = i;
}
KAMP 2012.
65
RADIONICE
X = Y = 1; ADD( 1 );
sort( Q, Q + M, cmp );
for ( int k = 0; k < M; ++k ) {
move( A[Q[k]], B[Q[k]] );
sol[Q[k]] = result;
}
}
for ( int i = 0; i < M; ++i )
printf("%I64d\n", sol[i]);
return 0;
Hrvatski srednjoškolski tim u sastavu: Dominik Gleich, Antun Razum, Marin Tomić i Tomislav
Tunković zastupat će Hrvatsku na 19. srednjoeuropskoj informatičkoj olimpijadi 2012 – Central
European Olympiad in Informatics – CEOI 2012 u Mađarskom gradu Tati, od 7. do 13. srpnja 2012.
godine, a u sastavu Dominik Gleich, Antun Razum, Marin Tomić i Domagoj Ćevid nastupit će na 24.
međunarodnoj informatičkoj olimpijadi – International Olympiad in Informatics – IOI 2012 u gradu
Sirmione, Italija, od 23. do 30. rujna 2012. godine.
Smatram da su intenzivnim radom na Kampu, olimpijci dobro usvojili i provježbali potrebno
gradivo koje se pojavljuje na međunarodnim natjecanjima. Nadamo se dobrim rezultatima!
Matija Osrečki
66
KAMP 2012.
RADIONICE
PRILOG
ZADACI I OPISI ALGORITAMA S
1. JUNIORSKE HRVATSKE
INFORMATIČKE OLIMPIJADE – JHIO 2012.
KAMP 2012.
67
RADIONICE
68
KAMP 2012.
RADIONICE
KAMP 2012.
69
RADIONICE
70
KAMP 2012.
RADIONICE
KAMP 2012.
71
RADIONICE
72
KAMP 2012.
RADIONICE
KAMP 2012.
73
RADIONICE
74
KAMP 2012.
RADIONICE
KAMP 2012.
75
RADIONICE
76
KAMP 2012.
RADIONICE
OPISI ALGORITAMA
Zadatak BOMBONI
Rješenje zadatka je jednostavno pokušati napraviti svaku moguću zamjenu neka dva susjedna bombona te
uzeti najbolju. Kada napravimo zamjenu, trebamo naći najdulji niz uzastopnih bombona iste boje. To
možemo naći prolaskom kroz svaki redak i svaki stupac. U tom prolasku kroz redak (ili stupac) u svakom
trenutku nam je poznata duljina niza uzastopnih bombona koji završavaju trenutnim bombonom i rješenje
tog retka (stupca) je jednostavno uzeti najveću od tih vrijednosti. Kako mogućih zamjena ima oko 2*N2
ukupna složenost rješenja je O(N4).
Potrebno znanje/kategorija: jednostavne operacije nad nizovima i matricama.
Zadatak ČOKOLADA
Problem rezanja table čokolade veličine N redaka i M stupaca se rješava svođenjem na potproblem,
odnosno dinamičkim programiranjem. Ako su N i M jednaki onda je rješenje 1, a ukoliko nisu,
primijetimo da možemo napraviti N-1 horizontalnih i M-1 vertikalnih rezova. Ako radimo horizontalan
rez preostaju nam nove dvije table čokolade veličina (N-R, M) i (R, M), a ukoliko radimo vertikalan rez
onda (N, M-S) i (N, S). Pritom R označava red gdje radimo horizontalan rez (1 ≤ R ≤ N), a S stupac gdje
radimo vertikalan rez (1 ≤ S ≤ M). Koji god rez smo napravili preostaju nam dvije table čokolade koje
riješimo na isti način kao i za tablu veličine (N, M). Cilj je minimizirati rješenja nad svim mogućim
rezovima kako bi dobili konačno rješenje. Ovo treba napraviti za O(N·M) = O(N2) različitih veličina tabli
za koje treba isprobati O(N+M) = O(N) rezova, prema tome vremenska složenost je O(N3).
Kako bi se postiglo ubrzanje da bi program radio sa N do 1000, potrebno je primijetiti da je rješenje za
(N, M) isto kao i za (M, N), prema tome treba rješavati samo pola potproblema. Također, zbog te
simetrije ne treba isprobavati svih N-1 horizontalnih, odnosno M-1 vertikalnih rezova već samo pola (sa
1 ≤ 2·R ≤ N i 1 ≤ 2·S ≤ M).
Gore rečeno se može implementirati ili rekurzijom s memoizacijom ili direktno popunjavajući matricu
dinamičkog programiranja.
Potrebno znanje/kategorija: dinamičko programiranje.
Zadatak POSAO
Prva stvar koju treba uočiti je da poslove treba obavljati redom po sporednim dijagonalama (onim koje
idu od lijevo dole prema gore desno). To se intuitivno može zaključiti uz malo promatranja i simulacije.
U prvoj sekundi možemo riješiti samo zadatak u polju (1, 1), odnosno u prvom retku i prvom stupcu. U
drugoj možemo riješiti zadatak u poljima (1, 2) i (2, 1), tj. drugu sporednu dijagonalu. U trećoj sekundi
možemo riješiti (1, 3), (2, 2) i (3, 1), tj. treću sporednu dijagonalu itd. Sve to vrijedi pod pretpostavkom
da imamo dovoljno računala. Ukoliko imamo računala najmanje koliko i sporednih dijagonali (odnosno
2N-1), onda je broj sporednih dijagonala ujedno i rješenje problema.
KAMP 2012.
77
RADIONICE
Pretpostavimo da je K < 2N - 1, kao na gornjoj slici gdje K iznosi 5, a N iznosi 10. U tom slučaju znamo
da će nam za prvih K i zadnjih K sporednih dijagonala trebati 2K sekundi (na slici tamno sivo), koliko
god brzo riješili poslove između tih dijagonala. Preostaje izračunati broj sekundi za riješiti poslove
između prvih i zadnjih K sporednih dijagonala. Broj tih poslova je N*N - K*(K+1), prema tome potrebno
vrijeme je (N·N - K·(K+1)) / K zaokruženo na veće cijelo.
Konačno rješenje je prema tome ⌈2·K + (N·N - K·(K+1)) / K⌉ .
Konačno rješenje je vremenske složenosti O(1), dok je rješenje vremenske složenosti O(N2) nosilo 72%
bodova. To rješenje se svodi na cirkularno korištenje računala i obrađivanje poslova redom po sporednim
dijagonalama. Pritom za računala treba paziti kad su zadnji put korištena, dok za poslove treba paziti kad
su riješeni poslovi u poljima gore i lijevo od tog posla. Kad uparimo neko računalo i neki posao treba
uzeti najveći od ta tri vremena i dodati jednu sekundu kako bi se dobilo rješenje za to polje.
Potrebno znanje/kategorija: matematika, ad-hoc.
Zadatak TEGLE
Treba primijetiti kako red rušenja tegli nimalo ne utječe na ishod. Zbog toga i možemo pohlepno riješiti
ovaj problem. Jedini način da prva tegla bude srušena je ako je Martin sam sruši prema tome to može
napraviti u prvom koraku. U sljedećem koraku srušimo prvu od preostalih tegli i tako dalje dok nema više
tegli. Broj koraka je prema tome i rješenje problema.
Traženi algoritam zahtjeva efikasno rješavanje rušenja svih tegli desno od preostale. Iterirajući slijeva na
desno rušimo tegle ako one već nisu srušene. Za neku teglu znamo da je srušena ako je već srušena neka
tegla koja dijeli broj s teglom koja nas zanima. Prema tome za svaki mogući broj treba pamtiti postoji li
takva tegla. Kad obrađujemo neku teglu, testiramo vrijednost za sva tri broja, po potrebi sami rušimo
teglu (i povećavamo rješenje) te označavamo tri broja kao srušena.
Potrebno znanje/kategorija: pohlepan algoritam (greedy).
78
KAMP 2012.
RADIONICE
Zadatak TRATINČICE
Budući da su koordinate tratinčica dovoljno male za svaku x koordinatu možemo konstruirati niz
tratinčica koji su na njoj (sortirane po y koordinati), te isto to učinimo i za svaku y koordinatu. Sada
možemo simulirati pomake, kada smo na nekoj tratinčici sljedeća tratinčica u nekom smjeru bit će
susjedna trenutnoj u odgovarajućem x ili y nizu. Na primjer, želimo li pronaći prvu lijevu tratinčicu, tada
će to biti prethodnica trenutne u y nizu (jer se y koordinata ne mijenja, a x se smanjuje).
Potrebno znanje/kategorija: manipulacija nizovima.
Zadatak ŽIVICA
Prva stvar koju je potrebno primijetiti je da se minimalna apsolutna razlika D dva susjedna elementa u
nizu može binarno pretraživati. Sada nam je preostalo osmisliti funkciju koja će za neki D vratiti
minimalan broj poteza potreban da se ona postigne, ukoliko je taj broj veći od T, rješenje je veće od D, a
u suprotnom je manje ili jednako D.
Jedan mogući algoritam te funkcije je uzeti najmanji stupac te njegove susjede smanjiti dok razlike ne
postanu manje ili jednake D i ponavljati postupak dok razlike svih susjednih elemenata ne budu manje ili
jednake D. Algoritam radi jer trenutno najmanji stupac (koji do sad nije riješen) nam se nikako ne isplati
smanjivati pa možemo smanjivati samo njegove susjede kako bi postigli cilj.
Funkciju na taj način možemo implementirati korištenjem prioritetnog reda pa dobivamo složenost O(N
log N). Uz binarno pretraživanje složenost cijelog rješenja postaje O(N log2 N) što je bilo dovoljno za sve
bodove. Postoji i rješenje spomenute funkcije u linearnoj složenosti koje ostavljamo čitateljima za vježbu.
Potrebno znanje/kategorija: binarno pretraživanje, korištenje prioritetnog reda ili neke druge
odgovarajuće strukture podataka.
KAMP 2012.
79
22. KAMP MLADIH INFORMATIČARA HRVATSKE
Krk, 19. - 29. lipnja 2012.
BILTEN
Autori priloga i fotografija
Sudionici Kampa 2012.
Urednica
Vlasta Šeparović, dipl. ing.
[email protected]
Tehnički urednik
Aron Bohr
Likovno rješenje korica
Ivo Šeparović, dipl. ing.
Aron Bohr
Izdavač
Hrvatski savez informatičara
Zagreb, Dalmatinska 12, tel./fax 01/48 48 770
www.hsin.hr, e-mail: [email protected]
Za izdavača odgovara
Ivo Šeparović, dipl. ing., tajnik HSIN-a
[email protected]
Naklada
100 primjeraka
Tisak
Hrvatski savez informatičara