Raspberry Piを使って何かを作ろうと思ったら、おそらく_抵抗器_を使うことになるでしょう。前のResistor Color DuoとResistor Color Trioの演習と同じように、ここでは抵抗のカラーバンドを、人間が読めるラベルに変換していきます。
この演習では、バンドの値を覚えておかなくても済むように、便利なプログラムを作ります。 このプログラムは、1色・4色・5色のいずれかを入力として受け取り、正しい値をオームで出力します。 カラーバンドには、次のように数値が割り当てられています。
Resistor Color Trioでは、最初の3つのカラーバンドを数値に変換しました。
たとえば、orange-orange-brownは主要な値の330に変換されます。
この演習では、これに_許容差_を加える必要があります。
許容差とは、値が主要な値から上下にずれることができる最大の幅です。
たとえば、最後のバンドがgreenなら、許容差は最大で±0.5%になります。
許容差のバンドは、次のいずれかの値になります。
4バンドの抵抗器は、次のように構成されています。
| Band_1 | Band_2 | Band_3 | Band_4 |
|---|---|---|---|
| Value_1 | Value_2 | Multiplier | Tolerance |
例:
330オームで、許容差は±0.5%です。3300オームで、許容差は±0.05%です。4バンドと5バンドの抵抗器の違いは、5バンドの抵抗器には、より精密な値を示すためのバンドが1つ余分にあることです。
| Band_1 | Band_2 | Band_3 | Band_4 | Band_5 |
|---|---|---|---|---|
| Value_1 | Value_2 | Value_3 | Multiplier | Tolerance |
例:
333オームで、許容差は±0.5%です。323 millionオームで、許容差は±0.1%です。バンドが1つだけの抵抗器もあります。 1バンドの抵抗器はblackという色だけを持ち、その値は0です。
プログラムは、抵抗器のバンドの色の入力listを、ラベルに変換する必要があります。
"... ohms ±...%"
つまり、入力listが["orange", "orange", "black", "green"]のときは、次のように返す必要があります。
"33 ohms ±0.5%"
数千オームになると、"kiloohms"と言います。 これは、1000メートルをキロメートル、1000グラムをキログラムと言うのと似ています。
つまり、入力listが["orange", "orange", "orange", "grey"]のときは、次のように返す必要があります。
"33 kiloohms ±0.05%"
数百万オームになると、"megaohms"と言います。
つまり、入力listが["orange", "orange", "blue", "red"]のときは、次のように返す必要があります。
"33 megaohms ±2%"