轨道
/
ABAP
ABAP
/
练习
/
Elyse 的魔法
Elyse 的魔法

Elyse 的魔法

简单

说明

作为一名准魔术师,Elyse 需要练一些基本功。她有一叠想要摆弄的纸牌。

为了让事情简单一些,她只用 1 到 10 这些牌,这样她的牌堆就可以用一个由数字组成的内表来表示。某张牌的位置对应内表的行。也就是说,第 1 行指第一张牌,第 2 行指第二张牌,依此类推。

1. 从牌堆中取出一张牌

要取一张牌,就返回给定牌堆中下标为position的那张牌。

data(stack) = value #( ( 1 ) ( 2 ) ( 4 ) ( 1 ) ).
data(card) = get_Item( stack = stack
                       position = 3 ).   " card = 4

2. 替换牌堆中的一张牌

施展一点手法,把下标为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

3. 在牌堆顶部插入一张牌

在牌堆顶部插入一张新牌,让一张牌出现。返回调整后的牌堆。

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

4. 从牌堆中移除一张牌

把牌堆中指定position处的牌移除,让一张牌消失。返回调整后的牌堆。

data(stack) = value #( ( 3 ) ( 2 ) ( 6 ) ( 4 ) ( 8 ) ).
data(new_Stack) = remove_Item( stack    = stack
                               position = 3 ).   
" new_Stack = 3, 2, 4, 8

5. 移除牌堆顶部的牌

移除牌堆顶部的牌,让一张牌消失。返回调整后的牌堆。

data(stack) = value #( ( 3 ) ( 2 ) ( 6 ) ( 4 ) ( 8 ) ).
data(new_Stack) = remove_Item_from_Top( stack ).   
" new_Stack = 3, 2, 6, 4

6. 在牌堆底部插入一张牌

在牌堆底部插入一张新牌,让一张牌出现。返回调整后的牌堆。

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

7. 移除牌堆底部的一张牌

移除牌堆底部的牌,让一张牌消失。返回调整后的牌堆。

data(stack) = value #( ( 8 ) ( 5 ) ( 9 ) ( 7 ) ( 1 ) ).
data(new_Stack) = remove_Item_from_Top( stack ).   
" new_Stack = 5, 9, 7, 1

8. 查看牌堆的大小

返回牌堆的大小(行数)。

data(stack) = value #( ( 3 ) ( 2 ) ( 6 ) ( 4 ) ( 8 ) ).
data(size_of_Stack) = get_Size_of_Stack( stack ).   
" size_of_Stack = 5
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
ABAP Exercism

准备好开始 Elyse 的魔法 了吗?

注册 Exercism,借助 54 个练习 和真人导师指导,学习并掌握 ABAP,全部免费。