Raspberry Piで何かを作ろうと思ったら、おそらく_抵抗器_を使うでしょう。 この演習では、抵抗器について知っておくべきことは3つだけです:
抵抗器にはそれぞれ抵抗値があります。
抵抗器はとても小さく、抵抗値を印刷しても読み取るのが難しいほどです。 この問題を解決するために、メーカーは抵抗器に色分けされた帯を印刷して、抵抗値を示しています。
それぞれの帯は、数値の1桁として機能します。 たとえば、brownの帯(値1)の次にgreenの帯(値5)を印刷すると、それは15という数値になります。 この演習では、帯の値を覚えなくて済むように、便利なプログラムを作ります。 プログラムは3つの色を入力として受け取り、正しい値をohmsで出力します。 色の帯は次のように符号化されています:
black: 0
brown: 1
red: 2
orange: 3
yellow: 4
green: 5
blue: 6
violet: 7
grey: 8
white: 9
Resistor Color Duoでは、最初の2つの色をデコードしました。
たとえば、orange-orangeなら主となる値は33になります。
3つ目の色は、主となる値にいくつの0を追加するかを表します。
主となる値に0を加えたものが、ohmsでの値になります。
この演習では、ohmsが実際に何なのかは重要ではありません。
たとえば:
(数学が得意なら、0を10の累乗と考えてもよいでしょう。数学が苦手なら、0のままで考えてください。どちらも同じことで、数学用語ではなく普通の言葉で言い換えただけです。)
この演習では、色をラベルに変換します:
"... ohms"
したがって、"orange", "orange", "black"を入力すると、次の値を返すはずです:
"33 ohms"
より大きな抵抗器になると、ohmsのより大きな桁を表すためにSI接頭語が使われます。たとえば"kiloohms"のようにです。 これは、「2000メートル」の代わりに「2キロメートル」と言ったり、「2000グラム」の代わりに「2キログラム」と言うのに似ています。
たとえば、"orange", "orange", "orange"を入力すると、次の値を返すはずです:
"33 kiloohms"
| レジスタ | 用途 | 型 | 説明 |
|---|---|---|---|
$a0 |
入力 | アドレス | 1つ目の色を表すヌル終端文字列 |
$a1 |
入力 | アドレス | 2つ目の色を表すヌル終端文字列 |
$a2 |
入力 | アドレス | 3つ目の色を表すヌル終端文字列 |
$a3 |
入力/出力 | アドレス | ヌル終端された出力文字列 |
$t0-9 |
一時 | 任意 | 一時的な保存に使用 |
Exercismに登録すれば、70個の演習、そして本物の人間によるメンタリングとともに、MIPS Assemblyを学んでマスターできます。すべて無料です。