마술사가 되려는 Elyse는 기본기를 몇 가지 연습해야 해요. Elyse에게는 조작하고 싶은 카드 더미가 있어요.
조금 더 쉽게 하기 위해 Elyse는 1부터 10까지의 카드만 사용해요. 그래서 카드 더미는 숫자로 이루어진 인터널 테이블로 나타낼 수 있어요. 카드의 위치는 테이블의 행에 대응해요. 즉, 1번 행은 첫 번째 카드를, 2번 행은 두 번째 카드를 가리켜요.
카드 하나를 뽑으려면, 주어진 카드 더미에서 인덱스 position에 있는 카드를 반환해요.
data(stack) = value #( ( 1 ) ( 2 ) ( 4 ) ( 1 ) ).
data(card) = get_Item( stack = stack
position = 3 ). " card = 4
손기술을 좀 부려서 인덱스 position에 있는 카드를 주어진 대체 카드와 바꿔요.
조정된 카드 더미를 반환해요.
data(stack) = value #( ( 1 ) ( 2 ) ( 4 ) ( 1 ) ).
data(new_Stack) = set_Item( stack = stack
position = 3
replacement = 6 ).
" new_Stack = 1, 2, 6, 1
카드 더미 맨 위에 새 카드를 넣어서 카드 하나가 나타나게 해요. 조정된 카드 더미를 반환해요.
data(stack) = value #( ( 5 ) ( 9 ) ( 7 ) ( 1 ) ).
data(new_Stack) = insert_Item_at_Top( stack = stack
new_Card = 8 ).
" new_Stack = 5, 9, 7, 1, 8
주어진 position에 있는 카드를 카드 더미에서 제거해서 카드 하나가 사라지게 해요.
조정된 카드 더미를 반환해요.
data(stack) = value #( ( 3 ) ( 2 ) ( 6 ) ( 4 ) ( 8 ) ).
data(new_Stack) = remove_Item( stack = stack
position = 3 ).
" new_Stack = 3, 2, 4, 8
카드 더미 맨 위에 있는 카드를 제거해서 카드 하나가 사라지게 해요. 조정된 카드 더미를 반환해요.
data(stack) = value #( ( 3 ) ( 2 ) ( 6 ) ( 4 ) ( 8 ) ).
data(new_Stack) = remove_Item_from_Top( stack ).
" new_Stack = 3, 2, 6, 4
카드 더미 맨 아래에 새 카드를 넣어서 카드 하나가 나타나게 해요. 조정된 카드 더미를 반환해요.
data(stack) = value #( ( 5 ) ( 9 ) ( 7 ) ( 1 ) ).
data(new_Stack) = insert_Item_at_Bottom( stack = stack
new_Card = 8 ).
" new_Stack = 8, 5, 9, 7, 1
카드 더미 맨 아래에 있는 카드를 제거해서 카드 하나가 사라지게 해요. 조정된 카드 더미를 반환해요.
data(stack) = value #( ( 8 ) ( 5 ) ( 9 ) ( 7 ) ( 1 ) ).
data(new_Stack) = remove_Item_from_Top( stack ).
" new_Stack = 5, 9, 7, 1
카드 더미의 크기(행 개수)를 반환해요.
data(stack) = value #( ( 3 ) ( 2 ) ( 6 ) ( 4 ) ( 8 ) ).
data(size_of_Stack) = get_Size_of_Stack( stack ).
" size_of_Stack = 5