如果你要用 Raspberry Pi 做点什么,多半会用到_电阻_。 在这个练习中,你需要了解关于电阻的两件事:
为了解决这个问题,制造商会在电阻上印上带颜色的色环,用来表示其阻值。 每个色环都有一个位置和一个数值。
电阻的前 2 个色环采用一套简单的编码方案:每种颜色对应一个数字。 例如,如果印上的是 brown 色环(值为 1),后面跟着 green 色环(值为 5),那么它对应的数字就是 15。
在这个练习中,你将编写一个实用的小程序,这样就不必记住各个色环的数值了。 这个程序接收颜色名称作为输入,并输出一个两位数,即使输入的颜色多于两种也没关系!
色环的颜色编码如下:
根据上面的例子: brown-green 应当返回 15,而 brown-green-violet 也应当返回 15,第三个颜色会被忽略。
本练习是Resistor Color的延续,并在其基础上进一步展开。
虽然练习可以按任意顺序完成,但我们建议你按照推荐的顺序来做。
在本练习中,颜色的语法已经用c*前缀预定义好了,例如c*black。
接下来,你要按照说明定义语法,把一串颜色对应到一个数字。
颜色写在*[[和]]之间,用, 分隔,例如*[[c*black, c*yellow, c*violet]]。
这项任务很可能要求你用到记法或宏。 你可以查阅参考资料。
由于新语法在编译期展开,只要所需的语法没有全部定义,测试就无法通过编译。
因此,我们不使用传统的运行时测试,而是使用#guard_msgs。
这个命令会把给定的文档字符串与另一个命令(这里是#eval)生成的消息作比较,两者不同就报错。
你可以把没有报错视为测试通过。
如果你在本地或在 Lean 的在线演练场中编写代码,就能通过 Lean InfoView 即时看到#guard_msgs报出的任何错误。
在线测试运行器目前不支持导入完整的Lean元编程库。
你可以自由使用 Lean 默认提供的任何功能,包括Lean命名空间中的功能,但添加import Lean,或者从Lean命名空间导入特定模块,都会导致你在提交到 Exercism 时失败。
注意,要解决本练习并不需要导入 Lean 库。