2014-03-18 3 views
0

Отрицание требует от меня часов проб и ошибок, пока ничего не сломается, любой метод отрицания, кроме интуитивно? Например:Как переписать отрицательную строку?

//x and y are whole numbers 

!((x<9) && (y<=(8-x))) 
((x>8) || (y>(8-x))) 
+0

Узнать и понять основную логику высказываний: http://editthis.info/logic/Propositional_Logic – scrappedcola

ответ

2

Проще всего игнорировать вопросы о домене ценностей и рассматривать это как вполне логичную проблему. Тогда мы можем разбить его на такие случаи, как:

!(A || B) ~= !A && !B 
!(A && B) ~= !A || !B 
!(!A) ~= A 
!(x > y) ~= x <= y 
!(x >= y) ~= x < y 

Первые два может быть легко расширен:

!(A || B || C || D || ...) ~= !A && !B && !C && !D && ... 
!(A && B && C && D && ...) ~= !A || !B || !C || !D || ... 

Так, для одного из примеров, мы имеем:

!((x < 9) && (y <= (8-x))) 
!(x < 9) || !(y<=(8 - x) 
(x >=9) || (y > (8 - x)) 

Мы можем оставить это как это, но поскольку у вас есть дополнительная информация о домене («x и y - целые числа»), вы можете включить его, чтобы вернуть немного менее конкретный, но достаточно точный в контексте ответ, такой как

(x > 8) || (y > (8 - x)) 

Вам нужно будет принять решение в каждом конкретном случае, стоит ли делать дополнительные шаги. То, что он может получить, является несколько уменьшенной базой кода, оно также может потеряться в менее прозрачной ссылке на исходный формат.

+0

Спасибо за редактирование @ ajax333221; плохие вещи случаются, когда я отвечаю поздно ночью! :-) –

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