If you want to build something using a Raspberry Pi, you'll probably use resistors. For this exercise, you need to know two things about them:
- Each resistor has a resistance value.
- Resistors are small - so small in fact that if you printed the resistance value on them, it would be hard to read. To get around this problem, manufacturers print color-coded bands onto the resistors to denote their resistance values. Each band has a position and a numeric value. For example, if they printed a brown band (value 1) followed by a green band (value 5), it would translate to the number 15.
In this exercise you are going to create a helpful program so that you don't have to remember the values of the bands. The program will take color names as input and output a two digit number, even if the input is more than two colors!
The colors are mapped to the numbers from 0 to 9 in the sequence: Black - Brown - Red - Orange - Yellow - Green - Blue - Violet - Grey - White
From the example above: brown-green should return 15 brown-green-violet should return 15 too, ignoring the third color.
source Maud de Vries, Erik Schierboom
require 'minitest/autorun'
require_relative 'resistor_color_duo'
# Common test data version: 2.1.0 00dda3a
class ResistorColorDuoTest < Minitest::Test
def test_brown_and_black
assert_equal 10, ResistorColorDuo.value(["brown", "black"])
end
def test_blue_and_grey
assert_equal 68, ResistorColorDuo.value(["blue", "grey"])
end
def test_yellow_and_violet
assert_equal 47, ResistorColorDuo.value(["yellow", "violet"])
end
def test_orange_and_orange
assert_equal 33, ResistorColorDuo.value(["orange", "orange"])
end
def test_ignore_additional_colors
assert_equal 51, ResistorColorDuo.value(["green", "brown", "orange"])
end
end
class ResistorColorDuo
COLORS = {
"black" => "0",
"brown" => "1",
"red" => "2",
"orange" => "3",
"yellow" => "4",
"green" => "5",
"blue" => "6",
"violet" => '7',
"grey" => '8',
"white" => "9"
}.freeze
def self.value bands
"#{COLORS[bands[0]]}#{COLORS[bands[1]]}".to_i
end
end
It was great! because first I thought to use the positions array but suddenly I was thinking in hashes and finally I use it.
Top comments (1)
What do you think about my answer?
What would you do?