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

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

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

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

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

  • Жизнь на пенсии в Европе

    Только что вернулся из Европы. Не буду утомлять мегатоннами фоток, все вы ее итак уже видели в гугле )) Но поделюсь одним интересным…

  • Акция протеста на Тверской (Москва), 12 Июня 2017 года

    Я считал, что мирными акциями протестами нельзя сломать систему. А еще мне постоянно говорили, что вот ты сидишь там в своем Таиланде, сам на митинги…

  • Зеркалки скоро все?

    Достал сегодня из загашников рюкзак с зеркалкой SONY a77, которую купил в 2011 году в Гонконге. Фотки у нее отличные, а вот для видео она уже…

  • 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