Треки
/
Tcl
Tcl
/
Вправи
/
Мікроблог
Мікроблог

Мікроблог

Легка

Вказівки

Ми помітили прогалину на ринку соціальних мереж для дуже-дуже коротких дописів. Тепер, коли Twitter дозволяє дописи на 280 символів, ті, хто хоче швидко оновлювати свої соцмережі, не отримують належного сервісу. Ми вирішуємо створити власну соціальну мережу.

Щоб наш продукт був помітним, ми робимо його екстремальним і дозволяємо лише дописи з 5 символів або менше. Будь-які дописи, довші за 5 символів, потрібно обрізати до 5.

Щоб наші користувачі могли висловитися повністю, ми дозволяємо емодзі та інші символи Unicode.

Завдання - обрізати вхідні рядки тексту (англ. string) до 5 символів.

Кодування тексту

Текст, збережений у цифровому вигляді, потрібно перетворити на послідовність байтів. У поширеному вжитку є 3 способи зіставити символи з байтами.

  • ASCII здатен кодувати символи англійської мови. Кожен символ має рівно 1 байт.
  • UTF-8 - це кодування тексту Unicode. Символи займають від 1 до 4 байтів.
  • UTF-16 - це кодування тексту Unicode. Символи мають довжину 2 або 4 байти.

І UTF-8, і UTF-16 є кодуваннями Unicode, а отже вони здатні представити величезний діапазон символів, зокрема:

  • Текст, записаний більшістю мов і систем письма світу
  • Історичні тексти
  • Емодзі

І UTF-8, і UTF-16 є кодуваннями зі змінною довжиною, тобто різні символи займають різну кількість місця.

Погляньмо на літеру «a» та емодзі «😛». У UTF-16 літера займає 2 байти, а емодзі займає 4 байти.

Секрет цієї вправи - використовувати API, побудовані навколо символів Unicode (кодових точок), а не кодових одиниць Unicode.

Нотатки про Unicode у Tcl

У версії 8.1 рядки тексту в Tcl (англ. string) могли безперешкодно працювати із символами Unicode. На той час це було справді проривним рішенням. Однак із появою дедалі більшої кількості символів Unicode здатність Tcl працювати з ними почала відставати.

Внутрішня реалізація Tcl могла працювати лише з 16-бітними символами Unicode, а це охоплює лише перші 65 526 символів. Ця сторінка вікі Tcl, зокрема обговорення мови «AndroWish», пояснює причини.

Tcl 9.0 - перша версія, яка може працювати з повним набором символів Unicode. Тож цю вправу можна (легко) розвʼязати лише з Tcl версії 9.0.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці
Tcl Exercism

Час розпочати Мікроблог?

Зареєструйтеся на Exercism, щоб вивчати й опановувати Tcl, а також 135 вправ та справжнє наставництво від людей, і все це безкоштовно.