Испытания

NRZI кодирование

PHP: Функции

NRZI код (Non Return to Zero Invertive) — один из способов линейного кодирования. Обладает двумя уровнями сигнала и используется для передачи битовых последовательностей, содержащих только 0 и 1. NRZI применяется, например, в оптических кабелях, где устойчиво распознаются только два состояния сигнала — свет и темнота.

Принцип кодирования

При передаче логического нуля на вход кодирующего устройства передается потенциал, установленный на предыдущем такте (то есть состояние потенциала не меняется), а при передаче логической единицы потенциал инвертируется на противоположный.

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 - строка.

Успешных завершений: 86%

Последние код-ревью

Автор Дата обновления Версий
datsenko_md 17 сент., 11:45 2
rkozlov95 05 сент., 15:07 1
user-289708f829a0363e 29 авг., 14:48 1
ivbakin 29 авг., 13:57 1
32b 27 авг., 19:33 1