2013-08-29 1 views
0

복잡한 비즈니스 논리를 가지고 있으며 논리를 단순화 할 수있는 부울 대수를 믿습니다. 아무도 나에게 다음과 같은 문제를 해결하는 방법을 말해 줄 수 있습니까?수학 지식으로 복잡한 조건문을 단순화하는 방법

문제는 X3 : Reunion 게임에서 발생합니다. Here is the universe map (도움이되는 경우)

우주에는 워프 게이트로 연결된 섹터가 있습니다. 한 섹터에서 다른 섹터로 이동하려면 거기로 날아가거나 거기로 이동할 수 있습니다 (더 빨라짐). 다른 섹터로 이동하면 워프 게이트 근처에 무리가 없는지 확인해야합니다 (그렇지 않으면 다른 사람과 충돌하게됩니다). 점프하기 위해서는 점프 장치와 충분한 에너지가 있어야합니다.

점프를 통해서만 접근 할 수있는 고립 된 섹터가 있습니다.

질문은 우주선과 현재의 섹터 및 대상 섹터가 주어진 경우, 우주선이 섹터에 어떻게 도달해야하는지 (점프 또는 비행으로)를 결정하는 것입니다. 또한 두 섹터가 인접한 경우 점프하기가 어렵습니다.

하자 세트 :

a: two sectors are adjacent 
b: have jump device and enough energy 
c: destination sector is not isolated 
d: not too crowd near the gate of the destination 

if(!a && b && d) 
    jump now 
end 

if(!a && b && !d) 
    can jump but wait until there is not too crowd near the gate of the destination. 
    Should recheck before the jump, because the ship may be losing the energy 
    that makes it not enough to jump. 
end 

if(!b && c) 
    fly to destination 
end 

당신이 경우-다른 경우 -... 다른 엔드 문 위의 경우 엔드 문을 변환 할 수 있습니까? 그리고 마지막 "else"가 무엇을 의미하는지 알고 싶습니다. 결과뿐 아니라 결과에 접근하는 절차도 필요합니다.

고맙습니다.

답변

1

처음 두 조건은 모두 & & b에 의존하므로 차이는 d 값에 의해 결정됩니다. !의 마지막 조건은 B에 따라 & & C

나는 이런 식으로 할 거라고 :

if (!b && c) { fly } 
else if (!a && b) { 
    if (d) { jump now } else { wait } 
} 

또는 당신은 첫 번째 'B'에 기초 수 :

if (b) { 
    if (!a) { 
     if (d) { jump now } else { wait } 
    } 
} 
else { 
    if (c) { fly } 
} 
관련 문제