Мне дали следующую проблему в интервью (которую я уже не смог решить, не пытаясь обмануть мой путь мимо): Игра начинается с положительного целого числа . (Например , 0 = 1234 ) . Это число преобразуется в двоичное представление, и N представляет собой количество битов в 1 . (Например, A 0 = b 100 1101 0010 , N = 5. )
Игрок 1 выбирает число меньше, чем A 0 . B 0 должен иметь только один бит, установленный в 1. (Например, B 0 = b 10 0000 0000 = 512. ) Пусть A 1 = A 0 - B 0 . (Например, A 1 = 1234 - 512 = 722 = b 10 1101 0010. ) Ход действителен, если B 0удовлетворяет предыдущие ограничения, и если количество битов в по - прежнему равна N .
Игрок 2 продолжает с , выбирая действительный B 1 , затем игрок 1 продолжает с A 2 и так далее. Игрок проигрывает, если у него не осталось действительных ходов.
Предполагая, что оба игрока играют оптимально, определите победителя, используя достаточно эффективный метод. (В моем определении проблемы, ограничения на это заключались в том, что программа должна быть в состоянии предоставить решение для нескольких миллионов входных чисел, которые вписываются в 32-разрядное целое число со знаком.) То есть решение не должно быть полностью аналитический.
Мой личный интерес здесь состоит в том, чтобы выяснить, было ли разумным ожидание от меня того, что я найду и осуществлю правильное решение без обратной связи о правильности в течение 120 минут, которые мне дали или если это был один из тех вопросов «давайте посмотрим, видели ли они эту загадку раньше».
Я потерпел неудачу, потому что я решил реализовать то, что казалось разумной стратегией, которая дала мне правильные результаты для нескольких тестовых случаев, которые мне дали заранее, потратила слишком много времени на быстрый запуск этого теста и в итоге дала неверные результаты. полный выход, так как мое время истекло.
Оглядываясь назад, я должен был осуществить поиск методом грубой силы и запоминать частичные решения для небольших начальных чисел, но задним числом всегда 20/20. Мне любопытно, однако, есть ли другой общий подход, который ускользнул от меня как лакея.