jayrandom: (Default)
[personal profile] jayrandom
Читаю тут про последовательность де Брайна и с каждой строчкой всё отчётливее и отчётливее соображаю, что я это уже изобретал :)

Задача совершенно естественно вырастает из необходимости подобрать кодовый замок со сдвигом: нужно построить кратчайшую последовательность из символов алфавита размера k, чтобы перебрать в ней всевозможные подстроки длины n.

Меня интересовал двоичный вариант, и как-то уж так получалось, что последовательность была длины 2^n (если последовательность циклическая, и с хвостиком - если нет). Просто получалось, и всё - поэтому я как-то про себя решил, что это очевидно. А если алфавит не двоичный? "Задумайся, читатель, и тебе станет не по себе" (c).


Кстати, а вот "родственная" задача: дан велосипедный (мне тут подсказывают: "чемоданный" - objection, чемоданный открывают фомкой) замок с 4 крутящимися колёсиками, на которых цифры 0-9. Автосдвига у него, понятное дело, нет. Как его быстрее всего перебрать?

Date: 2007-03-25 12:29 am (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
Я тоже изобретал =)
Когда в Дюк Нюкема играл, там было несколько мест, где есть три или четыре кнопки и дверь или мост, которые открываются на специфическую комбинацию нажатых/ненажатых. Ну и как-то довольно быстро я придумал последовательность нажатий 121 3 121 4 121 3 121, которая проходит все состояния для четырёх кнопок. Почти то же самое, по-моему.

А задачка с велосипедным замком не очень интересная. Если считать за базовую операцию "сдвинуть одно из колёсиков (на любое значение)", то тупой перебор даёт 9 + 99 + 999 дополнительных сдвигов (из 9999) (когда ты за один шаг алгоритма двигаешь больше одного колёсика), а за такую маленькую величину (десять процентов) как-то беспонта бороться. Хотя подумаю ещё, даже интересно как-то.

Date: 2007-03-26 08:40 am (UTC)
From: [identity profile] jayrandom.livejournal.com
Комбинация нажатых-ненажатых в Дюке - эта задача скорее похожа на велозамок с бинарными колёсами. И ответ это подтверждает.

То, что я имел в виду - это именно циклическая последовательность. Когда вводится новая цифра, она встаёт в конец числа и "выталкивает" первую из кода. Тут решение другое.

В велозамке за базовую операцию нужно считать "сдвинуть одно колесо по часовой стрелке". Тогда экономическая ценность задачи возрастает :)

Date: 2007-03-26 02:00 pm (UTC)
From: [identity profile] faceted-jacinth.livejournal.com
Дада, сейчас перечитал и понял, что тупил тогда нипадецки. Конечно, это одинаковые задачи, ответ получается либо рекуррентно (объединяя списки), либо непосредственно: запускаем счётчик в той же системе счисления и двигаем колёсико, соответствующее максимальному изменившемуся разряду счётчика. Наверное, несложно доказать, что так мы переберём всё. Это, в общем, практически очевидно =) Кстати, я даже подозреваю, что оно работает и в системах счисления с переменной базой.

Date: 2007-03-27 08:39 am (UTC)
From: [identity profile] jayrandom.livejournal.com
"Дюкозамок" и велозамок - одинаковые задачи.

А "замок с регистром сдвига" - совсем другая задача. Там думать надо :)

Profile

jayrandom: (Default)
jayrandom

January 2026

S M T W T F S
    1 23
45678910
111213141516 17
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 19th, 2026 05:05 pm
Powered by Dreamwidth Studios