КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Решение задачи
Алгоритм решения Постановка задачи Постановка задачи и составление программы Организация работы в ИО CLIPS Интерфейс встроенного редактора Редактор CLIPS представляет собой встроенный текстовый редактор, предназначенный для написания программ для CLIPS. В табл. 10.2. приведено краткое описание всех пунктов меню GUI-интерфейса редактора. Таблица 10.2.
Порядок работы в ИО CLIPS целесообразно рассмотреть на примере решения несложной логической задачи. 1. Дан ребус: GERALD + DONALD = ROBERT. 2. В словах GERALD, DONALD и ROBERT вместо букв необходимо поставить цифры таким образом, чтобы получилось математически правильное выражение. Разным буквам должны соответствовать разные цифры. 3. Требуется написать программу решения ребуса.
1. Рассмотрим первые разряды всех трех чисел. Считаем, что первый разряд − это единицы, второй разряд – это десятки, третий – сотни и т.д. Очевидно, что нахождение множества пар (буква–цифра), входящих в решение задачи, должно удовлетворять условию: (((D + D) mod 10) = Т) & (D? Т). (10.1) 2. Рассмотрим второй разряд совместно с первым. Необходимо подобрать такие числа L и R, чтобы остаток отделения суммы (L*10 + L*10 + D + D) на 100 был равен (R*10 + Т). При этом следует учесть, что L и R не равны между собой и не равны D и Т. Таким образом, среди множества пар (буква–цифра), удовлетворяющих первому условию, необходимо найти такие, чтобы: (((L*10 + L*10 + D + D) mod 100) = (R*10 + T))&(D?T?L?R). (10.2) 3. Продолжая действовать подобным образом, можно выписать конечное условие, которому должны удовлетворять пары (буква–цифра), входящие в решение данной задачи. Сформулируем описанный выше подход к решению в терминах CLIPS. Представим комбинации из одной буквы и одной цифры в виде фактов: (combination D 0), (combination D 1), (combination A 1) и т.д. В первую очередь составим правило для нахождения комбинаций (буква- цифра), удовлетворяющих условию (10.1): (defrule find_solution (combination D?d) (combination T?t&~?d) (test (= (mod (+?d?d) 10)?t)) => (printout t "A solution is:" t t) (printout t " D = "?d t) (printout t " T = "?t t)) Данное правило выполнимо только в том случае, если в списке фактов существуют факты, удовлетворяющие условиям: 1) (combination D?d) – все факты, в которых в первой и во второй позициях стоят «combination» и «D» соответственно, а в третьей позиции любое значение, это значение присваивается переменной?d. 2) (combination Т?t&~?d) – все факты, в которых в первой и во второй позициях стоят «combination» и «Т» соответственно, а в третьей позиции − любое значение, только не то, которое было присвоено переменной?d, это значение присваивается переменной?t. Знак «&» означает логическое «и» (and), а знак «~» – логическое «не» (not). Выражение «?t&~?d» означает, что переменная?t может принимать значение, не равное значению переменной?d. 3) (test (= (mod (+?d?d) 10)?t)) – это условие проверяет на равенство два выражения (mod (+?d?d) 10) и (?t)). Команда (printout t "A solution is:" t t) выводит на экран информацию, которая указывается после команды в полях, разделенных пробелами. Чтобы вывести текст, его необходимо заключить в кавычки, а перед кавычками поставить букву t. Эта буква указывает, что в следующем поле находится текст, взятый в кавычки, и который необходимо напечатать. Если после буквы t нет текста в кавычках, то происходит перевод курсора на новую строку. Перевести курсор на новую строку можно путем указания комбинации символов «crlf» без кавычек. Для вывода значения переменной необходимо просто указать ее имя.
Дата добавления: 2014-12-29; Просмотров: 988; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |