2013-09-24 5 views
-1

В спецификации приводится ниже:Генерировать правду-таблицу в схеме

(truth-table formula) --> truth-table 

формула является:

  • значение истина т.е. либо #t или #f
  • переменная т.е. p, q, r, ...
  • (not formula)
  • (and formula1 formula2)
  • (or formula1 formula2)

Истина-таблица набора строк. Строка содержит привязку (I t), где I - назначение истинности, т. Е. Набор привязок (p t). I должны быть:

  • Последовательная
  • Полный

t производится с помощью функции оценки V(formula, I). V определяется как:

  • V(t,I) = t
  • V(p,I) = t для связывания (p t) в I
  • V((not formula), I) = (not (V (formula I)))
  • V((and formula1 formula2), I) = (and V(formula1 I) V(formula2 I))
  • V((or formula1 formula2), I) = (or V(formula1 I) V(formula2 I))

Что может быть процедура, чтобы следовать в Орд чтобы реализовать таблицу истинности в Схеме? Обратите внимание, что внутри формулы могут быть подформулы.

+1

И что вы пробовали до сих пор? в StackOverflow все в порядке, чтобы задать конкретные вопросы относительно конкретных проблем в вашем коде, но вы не должны приходить с пустыми руками и ожидать, что люди напишут весь код с нуля. –

+1

Можете ли вы показать пример таблицы истинности? Не совсем ясно, что означает спецификация. –

+0

Похоже, вы могли бы сделать переводчик, чтобы сделать это. Если вы создаете синтаксис lisp, вам не нужен синтаксический анализатор. – Sylwester

ответ

0

звучит как вам нужен какой-то парсер. Сначала выберем уникальные символы из выражения, а затем создадим выражение в форме дерева/вложенного списка. Затем перебираем возможную комбинацию значений истинности для генерации таблицы истинности.

 Смежные вопросы

  • Нет связанных вопросов^_^