駆け出しのマジシャン、Elyseは、基本の練習をする必要があります。Elyseの手元には、操作したいカードのスタックがあります。
少し簡単にするため、Elyseは1から10のカードだけを使います。そのため、カードのスタックは数値の内部テーブルで表すことができます。あるカードの位置は、テーブルの行に対応します。つまり、行1は1枚目のカード、行2は2枚目のカードを指します。
カードを1枚選ぶには、与えられたスタックから、インデックス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