Morse

Odprto: torek, 9. november 2021, 00.00
Rok za oddajo: torek, 16. november 2021, 08.00

Morsejeva abeceda omogoča pošiljanje besedila s pomočjo različnih dolžin piskov, svetlobnih signalov ali, morda tudi z dimnimi signali. Črko V, na primer, sporočimo s tremi kratkimi in enim dolgim signalom, kar bi lahko zapisali tako "- - - ---"; dolgi signal je namreč približno trikrat daljši od kratkega. Med posameznimi signali je presledek. Da ločimo črke med sabo, naredimo med posameznimi črkami trikrat daljši presledek. Da ločimo dve besedi, naredimo še daljši premor, recimo šest presledkov. Tole bi lahko bil primer sporočila:

- - - ---   - - -   --- --- --- - ---      - - --- -   - --- -   - -      - - ---   - --- - -

Takšnega zapisa v resnici ne uporabljamo; običajno bi kratki znak opisali s piko in daljšega s črtico. Črko V bi torej opisali z "...-". Presledkov znotraj črke ne pišemo. Pač pa bomo med dvema črkama naredili en presledek, med dvema besedama pa po tri. Gornji signal bi torej zapisali tako:

...- ... ---.-   ..-. .-. ..   ..- .-..

Prva črka gornjega zapisa je, vemo, V. Naprej gre tako:

VSŠ FRI UL

V tem zapisu seveda ni presledkov med črkami, pač pa imamo en presledek med besedami.

Obvezni del

Napiši naslednje funkcije.

  1. v_zaporedje(signal) prejme signal v prvi obliki in vrne zaporedje v drugi obliki.

  2. vrni_znak(zaporedje, abeceda, morse) prejme niz z nekim zaporedjem v drugi obliki, na primer, "...-", niz, ki vsebuje vse črke abecede, na primer "ABCČDEFGHIJKLMNOPRSŠTUVZŽ" in seznam z Morsejevo abecedo: n-ti element seznama predstavlja zapis n-te črke abecede. Funkcija mora vrniti znak, ki ga predstavlja zaporedje - v gornjem primeru "V".

  3. v_besedo(zaporedje, abeceda, morse) prejme posamično besedo v drugi obliki in vrne besedo, zapisano z običajnimi črkami. Če funkcijo pokličemo z "...- ... ---.-" (in ustrezno definiranama abecedama), vrne niz "VSŠ".

    Funkcija prejme le eno besedo, brez trojnih presledkov.

  4. v_znake(zaporedje, abeceda, morse) prejme niz z zaporedjem v drugi obliki, vendar lahko vsebuje več besed. Če dobi kot argument celotno vrstico

    ...- ... ---.-   ..-. .-. ..   ..- .-..
    

    vrne celotno tretjo, "VSŠ FRI UL".

  5. preberi(signal, abeceda, morse) prejme signal, kot ga opisuje prva vrstica in vrne besedilo, kot je v tretji.

Dodatna naloga

Tole je težje samo zato, ker se morate zorganizirati sami: pišite si poljubne dodatne funkcije, ki vam utegnejo pomagati.

Napiši funkcijo zapisi(besedilo, abeceda, morse), ki prejme besedilo in vrne signal. Se pravi, dobi niz, kot ga imamo v tretji vrstici, in vrne takšnega, kot je v prvi.

Testi