解題方法

學習如何為練習撰寫解題方法


每個練習都可以有相關的解法,用來描述這個練習可以怎麼用不同的方式解出來。

解法

一篇解法應該探討某個練習可以如何用某種特定的方式解出來。

  • 內容應該要能:
    • 探討慣用的解法
    • 探討非慣用但有趣的解法
  • 從一份(完整的)程式碼範例開始
    • 在文件其餘部分大量使用程式碼範例
  • 放心深入探討這個主題吧
  • 連結到實用的資源(例如文件)
  • 程式碼片段應該展現這個解法的核心
    • 最多可以使用 8 行程式碼

如果你想比較不同的解法,請改寫成一篇文章。

解法總覽

  • 提供問題的背景
    • 說明適用於_所有_解法的重要重點(例如陷阱)
  • 討論最慣用的解法
  • 每篇解法都應該從一段能示範該解法的程式碼片段開始
  • 內容盡量維持在高層次
    • 詳細資訊應該放到獨立的解法頁面
    • 連結到獨立的解法頁面以取得更多資訊
  • 討論如何在不同解法之間做選擇
    • 各自的取捨是什麼?
    • 有些解法是不是更適合特定的使用情境?

一般考量

  • 有些程式語言會用不同的寫法表達同一件事。如果其中某些語法是比較新的版本才支援的,可以考慮使用「舊」的語法。這樣學員比較容易看懂程式碼。
    • 其他語法可以寫在解法文件裡
  • 如果你的程式語言有建議的風格指南,請盡量遵循那些準則

該為哪些練習撰寫解法?

一般來說,實作練習比較適合撰寫解法,因為它們通常可以用多種方式解出來。

至於概念練習,討論範例解法可能也很有意思。舉例來說,你可以展示正在教學的概念如何讓某些程式碼更容易寫。

檔案

每篇解法都必須新增以下兩個檔案:

  • .approaches/<approach-slug>/content.md:解法的說明(請見文件)
  • .approaches/<approach-slug>/snippet.txt:示範該解法的程式碼片段(請見文件)

接著,你需要新增或更新:

  • .approaches/config.json:解法的中介資料(請見文件)

設定程式碼片段的副檔名

你也可以在自己的 track 的 config.json 檔案中設定 approaches.snippet_extension 欄位,改用自訂的副檔名,而不使用預設的 .txt 副檔名。 如果有設定,你要新增的程式碼片段檔名必須是 .approaches/<approach-slug>/snippet.<approaches.snippet_extension>。