avva: (moose)
[personal profile] avva
Очень милая задачка от Джона Конвея (изобретателя игры "Жизнь").

Есть три карты: туз, король и дама, и они могут лежать на одной из трех позиций на столе перед вами - назовем эти позиции L,M,R (left, middle, right).
Карты всегда лежат лицом вверх, но если больше одной карты лежат в одной позиции, то вы видите только верхнюю. Например, может быть так, что слева лежит король на даме (и вы видите только короля), посредине туз, а справа ничего. Может, все три карты лежат справа, и вы видите только верхнюю. И так далее.

На каждом ходу вы можете переместить одну карту - всегда верхнюю - с любой позиции на любую другую. Например, если слева лежит король на даме, а посредине туз, вы можете решить снять короля и положить его на туза или на пустое место справа.

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

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

Это все. Нужно придумать алгоритм, который любое начальное положение приводит к выигрышному. Я думаю, что можно эту задачу решить компьютерным способом, а можно на бумаге (может, есть такие монстры, что и в уме смогут, я не из них). Я решил на бумаге, это было не очень легко и довольно приятно. Предупреждаю: если вы нашли решение и оно довольно простое, подумайте как следует, действительно ли вы учли эффект краткосрочной памяти и действительно ли любое начальное положение приходит к победе.

Date: 2013-12-09 11:47 am (UTC)
From: [identity profile] ilya-dogolazky.livejournal.com
глубина стопки видна? а, наверное не видна, иначе слишком просто
Edited Date: 2013-12-09 11:49 am (UTC)

Date: 2013-12-09 11:50 am (UTC)
From: [identity profile] avva.livejournal.com
не видна.

Date: 2013-12-09 11:51 am (UTC)
From: [identity profile] mudasobwa.livejournal.com
    » из этого следует, что вы не можете сами обнаружить, когда выиграли
Это почему это? Существует момент, когда я вижу карты и они лежат правильно. Или мне нужно вообще запретить смотреть на стол, что сводит задачу к медиумной.

Date: 2013-12-09 11:56 am (UTC)
self_perfection_lj: (Default)
From: [personal profile] self_perfection_lj
Если вы видите только туз в левой позиции, то возможно два варианта расположения карт (в зависимости от порядка расположения короля и дамы под тузом). Выигрышно только одно из двух расположений.

(no subject)

From: [identity profile] ansr.livejournal.com - Date: 2013-12-10 12:36 pm (UTC) - Expand

(no subject)

From: [personal profile] self_perfection_lj - Date: 2013-12-10 12:38 pm (UTC) - Expand

(no subject)

From: [identity profile] ansr.livejournal.com - Date: 2013-12-10 12:57 pm (UTC) - Expand

Date: 2013-12-09 11:57 am (UTC)
From: [identity profile] carfagen.livejournal.com
Например, может быть так, что слева лежит король на даме
Are we sure we are talking about card? ;-)

Date: 2013-12-09 12:56 pm (UTC)

Date: 2013-12-09 12:06 pm (UTC)
From: [identity profile] vsh.livejournal.com
Решил! Получилось, правда, неизящно, целых четыре правила.

Date: 2013-12-09 01:02 pm (UTC)
From: [identity profile] avva.livejournal.com
Только четыре? Совсем неплохо, у меня, например, их больше (сколько в точности - смотря как считать) :)

Если вы не уверены на сто процентов и хотите проверить свое решение, то вот программа, которую я написал, чтобы проверить свое:

http://pastebin.com/BkQAKNKQ

Нужно в определении переменной decider в конце описать поведение своего алгоритма в ответ на любую конфигурацию карт, где _ означает пустую позицию. Сейчас я там вбил везде "12" вместо своего решения, что означает всегда передвинуть с первой позиции на вторую, и не работает, ясно. Нужно это поменять на "12", "13", "21", "23", "31" и "32" в соответствии со своим алгоритмом, потом запустить программу.

(no subject)

From: [identity profile] vsh.livejournal.com - Date: 2013-12-09 01:03 pm (UTC) - Expand

(no subject)

From: [identity profile] vsh.livejournal.com - Date: 2013-12-09 01:37 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2013-12-09 02:30 pm (UTC) - Expand

(no subject)

From: [identity profile] vsh.livejournal.com - Date: 2013-12-09 02:35 pm (UTC) - Expand

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2013-12-09 04:24 pm (UTC) - Expand

Date: 2013-12-09 12:07 pm (UTC)
From: [identity profile] dark-barker.livejournal.com
есть относительно немного вариантов расположения карт. даже при случайных перекладываниях очень быстро будет решение)))

вообще, очевидно, решение тут сводится к построению конечного автомата на состояниях картины которую мы видим
Edited Date: 2013-12-09 12:09 pm (UTC)

Date: 2013-12-09 12:25 pm (UTC)
From: [identity profile] freedom_of_sea.livejournal.com
если слева туз и везде пусто, а наблюдатель утверждает что мы не выиграли, значит лежит стопка туз - дама - король, в это случае кладем туза налево.
предвыигрышная позиция - король на даме, туз справа.
прочие промежуточные случаи тривиальны.

позиция при которой стопка слева, сверху туз достигается одноходовкамии

Date: 2013-12-09 12:57 pm (UTC)
From: [identity profile] avva.livejournal.com
Не очень понял, что значит "кладем туза налево" если и так уже все слева. В общем, это не выглядит правильным решением.
(deleted comment)

(no subject)

From: [identity profile] avva.livejournal.com - Date: 2013-12-09 02:14 pm (UTC) - Expand

Date: 2013-12-09 12:52 pm (UTC)
From: [identity profile] melkiythegreat.livejournal.com
Я правильно понимаю что я не вижу не только нижнюю карту но и то есть ли она вобще? И не могу узнать где лежит дама если вижу туза короля и пустое место, например.

Date: 2013-12-09 12:56 pm (UTC)
From: [identity profile] avva.livejournal.com
Да, именно так.

Date: 2013-12-09 01:31 pm (UTC)
From: [identity profile] vnarod.livejournal.com
Решил на бумаге пока на работу ехал. Честно говоря, не показалось очень сложным.

Date: 2013-12-09 08:49 pm (UTC)
From: [identity profile] vnarod.livejournal.com
добрался до работы :)
мой вариант. Всего три основных правила.
1. Если видны три карты, то ДКТ->К_Т, КТД->_КД, КДТ->К_Д, ТДК->Т_Д
2. Если видны 1 или 2 карты, то
- К_Т или КТ_ ->Т__ решено
- если нет, то карты слева от дырки двигаем на дырку. Если дырка слева, двигаем на нее правую карту

Date: 2013-12-09 01:53 pm (UTC)
From: [identity profile] ksega.livejournal.com
Я бы делал так.
1)Очевидно, какая стратегия перекладывания если бы мы видели не только верхнюю, но и карты лежащие ниже (например, сначала отложить даму посередине, а все остальные карты справа, потом начинать укладывать в порядке их слева). Таким образом Для каждого состояния расположения карт у нас есть следующее действие диктуемое стратегией.
2) Теперь для случая, когда мы видим только верхнюю карту. В таком случае наблюдаемое состояния может соответствовать от 1 до 2 полных состояний (например если мы видим туза справа и все, то это может быть туз дама король или туз король дама). И действие алгоритма такое, если состояние полностью определено(например, лежат слева направо туз король дама), то действуем в соответствии с пунктом первым, если состояние не полностью определено, то с вероятностью 0.5 выбираем действие для соответствующее первому состоянию, с вероятностью 0.5 соответствующее второму состоянию.
Очевидно, что для каждого начального состояния, есть конечная вероятность достичь результата. Мат ожидание будет конечно. Но каждая конкретная игра может занять долгое время.
Edited Date: 2013-12-09 02:06 pm (UTC)

Date: 2013-12-09 02:15 pm (UTC)
From: [identity profile] iisus.livejournal.com
такие задачи показывают, насколько стохастические методы решения могут быть проще в смысле их создания

можно поломать голову и составить свод точных правил, а можно использовать случайный выбор карты и места, куда её переложить, и получить решение, затратив на порядок меньше времени

при этом, количество ходов, затрачиваемых на решение может быть в некоторых случаях быть меньше для случайного поиска, чем для детерминистического, но статистически время работы случайного метода будет, наверное, раза в полтора-два дольше

Date: 2013-12-09 05:40 pm (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
Чтобы генерировать какие-нибудь псевдослучайные числа, нужно иметь хотя бы несколько битов памяти, а их нет.

(no subject)

From: [identity profile] iisus.livejournal.com - Date: 2013-12-09 06:01 pm (UTC) - Expand

Date: 2013-12-09 02:18 pm (UTC)
From: [identity profile] captain-tylor.livejournal.com
1. КТ_, К_Т - туз на короля.
2. Прочие случаи с двумя или одной видимыми картами - кладем карту, справа от которой пусто, на это пустое место (правым от L считается M, от M - R, от R - L).
3. Если видны все три карты. Если дама на L - короля на даму. Если дама на M - даму на R. Если дама на R - L на M.

Date: 2013-12-09 04:23 pm (UTC)
From: [identity profile] avva.livejournal.com
Да, логично и вроде бы работает.

Date: 2013-12-09 02:36 pm (UTC)
From: [identity profile] sinyuk alexey (from livejournal.com)
10 правил. Левая позиция ключевая, а середина/справа - нет, поэтому середина и право могут меняться в условии.

Условие : Действие

A K/Q Q/K : A на K
K Q/A A/Q : K на A
Q K/A A/K : K на Q

0 A/K Q : Q на 0
K A 0 : A на K
A Q 0 : A на 0
Q K/A 0 : Q на 0

A 0 0 : A на 0
K 0 0 : K на 0
Q 0 0 : Q на 0
Edited Date: 2013-12-09 02:38 pm (UTC)

Три правила

Date: 2013-12-09 03:12 pm (UTC)
From: [identity profile] mudasobwa.livejournal.com
— если есть свободная ячейка — сдвигаем на нее карту слева от нее;
— если нет свободных ячеек и никто не на своем месте — кладем младшую на старшую так, чтобы потом два правых сдвига давали выигрыш или позицию «нет свободных ячеек и одна карта на месте»;
— если нет свободных ячеек и одна карта на месте, снимаем на правильно лежащую карту такую, чтобы два правых сдвига давали выигрыш.

Вроде работает.

Re: Три правила

Date: 2013-12-09 03:16 pm (UTC)
From: [identity profile] mudasobwa.livejournal.com
А, черт. Так мы получим ДКТ.

Re: Три правила

From: [identity profile] mudasobwa.livejournal.com - Date: 2013-12-09 03:21 pm (UTC) - Expand

Re: Три правила

From: [identity profile] mudasobwa.livejournal.com - Date: 2013-12-09 03:33 pm (UTC) - Expand

Re: Три правила

From: [identity profile] vsh.livejournal.com - Date: 2013-12-09 03:19 pm (UTC) - Expand

Re: Три правила

From: [identity profile] mudasobwa.livejournal.com - Date: 2013-12-09 03:22 pm (UTC) - Expand

Date: 2013-12-09 04:27 pm (UTC)
From: [identity profile] angerona.livejournal.com
Написано по очереди проверки (если условие выполнено, исполняем действие и опять начинаем проверку сверху)

1. Если видны только К и Т и К слева, то кладем Т на К
2. Если Д слева и видимы К и Т, то кладем К на Д
3. Если Д слева и видим только К и К посредине, то кладем К на Д.
4. Если Д видна и самое левое место свободно, то кладем Д туда
5. Если Д видна, но левое место не свободно, то берем карту оттуда и кладем НЕ на Д.
6. Если Д слева, но не видим К, а Т посредине, то двигаем Т на правое место.
7. Если Д слева, но не видим К, а Т справа, то двигаем Д на среднее место.
8. Если виден только К слева, то кладем его на самое правое место
9. Если Д слева, посредине пусто, а справа К, то двигаем К на средину.
10. Двигаем самую верхнуюю левую карту направо.

Только, кажется, я под конец запуталась.

Date: 2013-12-09 10:12 pm (UTC)
From: [identity profile] gul-kiev.livejournal.com
Начальная позиция: дама слева, король-туз справа (туз сверху).
По правилу 7 двигаем даму в центр.
Потом по правилу 4 двигаем даму влево, чем возвращаемся к исходной позиции.

Другой вариант. Слева туз-дама-король, король сверху.
По правилу 8 кладём короля вправо.
Потом по правилу 9 кладём короля в центр.
Потом по правилу 3 кладём короля на даму, приходим к исходной позиции.

Date: 2013-12-09 04:47 pm (UTC)
From: [identity profile] taganay.livejournal.com
Самый простой работающий алгоритм - снять верхнюю карту из случайной позиции и положить ее в случайную позицию. Когда-нибудь к верному решению придем, вариантов не бесконечное количество.
Нормальный алгоритм тоже вроде придумал, надо записать теперь, пока не забыл.

Date: 2013-12-09 07:40 pm (UTC)
From: [identity profile] burrru.livejournal.com
Напоминает задачу про вращающийся стол и четыре выключателя.

Date: 2013-12-09 08:13 pm (UTC)
From: [identity profile] avva.livejournal.com
Да, мне ее как раз сегодня напомнили и я решил заново. Но она проще.

(no subject)

From: [identity profile] vnarod.livejournal.com - Date: 2013-12-09 08:39 pm (UTC) - Expand

(no subject)

From: [identity profile] mz1313.livejournal.com - Date: 2013-12-10 09:51 am (UTC) - Expand

Date: 2013-12-10 04:24 am (UTC)
From: [identity profile] zero-sharp.livejournal.com
Забавно, что и для ханойских башен существует алгоритм с почти такими же характеристиками.

Он формулируется как «переносим поочерёдно либо меньший диск по часовой стрелке, либо второй по размеру диск». Как видно, во входных данных есть ещё и чётность номера хода. Интересно, можно ли от этой чётности избавиться. (Например, как-то «захешировав» все состояния)

Date: 2013-12-10 08:32 am (UTC)
From: [identity profile] p_govorun.livejournal.com
(не читая комментов)

Вот такое решение.

0. Если все карты на одной позиции -- положить верхнюю куда попало.
1. Если две позиции заняты, а третья свободна -- переместить на свободную позицию карту, лежащую слева от неё. (На крайнюю левую позицию -- с крайней правой). В результате через один или два хода карты будут лежать по одной.
2. Если дама не слева -- переложить карту так, чтобы пункт 1 алгоритма привёл даму налево. (Дама на M -- переложить её на R; дама на R -- переложить карту с L на M.)
3. Если дама слева -- положить на неё короля.
4. (Исключение из правила 1.) Если король слева, а дамы не видно -- положить туза на короля. При этом мы либо выигрываем, либо дама оказывается под тузом и начинает действовать правило 1.
Бонус: если все карты на одной позиции, и мне смутно помнится, что я что-то с ними делал -- я выиграл. И даже наблюдателя не надо.

Date: 2013-12-10 08:56 am (UTC)
From: [identity profile] a-konst.livejournal.com
Довольно очевидно, что если алгоритм есть, то его можно переделать в не менее эффективный "без памяти". Разве нет?

Date: 2013-12-10 08:58 am (UTC)
From: [identity profile] a-konst.livejournal.com
А нет, ошибся.

Date: 2013-12-10 09:33 am (UTC)
From: [identity profile] onedrey.livejournal.com
Предполагаем, что есть посторонний наблюдатель, и как только в игре получается состояние туз-король-дама слева, он останавливает вас


Почему нельзя просто рэндомно перекладывать куда попало? рано или поздно мы получим выигрышное состояние, и сторонний наблюдатель нас остановит

Date: 2013-12-10 09:38 am (UTC)
From: [identity profile] comichelle.livejournal.com
А если в какой-то момент я вижу слева туза, а остальные места пустые, я понимаю, что это значит, что там туз-дама-король? То есть, если игра заканчивается, я об этом мгновенно узнаю?

Date: 2013-12-10 09:41 am (UTC)
From: [identity profile] comichelle.livejournal.com
Всё, уже поняла, что узнаю:)

Date: 2013-12-10 01:46 pm (UTC)
From: [identity profile] ansr.livejournal.com
На всякий случай уточню для себя - это некий длинный стол или на столе есть три фиксированных слота под карты?

Date: 2013-12-10 03:34 pm (UTC)
From: [identity profile] avva.livejournal.com
три фиксированных слота.

Date: 2013-12-11 09:36 am (UTC)
From: [identity profile] pffnzrpb.livejournal.com
Вчера заходил в родной институт, прошел в комнату отдых выпить кофе. Там вся доска исписана рисуночками вида: Т_Д, К__, КТ_, и тд, соединенных стрелочками.

Date: 2013-12-11 10:36 am (UTC)

Date: 2013-12-13 09:24 am (UTC)
From: [identity profile] tigran martirosyan (from livejournal.com)
1. Карта всегда передвигается на соседний слот.
2. Передвижение влево от левого (L) слота переходит в правый (R), передвижение вправо от правого (R) - в левый (L)
3. Туз и дама всегда передвигаются влево, король - вправо.
4. Передвижение разрешено, если слот назначения пустой или в нем находится младшая карта (старшинство в порядке возрастания: дама, король, туз). Так, дама может передвигаться только в пустой слот.
5. За ход передвигается младшая карта из тех, у которых есть разрешенное передвижение.

:)

Date: 2014-01-05 10:52 pm (UTC)
From: [identity profile] kotakahr.livejournal.com
Как обычно, тот кто писал недурно написал!

January 2026

S M T W T F S
    1 2 3
4 5 6 7 8 910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 9th, 2026 05:43 am
Powered by Dreamwidth Studios