故事
身為準魔術師的 Elyse,需要練習一些基本功。她有一疊卡片,想要好好操作一番。
為了輕鬆一點,她只使用 1 到 10 的卡片。
我們把卡片的值限制在 1 到 10,這樣一來只需要處理數字,
使用這個故事的練習也就只需要依賴數字。
任務
以下是符合 Elyse 這個初學者故事的一些範例任務:
- 從牌堆取出一張卡片
- 交換牌堆中的一張卡片
- 在牌堆頂端插入一張卡片
- 從牌堆移除一張卡片
- 移除牌堆頂端的卡片
- 在牌堆底部插入一張卡片
- 從牌堆底部移除一張卡片
- 檢查牌堆大小
這個故事可以延伸下去,進一步教陣列分析:
- 找出某張卡片的位置
- 判斷某張卡片是否存在
- 判斷每張卡片是否為偶數
- 檢查牌堆中是否含有奇數值的卡片
- 從牌堆中取得第一張奇數卡片
- 判斷第一張偶數卡片的位置
這個故事可以延伸下去,進一步教陣列轉換:
- 把每張卡片的值加倍
- 為牌堆中每個 3 建立多份複本
- 找出牌堆正中央的兩張卡片
- 最外側的兩張卡片會重新出現在牌堆中央
- 所有不是 2 的卡片都會消失
- 把洗過的牌堆轉換成完全有序的牌堆
- 把每張卡片改成卡片的總數
這個故事可以延伸下去,進一步教陣列解構:
- 取得第一張卡片(不使用傳統做法,例如索引子或方法)
- 取得第二張卡片(不使用傳統做法,例如索引子或方法)
- 交換前兩張卡片(不使用傳統做法,例如索引子或方法)
- 捨棄頂端的卡片(不使用傳統做法,例如索引子或方法)
- 插入人頭牌(不使用傳統做法,例如索引子或方法)
術語
以下是說明中(包括預留的註解)反覆出現的術語建議,並非規則:
- 主角是 Elyse,她的代名詞是she/her。如果需要指稱這個角色,請使用她的名字,或以她的代名詞來稱呼她。
- 不要用
array(或對等的資料型態),改用牌堆或卡片牌堆
- 不要用
element,改用卡片
- 不要用
length,改用牌堆大小
-
頂端卡片是_第一個元素_
-
底部卡片是_最後一個元素_
實作
替代版本
這個故事的替代版本以你(學生)為主角,並且只聚焦在重新排列牌堆上。
故事
你是個魔術師,手裡拿著一疊牌。為了正確完成你的魔術,你必須能把一張卡片從某個位置移動到另一個位置。也就是說,你必須能重新排列這疊牌。當然,你會希望能往兩個方向移動卡片,也能說出「從牌堆頂端」或「從牌堆底部」。
任務
以下是符合你想重新排列卡片這個故事的一些範例任務:
- 實作一個函式 arrange,把牌堆中的一張卡片從指定的位置移動到另一個位置,並回傳新的牌堆
- 實作一個函式 rearrange,功能相同,但會直接修改原始的牌堆
實作
參考資料