Вдохновлен Великой API Охота за пасхальными яйцами!
Резюме
Ваша задача - найти заранее заданное целое число в «пространстве Коллатца» (будет объяснено позже), используя наименьший возможный шаг.
Вступление
Эта проблема основана на известной гипотезе Коллатца, о которой, надеюсь, все здесь хотя бы слышали. Вот резюме, взятое из Печать номеров Super Collatz .
Последовательность Коллатца (также называемая проблемой 3x + 1) - это место, где вы начинаете с любого положительного целого числа, в этом примере мы будем использовать 10 и применим к нему следующий набор шагов:
if n is even: Divide it by 2 if n is odd: Multiply it by 3 and add 1 repeat until n = 1
Расстояние Коллатца C(m,n)
между двумя числами m
и n
, для целей этой задачи, представляет собой расстояние между двумя числами в графе Коллатца (Кредиты @tsh для рассказа об этой концепции), которое определяется следующим образом: (с использованием 21
и в 13
качестве примеров ):
Запишите последовательность Коллатца для m
(в данном случае 21
):
21, 64, 32, 16, 8, 4, 2, 1
Запишите последовательность Коллатца для n
(в данном случае 13
):
13, 40, 20, 10, 5, 16, 8, 4, 2, 1
Теперь посчитайте, сколько чисел появляется только в одной из последовательностей. Это определяется как расстояние Коллатца между m
и n
. В этом случае 8
, а именно
21, 64, 32, 13, 40, 20, 10, 5
Таким образом, у нас есть Collatz расстояние между 21
и 13
как C(21,13)=8
.
C(m,n)
иметь следующие хорошие свойства:
C(m,n)=C(n,m)
C(m,n)=0 iff. m=n
Надеюсь, определение C(m,n)
теперь ясно. Давайте начнем заниматься охотой на яйца в пространстве Collatz!
В начале игры контроллер решает положение пасхального яйца, которое выражается его одномерной координатой: целое число в интервале [p,q]
(другими словами, целое число между p
и q
оба конца включительно).
Положение яйца остается неизменным на протяжении всей игры. Мы будем обозначать эту координату как r
.
Теперь вы можете сделать начальное предположение 0 , и оно будет записано контроллером. Это твой 0-й раунд. Если вам так повезло, что вы поняли это правильно на первом месте (то есть 0 = r), игра заканчивается, и ваш счет равен 0
(Чем меньше счет, тем лучше). В противном случае, вы входите в 1-й раунд и делаете новое предположение 1 , это продолжается до тех пор, пока вы не сделаете это правильно, то есть a n = r, и ваш счет будет n
.
Для каждого раунда после 0-го контроллер дает вам одну из следующих отзывов, чтобы вы могли сделать более правильное предположение на основе предоставленной информации. Давайте предположим , что вы в настоящее время в n
м круге и , следовательно , ваше предположение является п
- "Ты нашел это!" если a n = r, в этом случае игра заканчивается, и вы забиваете
n
. - «Вы ближе :)», если C (a n , r) <C (a n-1 , r)
- «Вы кружите вокруг яйца», если C (a n , r) = C (a n-1 , r)
- «Вы находитесь дальше :(», если C (a n , r)> C (a n-1 , r)
Чтобы сохранить некоторые байты, я буду называть ответы как «Право», «Ближе», «То же самое», «Дальше» в порядке, указанном выше.
Вот пример игры с p=1,q=15
.
- 0 = 10
- a 1 = 11, ответ: «Ближе»
- а 2 = 13, ответ: «Дальше»
- а 3 = 4, ответ: «Дальше»
- а 4 = 3, ответ: "Ближе"
- 5 = 5, ответ: " То же"
- а 6 = 7, ответ: «Верно»
Оценка: 6
.
Вызов
Разработайте детерминированную стратегию, чтобы играть в игру p=51, q=562
с лучшим счетом.
Ответы должны подробно описать алгоритмы. Вы можете прикрепить любой код, который поможет выяснить алгоритм. Это не Codegolf, поэтому вам предлагается написать разборчивый код.
Ответы должны включать наихудший балл, который они могут получить во всех возможных случаях r
, и выигрывает тот, у кого наименьший наихудший балл. В случае ничьей выигрывают алгоритмы, которые имеют лучший средний балл для всех возможных r
s (которые также должны быть включены в ответы). Дальнейших тай-брейков больше нет, и в итоге у нас может быть несколько победителей.
Спекуляции
- Повторюсь,
r
лежит в промежутке[51,562]
. - Применяются лазейки по умолчанию .
Щедрость (добавляется после публикации первого ответа)
Я могу лично предложить вознаграждение за ответ, где все предположения сделаны в пределах диапазона, [51,562]
при этом все еще имея достаточно низкий худший результат.