Натхненний Великим 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
як приклади ):
Запишіть послідовність Collatz для m
(у цьому випадку 21
):
21, 64, 32, 16, 8, 4, 2, 1
Запишіть послідовність Collatz для n
(у цьому випадку 13
):
13, 40, 20, 10, 5, 16, 8, 4, 2, 1
Тепер порахуйте, скільки цифр з’являється лише в одній із послідовностей. Це визначається як відстань Колац між m
і n
. У цьому випадку 8
, а саме,
21, 64, 32, 13, 40, 20, 10, 5
Отже, у нас є відстань Колац між 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)
зрозуміло. Почнемо займатися полюванням на яйця в просторі Колац!
На початку гри контролер визначає положення пасхального яйця, яке виражається його одновимірною координатою: Ціле число в проміжку [p,q]
(іншими словами, ціле число між p
і q
обома кінцями включно).
Положення яйця залишається постійним протягом всієї гри. Ми позначимо цю координату як r
.
Тепер ви можете зробити початкову здогадку 0 , і це буде записано контролером. Це ваш 0 раунд. Якщо вам пощастило, що ви потрапили на перше місце (тобто 0 = r), гра закінчується, і ваш рахунок 0
(чим менший рахунок, тим краще). В іншому випадку ви входите в 1-й раунд і робите нову здогадку 1 , це триває до тих пір, поки ви не зробите це правильно, тобто n = r, і ваш рахунок буде n
.
Протягом кожного раунду після 0-го, контролер надає вам одну з наступних зворотних зв'язків, щоб ви могли краще здогадатися, виходячи з наданої інформації. Припустимо, ви зараз перебуваєте на n
другому раунді, і тому ви здогадаєтесь, що це n
- "Ви знайшли це!" якщо 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
.
- a 0 = 10
- a 1 = 11, відповідь: "Ближче"
- a 2 = 13, відповідь: "Далі"
- a 3 = 4, відповідь: "Далі"
- a 4 = 3, відповідь: "Ближче"
- a 5 = 5, відповідь: "Те саме"
- a 6 = 7, відповідь: "Правильно"
Оцінка: 6
.
Виклик
Розробіть детерміновану стратегію для гри в гру p=51, q=562
з найкращим балом.
У відповідях слід детально описати алгоритми. Ви можете приєднати будь-який код, який допомагає з'ясувати алгоритм. Це не кодогольф, тому вам пропонується написати розбірливий код.
Відповіді повинні включати найгірший бал, який вони можуть досягти за всі можливі випадки r
, і виграє той, хто має найнижчий гірший бал. У разі зрівняння r
виграють алгоритми, які мають кращу середню оцінку за всі можливі s (які також повинні бути включені у відповіді). Більше немає перерв, і ми можемо мати кілька переможців у підсумку.
Технічні характеристики
- Щоб повторити,
r
лежить в інтервалі[51,562]
. - Застосовуються лазівки за замовчуванням .
Баунті (додано після публікації першої відповіді)
Я особисто можу запропонувати щедро відповідь, де всі здогадки робляться в межах діапазону, в [51,562]
той час як все ще є досить низький найгірший бал.