Александр Шелестов (microgenius) wrote,
Александр Шелестов
microgenius

Category:

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

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

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

Короче, решил сделать эмулятор этой игры-загадки на 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.
Tags: ruby, алгоритмы, загадка, игра
Subscribe

Recent Posts from This Journal

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments