轨道
/
Haskell
Haskell
/
练习
/
电阻色环二重奏
电阻色环二重奏

电阻色环二重奏

简单

说明

如果你要用 Raspberry Pi 做点什么,多半会用到_电阻_。 在这个练习中,你需要了解关于电阻的两件事:

  • 每个电阻都有一个阻值。
  • 电阻很小,小到如果直接把阻值印在上面,会很难看清。

为了解决这个问题,制造商会在电阻上印上带颜色的色环,用来表示其阻值。 每个色环都有一个位置和一个数值。

电阻的前 2 个色环采用一套简单的编码方案:每种颜色对应一个数字。 例如,如果印上的是 brown 色环(值为 1),后面跟着 green 色环(值为 5),那么它对应的数字就是 15。

在这个练习中,你将编写一个实用的小程序,这样就不必记住各个色环的数值了。 这个程序接收颜色名称作为输入,并输出一个两位数,即使输入的颜色多于两种也没关系!

色环的颜色编码如下:

  • black: 0
  • brown: 1
  • red: 2
  • orange: 3
  • yellow: 4
  • green: 5
  • blue: 6
  • violet: 7
  • grey: 8
  • white: 9

根据上面的例子: brown-green 应当返回 15,而 brown-green-violet 也应当返回 15,第三个颜色会被忽略。

提示

你需要实现下面这个函数

value :: (Color, Color) -> Int

它只接受两种颜色,并给出该电阻阻值的数值部分。

加分项:属性测试

这个练习是编写属性测试的好机会。如果你以前没写过,这里有一些资源:

  1. School of Haskell.
  2. Real world Haskell

我们在测试文件里提供了一个 QuickCheck 属性测试示例。

可以测试的属性示例:

  • 对于所有x不为Black的(x, y),都有value (x, y) >= 10

  • 对value (x, y)调用show得到的字符串,等于对value (y, x)调用show得到的字符串再调用reverse的结果。

  • 所有颜色的名称都唯一。(任意两种颜色,只要颜色不同,它们的名称也就不同。)

通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Haskell Exercism

准备好开始 电阻色环二重奏 了吗?

注册 Exercism,借助 107 个练习 和真人导师指导,学习并掌握 Haskell,全部免费。