# A Boolean Array Puzzle

*Input:* A array arr[] of two elements having value 0 and 1

*Output:* Make both elements 0.

*Specifications:* Following are the specifications to follow.

1) It is guaranteed that one element is 0 but we do not know its position.

2) We can’t say about another element it can be 0 or 1.

3) We can only complement array elements, no other operation like and, or, multi, division, …. etc.

4) We can’t use if, else and loop constructs.

5) Obviously, we can’t directly assign 0 to array elements.

There are several ways we can do it as we are sure that always one Zero is there. Thanks to devendraiiit for suggesting following 3 methods.

**Method 1**

`void` `changeToZero(` `int` `a[2]) ` `{ ` ` ` `a[ a[1] ] = a[ !a[1] ]; ` `} ` ` ` `int` `main() ` `{ ` ` ` `int` `a[] = {1, 0}; ` ` ` `changeToZero(a); ` ` ` ` ` `printf` `(` `" arr[0] = %d \n"` `, a[0]); ` ` ` `printf` `(` `" arr[1] = %d "` `, a[1]); ` ` ` `getchar` `(); ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

**Method 2**

`void` `changeToZero(` `int` `a[2]) ` `{ ` ` ` `a[ !a[0] ] = a[ !a[1] ] ` `} ` |

*chevron_right*

*filter_none*

**Method 3**

This method doesn’t even need complement.

`void` `changeToZero(` `int` `a[2]) ` `{ ` ` ` `a[ a[1] ] = a[ a[0] ] ` `} ` |

*chevron_right*

*filter_none*

**Method 4**

Thanks to **purvi** for suggesting this method.

`void` `changeToZero(` `int` `a[2]) ` `{ ` ` ` `a[0] = a[a[0]]; ` ` ` `a[1] = a[0]; ` `} ` |

*chevron_right*

*filter_none*

There may be many more methods.

Please write comments if you find the above codes incorrect, or find other ways to solve the same problem.

## Recommended Posts:

- Lucky alive person in a circle | Code Solution to sword puzzle
- Construct an array from XOR of all elements of array except element at same index
- Find Duplicates of array using bit array
- Sum of XOR of all pairs in an array
- XOR of Sum of every possible pair of an array
- Sum of XOR of sum of all pairs in an array
- Maximum AND value of a pair in an array
- Maximum value of XOR among all triplets of an array
- Maximize the bitwise OR of an array
- Sum of Bitwise-OR of all subarrays of a given Array | Set 2
- Sum of Bitwise And of all pairs in a given array
- Add minimum number to an array so that the sum becomes even
- Count inversions in an array | Set 3 (Using BIT)
- Sum of elements from an array having even parity
- Find triplets in an array whose AND is maximum