Задать вопрос

Поможете решить олимпиадную задачу?

Я не смог тут указать какой-либо из тегов относящейся к этой специальности. Решил математику.
Оператор настроил терминал, чтобы он циклически передавал команды для выполнения определенной программы, но из-за атаки словарь закодированных команд был потерян. Необходимо срочно вернуть дрон на базу.

Нам известно, какие команды дрон выполняет и какую зашифрованную последовательность передает терминал. Нужно установить команду кратчайшей длины для возвращения на базу и передать ее дрону.

Всего возможно 6 команд: Вперед, Назад, Вправо, Влево, Сигнал, Вернуться.

Каждая из команд зашифрована двоичным кодом, не длиннее 5 бит.
Весь набор команд удовлетворяет условию Фано, когда никакой код команды не является началом другого кода команды.

ЗАШИФРОВАННАЯ ПОСЛЕДОВАТЕЛЬНОСТЬ:
1010111010111001000011100001000111

Команды: Вперед Вперед Сигнал Влево Вперед Сигнал Влево Влево Назад Сигнал Назад Вправо Сигнал
  • Вопрос задан
  • 249 просмотров
Подписаться 3 Сложный 1 комментарий
Пригласить эксперта
Ответы на вопрос 4
@BorisKorobkov
Web developer
Вам уже дали ответ на сайте https://ru.stackoverflow.com/questions/1067831/%d0...

И, кстати, почему на этом сайте указана одна последовательность
1010111010111001000011100001000111
а на другом - другая
10110111010111001000011100001000111
?
Ответ написан
uvelichitel
@uvelichitel
habrahabr.ru/users/uvelichitel
Жульническое решение.
Команда Сигнал очевидно имеет код 11 или 111. В обоих случаях код 001 точно свободен в последовательности.
001 - Вернуться (так точно может быть, этому ничего не мешает)
Ответ написан
Комментировать
@Archmagur
что-то мне кажется, что там ошибка, либо я туплю.
Вперёд = 10 однозначно, Сигнал = 111 очевидно читается.
Сигнал не может быть 11, потому что иначе Влево должно было бы быть 1 либо начинаться с 10 (противоречит Фано в обоих случаях).
Отсюда Влево = 0.
Таким образом мы до середины доходим, но дальше выходит, что Назад = 10000, что противоречит условию Фано.
Между последними Сигналами 00001000 вообще никак не укладывается в связку Назад+Вправо.
===
upd. или тут имеется в виду, что битовая последовательность является циклически сдвинутой на зараннее неизвестное количество позиций? ну то есть, что это просто выделенный повторяющийся паттерн радиообмена, а не точная привязка к последовательности команд?
Ответ написан
@vism
ну
101 - Вперед
10000 - Назад
10001 - Вправо
0 - Влево
111 - Сигнал
Вернуться -1001
а нет, 110 короче получается :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы