Felfedeztél egy rést a közösségi média piacán: a nagyon-nagyon rövid bejegyzésekre van igény. Mióta a Twitter engedélyezi a 280 karakteres bejegyzéseket, azok, akik gyors frissítéseket szeretnének megosztani a közösségi médiában, nem kapnak megfelelő szolgáltatást. Úgy döntesz, hogy létrehozod a saját közösségi hálózatodat.
Hogy a terméked figyelemre méltó legyen, szélsőségesre veszed a dolgot, és csak legfeljebb 5 karakteres bejegyzéseket engedélyezel. Az 5 karakternél hosszabb bejegyzéseket 5 karakterre kell csonkítani.
Hogy a felhasználóid teljesen kifejezhessék magukat, engedélyezed az emojikat és a többi Unicode-karaktert.
A feladat az, hogy a bemeneti stringeket 5 karakterre csonkítsd.
A digitálisan tárolt szöveget byte-ok sorozatává kell alakítani. A karakterek byte-okhoz rendelésére három elterjedt megoldás van.
A UTF-8 és a UTF-16 is Unicode-kódolás, ami azt jelenti, hogy a karakterek hatalmas választékát képesek megjeleníteni, többek között:
A UTF-8 és a UTF-16 egyaránt változó hosszúságú kódolás, ami azt jelenti, hogy a különböző karakterek különböző mennyiségű helyet foglalnak el.
Vegyük például az 'a' betűt és a '😛' emojit. UTF-16-ban a betű 2 byte-ot foglal el, az emoji viszont 4 byte-ot.
Ebben a feladatban a trükk az, hogy a Unicode-karakterek (kódpontok) köré tervezett API-kat használd a Unicode-kódegységek helyett.
A 8.1-es verzióban a Tcl-stringek zökkenőmentesen kezelték a Unicode-karaktereket. Akkoriban ez igencsak úttörő volt. Ahogy azonban egyre több Unicode-karaktert hoztak létre, a Tcl ezek kezelésében lemaradt.
A Tcl belső implementációja csak 16 bites Unicode-karaktereket tudott kezelni, ami csak az első 65 526 karaktert fedi le. Ez a Tcl-wikioldal, különösen az „AndroWish” nyelvről szóló vita, megadja az okokat.
A Tcl 9.0 az első verzió, amely képes kezelni a teljes Unicode-karakterkészletet. Következésképpen ez a feladat csak a Tcl 9.0-s verziójával oldható meg (könnyen).
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Tcl nyelvet 135 feladat segítségével, valódi emberi mentorálással, mindez ingyen.