How to find the next sparse number which greater than or equal to a given number in Swift

1 Answer

0 votes
/*
    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 {
    func is_sparse(_ n: Int) -> Bool {
        var result : Int
         
        result = n & (n >> 1);
         
        if (result == 0) {
          return true;
        }
             
        return false;
    }
    
    func next_sparse(_ number: Int) -> Int {
        var n: Int = number;
        while (true) {
          if (self.is_sparse(n)) {
            return n;
          }
          n += 1;
        }
    }
}
func main() {
    let obj: Number = Number();
   
    print(obj.next_sparse(6));
    print(obj.next_sparse(5));
    print(obj.next_sparse(38));
    print(obj.next_sparse(305));
 
}
 
main();
 
 
 
 
/*
run:
    
8
5
40
320
    
*/

 



answered Oct 12, 2021 by avibootz
...