Ctrl K

Коды с зеркальным отражением

Средняя
Датчик поворота размечен 2^bits секторами, и у каждого сектора свой код — число от 0 до 2^bits - 1. Чтобы датчик не ошибался на границах, коды соседних секторов (включая последний и первый) должны отличаться ровно одним битом. Такую последовательность строят отражением: 1. начинаем со списка [0]; 2. для каждого бита k = 0, 1, …, bits - 1 дописываем в конец текущий список в обратном порядке, включив в каждом числе бит k. Верните получившийся список из 2^bits чисел ровно в этом порядке.
Пример 1
bits=2 → [0, 1, 3, 2]

Начинаем с [0]. Шаг для бита 0: зеркало [0] с битом 0 → [0, 1]. Шаг для бита 1: зеркало [1, 0] с битом 1 → [3, 2], итого [0, 1, 3, 2] — в двоичном виде 00, 01, 11, 10.

Пример 2
bits=3 → [0, 1, 3, 2, 6, 7, 5, 4]

К [0, 1, 3, 2] дописываем то же в обратном порядке с включённым битом 2: 2+4, 3+4, 1+4, 0+4.

Ограничения
  • 1 ≤ bits ≤ 16
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКольцо с шагом в один бит СредняяМеньше всего прямых через точки СредняяЦепочки с квадратными суммами СложнаяXOR каждого подмножества ЛёгкаяДеление без деления Средняя
загружаем Python…
Вход
bits=2
Ожидается
[0, 1, 3, 2]

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 14 тестов на сервере, включая скрытые.