Цифровой замок
От: Кодт Россия  
Дата: 18.02.03 08:49
Оценка: 19 (3)
Навеяно конкурсом по лабиринту.

На двери висит цифровой замок с последовательным нажатием кнопок.

Код состоит из 2-3-4 цифр (в общем случае — N, где N известно, N>=2).
Порядок цифр в коде может быть существенным или несущественным (123 = 231).
Цифры в коде могут повторяться либо не повторяться.

В замке — сдвиговый регистр, поэтому как только в последовательности нажатий встретится код, он отопрет дверь.

Вопрос: какова минимальная последовательность, гарантированно отпирающая замок?


Очевидно, что оценка сверху — это (D^N)*N (D — число кнопок): вводим N-значные числа одно за другим.
оценка снизу — (D^N)+N-1: все N-значные числа накладываются друг на друга.

Задачи:
  • Написать программу, порождающую минимальную последовательность.
  • Или близкую к минимальной.
  • С учетом того, что длина последовательности растет экспоненциально, рожать последовательность с фиксированными затратами памяти

    Еще несколько интересных вопросов:
  • Какова вероятность отпирания замка равномерно-случайной последовательностью? То есть — какова средняя длина такой последовательности? Как она соотносится с гарантированной?
  • Есть ли неравномерно случайные последовательности (например, марковские), которые более оптимальны?
  • Если N неизвестно, но лежит в диапазоне [N1..N2], и предполагается, что меньшие значения N вероятнее больших, то как оптимизировать гарантированную последовательность?

    Вот, нагородил в ассортименте.



    Такие замки (и эквивалентные им) вполне распространены. В том числе — сейфовые крутилки "20 влево, 20 вправо, шаг вперед и два назад".
  • Перекуём баги на фичи!
     
    Подождите ...
    Wait...
    Пока на собственное сообщение не было ответов, его можно удалить.