# If there are no two consecutive 1s in a number binary representation,
# it is Sparse. 5 (101) is sparse, 6 (110) is not.
class Number
def is_sparse(n)
result = n & (n >> 1);
if (result == 0)
return true;
end
return false;
end
def next_sparse(number)
while (true)
if (self.is_sparse(number))
return number
end
number += 1
end
end
end
def main()
obj = Number.new()
puts obj.next_sparse(6)
puts obj.next_sparse(5)
puts obj.next_sparse(38)
puts obj.next_sparse(305)
end
main()
# run:
#
# 8
# 5
# 40
# 320
#