DRAKON.SU

Текущее время: Четверг, 28 Март, 2024 13:11

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 18 ] 
Автор Сообщение
СообщениеДобавлено: Вторник, 15 Январь, 2013 10:01 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
Сам алгоритм/постановка задачи:
http://oberspace.dyndns.org/index.php/topic,425.0.html

Моё решение на ДРАКОНе:
Вложение:
Koschej-DRAKON.png
Koschej-DRAKON.png [ 31.3 КБ | Просмотров: 17967 ]


Пояснения:
Цитата:
Про что я всегда и пытался говорить - такие случаи разруливаются на плоскости безболезненно.

Посмотрите на вертикальный блок, проверяющий все !null и между проверками добывающий очередной объект.
Это наглядное выражение проверки конъюнкции условий с промежуточными действиями.
Два исхода - когда конъюнкция истинна (мы обладаем иглой) и когда она ложна (и мы продолжаем цикл).

И у самого цикла два исхода - "нашли"-"не нашли".

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


Одно из возможных решений на обычном ЯП:
Код:
PROCEDURE Store (obj: ANYPTR; VAR ptr: ANYPTR): BOOLEAN;
BEGIN
   ptr := obj;
RETURN obj # NIL
END Store;

i := 0;
WHILE (i < сундуки.length) &
   ~( Store(ЗАЯЦ(сундуки[i]), заяц)) & Store(УТКА(заяц(Заяц)), утка)) &
      Store(ЯЙЦО(утка(Утка)), яйцо)) & Store(ИГЛА(яйцо(Яйцо)), игла)) )
DO
   INC(i)
END

Единственное, чтобы передать переменную по VAR-параметру, она должна иметь тип ANYPTR. Отсюда потом каждый раз приведение типа.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 15 Январь, 2013 10:29 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
Илья Ермаков писал(а):
Моё решение на ДРАКОНе:
Вложение:
Koschej-DRAKON.png


У меня есть небольшое возражение.

1. Язык ДРАКОН (точнее, дракон-редактор) гарантирует безошибочность графики.
В данном случае это не так. Ниже объясню почему.

2. Правильный дракон-редактор http://drakon.su/_media/biblioteka/chas ... isanie.pdf работает по другому. Он не может (и не должен) рисовать дракон-схему, которую изобразил Илья Евгеньевич.

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

4. Исправить эту неточность очень легко. Надо удалить слияние 4-х линий в одну и нарисовать не одну стрелку, а четыре.

5. Дракон-редактор создает графический узор методом логического вывода согласно исчислению икон. Отступления от этого недопустимы.

6. Такие отступления «выбивают» из-под дракон-редактора математическое обоснование. Это недопустимо.

7. Причина ошибки в том, что редактор Степана Митькина не реализует логический вывод. И в этом смысле является «недоделанным».

8. Разумеется, редактор Степана Борисовича Митькина обладает многими хорошо известными достоинствами. Но (в существующей версии) он не является гарантоспособным.

9. Когда дракон-редактор Митькина будет доведен до конца, он просто не позволит нарисовать такую (ошибочную) дракон-схему. И тем самым освободит пользователя от необходимости размышлять над пустяками (над правилами языка ДРАКОН). В этом случае пользователь будет думать не над мелочами (что можно и что нельзя), а над смыслом задачи. Над творческими, то есть наиболее важными операциями разработки алгоритмов.

=============================================

Впрочем, программисты — народ изобретательный. Возможно, кто-нибудь захочет меня опровергнуть. Для этого надо найти хитроумный способ (не нарушая правила логического вывода) использовать операции с лианой и в конечном итоге получить схему, которую нарисовал Илья Евгеньевич. Мне такой способ не известен.

Подсказка для тех, кто хочет попробовать свои силы:


Ну и конечно, надо детально изучить книгу:
Цитата:
Паронджанов В. Д. Учись писать, читать и понимать алгоритмы. Алгоритмы для правильного мышления. Основы алгоритмизации. — М.: ДМК Пресс, 2012. — 520 с. — ISBN 978-5-94074-800-7


Последний раз редактировалось Владимир Паронджанов Вторник, 15 Январь, 2013 11:27, всего редактировалось 4 раз(а).

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 15 Январь, 2013 11:10 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
А эта структура маршрутов вообще выводима только вложением (вводом атома)?..

Кстати, опять лучше всего изображается в скобках с "витком Донского"... где явно разрешено пересечение...

Да, не пропущен ли инкремент в начале той самой четверной петли?..


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 15 Январь, 2013 11:32 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Кстати, вопрос к желающим попробовать силы: сколько раз надо употребить инкремент в схеме Ильи и в "доделанной" и в каких местах?..


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 15 Январь, 2013 14:25 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
Я там по невнимательности упустил инкремент в цикле. Потому и слилось всё против правил... См. исправленную схему.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 15 Январь, 2013 19:31 

Зарегистрирован: Вторник, 02 Октябрь, 2012 11:39
Сообщения: 29
Владимир Паронджанов писал(а):

Впрочем, программисты — народ изобретательный. Возможно, кто-нибудь захочет меня опровергнуть. Для этого надо найти хитроумный способ (не нарушая правила логического вывода) использовать операции с лианой и в конечном итоге получить схему, которую нарисовал Илья Евгеньевич. Мне такой способ не известен.


Вот получил в редакторе Тышова:


Вложения:
D.PNG
D.PNG [ 18.62 КБ | Просмотров: 17935 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 16 Январь, 2013 02:12 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
Это уже исправленная схема :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 16 Январь, 2013 10:40 

Зарегистрирован: Вторник, 02 Октябрь, 2012 11:39
Сообщения: 29
Илья Ермаков писал(а):
Это уже исправленная схема :)

К сожалению, после исправления в этой ветке часть постов выглядит совершенно бессмысленно. Если бы исправленная схема была помещена там, где об этом сказано, то логика сохранилась бы.
У нас на предприятии запрещено вносить изменения в выпущенные документы/изделия. Это считается серьезным преступлением. Только новая версия, чтобы можно было посмотреть логику изменений.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 16 Январь, 2013 10:41 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 631
Откуда: Россия, Орёл
Да, каюсь, я об этом уже подумал.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 17 Январь, 2013 11:01 
Аватара пользователя

Зарегистрирован: Суббота, 29 Март, 2008 19:27
Сообщения: 1098
Откуда: Россия, Чебоксары
Владислав Жаринов писал(а):
Кстати, опять лучше всего изображается в скобках с "витком Донского"... где явно разрешено пересечение...
Пардон, а можно узнать, о чём речь? :D


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 17 Январь, 2013 11:15 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Пока рисовал только "в карандаше"... Если Вы об общем, то см. здесь: viewtopic.php?p=76385#p76385. Как реализовано - см. техпроцесс исключения в этом примере: viewtopic.php?p=76208#p76208.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 17 Январь, 2013 16:07 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Кстати, интересно, как из стартовой схемы будет получаться стартовый текст... который д.б. эквивалентом...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 18 Январь, 2013 10:16 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 34
Вариант Р-схемы:
Код:
$==========================================================================$
!                                                                          !
!НЕ Нашли И                                                                !
!ЕСТЬ(сундуки)  ПУСТО(заяц)                                                !
!------------->$---------------------------------------------------------->!
 ВЗЯТЬ(сундук) !                                                           !
 ЗАЯЦ(сундук)  !           ПУСТО(утка)                                     !
               !--------->$----------------------------------------------->!
                УТКА(заяц)!                                                !
                          !           ПУСТО(яйцо)                          !
                          !--------->$------------------------------------>!
                           ЯЙЦО(утка)!                                     !
                                     !           ПУСТО(игла)               !
                                     !--------->$------------------------->!
                                      ИГЛА(яйцо)!                          !
                                                !             ПУСТО(смерть)!
                                                !----------->$------------>!
                                                 СМЕРТЬ(игла)!             !
                                                             !             !
                                                             !------------>!
                                                              Нашли := ДА


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 18 Январь, 2013 11:18 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
Да, кстати, тоже рисовал "рокированный" маршрут в теле цикла... нагляднее...
А инкремент здесь подразумевается?..


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 18 Январь, 2013 12:10 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 145
Откуда: Москва
Достаточно одну иконку УСЛОВИЯ со строкой на Прологе внутри:
Код:
смерть_кощея :- сундук(заяц(утка(яйцо(игла)))).


1) Алгоритм унификации соптимизирует поиск.
2) Одна иконка на Драконе - одно условие на человеческом языке, без лишней детализации.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 18 Январь, 2013 12:35 

Зарегистрирован: Вторник, 26 Январь, 2010 09:31
Сообщения: 34
Владислав Жаринов писал(а):
Да, кстати, тоже рисовал "рокированный" маршрут в теле цикла... нагляднее...
А инкремент здесь подразумевается?..

Если вопрос ко мне, то инкремент здесь не нужен, подразумевается что это вроде списка и проблема обхода решается через
ЕСТЬ(сундуки)
------------------>
ВЗЯТЬ(сундук)
аналог:
WHILE list.HasMoreElements() DO сундук := list.GetNext() END;
как здесь


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 19 Январь, 2013 05:43 

Зарегистрирован: Воскресенье, 01 Ноябрь, 2009 05:13
Сообщения: 1443
А, форич... я так и подумал, но, не будучи Р-(и вообще)программистом, всё-таки нуждался в уточнении... :)

Вот, кстати, это интересно:
Дмитрий Дагаев писал(а):
...
1) Алгоритм унификации соптимизирует поиск.
2) Одна иконка на Драконе - одно условие на человеческом языке, без лишней детализации.
- хотя исходная постановка, как я понял, предполагала написание императива человеком, без перекладывания его генерации на процесс разбора логической модели... Но главное - если модель неимперативная, то техноязык здесь если и нужен - то только в понимании как импер-ЯУЗа, т.е. формы записи пакетника для логической среды... если она такой язык управления заданиями поддерживает...

В общем, прав Алмазов в очередной раз... если понимать его так, что схемы программ как целого - это одно, а схемы маршрутов как части программ - другое, не заменяющее первого... и не всегда помогающее его формированию... Впрочем, уже у Расторгуева это можно было видеть... а до него - у Кауфмана...

Между прочим, в Р-схеме (как и в скобочной) границы цикла далеко не так скрыты, как в Д-схеме...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 30 Апрель, 2013 15:47 

Зарегистрирован: Воскресенье, 24 Февраль, 2008 15:32
Сообщения: 5846
Откуда: Москва
В сообщении viewtopic.php?p=77169#p77169 SergeyNK писал(а):
Вот получил в редакторе Тышова:


Дракон-схема, которую создал SergeyNK с помощью редактора Тышова, очень интересная и (как будто) правильная.

Вместе с тем, следует отметить, что это нетривиальный случай.
Здесь не следует полагаться на кажущуюся очевидность решения.
Необходимо иметь доказательство.
Строгое доказательство.
Математическое доказательство.

Хочу подчеркнуть, что сам факт того, что данная схема получена с помощью редактора Тышова не является доказательством. Это необходимое, но не достаточное условие.
Иными словами, я ставлю вопрос о том, чтобы получить достаточное условие.

Необходимо найти и представить математическое доказательство того, что дракон-схема (алгоритм) нарисованная SergeyNK с помощью редактора Тышова является правильной.

До сих пор подобные математические доказательства на нашем форуме не приводились.

Приглашаю желающих, которые пожелают выполнить эту отнюдь не простую работу.

Подсказка для тех, кто хочет попробовать свои силы:


Ну и конечно, надо детально изучить книгу:
Цитата:
Паронджанов В. Д. Учись писать, читать и понимать алгоритмы. Алгоритмы для правильного мышления. Основы алгоритмизации. — М.: ДМК Пресс, 2012. — 520 с. — ISBN 978-5-94074-800-7


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2008-2024, участники конференции «DRAKON.SU», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB