Hai individuato una lacuna nel mercato dei social media per i post molto molto brevi. Ora che Twitter consente post da 280 caratteri, le persone che vogliono aggiornamenti rapidi sui social media restano insoddisfatte. Decidi di creare il tuo social network.
Per rendere il tuo prodotto degno di nota, lo rendi estremo e consenti solo post di 5 caratteri o meno. I post di più di 5 caratteri devono essere troncati a 5.
Per consentire ai tuoi utenti di esprimersi appieno, consenti le emoji e altri caratteri Unicode.
Il compito è troncare le stringhe di input a 5 caratteri.
Il testo memorizzato in formato digitale deve essere convertito in una serie di byte. Esistono 3 modi di uso comune per mappare i caratteri ai byte.
UTF-8 e UTF-16 sono entrambe codifiche Unicode, il che significa che sono in grado di rappresentare una vastissima gamma di caratteri, tra cui:
UTF-8 e UTF-16 sono entrambe codifiche a lunghezza variabile, il che significa che caratteri diversi occupano quantità di spazio diverse.
Considera la lettera «a» e l'emoji «😛». In UTF-16 la lettera occupa 2 byte, mentre l'emoji ne occupa 4.
Il trucco di questo esercizio è usare le API pensate per i caratteri Unicode (i punti di codice) invece che per le unità di codice Unicode.
Nella versione 8.1, le stringhe di Tcl riuscivano a gestire i caratteri Unicode senza problemi. All'epoca, era piuttosto innovativo. Tuttavia, man mano che venivano creati sempre più caratteri Unicode, la capacità di Tcl di gestirli non è riuscita a tenere il passo.
L'implementazione interna di Tcl poteva gestire solo caratteri Unicode a 16 bit, una copertura limitata ai primi 65.526 caratteri. Questa pagina wiki di Tcl, in particolare la discussione sul linguaggio «AndroWish», ne spiega le ragioni.
Tcl 9.0 è la prima versione in grado di gestire il set completo di caratteri Unicode. Di conseguenza, questo esercizio si risolve (facilmente) solo con la versione 9.0 di Tcl.
Iscriviti a Exercism per imparare e padroneggiare Tcl con 135 esercizi e il mentoring di persone reali, tutto gratis.