diff --git a/DIRECTORY.md b/DIRECTORY.md index e3f395f..f46c03d 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -37,7 +37,7 @@ * [Binary To Decimal](https://github.com/TheAlgorithms/Ruby/blob/master/maths/binary_to_decimal.rb) * [Ceil](https://github.com/TheAlgorithms/Ruby/blob/master/maths/ceil.rb) * [Ceil Test](https://github.com/TheAlgorithms/Ruby/blob/master/maths/ceil_test.rb) - * [Iterative Decimal To Binary](https://github.com/TheAlgorithms/Ruby/blob/master/maths/iterative_decimal_to_binary.rb) + * [Decimal To Binary](https://github.com/TheAlgorithms/Ruby/blob/master/maths/decimal_to_binary.rb) * [Number Of Digits](https://github.com/TheAlgorithms/Ruby/blob/master/maths/number_of_digits.rb) * [Square Root](https://github.com/TheAlgorithms/Ruby/blob/master/maths/square_root.rb) * [Square Root Test](https://github.com/TheAlgorithms/Ruby/blob/master/maths/square_root_test.rb) diff --git a/maths/decimal_to_binary.rb b/maths/decimal_to_binary.rb new file mode 100644 index 0000000..fa0110d --- /dev/null +++ b/maths/decimal_to_binary.rb @@ -0,0 +1,49 @@ +# Convert a given decimal number into binary. + +# +# Approach 1: Iterative +# + +def decimal_to_binary(n) + bin = [] + + until n.zero? + bin << n % 2 + n /= 2 + end + + bin.reverse.join +end + +puts 'Binary value of 4 is ' + decimal_to_binary(4).to_s +# Binary value of 4 is 100 + +puts 'Binary value of 31 is ' + decimal_to_binary(31).to_s +# Binary value of 31 is 11111 + +puts 'Binary value of 64 is ' + decimal_to_binary(64).to_s +# Binary value of 64 is 1000000 + +# +# Approach 2: Recursive +# + +def decimal_to_binary(d) + binary = (d % 2).to_s + + return binary if d == 0 + return 1.to_s if d == 1 + + binary = decimal_to_binary(d / 2).to_s + binary + + binary +end + +puts 'Binary value of 4 is ' + decimal_to_binary(4).to_s +# Binary value of 4 is 100 + +puts 'Binary value of 31 is ' + decimal_to_binary(31).to_s +# Binary value of 31 is 11111 + +puts 'Binary value of 64 is ' + decimal_to_binary(64).to_s +# Binary value of 64 is 1000000 diff --git a/maths/iterative_decimal_to_binary.rb b/maths/iterative_decimal_to_binary.rb deleted file mode 100644 index b19b089..0000000 --- a/maths/iterative_decimal_to_binary.rb +++ /dev/null @@ -1,17 +0,0 @@ -# Iterative method to convert a given decimal number into binary. - -def decimal_to_binary(n) - bin = [] - until n.zero? - bin << n % 2 - n /= 2 - end - bin.reverse.join -end - -puts 'Binary value of 4 is ' + decimal_to_binary(4).to_s -# Binary value of 4 is 100 -puts 'Binary value of 31 is ' + decimal_to_binary(31).to_s -# Binary value of 31 is 11111 -puts 'Binary value of 64 is ' + decimal_to_binary(64).to_s -# Binary value of 64 is 1000000