Ctrl K

Окна с нулевым XOR

Сложная
Дан массив неотрицательных кодов codes и ширина окна width. *Окно* — это width подряд идущих элементов массива; всего окон len(codes) - width + 1. За одну замену можно записать в любой элемент массива любое неотрицательное целое число. Нужно добиться, чтобы побитовый XOR элементов каждого окна был равен 0. Верните наименьшее число замен.
Пример 1
codes=[6, 3, 5, 6, 3, 1], width=3 → 1

Окна [6, 3, 5], [3, 5, 6] и [5, 6, 3] уже дают 0, а последнее окно [6, 3, 1] даёт 4. Заменяем последнее число на 5 — одна замена.

Пример 2
codes=[7, 0, 4], width=1 → 2

При ширине 1 каждое окно — одно число, значит все числа должны стать нулями. Заменить нужно 7 и 4.

Пример 3
codes=[1, 2, 3, 1, 2, 3, 1], width=3 → 0

1 XOR 2 XOR 3 = 0, и каждое окно из трёх подряд состоит ровно из 1, 2 и 3 — менять ничего не нужно.

Ограничения
  • 1 ≤ width ≤ len(codes) ≤ 2000
  • 0 ≤ codes[i] < 1024
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКак рассчитаться за меньше переводов СложнаяДве группы с одинаковым средним СложнаяСклейка фрагментов СложнаяЦепочки с квадратными суммами СложнаяСамая маленькая команда со всеми навыками Сложная
загружаем Python…
Вход
codes=[6, 3, 5, 6, 3, 1], width=3
Ожидается
1

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