이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
박상혁
가입: 2014년 9월 3일 올린 글: 27
|
올려짐: 2014년12월1일 2:05 주제: 프로젝트 3 질문입니다. |
|
|
check_exp에서
repeat (if ((repeat (read + 100) 2) + (-55)) then 1 else -1) 5
위와 같은 exp는 if 조건문이 항상 홀수이기 때문에 1을 택하게 되고, 항상 잘 계산되는 정수식이 됩니다.
하지만 위와 같은 input을 처리하기 위해선 결국 모든 종류의 입력(read)에 대해 다 테스트를 해 볼 수 밖에 없을 것 같은데요, 이것은 문제의 의도사항이 아닌 것 같습니다.
실제로 잘 계산되는 정수식이지만 위와 같은 복잡한 입력에 대해서는 check_exp 함수가 false를 반환하게 코드를 작성해도 괜찮을까요?
그리고 고려하지 않아도 되는 케이스(ex. "if cond T F" exp에서 cond가 항상 0이 아니어도 exp가 T, F의 값을 모두 가질 수 있다고 예측해도 되는지 등)가 있다면 알려주실 수 있나요?
자세히 생각해 보진 않았지만 check_cmd의 경우에도 유사한 의문이 생길 것 같습니다. 혹시 가능하다면 cmd의 경우에도 어떻게 되는 지 알려주시면 감사하겠습니다.
감사합니다. |
|
위로 |
|
 |
김윤승
가입: 2014년 9월 1일 올린 글: 452 위치: 302동 312-2호
|
올려짐: 2014년12월1일 14:19 주제: |
|
|
네, 짝홀까지 고려하실 필요는 없습니다.
권장하는 방법은 식이 가질 수 있는 범위(ex: [-10,20])를 고려하는 것입니다.
그래서 잘 모르겠을 때에는 false를 반환하는 것이 맞습니다.
정확히 어디까지 고려해야 하는지 등은 정답이 없기 때문에 애매한 것이 맞습니다.
if true A B 와 같은 식에서 B는 실행되지 않을 거라는 것 정도까지는 해주는 게 좋을 것 같습니다.
어디까지 해야 하는지 선을 찾는 것도 실력이기 때문에 너무 세세하게 알려드릴 순 없지만 애매한 케이스가 있으면 질문하시면 됩니다. |
|
위로 |
|
 |
정의진
가입: 2014년 11월 13일 올린 글: 9
|
올려짐: 2014년12월3일 19:55 주제: |
|
|
저도 범위로 해서 생각해서 했는데
그렇다면
위와 같이 범위 사이에 구멍이 생기는 경우에 대해서는 검토하지 않아도 괜찮은 것인가요? |
|
위로 |
|
 |
김윤승
가입: 2014년 9월 1일 올린 글: 452 위치: 302동 312-2호
|
올려짐: 2014년12월3일 23:36 주제: |
|
|
어떻게 하든 완벽하게 하기는 일반적으론 불가능합니다.
안전하게 잘 모르겠는 건 false를 리턴하면서, 올바른 상황에서는 최대한 true를 리턴하도록 하는 게 목표입니다. |
|
위로 |
|
 |
|