 |
|
| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
최종욱
가입: 2009년 9월 15일 올린 글: 84
|
올려짐: 2009년11월13일 15:44 주제: 발로만든 HW5-1 테스트 |
|
|
숙제하다가 5-1번 문제를 제대로 짰는지 이것저것 테스트를 해 보았는데, 왠지 다른 분들도 넣어 보시면 좋을 듯(?) 해서 여기에 올려봅니다.
| 코드: |
(* 여기에 5-1번 숙제 코드를 include *)
#use "hw5-1.ml";;
(* TEST CODE *)
let print_list lst = print_string "["; List.iter (fun k -> Printf.printf " %d " k) lst; print_string "]\n"; flush stdout;;
(* TEST DATA *)
let prg1 = SEQUENCE (ASSIGN (NUM 1), REPEAT ( CHOICE (EQ (NUM 1, ASSIGN (ADD (VAR, NUM 1) )), (NEQ (NUM 1, ASSIGN (SUB (VAR, NUM 1) ) ) ))));;
print_list (exeval prg1 0);; (* [1 2] *)
let prg2 = SEQUENCE (ASSIGN (NUM 1), REPEAT (ASSIGN (ADD (VAR, NUM 1))) );; (* x=1; (x=x+1); *)
print_list (exeval prg2 0);; (* [1 2 3 4 5] *)
let prg3 = SEQUENCE ( ASSIGN (NUM 1), REPEAT (SEQUENCE( EQ ((NUM (-5)), ASSIGN (NUM 5)), ASSIGN (SUB (VAR, NUM 1)) )));;
print_list (exeval prg3 0);; (* [-5 -4 -3 -2 -1 0 1 2 3 4] *)
let prg4 = SEQUENCE( ASSIGN (NUM 6), REPEAT( ASSIGN (ADD (VAR, NUM 1))) ) ;;
print_list (exeval prg4 1);; (* [1] *)
let prg5 = REPEAT( ASSIGN (NUM 3) ) ;;
print_list (exeval prg5 2);; (* [2 3] *)
let prg6 = CHOICE( CHOICE( REPEAT (ASSIGN (ADD (VAR, VAR))), ASSIGN (NUM (-2))), ASSIGN (NUM (-5)) );;
print_list (exeval prg6 1);; (* [-5 -2 1 2 4] *)
let prg7 = REPEAT( REPEAT( REPEAT( REPEAT (REPEAT (CHOICE( ASSIGN ( ADD (VAR, NUM 1)), ASSIGN ( SUB (VAR, NUM 1) ) ))) ) ));;
(*let prg7 = REPEAT (CHOICE( ASSIGN ( ADD (VAR, NUM 1)), ASSIGN ( SUB (VAR, NUM 1) ) ));;
same as above, but if too slow then try me instead :) *)
print_list (exeval prg7 4);; (* [-5 -4 -3 -2 -1 0 1 2 3 4 5] *)
let prg8 = SEQUENCE(EQ( NUM 3, prg5), prg6);;
print_list (exeval prg8 0);; (* [-5 -2 0] *)
let prg9 = SEQUENCE( CHOICE(
CHOICE(ASSIGN (NUM 1), ASSIGN(ADD (NUM 3, VAR))),
CHOICE(ASSIGN (NUM (-1)), ASSIGN(NUM (-4)) )
), ASSIGN (NUM (-4)));;
print_list (exeval prg9 5);; (* [-4 5] *)
print_list (exeval prg9 2);; (* [-4] *)
let prg10 = SEQUENCE( ASSIGN (NUM 2), CHOICE( REPEAT ( NEQ (ADD (VAR, NUM 1), prg5) ), ASSIGN (NUM 4)) );;
print_list (exeval prg10 0);; (* [2 3 4] *)
let prg11 = CHOICE( CHOICE(prg4, prg1), REPEAT( CHOICE(prg6, prg10) ) );;
print_list (exeval prg11 0);; (* [-5 -4 -2 0 1 2 3 4] *)
|
인터프리터 말고 ocaml test.ml 이런식으로 실행하시면...
OUTPUT
| 코드: |
[ 1 2 ]
[ 1 2 3 4 5 ]
[ -5 -4 -3 -2 -1 0 1 2 3 4 ]
[ 1 ]
[ 2 3 ]
[ -5 -2 1 2 4 ]
[ -5 -4 -3 -2 -1 0 1 2 3 4 5 ]
[ -5 -2 0 ]
[ -4 5 ]
[ -4 ]
[ 2 3 4 ]
[ -5 -4 -2 0 1 2 3 4 ]
|
이건 손으로 만든거다보니까 좀 까다로운 부분도 테스트하기엔 무리가 있지만 '기본적으로' 동작하는 것 정도는 확인하실 수 있을 듯 합니다.
랜덤으로 몇백개 만들어 보기도 했는데 이건 나중에 상황 봐서...
제가 틀렸을 수도 있으니 혹시 다르면 지적좀 해주세요 >_< _________________ Jongwook Choi
Seoul National University, School of Computer Science & Engineering |
|
| 위로 |
|
 |
신기정
가입: 2009년 9월 15일 올린 글: 83
|
올려짐: 2009년11월13일 21:06 주제: 같은 결과 확인했습니다. |
|
|
같은 결과 확인했습니다.
감사 감사 ㅜ_ㅜ |
|
| 위로 |
|
 |
최종욱
가입: 2009년 9월 15일 올린 글: 84
|
올려짐: 2009년11월17일 20:34 주제: |
|
|
몇 가지 큰 크기의 랜덤 예제들
let testcmd = REPEAT ( REPEAT ( REPEAT ( REPEAT ( REPEAT ( REPEAT ( REPEAT ( REPEAT (SEQUENCE ( ASSIGN ( NUM (-3) ),
REPEAT ( REPEAT ( REPEAT ( REPEAT ( SEQUENCE ( ASSIGN ( ADD (NUM (0),
NUM (0)) ),
ASSIGN ( NUM (-1) ) ) ) ) ) ) )))))) ) ) );;
print_list (exeval testcmd (3));;
# [ -3 -1 3 ]
- : unit = ()
let testcmd = CHOICE ( ASSIGN ( NUM (-1) ),
CHOICE ( REPEAT ( ASSIGN ( NUM (3) ) ),
REPEAT ( EQ ( ADD (VAR, VAR),
REPEAT ( EQ ( NUM (3),
EQ ( NUM (-1),
SEQUENCE ( CHOICE ( CHOICE ( ASSIGN ( NUM (2) ),
ASSIGN ( NUM (-1) ) ),
CHOICE ( ASSIGN ( NUM (-3) ),
ASSIGN ( NUM (-3) ) ) ),
CHOICE ( CHOICE ( ASSIGN ( VAR ),
ASSIGN ( ADD (NUM (0),
NUM (0)) ) ),
CHOICE ( ASSIGN ( NUM (3) ),
ASSIGN ( VAR ) ) ) ) ) ) ) ) ) ) );;
print_list (exeval testcmd (3));;
# [ -1 3 ]
- : unit = ()
let testcmd = SEQUENCE ( CHOICE ( ASSIGN ( NUM (0) ),
REPEAT ( REPEAT ( REPEAT ( REPEAT ( REPEAT ( REPEAT (CHOICE ( SEQUENCE ( CHOICE ( SEQUENCE ( CHOICE ( ASSIGN ( ADD (ADD (ADD (ADD (NUM (3),
NUM (-3)),
VAR),
NUM (1)),
NUM (2)) ),
REPEAT ( REPEAT ( REPEAT ( REPEAT ( REPEAT (ASSIGN ( SUB (VAR, NUM (-2)) )))))) ),
EQ ( NUM (-2),
SEQUENCE ( ASSIGN ( ADD (VAR, NUM (1)) ),
ASSIGN ( NUM (-1) ) ) ) ),
NEQ ( NUM (-2),
CHOICE ( REPEAT ( ASSIGN ( VAR ) ),
SEQUENCE ( ASSIGN ( NUM (-3) ),
ASSIGN ( NUM (2) ) ) ) ) ),
ASSIGN ( NUM (0) ) ),
REPEAT ( SEQUENCE ( CHOICE ( REPEAT ( REPEAT ( REPEAT ( REPEAT ( REPEAT (ASSIGN ( NUM (2) )))))),
SEQUENCE ( REPEAT ( ASSIGN ( NUM (3) ) ),
EQ ( ADD (NUM (0),
NUM (-2)),
ASSIGN ( NUM (1) ) ) ) ),
REPEAT ( REPEAT ( REPEAT ( REPEAT ( REPEAT (SEQUENCE ( SEQUENCE ( ASSIGN ( NUM (-2) ),
ASSIGN ( VAR ) ),
SEQUENCE ( ASSIGN ( SUB (NUM (3),
NUM (2)) ),
ASSIGN ( NUM (3) ) ) )))))) ) ) )))))) ) ),
ASSIGN ( NUM (-2) ) );;
print_list (exeval testcmd (-2));;
# [ -2 3 4 5 ]
- : unit = () _________________ Jongwook Choi
Seoul National University, School of Computer Science & Engineering |
|
| 위로 |
|
 |
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 없습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group Translated by kss & drssay
|