Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2013, 22:28   #11
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
видимо нет
Тогда есть 2 варианта :
1) узнать
2) откинуть мое решение, т.к. в его основе лежат пользовательские проц\функ
Poma][a вне форума Ответить с цитированием
Старый 17.03.2013, 22:30   #12
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от HalvaForever Посмотреть сообщение
видимо нет
Тогда по приоритету изучать это надо до очередей, т.к. эффективная реализация очереди без этого не получится.
s-andriano вне форума Ответить с цитированием
Старый 17.03.2013, 22:33   #13
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Тогда есть 2 варианта :
1) узнать
2) откинуть мое решение, т.к. в его основе лежат пользовательские проц\функ
На самом деле вариант есть только один - первый.
Откинуть Ваше решение можно будет и после него.
s-andriano вне форума Ответить с цитированием
Старый 17.03.2013, 22:33   #14
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

s-andriano, огромное Вам спасибо!
Дело в том что сейчас в нашей области (Ярославской) проводится турнир, там есть задача, где одной из подзадач является задача аналогичная данной. (где-то слова "задача" не хватает ) Там наша команда использовала рекурсию (и не очень эффективную), а оказывается можно обойтись меньшей кровью Еще раз спасибо!)

Ужасъ.. Злая АнтиНакруточнаяСистема не дает поставить плюс.. Ладно.. потом дас Бог вспомню..
Poma][a вне форума Ответить с цитированием
Старый 17.03.2013, 22:40   #15
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,330
По умолчанию

Как вариант:
1. Строим двумерный массив леса, заполняя элементы нулями и единицами: 0 - дерева нет, 1 - дерево.
2. Задаем направление ветра - опционально.
3. Выбираем дерево для поджига.
4. Подоженное дерево помечаем кодом два, к примеру.
5. В цикле просматриваем массив.
6. Если находим горящие деревья, то поджигаем деревья, которые рядом и в направлении ветра. Факт поджига контролируем флажком, котоый в начале цикла - false.
7. Если находим подожженные деревья, то переводим их в ранг горящих - код три, например.
8. Выводим массив на экран.
9. Делаем задержку по времени.
10. Подсчитываем время в виде числа тактов.
12. При достижении ситуации, когда нет подожженых деревьев, флажок = false, прекращаем расчет.
11. Переходим в начало цикла.
12. Выводим окончательный результат.

При задании силы ветра, можно ввести в модель поджиг не только рядом стоящих, но и на шаг далее отстоящих.

Далее можно фантазировать ...
Например, поджиг дерева делаем вероятностным, скажем 50%. При просмотре контролируем, что на предыдущем такте мы уже применили
вероятностный подход к данному дереву и поджигаем его.
Графически можно представить деревья точками зеленого цвета, подожженные - желтого, горящие - красного, выгоревшие - ...
Вот еще. Выгоревшие - код, например, 5 или 7. На каждом шаге добавляем единицу к коду горящего дерева ...


Как-то так ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 17.03.2013, 22:46   #16
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

s-andriano,Виктор, а есть у Вас какие-либо другие вариант без в цикле просматриваем массив и очередей и "волн"?
Poma][a вне форума Ответить с цитированием
Старый 17.03.2013, 22:53   #17
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
А что такое пользовательские процедуры\функции Вы знаете?
Иначе они называются API (Application Programming Interface). Если не лень, Вы их можете и сами для себя создать в виде Dll-ки или просто отдельного файла.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 17.03.2013, 23:07   #18
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,330
По умолчанию

Есть конечно.
Строим объект - дерево.
Наделяем его некоторыми характеристиками, определяющими стойкость к огню, скоростью возгарания, длительностью горения, которая в частности, может зависить как от возраста дерева, так и его влажности. И.т.п.
В том числе, как характеристика - способность поджечь другое дерево.
Строим лес в виде некоторого набора процессов, которые обслуживают каждое дерево и поджигаем выбранное дерево.
Далее процесс продолжается в автоматическом режиме.
Подожженное дерево, если оно может поджечь соседнее, создает процесс для соседнего дерева и посылает ему сообщение и сосед начинает изображать процесс возгарания и горения.
Это же дерево само изображает себя на экране ...
Сгоревшее дерево - процесс завершается.

Это только пофантазировать.


Как-то так ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 18.03.2013, 00:12   #19
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
s-andriano,Виктор, а есть у Вас какие-либо другие вариант без в цикле просматриваем массив и очередей и "волн"?
Строго говоря, очередь не предусматривает такой операции как "просматривание".
Да это и не нужно - берем из нее все элементы подряд и сразу используем. Ни один не пропадает.
"волна" также хранится в очереди.
А вот если деревья заданы координатами, причем, в беспорядке (как, видимо, предполагает ТС в первом сообщении темы), то поиск в массиве ближайших деревьев для каждого из горящих - достаточно неприятная операция, и ее желательно было бы оптимизировать, например, с использование квадрадерева.
s-andriano вне форума Ответить с цитированием
Старый 18.03.2013, 00:23   #20
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Браттцы, да за что-ж так машину бить? Массив и от углов тройками координат.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужно доделать задачу гоша37 Паскаль, Turbo Pascal, PascalABC.NET 0 27.11.2012 12:18
доделать задачу Sylar9 Общие вопросы C/C++ 0 06.05.2012 11:48
Не могу доделать задачу X-REY Паскаль, Turbo Pascal, PascalABC.NET 1 25.10.2011 20:50
Помогите доделать задачу n1ce > Kuzia Паскаль, Turbo Pascal, PascalABC.NET 2 08.01.2009 11:42
Помогите доделать задачу!!!! Vincenzo Паскаль, Turbo Pascal, PascalABC.NET 4 11.05.2008 09:35