Implementační test 31.1.2022

Napište funkci, která provede Burrowsovu–Wheelerovu transformaci. Princip transformace spočívá v tom, že se provedou všechny možné rotace zadaného textu (včetně ukončovacího znaku) a tyto dílčí rotace se lexikograficky seřadí. Výstupem tranformace je pak řada posledních písmen jednotlivých rotací.

Funkce ověří, že na vstupu je textový řetězec ukončený znakem ^ - pokud tomu tak není, vhodným způsobem ukončí činnost.

Programový přepínač -v způsobí výpis dílčích rotací a seřazených rotací.

Příklad:

int bw_transform (char * vstup, char * vystup, int verbose)
{
    // pokud je verbose = 1, vypisuje funkce jednotlive rotace
    // pokud doslo k chybe, return 100
    // pokud vse dopadlo OK, return 0
}

$ echo "BANANA^" > data.in
$ ./a.out -v < data.in 
rotace:
BANANA^
^BANANA
A^BANAN
NA^BANA
ANA^BAN
NANA^BA
ANANA^B

serazeno:
ANANA^B
ANA^BAN
A^BANAN
BANANA^
NANA^BA
NA^BANA
^BANANA

vysledek:
BNN^AAA