Você identificou uma lacuna no mercado de redes sociais para posts muito, muito curtos. Agora que o Twitter permite posts de 280 caracteres, as pessoas que querem atualizações rápidas nas redes sociais não estão sendo atendidas. Você decide criar sua própria rede social.
Para tornar seu produto notável, você o leva ao extremo e só permite posts de 5 caracteres ou menos. Qualquer post com mais de 5 caracteres deve ser truncado para 5.
Para permitir que seus usuários se expressem plenamente, você permite emoji e outros caracteres Unicode.
A tarefa é truncar strings de entrada para 5 caracteres.
Todo texto armazenado digitalmente precisa ser convertido em uma sequência de bytes. Existem 3 maneiras comumente usadas de mapear caracteres para bytes.
UTF-8 e UTF-16 são ambas codificações Unicode, o que significa que são capazes de representar uma enorme variedade de caracteres, incluindo:
UTF-8 e UTF-16 são ambas codificações de comprimento variável, o que significa que caracteres diferentes ocupam quantidades diferentes de espaço.
Considere a letra 'a' e o emoji '😛'. Em UTF-16, a letra ocupa 2 bytes, mas o emoji ocupa 4 bytes.
O truque deste exercício é usar APIs pensadas em torno de caracteres Unicode (codepoints) em vez de codeunits Unicode.
Na versão 8.1, as strings do Tcl conseguiam lidar com caracteres Unicode sem esforço. Na época, isso era bastante inovador. Porém, conforme cada vez mais caracteres Unicode foram sendo criados, a capacidade do Tcl de lidar com eles ficou para trás.
A implementação interna do Tcl conseguia lidar apenas com caracteres Unicode de 16 bits, o que cobre somente os primeiros 65.526 caracteres. Esta página da wiki do Tcl, em especial a discussão sobre a linguagem "AndroWish", explica os motivos.
O Tcl 9.0 é a primeira versão capaz de lidar com o conjunto completo de caracteres Unicode. Por isso, este exercício só é resolvido (com facilidade) com o Tcl versão 9.0.
Crie sua conta no Exercism para aprender e dominar Tcl com 135 exercícios e mentoria humana de verdade, tudo de graça.