Program jsem vyhotovil jak v české tak i anglické verzi. Zde se budu zabývat pouze tou anglickou ...
Program byl vytvořen v prostředí LPA Prolog a zde je také funkční. Zkoušel jsem ho přeložit i v SWI Prologu, ale neúspěšně - chybí některé vestavěné predikáty jako třeba char/1.
Program tedy otevřeme a zkompilujeme v LPA Prologu. Jako první příkaz můžeme zadat [help.] nebo v české verzi [pomoc.]. Dozvíme se, že se aplikace spouští příkazem [start.] a také kde nalezneme více informací.
help. /* spustí nápovědu programu */
Příkaz [start.] tedy spustí aplikaci. Program nás přivítá a hnes se nás zeptá, co má dál dělat.
start. /* spustí aplikaci */
Na otázku, zda chceme načítat vstupní text ze souboru odpovíme buď ano [yes.] nebo ne [no.]. Pokud odpovíme [yes.], budeme načítat text ze souboru. Pokud odpovíme [no.], budeme načítat zadaný text uživatelem.
yes. /* budeme načítat text ze souboru */
no. /* budeme načítat zadaný text uživatelem */
Chceme-li načítat text ze souboru, tak se nás program dále zeptá na jméno souboru, který obsahuje text pro kompresi. Sdělíme mu tedy název souboru, například ['text.txt'.]. Název souboru musí být v jednoduchých uvozovkách a zakončen tečkou. Viz příklad.
'text.txt'. /* jméno vstupního souboru s textem */
Program výpíše text ze souboru na obrazovku a pak provede kompresi textu a tento zakódovaný text také výpíše na obrazovku. Poté se program ukončí.
Nechceme-li načítat text ze souboru, ale z klasického vstupu (klávesnice), tak program bude čekat, až zadáme nějaký text pro kompresi. Opět musí být v jednoduchých uvozovkách zakončen tečkou. Viz příklad.
'ahoj ahoj'. /* vstupní text pro kompresi */
Na vstupní text ['ahoj ahoj'.] nám program vyjede kód pro tento textový řetězec a bude vypadat následovně:
97-104-111-106-32-128-130-
Pozn.: Pomlčky jsou zde pro lepší čitelnost kódu.
Byly tedy použity tyto položky ze slovníku:
97 => a
104 => h
111 => o
106 => j
32 => ' '
128 => ah /* nový kód ve slovníku */
130 => oj /* nový kód ve slovníku */
Jak je vidět i na tomto krátkém příkladě, tak původní řetězec měl 9 znaků a výsledný již zanků jenom 7 (reprezentovaných dekadickými číslicemi). Samozřejmě je to dáno opakovaným výskytem jednotlivých znaků.
A takto to vypadá v LPA Prologu: