diff --git a/lib/binary_to_decimal.rb b/lib/binary_to_decimal.rb index 439e8c6..9cdfee9 100644 --- a/lib/binary_to_decimal.rb +++ b/lib/binary_to_decimal.rb @@ -4,6 +4,16 @@ # 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 + decimal = 0 + i = 1 + binary_array.each do |value| + power = binary_array.length - i + number = value * (2 ** power) + decimal += number + i += 1 + end + return decimal +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..5fb557d 100644 --- a/test/binary_to_decimal_test.rb +++ b/test/binary_to_decimal_test.rb @@ -6,28 +6,28 @@ 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