bitlvl
RU

Bit Flip

Сделайте верхний регистр равным целевому. Напрямую можно переключать только младший бит; всё остальное нужно строить сдвигами, вращениями, NOT, инкрементом и декрементом. Пар — это настоящее кратчайшее решение. Одна новая головоломка каждый день; режим тренировки не ограничен.

Регистр
Цель

    Результаты и сообщения этого инструмента выводятся на английском языке.

    Как играть

    Оба регистра показывают одинаковое число битов. Нажмите операцию, чтобы применить её к верхнему регистру; биты, которые всё ещё отличаются от цели, отмечены. Вы выигрываете, когда регистры совпадают. Счётчик ходов показывает ваши ходы относительно пара; бюджет — пар + 3, после чего головоломка дня считается нерешённой (тренировочные головоломки не заканчиваются никогда).

    ОперацияЭффектТипичное применение
    FLIPпереключает только бит 0единственный способ напрямую добавить 1 (или убрать её); сочетайте со сдвигами, чтобы поставить её на место
    SHL / SHRлогический сдвиг на один; выпавший бит теряется, входит 0переместить шаблон или намеренно уничтожить биты по краям
    ROL / RORвращение на один; ничего не теряетсяпереместить шаблон, не меняя число единиц
    NOTинвертирует каждый битцель с большим числом единиц часто проще построить в инвертированном виде
    SWAPменяет местами две половиныбыстрое вращение на 4 бита (или 8)
    INC / DECприбавляет или вычитает единицу с переполнениемперенос распространяется: 0111 + 1 = 1000 устанавливает бит далеко от бита 0

    Почему пар честный

    Пространство головоломки достаточно мало (256 состояний для 8 бит, 65 536 для 16), чтобы страница выполнила поиск в ширину от стартового значения и знала точный кратчайший путь к каждому достижимому состоянию. Пар — это та самая дистанция; ежедневная цель выбирается так, чтобы пар был 5–7 (8 бит) или 7–10 (16 бит) и чтобы расстояние Хэмминга между стартом и целью было больше пара, а значит, чистой последовательности флипов не хватило бы, даже если бы вы могли переключать любой бит.

    Подсказки, как уложиться в пар

    • Считайте биты: FLIP, INC и DEC меняют число единиц; сдвиги теряют биты; вращения и NOT (при известном числе) — нет. Если в цели больше единиц, чем вы можете добавить за оставшиеся ходы, вам нужен NOT.
    • Думайте от цели назад: какая одна операция могла её породить? Вращения и SWAP обратны сами себе через два или четыре хода; завершающий 0 в цели намекает на финальный SHL.
    • INC на цепочке единиц внизу обнуляет их и устанавливает следующий бит — дешёвый способ передвинуть единицу вверх.

    Вопросы

    Ежедневная головоломка одинакова для всех?

    Да. Номер головоломки выводится из даты (UTC), а головоломка — из этого номера, поэтому все, кто открывает страницу в один день, получают один и тот же старт и цель. Результаты и серии хранятся только в вашем браузере.

    Что содержит текст для публикации?

    Номер головоломки, ваше число ходов относительно пара и ряд квадратиков для ходов (синие в пределах пара, жёлтые сверх него). Ни решения, ни операций, так что он не спойлерит головоломку другим.

    Можно ли проиграть?

    Если вы превысите пар + 3 хода, день засчитывается как нерешённый; можно продолжать в режиме тренировки, а ежедневную головоломку всё равно можно дорешать ради удовольствия, только не ради серии.

    Почему можно переключать только бит 0?

    Потому что возможность переключать любой бит делает каждую 8-битную головоломку решаемой за четыре хода. Ограничение прямого доступа одним битом — это как реальное железо без инструкции установки бита, и именно оно делает сдвиги и вращения значимыми.