2013-02-13 4 views
2

의 내가 다음 bools 있다고 가정 해 봅시다 모든 진실한 bool이 해당하는 경우 존재한다. ols도 사실입니다, 나는 무언가를하고 싶습니다. isA, isB 또는 isC가 false 인 경우 해당 isExisting bool은 중요하지 않습니다. 내가 분명히 오늘 생각할 수 없다bools 쌍을 비교하는 간단한 방법은 무엇입니까?</p> <ul> <li>사</li> <li>ISB</li> <li>ISC</li> <li>isExistingA</li> <li>isExistingB</li> <li>isExistingC</li> </ul> <p>사, ISB, 또는 ISC :

if ((isA || isB || isC) 
    && ((!isA || isExistingA) 
    && (!isB || isExistingB) 
    && (!isC || isExistingC))) 
{ 
    // do something 
} 

이를 표현하는 간단한 방법이 있는지 궁금 해서요 :

는 여기에 내가 무엇을 최대 온입니다.

+4

합리적이지만,'&&'는 연관성이 있기 때문에 두 번째와 세 번째 주위에 여분의 괄호가 필요하지 않습니다. – Neil

+1

@Neil : 나는 여분의 괄호가 그것을 더 읽기 쉽게 만든다고 생각한다. – Kevin

+0

또한 @John Straka : 여러 줄과 들여 쓰기를 사용하면 문장을 훨씬 쉽게 읽을 수 있습니다. – Kevin

답변

7

볼프람 알파는 유지하는 것이 더 중요하다, 너무 이것에 대해 걱정하지 마십시오 내 의견으로는 그러나이 link

을 시도, 부울 방정식을 단순화 할 수 있습니다 소형 또는 성능에 대해 걱정하는 것보다 문 깨끗하고 읽을 수있는 경우.

+0

+1 멋진 멋진 wolfram 트릭을 위해 – Mikeb

+0

+1 링크에 대해, 그것은 분명 편리 할 것입니다! – Saggio

1

문제는 모든 ISX 변수를 검사해야 하나 ISX 변수가 있지만 사실해야하는 요구 사항입니다. 그래서 나는 당신이 적은 "비교"로 성명을 쓸 수 있다고 생각하지 않습니다.

현재 솔루션이 가장 짧은 형태라고 생각하지만 설명없이 코드를 읽는다면 아마도 두 번 보지 않고도 이해할 수 없을 것입니다. (실제 이름이 더 설명력이 있지만 어쩌면 더 의미가 있다고 생각합니다. 독자에게).

+0

나는 동의한다, 그것은 약간 둔하다. 그것은 비즈니스 이름으로 조금 더 의미가 있습니다. –