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