bits − 1 по кругу так, чтобы любые два соседних числа (включая последнее и первое) отличались ровно одним битом. Используем для этого **зеркальный порядок**:
- для 1 бита это 0, 1;
- порядок для b бит получается из порядка для b − 1 бит: сначала он сам, затем те же числа в обратном порядке, у каждого из которых включён бит номер b − 1 (старший).
Например, для 2 бит получается 0, 1, 3, 2.
Верните список из 2^bits чисел в зеркальном порядке, повёрнутый по кругу так, чтобы он начинался с числа start.bits=2, start=1 → [1, 3, 2, 0]
Зеркальный порядок для 2 бит: 00, 01, 11, 10, то есть 0, 1, 3, 2. Начинаем с 1 и идём по кругу: 1, 3, 2, 0. Соседи, включая пару 0 и 1 на стыке, отличаются одним битом.
bits=3, start=6 → [6, 7, 5, 4, 0, 1, 3, 2]
Порядок для 3 бит: к 0, 1, 3, 2 приписываем их же в обратном порядке с включённым старшим битом — 6, 7, 5, 4. Получаем 0, 1, 3, 2, 6, 7, 5, 4 и поворачиваем так, чтобы первым стало 6.
bits=1, start=0 → [0, 1]
bits ≤ 16start < 2^bitsbits=2, start=1
[1, 3, 2, 0]
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 58 тестов на сервере, включая скрытые.