Percursos
/
Tcl
Tcl
/
Exercícios
/
Microblogue
Microblogue

Microblogue

Fácil

Instruções

Identificaste uma lacuna no mercado das redes sociais para publicações muito, muito curtas. Agora que o Twitter permite publicações de 280 carateres, quem quer atualizações rápidas nas redes sociais não está a ser servido. Decides criar a tua própria rede social.

Para tornar o teu produto digno de nota, tornas-lo extremo e só permites publicações de 5 carateres ou menos. Qualquer publicação com mais de 5 carateres deve ser truncada para 5.

Para permitires que os teus utilizadores se expressem livremente, permites Emoji e outros carateres Unicode.

A tarefa é truncar as strings de entrada para 5 carateres.

Codificações de texto

O texto guardado digitalmente tem de ser convertido numa série de bytes. Há 3 formas de mapear carateres para bytes em uso comum.

  • O ASCII consegue codificar carateres da língua inglesa. Todos os carateres têm exatamente 1 byte.
  • O UTF-8 é uma codificação de texto Unicode. Os carateres ocupam entre 1 e 4 bytes.
  • O UTF-16 é uma codificação de texto Unicode. Os carateres têm 2 ou 4 bytes.

Tanto o UTF-8 como o UTF-16 são codificações Unicode, o que significa que conseguem representar uma enorme variedade de carateres, incluindo:

  • Texto na maioria das línguas e sistemas de escrita do mundo
  • Texto histórico
  • Emoji

Tanto o UTF-8 como o UTF-16 são codificações de comprimento variável, o que significa que carateres diferentes ocupam quantidades diferentes de espaço.

Repara na letra 'a' e no emoji '😛'. Em UTF-16, a letra ocupa 2 bytes, mas o emoji ocupa 4 bytes.

O truque deste exercício é usar APIs concebidas em torno de carateres Unicode (codepoints) em vez de codeunits Unicode.

Notas sobre o Unicode no Tcl

Na versão 8.1, as strings do Tcl conseguiam lidar com carateres Unicode sem problemas. Na altura, isso era bastante inovador. No entanto, à medida que foram criados cada vez mais carateres Unicode, a capacidade do Tcl para os tratar ficou para trás.

A implementação interna do Tcl só conseguia lidar com carateres Unicode de 16 bits, o que abrange apenas os primeiros 65 526 carateres. Esta página da wiki do Tcl, em particular a discussão sobre a linguagem "AndroWish", explica as razões.

O Tcl 9.0 é a primeira versão que consegue lidar com o conjunto completo de carateres Unicode. Por isso, este exercício só se resolve (facilmente) com a versão 9.0 do Tcl.

Editar via GitHub A ligação abre numa nova janela ou separador
Tcl Exercism

Estás pronto para começar Microblogue?

Inscreve-te no Exercism para aprenderes e dominares Tcl com 135 exercícios, e mentoria humana real, tudo grátis.