Du hast eine Lücke im Markt für soziale Medien für sehr, sehr kurze Beiträge entdeckt. Jetzt, wo Twitter Beiträge mit 280 Zeichen erlaubt, werden Leute, die schnelle Updates in sozialen Medien wollen, nicht mehr bedient. Du beschließt, dein eigenes soziales Netzwerk zu bauen.
Damit dein Produkt bemerkenswert wird, machst du es extrem und erlaubst nur Beiträge mit 5 oder weniger Zeichen. Beiträge mit mehr als 5 Zeichen sollten auf 5 gekürzt werden.
Damit sich deine Nutzer voll ausdrücken können, erlaubst du Emoji und anderes Unicode.
Die Aufgabe ist, eingegebene Strings auf 5 Zeichen zu kürzen.
Text, der digital gespeichert wird, muss in eine Folge von Bytes umgewandelt werden. Es gibt 3 Arten, Zeichen auf Bytes abzubilden, die üblicherweise verwendet werden.
UTF-8 und UTF-16 sind beides Unicode-Kodierungen. Das heißt, sie können eine riesige Bandbreite an Zeichen darstellen, darunter:
UTF-8 und UTF-16 sind beides Kodierungen mit variabler Länge. Das heißt, verschiedene Zeichen brauchen unterschiedlich viel Platz.
Betrachte den Buchstaben 'a' und das Emoji '😛'. In UTF-16 braucht der Buchstabe 2 Bytes, das Emoji aber 4 Bytes.
Der Trick bei dieser Übung ist, APIs zu verwenden, die auf Unicode-Zeichen (Codepoints) ausgelegt sind, statt auf Unicode-Codeeinheiten (codeunits).
In Version 8.1 konnten Tcl-Strings Unicode-Zeichen problemlos verarbeiten. Damals war das ziemlich bahnbrechend. Doch je mehr Unicode-Zeichen hinzukamen, desto weiter fiel Tcl bei ihrer Verarbeitung zurück.
Tcls interne Implementierung konnte nur 16-Bit-Unicode-Zeichen verarbeiten, was nur die ersten 65.526 Zeichen abdeckt. Diese Tcl-Wiki-Seite, insbesondere die Diskussion über die Sprache „AndroWish“, nennt die Gründe.
Tcl 9.0 ist die erste Version, die den vollständigen Unicode-Zeichensatz verarbeiten kann. Daher lässt sich diese Übung nur mit Tcl in Version 9.0 (problemlos) lösen.
Melde dich bei Exercism an, um Tcl mit 135 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.