3. naloga

Dekodiranje nizov

Dan je naslednji postopek za kodiranje besedila (niza znakov):

  • Niz začnemo brati od začetka, dokler ne pridemo do prvega samoglasnika. Nato vse prebrane znake, vključno s tistim samoglasnikom, napišemo v obratnem vrstnem redu. Ob tem si shranimo podatek, koliko znakov smo zamenjali pri tej prvi menjavi.
  • Sedaj preberemo vse znake od prvega samoglasnika dalje (toda brez tega samo- glasnika), dokler ne pridemo do drugega samoglasnika. Zopet vse prebrane znake, vključno z drugim samoglasnikom, napišemo v obratnem vrstnem redu. S tem je drugi samoglasnik prišel na drugo mesto v nizu, takoj za prvim samoglasnikom. Shranimo podatek, koliko znakov smo zamenjali pri tej drugi menjavi.
  • Postopek ponavljamo, dokler ne pridemo do konca besedila.

Primer: oglejmo si postopek kodiranja niza ”SOBA Z RAZGLEDOM NA VRT“. Za samoglasnike štejejo znaki A, E, I, O in U. V vsaki vrstici je podčrtan tisti del niza, ki ga bomo v tem koraku obrnili; številka na desni pa je dolžina tega dela.

SOBA Z RAZGLEDOM NA VRT    (2)
OSBA Z RAZGLEDOM NA VRT    (3)
OABS Z RAZGLEDOM NA VRT    (7)
OAAR Z SBZGLEDOM NA VRT   (10)
OAAELGZBS Z RDOM NA VRT   (11)
OAAEODR Z SBZGLM NA VRT   (14)
OAAEOAN MLGZBS Z RD VRT

Opiši postopek za dekodiranje tako zakodiranega niza. Postopek torej kot vhodne podatke dobi kodirani niz (v zgornjem primeru: OAAEOAN MLGZBS Z RD VRT) in seznam s številom zamenjanih znakov pri vsaki menjavi (v zgornjem primeru: 2, 3, 7, 10, 11, 14). Predpostavi, da niz vsebuje le velike črke angleške abecede (od A do Z) in presledke.

Dekodiranje za zgornji primer:

(14) OAAEOAN MLGZBS Z RD VRT
(11) OAAEODR Z SBZGLM NA VRT
(10) OAAELGZBS Z RDOM NA VRT
(7)  OAAR Z SBZGLEDOM NA VRT
(3)  OABS Z RAZGLEDOM NA VRT
(2)  OSBA Z RAZGLEDOM NA VRT
     SOBA Z RAZGLEDOM NA VRT