Автор: samec 20.05.2008 7:10
Добрый день всем! Есть задачка, под названием "расстановка мебели". Условие: Площадь разделена на шесть квадратов, пять из которых занято мебелью, шестой свободен. Переставить мебель так, чтобы шкаф и кресло поменялись естами, при этом никакие два премета не могут стоять на одном квадрате. На поле емееться один шкаф, одно кресло, один стул и два стула, например:
Код
------------------------
|стол | стул | шкаф |
------------------------
|стул | |кресло|
------------------------
Возникла проблема с алгоритмом. Может кто знает как он реализовывается???
Автор: dream-x 21.05.2008 0:07
Я на этой неделе закончил пятнашки писать))... Алгоритм таков (я все делал в графическом режиме и тебе советую)... в теле программы ты делаешь цикл с пост условием и например выход из него когда ты нажмешь Q...
Затем:
1. Раставляем в массив в произвольном порядке твою мебель изпользуя Random и проверяем его на то чтобы в нем не было одинаковых элементов (если они есть то повторяем заново с того элемента который повторился);
2. Теперь ты должен найти пустой элемент или элемент для которого нет мебели и как-то его выделитьж
3. Теперь ты считываешь клавишу которую нажал на клаве и смотришь что именно тебе поменять местами т.е. ты должен если например ты пошел в лево переместить что у тебя есть в соседней ячейки в ту где у тебя пусто а в ту которую походил нужно затереть...
Тут ничего сложного эксперементируй... Если, что пиши... Удачи!
Автор: samec 21.05.2008 2:25
Цитата(dream-x @ 21.05.2008 0:07)
Я на этой неделе закончил пятнашки писать))... Алгоритм таков (я все делал в графическом режиме и тебе советую)... в теле программы ты делаешь цикл с пост условием и например выход из него когда ты нажмешь Q...
Затем:
1. Раставляем в массив в произвольном порядке твою мебель изпользуя Random и проверяем его на то чтобы в нем не было одинаковых элементов (если они есть то повторяем заново с того элемента который повторился);
2. Теперь ты должен найти пустой элемент или элемент для которого нет мебели и как-то его выделитьж
3. Теперь ты считываешь клавишу которую нажал на клаве и смотришь что именно тебе поменять местами т.е. ты должен если например ты пошел в лево переместить что у тебя есть в соседней ячейки в ту где у тебя пусто а в ту которую походил нужно затереть...
Тут ничего сложного эксперементируй... Если, что пиши... Удачи!
Это всё конечно хорошо, и так я уже давненько сделал
(можно посмотреть, если хочется, в прикреплённом файле). Меня же интересует несколько другой вопрос, как сделать так, чтобы я расставил мебель сам, а компьютер, по некоему алгоритму решил поставленную задачу (без моего участия
). Вот.
Прикрепленные файлы
MEBEL.PAS ( 6.18 килобайт )
Кол-во скачиваний: 300