Autorské riešenie
[stiahni imp : py]

  • Počet riešiteľov: 7 / 16 = 44 %

  • Úspešnosť riešenia: 1,93 / 4 = 48,25 %

Úloha Tajný denník bola zameraná na jednoduché posuvné šifrovanie. Úlohou bolo zašifrovať text zmenou každej samohlásky na jej nasledujúcu.

Na začiatku načítame slovo/text a vytvoríme si pomocnú premennú noveSlovo, ktorá bude obsahovať prázdny reťazec. Následne budeme prechádzať cyklom celým slovom/textom po jednotlivých písmenách. Každé písmeno budeme testovať. Ak sa jedná o spoluhlásku pridáme ho na koniec reťazca uloženého v premennej noveSlovo a prejdeme na ďalšie písmeno. Ak to bude samohláska zmeníme ju na nasledujúcu, pridáme ju na koniec reťazca uloženého v premennej noveSlovo a prejdeme na ďalšie písmeno.

Nakoniec vypíšeme zašifrované slovo uložené v premennej noveSlovo.

;Imagine logo
viem sifrovanie :slovo
 
;vytvoríme pomocnú premennú a vložíme do nej prázdny reťazec
 
urobTu "noveSlovo "
 
urobTu "pocet pocet :slovo
 
 
;prechádzame slovom po písmenách
 
;pri testovaní jednotlivých písmen používame vnorené podmienky ak2, čím zabezpečíme to, že   pokiaľ aktuálne písmeno splní niektorú podmienku, prejde sa na ďalšie písmeno
 
opakuj :pocet [
   
ak2 prvok pocitadlo :slovo = "a
     
[urobTu "noveSlovo slovo :noveSlovo "e]
      
     
[ak2 prvok pocitadlo :slovo = "e
       
[urobTu "noveSlovo slovo :noveSlovo "i]
      
       
[ak2 prvok pocitadlo :slovo = "i
         
[urobTu "noveSlovo slovo :noveSlovo "o]
      
         
[ak2 prvok pocitadlo :slovo = "o
           
[urobTu "noveSlovo slovo :noveSlovo "u]
      
           
[ak2 prvok pocitadlo :slovo = "u
             
[urobTu "noveSlovo slovo :noveSlovo "y]
      
             
[ak2 prvok pocitadlo :slovo = "y
               
[urobTu "noveSlovo slovo :noveSlovo "a]
               
[urobTu "noveSlovo slovo :noveSlovo prvok pocitadlo :slovo]
             
]
           
]
         
]
       
]
     
]        
 
]

  ;nakoniec vypíšeme zašifrované slovo
 
pis :noveSlovo
koniec
 

Python
def sifrovanie1(slovo):
    noveSlovo = ''
    for i in range(len(slovo)):
        if slovo[i] == "a":
            noveSlovo = noveSlovo + "e"
        elif slovo[i] == "e":
            noveSlovo = noveSlovo + "i"
        elif slovo[i] == "i":
            noveSlovo = noveSlovo + "o"
        elif slovo[i] == "o":
            noveSlovo = noveSlovo + "u"
        elif slovo[i] == "u":
            noveSlovo = noveSlovo + "y"
        elif slovo[i] == "y":
            noveSlovo = noveSlovo + "a"
        else:
            noveSlovo = noveSlovo + slovo[i]
 
    return noveSlovo
 
#všeobecné riešenie - ľubovoľný posun
def sifrovanie2(slovo, posun):
    noveSlovo = ''
    pismena = ["a","e","i","o","u","y"]
    posun = posun % len(pismena)
    for i in range(len(slovo)):
        if slovo[i] in pismena:
            index = pismena.index(slovo[i]) + posun
            if index > len(pismena)-1:
                index = index - len(pismena)
                noveSlovo = noveSlovo + pismena[index]
            else:
                noveSlovo = noveSlovo + pismena[index]
        else:
            noveSlovo = noveSlovo + slovo[i]
    return noveSlovo 

Vaše zaujímavé riešenia a najčastejšie chyby

Každý tým riešil túto úlohu iným spôsobom. Medzi zaujímavé nápady patrí použitie rekurzie alebo zoznamu samohlások. Najčastejšou chybou bolo neúplné otestovanie jednotlivých písmen. V niektorých prípadoch sa testovalo len prvé písmeno v slove alebo výstup bol po písmenách, nie celé zašifrované slovo. Všetky tímy riešili úlohu v jazyku Imagine.