# Bit counting / hamming weight / population count coding Kata (RUBY w/o to_s)

This coding kata was to write a method that takes an integer as input and ouputs the number of 1’s in the binary representation of that number.. i.e.:

The binary representation of `1234`

is `10011010010`

, so the function should return `5`

in this case

Here are my results:

def count_bits(n)

bin_values = [[1,0]]

while n > bin_values[0][0]

bin_values.insert(0, [(bin_values[0][0] * 2),(bin_values[0][1] + 1)])

end

n_bin = []

for i in 0..(bin_values.size - 1)

n_bin << '0'

end

p n

for val in bin_values

if n >= val[0]

n_bin[val[1]] = '1'

n = n - val[0]

else

n_bin[val[1]] = '0'

end

end

num_ones = 0

for num in n_bin

num == '1' ? num_ones += 1 : num_ones

end

return num_ones

end

The top line of code basically populates a lookup table where I populate based on the input integer.

The lookup table is an array where each element describes a binary position [**Index value**, **Index**]

The remaining code is relatively straight forward as a new array is populated based on how large the binary# will be (the size of the first array), then the lookup table is used to set the **Index** of the new array to a ‘1’ if the **Index Value** is less than **n** and subtracts the **Index Value** from **n** (this is done from largest to smallest).

Finally, all of the 1’s from the new array are added together for the final return value.