Язык логического программирования PROLOG (далее – ПРОЛОГ) большинству программистов представляется чем-то запутанным и малопригодным для практического применения. В то же время, Интернет основан на символьной информации, поэтому практически все современные программисты сталкиваются с необходимостью обрабатывать символьные структуры данных, а ведь для этого и предназначен язык логического программирования ПРОЛОГ. Этот язык – идеальный для работы с символьными структурами, текстовыми файлами и для построения интеллектуальных программ. Читать полностью »
Рубрика «Prolog» - 3
PROLOG для программистов
2016-01-06 в 11:58, admin, рубрики: Prolog, логическое программирование, Программирование, языки программированияПролог – декларативный язык, способный решать любые ребусы и доказывать теоремы
2015-03-26 в 16:22, admin, рубрики: Prolog, доказательство теорем, искусственный интеллект, логическое программирование, математика, Программирование, метки: доказательство теорем, логическое программированиеПредставьте себе высокоуровневый язык, в котором не нужно указывать КАК получить результат, вместо этого нужно просто указать ЧТО вы хотите получить. При этом область применения языка не ограничена и язык способен решать те же задачи, что и любой другой высокоуровневый язык, наподобие JAVA. Кажется фантастикой, не правда ли? Однако такой язык есть и называется он PROLOG. Посмотрим как PROLOG справляется с этой задачей на примере загадывания прологу некоторых загадок и попросим PROLOG выдать доказательство теоремы.
Унификация и поиск с возвратом на C#
2015-01-26 в 12:24, admin, рубрики: Prolog, YieldProlog, zebra puzzle Эта статья является ответом на статью «Задача Эйнштейна на Прологе». В ней автор пишет, что Пролог очень хорошо подходит для решения этой задачи и что суммарное количество строк почти совпадает с условиями задачи. Здесь я хочу показать, что на C# количество строк кода может быть примерно тем же. Я просто скопирую решение на Прологе и немного изменю синтаксис. Сначала приведу итоговый результат, а потом распишу функции. Вот что получилось:
Читать полностью »
Решение задачи «AAAAAA» с Facebook Hacker Cup методом динамического программирования на B-Prolog
2014-12-24 в 8:30, admin, рубрики: facebook hacker cup, Prolog, Алгоритмы, динамическое программирование, Спортивное программированиеЕсть много материала по решению запутанных задачек на Прологе (например, страница Hakan Kjellerstrand о B-Prolog). Однако часто приводятся задачи, которые либо создавались для решения вручную (имеют маленькое пространство поиска), либо изначально ориентированы на решение при помощи логического программирования.
Я хочу показать мое решение на Прологе задачи AAAAAA с первого раунда Facebook Hacker Cup 2014. Задача имеет достаточно большое пространство поиска и создана с прицелом на решение опытными спортивными программистами на распространенных языках программирования.
Читать полностью »
Разговорный бот на php+prolog
2013-12-09 в 18:54, admin, рубрики: php, Prolog, vk api, боты для социальных сетей, метки: PHP, prolog, vk api, боты для социальных сетей, ВконтактеВведение
Многие считают, что язык программирования prolog является сугубо научным и устаревшим языком для обучения студентов. Большинство в университете «напрягали» именно этим языком на предметах, хоть немного приближенных к теме искусственного интеллекта, эта тема не обошла и меня.
Стандартная задача, которая мне попалась – оказалась настолько скучной и распространенной для этого языка, что был соблазн «скачать готовую бесплатно без регистрации», но я решил вынести максимум из этого курса и повернуть тему пролога, для написания чего-нибудь практически значимого и интересного. Прочитав достаточно много разной документации, в том числе и посты на хабре о prolog, я пришел к выводу, что пролог является отличным инструментом для обработки предложений формального языка. Я решил, что было бы круто – написать бота, который бы умел отвечать на фразы (может быть даже складно) вконтакте.
Читать полностью »
Делаем Refal на Prolog. Магия в семь строк
2013-10-25 в 6:31, admin, рубрики: Prolog, ненормальное программирование, метки: prologЕсли распознающая машина на рисунок слона отзывается сигналом «мура», на изображения верблюда — тоже «мура» и на портрет видного ученого — опять-таки «мура», это не обязательно означает, что она неисправна. Она может быть просто философски настроена.
Владимир Савченко, «Открытие себя»
1. Полюбите Рефал. Немедленно!
Всем известно, что есть такой язык программирования — Рефал. Рефал разработан в 1966 году нашим соотечественником Валентином Турчиным. Судьба у Рефала сложная, но язык до сих пор жив и развивается. Для интересующихся приведем несколько ссылок:
- Самостоятельное изучение Рефала-5. Взгляд студента
- Журнал «Практика функционального программирования», выпуск №7(светлая ему память!). Статьи «Язык РЕФАЛ — взгляд со стороны» и «Суперкомпиляция: идеи и методы»
Сильно утрируя, можно сказать, что Рефал — это смесь Лиспа и Пролога. В синтаксисе языка есть одна интересная особенность — сопоставление с образцом т.н. «прямым выводом».
Читать полностью »
Как объяснить своей младшей сестре (9 лет) принципы логического программирования?
2012-12-04 в 9:34, admin, рубрики: microsoft, Prolog, дети, Учебный процесс в IT, метки: дети Доброго времени суток! Я студентка второго курса МАИ, факультета Прикладной математики.
Недавно наш куратор, Сошников Дмитрий, координатор академических программ департамента стратегических технологий Microsoft, поставил передо мной задачу написать статью на тему: «Как объяснить своей младшей сестре (9 лет) принципы логического программирования?». Вот что из этого вышло.
Здравствуй, любимая сестренка! Сегодня я хочу рассказать тебе, что такое логическое программирование.
Читать полностью »
Решение логических задач на языке Haskell: в своём ли уме Валет?
2012-08-21 в 9:05, admin, рубрики: haskell, Prolog, метки: haskell, prologСегодня я хотел бы подвести итоги под результатами августовского конкурса по функциональному программированию, который ежемесячно проводится под эгидой ФП(ФП). На этот раз в качестве задачи участникам была предложена несколько переформулированная задача из книги Р. М. Смаллиана «Алиса в стране смекалки»:
Тройка думает, что Туз не в своём уме. Четвёрка думает, что Тройка и Двойка обе не могут быть не в своём уме. Пятёрка думает, что Туз и Четвёрка либо оба не в своём уме, либо оба в своём уме. Шестёрка думает, что Туз и Двойка оба в своём уме. Семёрка думает, что Пятёрка не в своём уме. Валет думает, что Шестёрка и Семёрка обе не могут быть не в своём уме. В своём ли уме Валет?
Как видно, это задача на формальную логику. Несмотря на то, что некоторые участники применили интуиционистский подход к решению, задача решается в простейшей булевой логике, причём результат не отличается от того, что получается в интуиционистской логике. В любом случае, на этот раз решение оценивалось с точки зрения его выразительности, и мне хотелось, чтобы участники показали своё умение в оформлении программ в виде текста задачи. К сожалению, этого никто не сделал, поэтому далее будет показана программа на языке Haskell, которая решает задачу и выводит ответ на экран, причём написана она в очень своеобразном стиле, который многим может показаться негодным.