이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
서성현
가입: 2005년 9월 29일 올린 글: 54
|
올려짐: 2005년11월8일 14:35 주제: [HW5-1] 특이한 테스트셋 모음 (updated) |
|
|
아래 코드들은 K--에서 정상적으로 동작하여 777을 출력하는 코드들입니다.
5-1 구현할 때 이런 경우들도 미리미리 생각해서 구현하시라고 올립니다.
이런 경우 생각 안 해놨다가 나중에 뒤늦게 고치려고 하면 꽤 힘들지도..;
저도 빨리 5-1구현해야 할 텐데요..^^;
코드: | /* ▶ 특이한 테스트 ◀ */
/* ★ test 1 : bot 값을 assign하는 경우 */
let
x := malloc( 1 )
in
let
y := *x
in
write 777
end
end ;
/* ★ test 2 : 유령 location에 덧셈 등의 연산을 시도하는 경우 */
let
x := malloc( -1 )
in
0
; x + 1
; write 777
end ;
/* ★ test 3 : 유령 location에 비교 연산을 시도하는 경우 */
let
x := malloc( -1 )
in
let
y := 0
in
if x = &y then
0
else
write 777
end
end
end ;
/* ★ test 4 : 유령 location끼리 비교 연산을 시도하는 경우 */
let
x := malloc( -1 )
in
let
y := malloc( -1 )
in
if x = y then
write 444
else
write 777
end
end
end ;
/* ▶ 일반적인 테스트 ◀ */
/* ★ test 5 : 레코드 생성시 evaluation order ckeck */
let
v := 444
in
let
r := { x := (v := 777; 0), y := v }
in
if (v = 444) then write &x else write r.y end
end
end ;
/* ★ test 6 : record field assign시 evaluation order check */
let
r := {x := 0, y := 444}
in
0
; (r.y := 777; r).x := r.y
; write r.x
end ;
/* ★ test 7 : generic assign시 evaluation order check */
let
x := malloc( 1 )
in
let
y := 444
in
0
; (y := 777; x) := y
; write *x
end
end ;
/* ★ test 8 : static scoping test */
let
a := 777
in
let
procedure f( x ) = x + a
in
let
a := 444
in
if call f( 0 ) = 444 then write fail end
end
; write a
end
end |
_________________ http://snupl.wo.to
서성현 가 2005년11월8일 23:05에 수정함, 총 2 번 수정됨 |
|
위로 |
|
|
한재호
가입: 2005년 10월 27일 올린 글: 14
|
올려짐: 2005년11월8일 18:48 주제: |
|
|
나머지는 문제가 없는데
1번 케이스는 상당히 어려워 보이네요. ㅠ_ㅠ
다 했다고 생각하고 제출했더니 저런 복병이....
음... 불가능할 것 같진 않긴 하지만 꽤나 많은 작업이 필요하겠군요.
휴.. 일단 다른 문제 한다음에 해결해야겠습니다.
저거 하나 처리 못했다고 감점 그리 크진 않겠죠 - - |
|
위로 |
|
|
임연섭
가입: 2005년 10월 5일 올린 글: 9
|
올려짐: 2005년11월8일 22:26 주제: malloc에.. |
|
|
음수도 들어가는군요..
근데.. 음수 들어가면 뭐가 나오는거지요.. ㅠ.ㅠ
음수들어감 에러처리하고 되는지 안되는지도 모르는 상황인데..
대략 지지네요.. |
|
위로 |
|
|
|