Только в качестве условия в цикле нужно использовать x<=1
Угу, косяк, плохо писать сразу на нескольких языках
а вместо f=0 достаточно сразу написать return 0, а в конце вернуть истину
Я не утверждал, что данный код оптимизирован.
на деле, елка из циклов здесь вообще не нужна, мы же фактически просто перебираем все двоичные числа с разрядностью в количество переменных
Ну да, мне просто в лом было вспоминать, как двоичные числа перебираются, код бы стал больше...
Да, сравнение таблиц истинности я примерно так себе и представлял, спасибо.
А! Ну значит хорошо
Я просто думал, что у меня ошибка.
А вот вашу формулу
в упор не понимаю. Если надо установить эквивалентность, то причем тут отрицание? :)
Я не помню точной формулировки задачи выполнимости. Помню так, что там надо либо найти хотя бы одну энку переменных, для которых формула истинна, либо показать, что она ложна для всех энок. Если формулировка правильна, то формула с отрицанием в точности соответствует задаче ТС: если
принимают одинаковые значения тогда и только тогда, когда
невыполнима. А если хотя бы для одной энки
принимают разные значения, то
выполнима. Если же отрицание убрать, то будет неправильно, соответствие потеряется. Лучше в исчислении предикатов формулировать:
принимают одинаковые условия
. Тут уже отрицание не уберешь - это теперь видно явно.