diff --git a/lib/binary_to_decimal.rb b/lib/binary_to_decimal.rb index 439e8c6..2a8cd42 100644 --- a/lib/binary_to_decimal.rb +++ b/lib/binary_to_decimal.rb @@ -5,5 +5,25 @@ # 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 + array = binary_array + power = 7 + decimal_value = 0 + array.each do |bit| + decimal_value += bit * (2 ** power) + power -= 1 + end + return decimal_value + #raise NotImplementedError +end + +def decimal_to_binary(decimal_number) + number = decimal_number + binary_num = [] + while number > 1 + mod = number % 2 + binary_num.push(mod) + number = (number - mod)/2 + end + binary_num.push(number) + return binary_num end diff --git a/test/binary_to_decimal_test.rb b/test/binary_to_decimal_test.rb index ba17713..c2f8361 100644 --- a/test/binary_to_decimal_test.rb +++ b/test/binary_to_decimal_test.rb @@ -6,28 +6,41 @@ 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 + + it "From 17 to 10001" do + decimal = 17 + expected_binary = [1, 0, 0, 0, 1] + decimal_to_binary(decimal).must_equal expected_binary + end + + it "From 45 to 101101" do + decimal = 45 + expected_binary = [1, 0, 1, 1, 0, 1] + decimal_to_binary(decimal).must_equal expected_binary + end + +end \ No newline at end of file