게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

발로만든 HW5-1 테스트

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2009)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
최종욱



가입: 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
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2009) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay