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

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

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

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

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

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

Date: 2013-12-09 02:35 pm (UTC)
From: [identity profile] vsh.livejournal.com
Закольцуем места (теперь место 2 находится слева от места 0). Теперь правила, пробовать применять их надо по порядку:

Если Q на месте 0, а на остальных двух A и K, положить K на Q (идеальный сценарий)
Если K на месте 0, а на остальных двух A и пусто, положить A на K (в надежде, что это продолжение идеального сценария)
Если справа от карты X есть пустое место Y, положить карту X на это пустое место Y (разбиваем стопки в 1, 2, или 3 шага)
Положить карту справа от Q на карту слева от Q (если карты лежат плоско, передвигаем их в идеальную ситуацию)

Кстати, легко масштабируется на любое n, где n - количество карт и мест.
Edited Date: 2013-12-09 02:52 pm (UTC)

Date: 2013-12-09 04:24 pm (UTC)
From: [identity profile] avva.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. 10th, 2026 04:27 pm
Powered by Dreamwidth Studios