Строки, руны и пакеты strings/strconv

Строки, байты и руны: модель UTF-8 в Go

Содержание курса

Лимиты никнейма

При регистрации в сервисе пользователь выбирает никнейм — строку без пробелов, которая может содержать символы из самых разных письменностей мира. Поскольку разные символы занимают разное число байт в кодировке UTF-8, одна и та же строка может укладываться в один лимит, но нарушать другой.

Сервис применяет два независимых ограничения: на число байт и на число рун (кодовых точек Unicode). Никнейм считается допустимым лишь тогда, когда он не превышает оба лимита одновременно — нарушение хотя бы одного из них ведёт к отказу.

Что нужно сделать

Допишите nicknameStats. Функция получает никнейм и лимиты по рунам и байтам. Она должна вернуть фактическое число байт, число рун и признак того, что строка укладывается сразу в оба лимита. Используйте средства подсчёта из урока. Вход содержит корректный UTF-8; руны здесь — кодовые точки Unicode.

Формат ввода

В первой строке никнейм без пробелов. Во второй — два неотрицательных целых числа: сначала лимит рун, затем лимит байт.

Формат вывода

Одна строка: bytes=B runes=R accepted=yes или bytes=B runes=R accepted=no.

Пример

Ввод:
Привет
6 12

Вывод:
bytes=12 runes=6 accepted=yes
О данных в ответах

Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.

Проверяется тестами (1)
  • Тест 1
    Ввод
    alex
    8 8
    
    Ожидаемый вывод
    bytes=4 runes=4 accepted=yes
    
Решение
Как проверяется решение

Сравнение вывода: Правила исходной проверяющей системы.

Отправьте решение, чтобы увидеть результаты тестов.