Определите длину последовательности байтов UTF-8, учитывая ее первый байт. В следующей таблице показано, какие диапазоны соответствуют каждой возможной длине:
Range Length
--------- ------
0x00-0x7F 1
0xC2-0xDF 2
0xE0-0xEF 3
0xF0-0xF4 4
Примечания к пробелам в таблице: 0x80-0xBF - это байты продолжения, 0xC0-0xC1 запускает слишком длинную недопустимую последовательность, 0xF5-0xFF - кодовую точку, превышающую максимум Unicode.
Напишите программу или функцию, которая принимает первый байт последовательности байтов UTF-8 в качестве входных данных и выводит или возвращает длину последовательности. Ввод / вывод является гибким. Например, ввод может быть числом, 8-битным символом или односимвольной строкой. Вы можете предположить, что первый байт является частью допустимой последовательности и попадает в один из диапазонов выше.
Это код гольф. Самый короткий ответ в байтах побеждает.
Контрольные примеры
0x00 => 1
0x41 => 1
0x7F => 1
0xC2 => 2
0xDF => 2
0xE0 => 3
0xEF => 3
0xF0 => 4
0xF4 => 4