解题思路

学习如何为练习编写解题思路


每道练习都可以关联若干解题方法,用来描述解决这道练习的不同思路。

单个解题方法

一种解题方法应当探讨如何以某种特定方式解决一道练习。

  • 其内容应当是以下两者之一:
    • 探讨符合惯用法的解题方法
    • 探讨不符合惯用法、但很有意思的解题方法
  • 以一个(完整的)代码示例开头
    • 在文档的其余部分可以自由地使用代码示例
  • 可以放心地深入探讨这个话题
  • 链接到有用的资源(例如文档)
  • 代码片段应当展示该解题方法的核心
    • 最多可以使用 8 行

如果你想对比不同的解题方法,请写一篇文章。

解题方法概览

  • 交代问题的背景
    • 描述适用于_所有_解题方法的要点(例如容易踩的坑)
  • 讨论最符合惯用法的解题方法
  • 每种解题方法都应当以一个示例片段开头,展示该方法的写法
  • 内容保持比较宏观
    • 详细内容应当放到单独的解题方法页面里
    • 需要更多信息时,链接到那个单独的解题方法页面
  • 讨论如何在各种解题方法之间做选择
    • 各自的取舍是什么?
    • 某些方法是否更适合特定的使用场景?

通用注意事项

  • 有些语言可以用不同的写法表达同一个意思。如果其中某些语法只在较新版本的语言中才出现,可以考虑使用“旧”语法。这样学员更容易看懂代码。
    • 其他语法可以在解题方法文档中展示
  • 如果你的语言有推荐的风格指南,请(尽可能)遵循其中的规范

该为哪些练习编写解题方法?

一般来说,实践练习更适合编写解题方法,因为它们通常有多种解法。

对于概念练习,讨论示例解法可能很有意思。例如,你可以展示所教的概念如何让某些代码更容易编写。

文件

每种解题方法都必须添加以下两个文件:

  • .approaches/<approach-slug>/content.md:解题方法的描述(参见文档)
  • .approaches/<approach-slug>/snippet.txt:展示该解题方法的代码片段(参见文档)

然后你还需要添加或更新:

  • .approaches/config.json:解题方法的元数据(参见文档)

配置代码片段扩展名

你也可以不使用默认的.txt扩展名,而是在赛道的config.json文件中设置 approaches.snippet_extension 字段,改用自定义扩展名。 如果设置了这个字段,你要添加的代码片段文件必须命名为.approaches/<approach-slug>/snippet.<approaches.snippet_extension>。