---
# System prepended metadata

title: 如何運用「猜數字題組」刻意練習
tags: [學期一]

---

###### tags: `學期一`

# 如何運用「猜數字題組」刻意練習

Outline

設計了三個題目，都是猜數字，但有不同的複雜度

每一題有各自練習的目標與側重點，希望一步一步帶你體驗如何從演算法到程式碼（如何透過演算法有效改善程式碼的運作效率）

- A7：get you started｜透過程式碼來打造可以具體模擬猜數字的環境
- A8：up your game｜設計思考，稍微複雜的邏輯設計
- A9：挑戰實作｜有能力透過程式碼來實踐複雜的邏輯

不同的學習者，不同的思維模式，可能會有不同的方式運用這些作業來幫助自己學習

對於相對欠缺抽象概念訓練的同學，在初期學習時，也許更能透過 trial & error 來釐清邏輯

因此對於演算法題組可以採用以下幾種不同的解題模式：

⬇️ 可能作圖呈現比較好
模式一：A7 -> A8 -> A9（照著順序解決問題）
模式二：A7 -> A9 -> A8（從成果看清楚思考邏輯）

時間運用的規劃：A8,A9 普遍會花蠻多時間的，記得提前啟動 + 搭配 AC 其他機制解題！

main question : 何時知道自己比較適合先跳到 A9 開始寫？

最後，溫馨提醒你：進度第二週的範圍包括 「S2 從演算法到程式碼」 以及 「S3 網站設計與介面實作」，不要忘記預留足夠的時間學習！

CTA：分享自己的解題過程 / 順序

-------------------------------

>**學習成果與目標**
>・了解「猜數字題組」的設計用意
>・清楚知道如何根據自己的思考習慣調整解題順序

#### 以「題組」設計的演算法實作

接下來的「猜數字題組」環繞著「先求有，再求好」的理念設計，讓你有機會體驗「透過演算法優化程式」的完整過程。雖然三題都環繞著「猜數字」這個主題，不過每個題目都有各自的學習目標以及側重點

##### 1. 初步實作，打好基礎

在[經典猜數字：熱身題](https://lighthouse.alphacamp.co/courses/39/assignments/919)當中，你會綜合使用多種基礎程式語法，讓電腦順利模擬出猜數字的情境

##### 2. 設計流程，提升效率

接著，在[設計演算法：提升猜對數字的效率](https://lighthouse.alphacamp.co/courses/39/assignments/1206)當中，你會使用運算思維拆解目前的猜數字流程，辨識出猜數字最有效率的方法，並把這個「想法」轉變成可以具體執行的流程圖與虛擬碼

##### 3. 挑戰實作，親手實踐

最後，在[實作程式碼：有效率地猜中數字](https://lighthouse.alphacamp.co/courses/39/assignments/921)這份作業中，你會依循著先前整理出的流程圖與虛擬碼，親手改良整個猜數字的流程，讓程式可以成功執行你的想法

這一連串的練習相當接近現實開發流程：先有可運作但還可以更好的程式，後續再透過思考與設計提升這套程式解決問題的效率

#### 同樣的題組，不同的解題模式

然而我們也觀察到：不同的學習者有著多樣的思維模式，也因此會依循不同的方法從這些作業中學習

對善於抽象思考的同學而言，照著原先題組的順序解題是自然的事情；但對於過去相對缺少「抽象概念」訓練的同學，在初期學習時，也許更適合跳脫原先的規劃，透過 trial & error 來釐清邏輯

因此對於演算法題組，你可以根據自己的狀況，採用以下幾種解題模式：

* 模式一：照著順序解決問題

<div style="width:100%"><img style="max-width:1000px; width:100%;" src="https://assets-lighthouse.alphacamp.co/uploads/image/file/15430/_____2021-04-15___12.52.06.png"></div>

* 模式二：從成果釐清邏輯

<div style="width:100%"><img style="max-width:1000px; width:100%;" src="https://assets-lighthouse.alphacamp.co/uploads/image/file/15431/_____2021-04-15___12.55.11.png"></div>

由於模式二並不符合真實世界優化程式的順序（用已經優化的程式確認這套程式的設計邏輯），因此同學雖然可以運用，但不要忘記建立一套外顯自己思路的方法喔！

#### 如何知道自己比較適合哪種模式？

<!-- 建議你搭配「停損點」進行判斷：如果在看完[設計演算法：提升猜對數字的效率](https://lighthouse.alphacamp.co/courses/39/assignments/1206)題目敘述以及所有的提示後，用力思考 30 分鐘後依舊對自己的答案沒有信心，那麼就建議你可以嘗試用模式二來完成題組

➡️ 有種模式一比較好請先用，真的能力不行再用模式二的感覺
➡️ 應該要用一種：模式一二都可以，你自己選 -->

如果不太確定自己比較適合哪種解題模式，以下是提供給你的判斷建議：

1. 如果你相當習慣抽象思考：過去在寫作業 [給菜鳥的臨櫃小抄](https://lighthouse.alphacamp.co/courses/39/assignments/918) 時得心應手，那麼建議你優先嘗試使用模式一來解題
2. 如果你比較習慣有即時回饋：過去在寫作業 [給菜鳥的臨櫃小抄](https://lighthouse.alphacamp.co/courses/39/assignments/918) 時對你來說有點吃力 / 不直覺，那麼建議你優先嘗試使用模式二來解題

當然，如果嘗試了其中一種方法發現不太適合（搭配[停損點](https://lighthouse.alphacamp.co/courses/38/units/7526)判斷），可以隨時再切換使用另一種模式

整個解題過程中也不要忘記善用助教與觀摩的力量，有效幫助自己學習！

#### 好像都要觀摩同學作業才會寫，這樣我有真正學會嗎？

過去學長姐們在攻克演算法題組的過程中，時常會需要透過觀摩的方式來幫助自己解題，卻也因此產生了「自己是不是沒有真的學會」的自我質疑

如果你深有同感，教練想鼓勵你：「觀摩」是學習程式的過程中非常重要的技能，「觀摩」的重點不在最後有沒有寫出來，而是在於你是否有充分釐清自己卡住的點在哪裡，並透過觀摩明確地解決心中的疑問。

當然，也歡迎你隨時回到前面的單元，複習：如何[從「觀摩」中有效成長](https://lighthouse.alphacamp.co/courses/38/units/7526)

#### 預留時間，準備迎戰！

根據過去經驗，A8、A9 會花費**完成 A7 兩倍以上的時間**才能寫出來，因此建議同學們根據完成 A7 所花費的時間去預留完成 A8、A9 的時間，才能更有效地運用本週時間完成進度

最後提醒你：進度第二週的範圍包括 「S2 從演算法到程式碼」 以及 「S3 網站設計與介面實作」，不要忘記預留足夠的時間學習！