как стать умнее кошки

Jul 04, 2017 17:54

Митрич тут интересную загадку загадал.

Я, если честно, не понял, что значит "Как вам найти кошку?". Ну хлопаешь этими дверями наугад, пока не найдешь, в чем проблема то? ))

Короче, решил сделать эмулятор этой игры-загадки на Ruby. И сделал, можете поиграться тут - https://repl.it/JMsQ/2

Правила описаны ниже, в посте Митрича.
Чтобы запустить игру нажмите Run в верхней панели, над редактором кода.
Чтобы начать игру сначала еще раз нажмите Run снова (потому что если игра закончится победой - программа остановится).

Играть очень просто - каждый ход/день/попытку вводите номер двери (с 1 по 7), она откроется. Если там кошка - вы победили. Если там пусто, получите сообщение - "You missed!". Наступит следующий день ))

В конце игры вы увидите число попыток (дней), которое вам понадобилось, чтобы найти чертову кошку.

P.S. Если перед стартом новой игры в строке 65 поменять значение debug_mode с false на true, то после каждого неудачного хода вы сможете подглядеть за кошкой в замочную скважину ))

Оригинал взят у mi3ch в как стать умнее кошки


Перед вами семь дверей. За одной из них сидит кошка.
Каждый день вы можете открыть и закрыть одну дверь. Если кошка сидит за ней - вы победили.
Если бы кошка все время сидела за какой-то одной дверью, вы бы гарантировано нашли ее за семь попыток. Точнее - даже за шесть попыток.
Но каждую ночь кошка сдвигается на одну дверь - либо влево, либо вправо. Как ей захочется (понятно, что из крайней левой двери она может сдвинуться только направо, а из крайней правой - только налево).
Как вам найти кошку?

На всякий случай повторю, что после просмотра вы закрываете дверь, а кошка выбирает левую или правую дверь случайно. Если про кошку вам думать неинтересно, замените ее на девушку вашей мечты (принца на белом коне)

[Ответ]
Стратегия, которая всегда находит кошку за 10 и менее ходов - 2-3-4-5-6-6-5-4-3-2.

Смысл в том, чтобы дойти со второй двери до предпоследней, затем двигаться обратно ко второй.

Максимальное кол-во ходов, требуемых для поиска двери вычисляется по формуле - (кол-во дверей - 2) * 2
-2 потому что убираем две крайние позиции. *2 потому что два прогона, вперед и назад.

Работает на любом количестве дверей. Попробуйте, например, на 100: - https://repl.it/JNRF/2
Можно менять кол-во дверей в константе DOORS_QTY.

загадка, алгоритмы, игра, ruby

Previous post Next post
Up