## DEV Community

Juan Vasquez

Posted on • Updated on

# Exercism Ruby - Resistor Color Duo

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.

``````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

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.