Instruções

Compressão LZW

O algoritmo de Lempel-Ziv-Welch (LZW) fornece compressão de dados sem perda.

O que fazer:

Escreva uma função que receba dois parâmetros. O primeiro parâmetro é um booleano onde true indica compressão e false indica descompactação. O segundo parâmetro é uma string ou um array a ser processado. Se é uma string que deve ser comprimida, retorne um array de números. Se for um array de números a serem descompactados, retorne uma string.

Critérios de Aceitação:

Testes:

  • `LZW` deve ser uma função.
  • `LZW(true, "TOBEORNOTTOBEORTOBEORNOT")` deve retornar um array.
  • `LZW(false, [84, 79, 66, 69, 79, 82, 78, 79, 84, 256, 258, 260, 265, 259, 261, 263])` deve retornar uma string.
  • `LZW(true, "TOBEORNOTTOBEORTOBEORNOT")` deve retornar `[84, 79, 66, 69, 79, 82, 78, 79, 84, 256, 258, 260, 265, 259, 261, 263]`.
  • `LZW(false, [84, 79, 66, 69, 79, 82, 78, 79, 84, 256, 258, 260, 265, 259, 261, 263])` deve retornar `"TOBEORNOTTOBEORTOBEORNOT"`.
  • `LZW(true, "0123456789")` deve retornar `[48, 49, 50, 51, 52, 53, 54, 55, 56, 57]`.
  • `LZW(false, [48, 49, 50, 51, 52, 53, 54, 55, 56, 57])` deve retornar `"0123456789"`.
  • `LZW(true, "BABAABAAA")` deve retornar `[66, 65, 256, 257, 65, 260]`.
  • `LZW(false, [66, 65, 256, 257, 65, 260])` deve retornar `"BABAABAAA"`.

Console