Úloha 16: Morseova abeceda
Cíl úlohy
Vytvořte obousměrný překladač mezi běžným textem a Morseovou abecedou. Skript umožní zašifrovat zadaný text do Morseova kódu (tečky a čárky s lomítkem jako oddělovačem písmen) a naopak dešifrovat kód zpět do latinky.
Pravidla reprezentace Morseovy abecedy v textu
- Znaky a číslice: Každé písmeno je reprezentováno sekvencí teček
.a čárek-(např.S = ...,O = ---). - Oddělovač písmen: Za každým písmenem následuje jedno lomítko
/. Např. SOS se zapíše jako.../---/.../. - Oddělovač slov: Mezi slovy jsou dvě lomítka
//. - Zalomení řádku: Tři lomítka
///.
Úvahy a doporučený postup řešení
- Odstranění diakritiky: Morseova abeceda nerozlišuje háčky a čárky. Před překladem text převeďte na malá písmena bez diakritiky (pomocí funkce
bezdia()zfunkce.phpamb_strtolower()). - České písmeno „CH“: V češtině má CH svůj vlastní speciální kód:
----(čtyři čárky). Proto je nutné jej nahradit dříve než samostatná písmena C a H! - Dešifrování (z Morseovky do textu): Při dešifrování nelze bezhlavě nahrazovat tečky a čárky, protože např. kód pro E (
.) je obsažen v mnoha dalších písmenech (např. S...). Vhodnou strategií je rozdělit Morseův text podle lomítekexplode('/', $text)na jednotlivé kódy písmen a ty vyhledat v obráceném poliarray_flip($morse).
Doplňující otázky k zamyšlení a náměty na rozšíření
- 1. Kdo a kdy vynalezl Morseovu abecedu a jaký byl první slavný telegram odeslaný Samuelem Morsem v roce 1844 („What hath God wrought“)?
- 2. Jak funguje zvuková signalizace Morseovky pomocí Web Audio API v moderním JavaScriptu (generování tónu pro tečku a čárku)?
- 3. Proč mají v Morseově abecedě nejčastěji se vyskytující písmena (např. E
.a T-) nejkratší kód? Jak tento princip předchází modernímu Huffmanovu kódování a kompresi dat?
Vyzkoušejte funkční řešení: Otevřít vzorovou úlohu morse.php