Autorské riešenie
[stiahni imp : py]

  • Počet riešiteľov: 5 / 7 = 71 %

  • Úspešnosť riešenia:  2.8 / 5 = 56 %

Pozrime sa na podmienky, ako sa slová do jazyka Pig Latin prekladajú. Existujú dve podmienky, ktoré určujú, ako sa slovo preloží. Inak sa prekladajú slová začínajúce spoluhláskou a inak slová začínajúce samohláskou. Keďže každé slovo začína samohláskou alebo spoluhláskou, iná možnosť neexistuje.

Spoluhlások je viac ako samohlások. Výhodnejšie preto bude spýtať sa najskôr, či slovo začína samohláskou. Ak nie, musí začínať spoluhláskou.

Pre testovanie toho, čím slovo začína bude výhodné si vytvoriť zoznam samohlások a otestovať, či prvý znak slova sa v tomto zozname nachádza. Základ programu môže vyzerať nasledovne:

;Imagine logo
viem preloz :slovo
  urobTu "samohlasky [a e i o u y]
  ak2 prvok? (prvy :slovo) :samohlasky [
    ...
  ][
    ...
  ]
koniec

#Python
def
preloz(slovo):
    samohlasky = ['a', 'e', 'i', 'o', 'u', 'y']
    if slovo[0] in samohlasky:
        ...
    else:
        ... 

Ak už vieme, ktorý z dvoch prípadov nastal, môžeme vyrobiť preklad slova.

V prípade začiatku samohláskou pridáme koncovku "yay".

V opačnom prípade (začiatok je spoluhláska) presunieme prvé písmeno na koniec a pridáme koncovku "ay".

Výsledná verzia programu môže vyzerať nasledovne:

;Imagine logo
viem preloz :slovo
  urobTu "samohlasky [a e i o u y]
  ak2 prvok? (prvy :slovo) :samohlasky [
    vy slovo :slovo "yay
  ][
    vy (slovo bezPr :slovo prvy :slovo "ay)
  ]
koniec

#Python
def
preloz(slovo):
    samohlasky = ['a', 'e', 'i', 'o', 'u', 'y']
    if slovo[0] in samohlasky:
        return slovo + "yay"
    else:
        return slovo[1:] + slovo[0] + "ay"

Všimnime si odlišný prístup k manipuláciami so slovami (reťazcami) v Imagine a v Python-e.

  Imagine Python
prvý znak reťazca prvy retazec retazec[0]
reťazec bez prvého znaku bezPr retazec retazec[1:]
spojenie reťazcov do jedného reťazca (slovo retazec1 retazec2) retazec1 + retazec2

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

Najčastejšou chybou bolo, že ste nedôsledne dodržali podmienky zadania. Výsledná procedúra, resp. funkcia mala vrátiť preklad slova. Nie ho vypísať. Ak procedúra/funkcia výsledok vracia, stáva sa omnoho univerzálnejšou. Tento vrátený výsledok môžeme vypísať alebo ho použiť ako súčasť ďalšieho výpočtu.

Ďalšou častou chybou bolo, že aj v prípade ak slovo začínalo samohláskou, tak ste ju presunuli na jeho koniec. V tomto prípade sa však začiatok slova nemení.