NRZI кодирование Испытание курса: PHP: Функции
NRZI код (Non Return to Zero Invertive) — один из способов линейного кодирования. Обладает двумя уровнями сигнала и используется для передачи битовых последовательностей, содержащих только 0 и 1. NRZI применяется, например, в оптических кабелях, где устойчиво распознаются только два состояния сигнала — свет и темнота.
Принцип кодирования
При передаче логического нуля на вход кодирующего устройства передается потенциал, установленный на предыдущем такте (то есть состояние потенциала не меняется), а при передаче логической единицы потенциал инвертируется на противоположный.
src/Nrzi.php
Реализуйте функцию decode()
, которая принимает cтроку в виде графического представления линейного сигнала и возвращает строку с бинарным кодом.
Примеры
<?php
$signal = '_|¯|____|¯|__|¯¯¯';
decode($signal); // '011000110100'
$signal_2 = '|¯|___|¯¯¯¯¯|___|¯|_|¯';
decode($signal_2); // '110010000100111'
$signal_3 = '¯|___|¯¯¯¯¯|___|¯|_|¯';
decode($signal_3); // '010010000100111'
Подсказки
Символ
|
в строке указывает на переключение сигнала и означает, что уровень сигнала в следующем такте, будет изменён на противоположный по сравнению с предыдущим.К сожалению,
str_split
умеет работать только с ASCII символами, поэтому для разделения строки на символы используйте конструкциюpreg_split("//u", $str, -1, PREG_SPLIT_NO_EMPTY);
, где$str
- строка.
Для полного доступа к испытанию нужна профессиональная подписка
Профессиональная подписка откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.
Последние код-ревью
Автор | Дата обновления | Версий | |
---|---|---|---|
ypavlenko | 21 янв., 15:17 | 1 | |
zaharov | 20 янв., 17:10 | 1 | |
alleonov | 15 янв., 04:07 | 1 | |
akulich_aliaksandr | 27 дек., 13:09 | 2 | |
richget | 09 дек., 19:00 | 2 |