diff --git a/lib/binary_to_decimal.rb b/lib/binary_to_decimal.rb index 439e8c6..de9c9f8 100644 --- a/lib/binary_to_decimal.rb +++ b/lib/binary_to_decimal.rb @@ -1,9 +1,11 @@ -# A method named `binary_to_decimal` that receives as input an array of size 8. -# The array is randomly filled with 0’s and 1’s. -# The most significant bit is at index 0. -# The least significant bit is at index 7. -# Calculate and return the decimal value for this binary number using -# the algorithm you devised in class. def binary_to_decimal(binary_array) - raise NotImplementedError -end + length = binary_array.length - 1 + decimal_value = 0 + + binary_array.each do |binary_value| + temp_value = (binary_value * (2 ** length)) + decimal_value += temp_value + length -= 1 + end + return decimal_value +end \ No newline at end of file diff --git a/test/binary_to_decimal_test.rb b/test/binary_to_decimal_test.rb index ba17713..68887e0 100644 --- a/test/binary_to_decimal_test.rb +++ b/test/binary_to_decimal_test.rb @@ -2,32 +2,34 @@ require 'minitest/reporters' require_relative '../lib/binary_to_decimal' +Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new + describe "binary to decimal" do it "From 10011001 to 153" do binary_array = [1, 0, 0, 1, 1, 0, 0, 1] expected_decimal = 153 - + binary_to_decimal(binary_array).must_equal expected_decimal end - + it "From 00001101 to 13" do binary_array = [0, 0, 0, 0, 1, 1, 0, 1] expected_decimal = 13 - + binary_to_decimal(binary_array).must_equal expected_decimal end - + it "From 10000000 to 128" do binary_array = [1, 0, 0, 0, 0, 0, 0, 0] expected_decimal = 128 - + binary_to_decimal(binary_array).must_equal expected_decimal end - + it "From random binary to decimal" do binary_array = Array.new(8) { rand(0..1) } expected_decimal = binary_array.join.to_s.to_i(2) - + binary_to_decimal(binary_array).must_equal expected_decimal end end