Рубрика «Prolog» - 4

Решение логических задач на языке Haskell: в своём ли уме Валет?Сегодня я хотел бы подвести итоги под результатами августовского конкурса по функциональному программированию, который ежемесячно проводится под эгидой ФП(ФП). На этот раз в качестве задачи участникам была предложена несколько переформулированная задача из книги Р. М. Смаллиана «Алиса в стране смекалки»:

Тройка думает, что Туз не в своём уме. Четвёрка думает, что Тройка и Двойка обе не могут быть не в своём уме. Пятёрка думает, что Туз и Четвёрка либо оба не в своём уме, либо оба в своём уме. Шестёрка думает, что Туз и Двойка оба в своём уме. Семёрка думает, что Пятёрка не в своём уме. Валет думает, что Шестёрка и Семёрка обе не могут быть не в своём уме. В своём ли уме Валет?

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

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js