diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..8bf4d45 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,6 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/binary-and-decimal.iml b/.idea/binary-and-decimal.iml new file mode 100644 index 0000000..1d8df90 --- /dev/null +++ b/.idea/binary-and-decimal.iml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..b0db9b0 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..510e7fc --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..d7f43dc --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Gemfile b/Gemfile index 59df67b..27677dc 100644 --- a/Gemfile +++ b/Gemfile @@ -1,6 +1,6 @@ source 'http://rubygems.org' -ruby '2.6.6' +ruby '2.6.5' gem 'rake' diff --git a/lib/binary_to_decimal.rb b/lib/binary_to_decimal.rb index 439e8c6..7c15db5 100644 --- a/lib/binary_to_decimal.rb +++ b/lib/binary_to_decimal.rb @@ -5,5 +5,12 @@ # 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 + dec = 0 + i = 0 + while i < binary_array.length + dec += binary_array[i] * 2 ** (binary_array.length - 1 - i) + i += 1 + end + return dec end + diff --git a/lib/decimal_to_binary.rb b/lib/decimal_to_binary.rb new file mode 100644 index 0000000..e7fc872 --- /dev/null +++ b/lib/decimal_to_binary.rb @@ -0,0 +1,20 @@ + +def decimal_to_binary(decimal) + bin = Array.new(8) + i = 0 + + while i < bin.length + + if(decimal - 2 ** (bin.length - 1 - i) < 0) + bin[i] = 0 + else + bin[i] = 1 + decimal -= 2 ** (bin.length - 1 - i) + end + i += 1 + end + + + return bin +end + diff --git a/test/decimal_to_binary_test.rb b/test/decimal_to_binary_test.rb new file mode 100644 index 0000000..0e646ac --- /dev/null +++ b/test/decimal_to_binary_test.rb @@ -0,0 +1,33 @@ +require 'minitest/autorun' +require 'minitest/reporters' +require_relative '../lib/decimal_to_binary' + +Minitest::Reporters.use! Minitest::Reporters::SpecReporter.new + +describe "decimal to binary" do + it "From 153 to 10011001" do + + decimal = 153 + expected_binary_array = [1, 0, 0, 1, 1, 0, 0, 1] + + expect(decimal_to_binary(decimal)).must_equal expected_binary_array + end + + it "From 13 to 00001101" do + + decimal = 13 + expected_binary_array = [0, 0, 0, 0, 1, 1, 0, 1] + + expect(decimal_to_binary(decimal)).must_equal expected_binary_array + end + + it "From 128 to 10000000" do + + expected_binary_array = [1, 0, 0, 0, 0, 0, 0, 0] + decimal = 128 + + expect(decimal_to_binary(decimal)).must_equal expected_binary_array + end + + +end