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.
O texto guardado digitalmente tem de ser convertido numa série de bytes. Há 3 formas de mapear carateres para bytes em uso comum.
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:
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.
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.
Inscreve-te no Exercism para aprenderes e dominares Tcl com 135 exercícios, e mentoria humana real, tudo grátis.