Tu as identifié un manque sur le marché des médias sociaux pour les publications très très courtes. Maintenant que Twitter autorise les publications de 280 caractères, les personnes qui veulent des mises à jour rapides sur les réseaux sociaux ne sont pas servies. Tu décides de créer ton propre réseau social.
Pour rendre ton produit remarquable, tu le rends extrême et tu n'autorises que les publications de 5 caractères ou moins. Toute publication de plus de 5 caractères doit être tronquée à 5.
Pour permettre à tes utilisateurs de s'exprimer pleinement, tu autorises les emoji et les autres caractères Unicode.
La tâche consiste à tronquer à 5 caractères les strings fournies en entrée.
Un texte stocké sous forme numérique doit être converti en une série d'octets. Il existe 3 façons courantes de faire correspondre des caractères à des octets.
UTF-8 et UTF-16 sont tous deux des encodages Unicode, ce qui signifie qu'ils peuvent représenter une immense variété de caractères, notamment :
UTF-8 et UTF-16 sont tous deux des encodages à longueur variable, ce qui signifie que différents caractères occupent une quantité d'espace différente.
Prenons la lettre « a » et l'emoji « 😛 ». En UTF-16, la lettre occupe 2 octets, mais l'emoji en occupe 4.
L'astuce de cet exercice consiste à utiliser des API conçues autour des caractères Unicode (points de code) plutôt que des unités de code Unicode.
En Go, les strings du code source (et ceux des tests unitaires) sont en UTF-8.
Un string contient des octets qui représentent des runes.
Dans la plupart des cas en Go, une « unité de code » est un byte et un « point de code » est un rune.
Voir Strings, bytes, runes and characters in Go pour plus de détails.
Inscris-toi sur Exercism pour apprendre et maîtriser Go avec 35 concepts167 exercices, et un vrai mentorat humain, le tout gratuitement.