Primer rešene naloge

Zvezde

Piše se leto 2012 in Nejc, ki takrat še ni vedel, da bo nekaj let kasneje mentor na taboru, je v vroči poletni noči na domačem travniku zrl v zvezde in si predstavljal, kako navdušujoče bi bilo obiskati vesolje. Pohitel je domov in na list papirja narisal raketo, ki bi ga ponesla med zvezde. Nekoliko poenostavljena raketa, v kateri je prostora le zanj, je izgledala nekako tako:

     *
    ***
   *****
  *******
 *********
***********
***********
***********
***********
***********
***********
***********

Na taboru je več mentorjev, vendar leta 2012 še ni mogel vedeti, koliko natanko. Predpostavimo, da se raketa poveča glede na število mentorjev v raketi. Vsak mentor širini rakete doda 4 enote.

Pomagaj Nejcu narisati dovolj veliko raketo za vse mentorje, tako da napišeš program, ki vpraša za število mentorjev, nato pa izriše dovolj veliko raketo.

Rešitev

Najprej pokažimo primer rešitve v psevdokodu:

Vhod: Preberi število mentorjev v spremenljivko m

Izračunaj širino vrha rakete:
    višina_vrha = (m - 1) * 2 + 6

Zanka za izris vrha rakete:
    za i od 0 do višina_vrha - 1:
        izračunaj število presledkov = višina_vrha - i - 1
        izračunaj število zvezdic = 2 * i + 1
        izpiši (presledki * " ") + (zvezdice * "*")

Zanka za izris trupa rakete:
    za i od 0 do višina_vrha - 1:
        izpiši (2 * višina_vrha - 1) zvezdic

Sledi rešitev v programskem jeziku Python:

n = int(input("Stevilo mentorjev: "))
n = (n-1)*2+6

for i in range(n):
    print(" " * (n - i - 1) + "*" * (2 * i + 1))
for i in range(n):
    print("*" * (n*2 - 1))

1. naloga

Milina ura

Mila ima novo uro. Čeprav še ne zna točno povedati koliko kaže, je nad njo tako zelo navdušena, da jo celo popoldne drži ob ušesu in posluša njeno tiktakanje.

Kadar skoči sekundni kazalec na sodo število se zasliši "Tik", kadar pa na liho, naredi "Tak". Napiši program, ki glede na vhodno številko izpiše "Tik" ali "Tak", glede na to, ali je številka soda ali liha.

Primer vhoda

3

Primer izhoda

Tak

* Dodatna naloga: Dopolni program tako, da na vhodu sprejmeš več številk in izpišeš niz "Tik"-ov in "Tak"-ov.

Primer vhoda

2 3 4 6 8

Primer izhoda

TikTakTikTikTik

2. naloga

Rjovenje zmaja

Pred davnimi časi, ob vznožju špičaste in zasnežene gore je stala majhna vasica. Starejši vaščani so v večernih urah otrokom ob toplem ognju radi pripovedovali zgodbe o strašnem zmaju Tolovaju, ki naj bi prebival na vrhu gore. Mali Jakob se je zgodb o zmaju malce bal in se je včasih pokril kar čez glavo.

Zmaj Tolovaj pa je bil strašen predvsem in le kadar je bruhal ogenj, sicer pa je bil prav prijazen in prikupen zmajček. Svojo moč je črpal iz vibracij glasov besed zapisanih v starodavni zmajevski knjigi, ki jo je hranil na zdaj že zaprašeni polici v svojem brlogu. V njej so bile zapisane besede kot je "Vrooooooooč" ali pa "Žgeeeeem".

Ko je Jakob odrasel, je zmaja vse pogosteje opazoval. Ugotovil je, da več samoglasnikov kot Tolovajeva rojveča beseda vsebuje, bolj uničujoč in žareč je bil njegov buhteči ogenj.

Kot prvi programer v vasi je Jakob začutil notranji klic, ki ga je spodbudil napisati tak program, ki glede na vpisano besedo izpiše, kako mogočen bo zmajev ogenj.

Primer vhoda

Guuuuš

Primer izhoda

4

3. naloga

Paradižniki, uši in mravlje

Na vrtu poleg bazilike rastejo rastline paradižnika. Na nekaterih steblih paradižnikov se pojavijo listne uši. Mravlje imajo zelo rade sladko tekočino, ki jo uši izločajo, zato jih prenašajo iz ene rastline na druge.

Vsak dan velja naslednje:

Opombe:

Na vhodu v prvi vrstici prebereš začetno stanje uši na steblih (vsaka številka predstavlja po eno rastlino ter pove, koliko uši je na tej rastlini), v drugi vrstici prebereš koliko dni želimo simulirati.

Primer vhoda

5 1 4 4 2 
5

Napiši program, ki izpiše stanje uši na rastlinah po končani simulaciji - torej po vseh premikih, ki se zgodijo vsak dan.

Primer izhoda

7 4 4 4 4

Pregled primera po dnevih

0. dan - začetno stanje - imamo 5 rastlin in na vsaki nekaj uši.

5 1 4 4 2

1. dan - na drugem in petem steblu sta se priselili na vsakem po 1 nova uš. Mravlje so iz prvega stebla prenesle polovico ceil(5/2)=3 uši na drugo steblo

2 5 4 4 3

2. dan - na prvem in petem steblu sta se priselili na vsakem po 1 nova uš. Mravlje so iz drugega stebla prenesle polovico ceil(5/2)=3 uši na tretje steblo

3 2 7 4 4

3. dan - na prvem in drugem steblu sta se priselili na vsakem po 1 nova uš. Mravlje so iz tretjega stebla prenesle polovico ceil(7/2)=4 uši na četrto steblo

4 3 3 8 4

4. dan - na drugem in tretjem steblu sta se priselili na vsakem po 1 nova uš. Mravlje so iz četrtega stebla prenesle polovico ceil(8/2)=4 uši na peto steblo

4 4 4 4 8

5. dan - Mravlje so iz petega stebla odnesle polovico ceil(8/2)=4 uši na prvo steblo, vendar so na novo steblo prispele le 3 uši, ker so mravlje 1 uš izgubile

7 4 4 4 4

4. naloga

Slovenske številke

Stari dedek ne mara pisati številk s števkami. Raje jih vedno zapiše z besedami po slovensko. Ker je prepisovanje dolgočasno in zamudno, mu pomagaj napisati program, ki bo pretvoril zapise števil z besedami v navadne številke s števkami.

Kot vhod program prejme eno vrstico z zapisom številke v slovenskem jeziku. Kot izhod izpišite ustrezno številko.

Program mora pravilno pretvarjati števila od 0 do 999.

Slovensko poimenovanje števil

Osnovna števila:

Desetice:

Sestavljene oblike:

Stotice:

Primeri

VhodIzhod
nič0
ena1
dvajset20
enaindvajset21
petinštirideset45
sto100
sto ena101
petsto petinpetdeset555
devetsto devetindevetdeset999

5. naloga

Cianobakterije

Letos se je na jezeru pojavila nenavadna vrsta bakterije - cianobakterija. Da bi zaščitil zdravje obiskovalcev, je nacionalni inštitut za biologijo pripravil plan za omejitev njihovega širjenja. Razvili so posebno pregrado, ki lahko zadrži cianobakterije, ampak le, če se ta drži skupaj v enem kosu. Pomagajte jim določiti najmajšo dolžino pregrade.

Kot vhodne podatke najprej dobite števili \(n\) in \(m\), ki predstavljata površino jezera \(n * m\). Nato dobite \(n\) vrstic po \(m\) znakov, kjer bo znak . predstavljal vodo, znak # pa cianobakterije. Kot rezultat izpišite najkrajšo dolžino pregrade, ki bo zadržala cianobakterije.

Primer vhoda:

5 10
...##..#..
..###..#..
.......#..
....##....
..........

Najkrajša možna pregrada (ki se drži v enem kosu) pokriva naslednji prostor: Pregrada

Če preštejemo stranice te pregrade, dobimo dolžino 20.