# rootulp's solution

## to Hexadecimal in the Ruby Track

Published at Jul 13 2018 · 0 comments
Instructions
Test suite
Solution

Convert a hexadecimal number, represented as a string (e.g. "10af8c"), to its decimal equivalent using first principles (i.e. no, you may not use built-in or external libraries to accomplish the conversion).

On the web we use hexadecimal to represent colors, e.g. green: 008000, teal: 008080, navy: 000080).

The program should handle invalid hexadecimal strings.

For installation and learning resources, refer to the exercism help page.

For running the tests provided, you will need the Minitest gem. Open a terminal window and run the following command to install minitest:

``````gem install minitest
``````

If you would like color output, you can `require 'minitest/pride'` in the test file, or note the alternative instruction, below, for running the test file.

Run the tests from the exercise directory using the following command:

``````ruby hexadecimal_test.rb
``````

To include color from the command line:

``````ruby -r minitest/pride hexadecimal_test.rb
``````

## Source

All of Computer Science http://www.wolframalpha.com/examples/NumberBases.html

## Submitting Incomplete Solutions

It's possible to submit an incomplete solution so you can see how others have completed the exercise.

``````require 'minitest/autorun'

def test_hex_1_is_decimal_1
end

def test_hex_c_is_decimal_12
skip
end

def test_hex_10_is_decimal_16
skip
end

def test_hex_af_is_decimal_175
skip
end

def test_hex_100_is_decimal_256
skip
end

def test_hex_19ace_is_decimal_105166
skip
end

def test_invalid_hex_is_decimal_0
skip
end

def test_black
skip
end

def test_white
skip
end

def test_yellow
skip
end
end``````
``````# Hexadecimal
HEX_VALUES = { '0' =>  0, '1' =>  1, '2' =>  2, '3' =>  3, '4' =>  4,
'5' =>  5, '6' =>  6, '7' =>  7, '8' =>  8, '9' =>  9,
'a' => 10, 'b' => 11, 'c' => 12, 'd' => 13, 'e' => 14,
'f' => 15 }.freeze

end

def to_decimal
return 0 if invalid?
16**power * HEX_VALUES[multiplier]
end.reduce(:+)
end

private

def invalid?
end
end``````