powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как решать такие задачи?
28 сообщений из 28, показаны все 2 страниц
Как решать такие задачи?
    #39169577
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Положим есть доска NxN клеток. Есть 2 фишки, ф1 и ф2, которые изначально находятся в произвольных клетках. . За один ход обе фишки могут переместиться на одну клетку в одном направлении. Между клетками могут быть заборы, при встрече с которым фишка остается на месте, если ход в сторону клетки перегороженной забором. Если упрется в борт, так же остается на месте.
Есть две лунки, л1 и л2, которые тоже находятся в произвольных клетках. Нужно загнать соответствующую фишку в соответствующую лунку.
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39169613
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тривиально до жути. Сперва гонишь одну фишку, не обращая внимания на вторую. Загнав её в лунку, гонишь вторую.
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39169658
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

"Волной" ищи пути и гони себе хоть 10 фишек.
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39169797
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterЕвгенийВ,

"Волной" ищи пути и гони себе хоть 10 фишек.
Какой волной? Как искать? Хоть название алгоритма?

Akina Тривиально до жути. Сперва гонишь одну фишку, не обращая внимания на вторую. Загнав её в лунку, гонишь вторую.
Надо что бы вторая не попала в лунку для первой.
Вообще их может быть 100500.
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39169845
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

Начни отсюда - https://ru.wikipedia.org/wiki/Поиск_пути
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39169882
alexy_black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
локальные минимумы будут?
какой должен быть ход, рандомный или надо именно путь найти?
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39169898
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВКак решать такие задачи?
Очень полезно чтение Вирта. "Структуры данных + алгоритмы = программы".
То есть, в начале выбирается представление данных - доски и позиции фишек на ней, обозначение стен, обозначние конечных клеток и т.н. Записи, массивы из записей и др.
Потом алгоритмы. Процедура "Один ход" - в котором задается направление движения, и в процедуре делаются соответствующие изменения данных. Процедура "Движение к цели", которая использует процедуру "Один Ход".
И т.д
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39169911
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВКакой волной? Как искать? Хоть название алгоритма?
Линейное программирование, теория графов, поиск кратчайшего пути.
При поиске пути чужую лунку ты можешь временно обнести стенами.
Проблемой может быть если фишки взаимно блокируют единственный путь. Что делать тогда - я не знаю.
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39169916
Иммануил Кант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaСперва гонишь одну фишку, не обращая внимания на вторую. Загнав её в лунку, гонишь вторую

может не получиться - могут мешать друг-другу. можно в этом случае отодвинуть попробовать, но для N фишек это будет сложно
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39169918
Иммануил Кант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иммануил Кантотодвинуть попробовать

рекурсивно
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39170265
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но вообще-то в задаче не указано, что фишки не могут одновременно быть в одной клетке ;)

Условие не очень, конечно... "Между клетками могут быть заборы, при встрече с которым фишка остается на месте, если ход в сторону клетки перегороженной забором. " Не может ходить через забор, и все. Какой же это алгоритм, который задаст направление через забор, чтобы фишка не могла перейти и пропустила ход?
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39171090
yugl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S.G.Условие не очень, конечно... "Между клетками могут быть заборы, при встрече с которым фишка остается на месте, если ход в сторону клетки перегороженной забором. " Не может ходить через забор, и все. Какой же это алгоритм, который задаст направление через забор, чтобы фишка не могла перейти и пропустила ход?
Вообще-то условие нормальное, если расстановка стен заранее неизвестна.
ТС, к сожалению, экономит на словах, а хорошо бы всё же уточнить такого рода вещи. Скажем, то, что фишки изначально находятся в произвольных клетках, означает, что координаты этих клеток задаются при старте, или мы знаем только то, что фишки находятся на доске?
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39171648
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yuglS.G.Условие не очень, конечно... "Между клетками могут быть заборы, при встрече с которым фишка остается на месте, если ход в сторону клетки перегороженной забором. " Не может ходить через забор, и все. Какой же это алгоритм, который задаст направление через забор, чтобы фишка не могла перейти и пропустила ход?
Вообще-то условие нормальное, если расстановка стен заранее неизвестна.
ТС, к сожалению, экономит на словах, а хорошо бы всё же уточнить такого рода вещи. Скажем, то, что фишки изначально находятся в произвольных клетках, означает, что координаты этих клеток задаются при старте, или мы знаем только то, что фишки находятся на доске?
Координаты задаются на старте.
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39171786
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
S.G.в задаче не указано, что фишки не могут одновременно быть в одной клетке
То же касается и лунок.
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39171954
yugl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВКоординаты задаются на старте.
Если все координаты задаются при старте, то задача становится тривиальной.
Формируешь из начального положения фишек множество возможных положений после нулевого хода - ФФ(0).
Затем из него формируешь множество возможных положений после первого хода ФФ(1). И т.д. Очевидно, что множество ФФ(n) входит в ФФ(n+1).
Процесс продолжаешь до тех пор, пока не выполнится одно из двух условий:
1) фишки попали в лунки (клетки лунок попали нужным образом в множество положений после некоторого хода)
2) множество положений не увеличилось после очередного хода
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39172053
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yugl,
Все осложняется тем, что фишек >=2. Сначала можем загнать одну, потом другую.
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39172073
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ , неверно. Состояние, когда загнана одна (или несколько, но не все) - это некое промежуточное ФФ(n).
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39172141
Доктар123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Иммануил КантИммануил Кантотодвинуть попробовать

рекурсивно

+ сортировкой, на каждой итерации,
верхний элемент списка
определяет параметры следующего рекурсивного вызова.

алгоритм сортировки определяет расстояние
до препядствий и лунки.
Сортировка должа выбирать ход таким образом
что бы путь находился дальше от препядствия и ближе к лунке из
других возможных вариантов ходов.
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39172342
yugl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВyugl,
Все осложняется тем, что фишек >=2. Сначала можем загнать одну, потом другую.
Алгоритм практически универсален, от числа фишек не зависит, собственно, необходимо только определить правила получения новых возможных положений из текущего.
Единственный (но серьезный) недостаток алгоритма - быстрый рост числа возможных положений при росте числа фишек.

Альтернатива - построить какое-нибудь топологическое описание доски. Самое простое - хранить для каждой пары клеток (старт, финиш) направление, по которому надо идти фишке (или признак, что финиш недоступен). Такую штуку тоже очень просто сделать. Но тут уже необходимо допущение, что фишки (лунки) не мешают движению других фишек, поскольку топоописание будет статичным.
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39172369
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yuglЕдинственный (но серьезный) недостаток алгоритма - быстрый рост числа возможных положений при росте числа фишек.

Почему? Они всегда двигаются синхронно.
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39172400
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВПочему? Они всегда двигаются синхронно.Да потому что каждому состоянию на ход N соответствует 4 состояния на ход N+1. Кроме случая, когда ни одна из фишек не сдвинется при попытке движения в некоем направлении. А 4 в степени N, знаете ли, растёт весьма угрожающими темпами...
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39172599
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я тут не дочитал, видимо:ЕвгенийВ За один ход обе фишки могут переместиться на одну клетку в одном направлении. Что это означает, прямо как и написано, что все (обе) фишки, движутся либо направо, либо вверх и т.д, синхронно?
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39173009
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaДа потому что каждому состоянию на ход N соответствует 4 состояния на ход N+1. Кроме случая, когда ни одна из фишек не сдвинется при попытке движения в некоем направлении. А 4 в степени N, знаете ли, растёт весьма угрожающими темпами...
Но это лучше, чем если бы они могли двигаться разно направленно.

S.G.Что это означает, прямо как и написано, что все (обе) фишки, движутся либо направо, либо вверх и т.д, синхронно?
Да.
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39173430
Фотография Areostar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВ,

Если совсем тапорно, то можно перебором ходов

или вам надо к примеру за минимальное число ходов??
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39173909
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Areostar,
По идее надо уменьшить расходы по памяти, сложности алгоритма, ну и ходов как можно меньше делать...
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39174687
Иммануил Кант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AreostarЕсли совсем тапорно, то можно перебором ходов

а как организовать этот перебор предложишь? перебор - это не отсутствие алгоритма
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39174738
Доктар123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Иммануил КантAreostarЕсли совсем тапорно, то можно перебором ходов

а как организовать этот перебор предложишь? перебор - это не отсутствие алгоритма

18822798

есть координаты фишек и есть координаты лунок.

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


Если координаты препядствий алгоритму не известны ,
то методом проб и ошибок.

Если известны то вам сюда , перебирать точки у границ препядствий.
То есть создавать промежуточные лунки-цели,
находящиеся в прямой видимости от фишки.
...
Рейтинг: 0 / 0
Как решать такие задачи?
    #39249639
myaucha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привожу вариант решения задачки здесь
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как решать такие задачи?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]