Description:
Given an array of one's and zero's convert the equivalent binary value to an integer.
Eg: [0, 0, 0, 1] is treated as 0001 which is the binary representation of 1
Examples:
Testing: [0, 0, 0, 1] ==> 1
Testing: [0, 0, 1, 0] ==> 2
Testing: [0, 1, 0, 1] ==> 5
Testing: [1, 0, 0, 1] ==> 9
Testing: [0, 0, 1, 0] ==> 2
Testing: [0, 1, 1, 0] ==> 6
Testing: [1, 1, 1, 1] ==> 15
Testing: [1, 0, 1, 1] ==> 11
Solution :
Ruby
def binary_array_to_number(arr)
arr.join("").to_i(2)
end
JavaScript
const binaryArrayToNumber = arr => {
// your code
return (arr[0] * 8) +
(arr[1] * 4) +
(arr[2] * 2) +
(arr[3] * 1);
};
Test Cases: Ruby
Test.describe("Example tests") do
Test.assert_equals(binary_array_to_number([0,0,0,1]), 1)
Test.assert_equals(binary_array_to_number([0,0,1,0]), 2)
Test.assert_equals(binary_array_to_number([1,1,1,1]), 15)
Test.assert_equals(binary_array_to_number([0,1,1,0]), 6)
end
Test.describe("Random tests") do
def randint(a,b) rand(b-a+1)+a end
50.times do
n = randint(0,1000)
array = n.to_s(2).split("").map(&:to_i)
Test.it("Tests #{array} ==> #{n}") do
Test.assert_equals(binary_array_to_number(array), n, "It should work for random inputs too")
end
end
end
0 Comment(s)